Ir para conteúdo
  • Cadastre-se

Aprimorar talkction evento castle war e concertar bug da escada não ser removida


Posts Recomendados

Dificuldade: Medio
Versão do meu servidor: 8.60
Explicação: poderia ser feito alguns ajustes colocar pra que o ganhador do castelo invez de ganhar dinheiro ganha-se 7 dias de premy account e + 1 house. ? e arrumar 1 pequeno bugzinho no script que ao terminar o evento a escada não tá sendo removida.

ID da house que eu quero que o player ganhe

Wisland Castle (ID:100; Rent:0)


local THRONE_POS = {x = 559, y = 453, z = 7}

local STORAGE_EVENT = 83902

local STORAGE_PLAYER = 73289

local REWARDS = {{2160, 10}, {2159, 30}}

local DUR = 30 -- in minutes



function OpenEvent()





for _, tid in ipairs(getPlayersOnline()) do

setPlayerStorageValue(tid, STORAGE_PLAYER, 1)

end



setGlobalStorageValue(STORAGE_EVENT, 1)

doBroadcastMessage("O Evento castle foi aberto.", 25)

end





function getWinnerCastle()



CastleWalls()

local player = getTopCreature(THRONE_POS).uid



if getGlobalStorageValue(STORAGE_EVENT) < 0 then return true end



if (isPlayer(player)) then

if (getPlayerStorageValue(player, STORAGE_PLAYER) > 0) then

for _, T in pairs(REWARDS) do

doPlayerAddItem(player, T[1], T[2])

end

for _, cid in ipairs(getPlayersOnline()) do

setPlayerStorageValue(cid, STORAGE_PLAYER, 0)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

end

doBroadcastMessage(getCreatureName(player) .. " ganhou o evento.", 25)

doTeleportThing(player, {x = 531, y = 459, z = 7})

doCreateItem(391, 1, {x = 559, y = 453, z = 7})

end

else

doBroadcastMessage("Ningúem ganhou o evento.", 27)

for _, pid in ipairs(getPlayersOnline()) do

setPlayerStorageValue(pid, STORAGE_PLAYER, 0)

doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))

end

end



setGlobalStorageValue(STORAGE_EVENT, 0)

return db.executeQuery("DELETE FROM `player_storage` WHERE `key` = " .. STORAGE_PLAYER)

end



function CastleWalls()



local pedra = getTileItemById({ x = 539, y = 474, z = 7}, 1285)

local escada = getTileItemById({ x = 539, y = 474, z = 7}, 3687)



if pedra.uid > 0 then

return doRemoveItem(pedra.uid)

else

return doCreateItem(1285, 1, { x = 539, y = 474, z = 7})

end



if escada.uid > 0 then

return doRemoveItem(escada.uid)

else

return doCreateItem(3687, 1, {x = 539, y = 474, z = 7})

end

end



function onSay(cid, words, param, channel)



if ((param == "abrir") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then

doPlayerSendTextMessage(cid, 27, "O evento já esta aberto.") return true

elseif ((param == "fechar") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then

getWinnerCastle()

CastleWalls() return true

end

doCreateItem(3687, 1, {x = 539, y = 474, z = 7})

OpenEvent()

CastleWalls()



addEvent(getWinnerCastle, DUR * 60 * 1000)

return true

end
Link para o post
Compartilhar em outros sites

Testa esse

local THRONE_POS = {x = 559, y = 453, z = 7}
local STORAGE_EVENT = 83902
local STORAGE_PLAYER = 73289
local DUR = 30 -- in minutes
function OpenEvent()
          for _, tid in ipairs(getPlayersOnline()) do
                    setPlayerStorageValue(tid, STORAGE_PLAYER, 1)
          end
          setGlobalStorageValue(STORAGE_EVENT, 1)
          doBroadcastMessage("O Evento castle foi aberto.", 25)
end
function getWinnerCastle(cid)
          CastleWalls()
          local player = getTopCreature(THRONE_POS).uid
          if getGlobalStorageValue(STORAGE_EVENT) < 0 then
                    return true
          end
          if (isPlayer(player)) then
                    if (getPlayerStorageValue(player, STORAGE_PLAYER) > 0) then
                              pid = getPlayerGUID(cid)
                              setHouseOwner(100, pid)
                              doPlayerAddPremiumDays(player, 7)
                              for _, cid in ipairs(getPlayersOnline()) do
                                        setPlayerStorageValue(cid, STORAGE_PLAYER, 0)
                                        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                              end
                              doBroadcastMessage(getCreatureName(player) .. " ganhou o evento.", 25)
                              doTeleportThing(player, {x = 531, y = 459, z = 7})
                              doCreateItem(391, 1, {x = 559, y = 453, z = 7})
                    end
          else
                    doBroadcastMessage("Ningúem ganhou o evento.", 27)
                    for _, pid in ipairs(getPlayersOnline()) do
                              setPlayerStorageValue(pid, STORAGE_PLAYER, 0)
                              doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                    end
          end
          setGlobalStorageValue(STORAGE_EVENT, 0)
          return db.executeQuery("DELETE FROM `player_storage` WHERE `key` = " .. STORAGE_PLAYER)
end
function CastleWalls()
          local pedra = getTileItemById({ x = 539, y = 474, z = 7}, 1285)
          local escada = getTileItemById({ x = 539, y = 474, z = 7}, 3687)
          if pedra.uid > 0 then
                    return doRemoveItem(pedra.uid)
          else
                    return doCreateItem(1285, 1, { x = 539, y = 474, z = 7})
          end
          if escada.uid > 0 then
                    return doRemoveItem(escada.uid)
          else
                    return doCreateItem(3687, 1, {x = 539, y = 474, z = 7})
          end
end
function onSay(cid, words, param, channel)
          if ((param == "abrir") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then
                    doPlayerSendTextMessage(cid, 27, "O evento já esta aberto.") return true
          elseif ((param == "fechar") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then
                    getWinnerCastle()
                    CastleWalls()
                    return true
          end
          doCreateItem(3687, 1, {x = 539, y = 474, z = 7})
          OpenEvent()
          CastleWalls()
          addEvent(getWinnerCastle, DUR * 60 * 1000)
          return true
end

 

A questão da escada não sumir eu teria que refazer o script do zero, não sou muito bom em editar script já pronto, mas agora estou sem tempo de refazer o script.

Por favor, caso der erro poste o erro, não faça igual alguns membros que apenas diz "Deu Erro" e mais nada.

 

Att.

Giovani Rodrigo

Editado por GiovaniRodrigo (veja o histórico de edições)
Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

deu esses erros

 

 

[31/05/2013 17:57:28] [Error - TalkAction Interface] 
[31/05/2013 17:57:28] data/talkactions/scripts/castle.lua
[31/05/2013 17:57:28] Description: 
[31/05/2013 17:57:28] (internalGetPlayerInfo) Player not found when requesting player info #18
 
[31/05/2013 17:57:28] [Error - TalkAction Interface] 
[31/05/2013 17:57:28] data/talkactions/scripts/castle.lua
[31/05/2013 17:57:28] Description: 
[31/05/2013 17:57:28] (luaDoPlayerAddPremiumDays) Player not found

e esse erro aki quando o evento acaba nada acontece o player continua no piso  e da esse erro no console

 

[31/05/2013 18:04:05] [Error - TalkAction Interface] 
[31/05/2013 18:04:05] In a timer event called from: 
[31/05/2013 18:04:05] data/talkactions/scripts/castle.lua:onSay
[31/05/2013 18:04:05] Description: 
[31/05/2013 18:04:05] data/talkactions/scripts/castle.lua:23: attempt to index local 'T' (a boolean value)
[31/05/2013 18:04:05] stack traceback:
[31/05/2013 18:04:05]  data/talkactions/scripts/castle.lua:23: in function <data/talkactions/scripts/castle.lua:14>
Editado por KennyXD (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

deu esses erros

 

 

[31/05/2013 17:57:28] [Error - TalkAction Interface] 
[31/05/2013 17:57:28] data/talkactions/scripts/castle.lua
[31/05/2013 17:57:28] Description: 
[31/05/2013 17:57:28] (internalGetPlayerInfo) Player not found when requesting player info #18
 
[31/05/2013 17:57:28] [Error - TalkAction Interface] 
[31/05/2013 17:57:28] data/talkactions/scripts/castle.lua
[31/05/2013 17:57:28] Description: 
[31/05/2013 17:57:28] (luaDoPlayerAddPremiumDays) Player not found

e esse erro aki quando o evento acaba nada acontece o player continua no piso  e da esse erro no console

 

 

[31/05/2013 18:04:05] [Error - TalkAction Interface] 
[31/05/2013 18:04:05] In a timer event called from: 
[31/05/2013 18:04:05] data/talkactions/scripts/castle.lua:onSay
[31/05/2013 18:04:05] Description: 
[31/05/2013 18:04:05] data/talkactions/scripts/castle.lua:23: attempt to index local 'T' (a boolean value)
[31/05/2013 18:04:05] stack traceback:
[31/05/2013 18:04:05]  data/talkactions/scripts/castle.lua:23: in function <data/talkactions/scripts/castle.lua:14>

Recopie o código e teste

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

ae agora não deu nenhum erro no console entregou o player os 7 Dias de Premium porem o ganhador não tá ganhando a house.

Link para o post
Compartilhar em outros sites

ae agora não deu nenhum erro no console entregou o player os 7 Dias de Premium porem o ganhador não tá ganhando a house.

Recopie e teste.

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

agora deu esse erro no console

 

 

[03/06/2013 00:16:47] (internalGetPlayerInfo) Player not found when requesting player info #18

 

e no caso fiz 1 teste com a house em nome do player Juca e quando terminou o evento deu o erro citado acima e ficando assim

 
00:15 You see a closed door.
It belongs to house 'Wisland Castle'. Juca owns this house.
 
00:15 O Evento castle foi aberto.
 
00:16 {ADM} Master Viciado ganhou o evento.
 
00:16 You see a closed door.
It belongs to house 'Wisland Castle'. Nobody owns this house. It costs 2015000 gold coins.

foi tirada a house do jogador juca como se ele tive-se dado !leave house porem não foi dada a house ao ganhador no caso {ADM} Master Viciado.

Editado por KennyXD (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

agora deu esse erro no console

 

 

[03/06/2013 00:16:47] (internalGetPlayerInfo) Player not found when requesting player info #18

 

e no caso fiz 1 teste com a house em nome do player Juca e quando terminou o evento deu o erro citado acima e ficando assim

 
00:15 You see a closed door.
It belongs to house 'Wisland Castle'. Juca owns this house.
 
00:15 O Evento castle foi aberto.
 
00:16 {ADM} Master Viciado ganhou o evento.
 
00:16 You see a closed door.
It belongs to house 'Wisland Castle'. Nobody owns this house. It costs 2015000 gold coins.

foi tirada a house do jogador juca como se ele tive-se dado !leave house porem não foi dada a house ao ganhador no caso {ADM} Master Viciado.

Cara eu sei por que isso está acontecendo, mas não sei como resolver.

E mesmo que estivesse dado certo acho que a house quem iria ganhar seria quem fez o evento, não sei muito bem.

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

aff más esse evento existe no RadBR a mais de 4 anos que existe esse evento lá porem lá o evento é automatico o evento começa todos os domingos as 20:00 e o ganhador ganha 7 dias de premium + a house.

 

tenta me ajudar ai pedi ajuda algum amigo seu =(

Link para o post
Compartilhar em outros sites

aff más esse evento existe no RadBR a mais de 4 anos que existe esse evento lá porem lá o evento é automatico o evento começa todos os domingos as 20:00 e o ganhador ganha 7 dias de premium + a house.

 

tenta me ajudar ai pedi ajuda algum amigo seu =(

Editei uma coisa no script muito nada ver, mas vai saber né?! Então recopie o código e teste.

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

[03/06/2013 23:16:28] [Error - TalkAction Interface] 
[03/06/2013 23:16:28] In a timer event called from: 
[03/06/2013 23:16:28] data/talkactions/scripts/castle.lua:onSay
[03/06/2013 23:16:28] Description: 
[03/06/2013 23:16:28] (internalGetPlayerInfo) Player not found when requesting player info #18
[03/06/2013 23:16:28] > Broadcasted message: "{ADM} Master Viciado ganhou o evento.".
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo