Ir para conteúdo
  • Cadastre-se

(Resolvido)Erros em scripts de evento.


Ir para solução Resolvido por Dwarfer,

Posts Recomendados

Primeiramente, da esse erro na talk.

 

MbDjUGX.png

 

-- == Blood Castle Event por Killua == --
function onSay(cid, words, param, channel)
     local plural = bloodconfig.tempoTP == 1 and "minuto" or "minutos"
     local plurals = bloodconfig.tempoAberto == 1 and "minuto" or "minutos"
     doBroadcastMessage("[Blood Castle] O portal para o evento vai ser aberto em " .. bloodconfig.tempoTP .. " " .. plural .. ", nao percam!")
     addEvent(createTeleportb, bloodconfig.tempoTP*60*1000)
     addEvent(doBroadcastMessage, bloodconfig.tempoTP*60*1000, "[Blood Castle] O teleport para o evento foi aberto no templo e vai sumir em " .. bloodconfig.tempoAberto .. " " .. plurals .. ". Se apressem!")
     addEvent(removeTpb, bloodconfig.tempoTP+bloodconfig.tempoAberto*60*1000)
     addEvent(checkBlood, bloodconfig.tempoTP+bloodconfig.tempoAberto*60*1000+60*1000)
     addEvent(Guarantee, bloodconfig.tempoMaximo*60*1000+15000)
     return true
end

 

O segundo problema, é que não remove a statua da sala de espera, no script original são mais que uma posição, porém eu coloquei todas as mesma, pq quero que suma só a estatua.

 

9rcFi96.png

 

 

lib

 

-- == Blood Castle Event por Killua == --

bloodconfig = {

     templo = {x = 1023, y = 1027, z = 7}, -- templo

     posGuarda = {x = 2720, y = 956, z = 8}, -- Onde o guarda do portão vai nascer

     premios = {{11773, 3}, {9971, 15}}, -- Premios que o vencedor vai ganhar {id, quantidade}

     positionTP = {x = 1106, y = 975, z = 7}, -- Onde o tp será criado

     positionEvento = {x = 2566, y = 972, z = 6}, -- Para onde o tp vai levar

     tempoTP = 1, -- Depois de quanto tempo que avisou vai ser criado o tp? Em minutos

     tempoAberto = 2, -- Tempo que o tp fica aberto. Em minutos

     minPlayers = 2, -- Número mínimo de players que devem entrar para que o evento aconteça

     tempoMaximo = 45, -- Tempo máximo, em minutos, que alguem pode permanecer no evento

     playersStorage = 54910, -- Não mude

     posPedras = {{x = 2566, y = 971, z = 6, stackpos=1}, {x = 2566, y = 971, z = 6, stackpos=1}, {x = 2566, y = 971, z = 6, stackpos=1}, {x = 2566, y = 971, z = 6,stackpos=1}, {x = 2566, y = 971, z = 6,        stackpos=1}}, -- Posições das pedras que bloqueiam a entrada do evento

     idDasParedes = 9258, -- ID das paredes que vao ser removidas quando o Guarda morrer (todas devem ter o mesmo id)

     estatua = {x = 2735, y = 937, z = 5}, -- Posicao onde o arcanjo vai ser criado

     tempoSaida = 30, -- Quando tempo o tp q é criado quando a estátua morre vai ficar? Em segundos

     posParedes = {{x = 2721, y = 955, z = 8, stackpos=1}, {x = 2721, y = 956, z = 8, stackpos=1}, {x = 2721, y = 957, z = 8, stackpos=1}}, -- Posições das paredes que ficam atrás do guarda

     fromPos = {x = 2536, y = 864, z = 8}, -- Canto superior esquerdo da área do seu evento ---- Deve ser uma área quadrada ou retangular, de forma que todo o evento fique dentro dela.
     toPos = {x = 2772, y = 1023, z = 5}, -- Canto inferior direito da área do seu evento
}

-- [[ NAO ALTERE MAIS NADA DAQUI PARA BAIXO! ]] --

function removeTpb()
     local t = getTileItemById(bloodconfig.positionTP, 1387)
     if t then
          doRemoveItem(t.uid, 1)
          doSendMagicEffect(bloodconfig.positionTP, CONST_ME_POFF)
     end
end

function removeStones()
     for i = 1, #bloodconfig.posPedras do
          local pedra = getTileItemById(bloodconfig.posPedras[i], 1304)
          if pedra then
               doRemoveItem(pedra.uid, 1)
          end
     end
end

function putStones()
     for i = 1, #bloodconfig.posPedras do
         local pedra = getTileItemById(bloodconfig.posPedras[i], 1304).uid
         if pedra < 1 then
             doCreateItem(1304, 1, bloodconfig.posPedras[i])
         end
     end
end 

function createTeleportb()
     local tip = doCreateTeleport(1387, bloodconfig.positionEvento, bloodconfig.positionTP)
     doItemSetAttribute(tip, "aid", 4726)
end

function removeTpa()
     local t = getTileItemById(bloodconfig.estatua, 1387)
     if t then
          doRemoveItem(t.uid, 1)
          doSendMagicEffect(bloodconfig.estatua, CONST_ME_POFF)
     end
end


function getPlayersInBlood()
     local playersInBlood = getGlobalStorageValue(bloodconfig.playersStorage)
     return playersInBlood < 0 and 0 or playersInBlood
end

function removePlayers()
     for _, pid in pairs(getPlayersOnline()) do
          if isInArea(getThingPos(pid), bloodconfig.fromPos, bloodconfig.toPos) then
               doTeleportThing(pid, bloodconfig.templo, false)
               doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce foi removido do Blood Castle. Possiveis causas: o evento nao atingiu o numero minimo de players; Voce                      permaneceu no evento por mais de " .. bloodconfig.tempoMaximo .. " minutos.")
          end
     end
end

function checkBlood()
     if getPlayersInBlood() >= bloodconfig.minPlayers then
          removeStones()
          doBroadcastMessage("[Blood Castle] O Evento comecou e o teleporte para ele foi fechado. Boa sorte a todos!")
          if not isMonster(getTopCreature(bloodconfig.posGuarda).uid) then
               doCreateMonster("Guarda do Portao", bloodconfig.posGuarda)
          end
          addEvent(removePlayers, bloodconfig.tempoMaximo*60*1000)
     else
          removePlayers()
          setGlobalStorageValue(bloodconfig.playersStorage, 0)
          doBroadcastMessage("[Blood Castle] O evento nao atingiu o numero minimo de participantes e foi cancelado.")
          if isMonster(getTopCreature(bloodconfig.posGuarda).uid) then
               doRemoveCreature(getTopCreature(bloodconfig.posGuarda).uid)
          end
          if isMonster(getTopCreature(bloodconfig.estatua).uid) then
               doRemoveCreature(getTopCreature(bloodconfig.estatua).uid)
          end
     end
end

function putWalls()
     for i = 1, #bloodconfig.posParedes do
          doCreateItem(bloodconfig.idDasParedes, 1, bloodconfig.posParedes[i])
     end
end

function removeWalls()
     for i = 1, #bloodconfig.posParedes do
          local wall = getTileItemById(bloodconfig.posParedes[i], bloodconfig.idDasParedes)
          if wall then
               doRemoveItem(wall.uid, 1)
          end
     end
end

function createAngel()
     if not isMonster(getTopCreature(bloodconfig.estatua).uid) then
          doCreateMonster("Arcanjo", bloodconfig.estatua)
          doBroadcastMessage("[Blood Castle] A estatua do arcanjo apareceu!")
     end
end

function Guarantee()
     if isMonster(getTopCreature(bloodconfig.posGuarda).uid) then
          putWalls()
          doRemoveCreature(getTopCreature(bloodconfig.posGuarda).uid)
     elseif isMonster(getTopCreature(bloodconfig.estatua).uid) then
          putStones()
          putWalls()
          doRemoveCreature(getTopCreature(bloodconfig.estatua).uid)
      end
end

 

 

Outra coisa, pq ao iniciar o distro, aparece 0 jogadores no evento? E passível de resolução?

 

y6tdkrZ.png

 

movements

 

-- == Blood Castle Event por Killua == --

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
     if item.actionid == 4726 then
          setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()+1)
          print(getPlayersInBlood().. " Jogadores no Blood Castle")
     elseif item.actionid == 9371 then
          setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()-1)
          print(getPlayersInBlood().. " Jogadores no Blood Castle")
     end
return true
end

 

Se precisar do script original, segue o link, porém eu so alterei na lib as modificações.

 

 

 

 

 

Link para o post
Compartilhar em outros sites

Você não precisa colocar tantas posiçoes iguais da mesma pedra, por que alguns for's iram puxar quantas pedras sao por essa tabela, apenas reduza para.

posPedras = {x = 2566, y = 971, z = 6, stackpos=1},

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites
7 horas atrás, klipstyle disse:

Você não precisa colocar tantas posiçoes iguais da mesma pedra, por que alguns for's iram puxar quantas pedras sao por essa tabela, apenas reduza para.

posPedras = {x = 2566, y = 971, z = 6, stackpos=1},

 

Olá, fiz o que você sugeriu, mas ainda sim não remove a statua.

Link para o post
Compartilhar em outros sites
8 horas atrás, JcA disse:

 

Olá, fiz o que você sugeriu, mas ainda sim não remove a statua.

O id esta correto em

idDasParedes 

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites
42 minutos atrás, klipstyle disse:

O id esta correto em


idDasParedes 

 

Não, essa parte que remove a statua não precisa de ids, isso é da parede, quando mata o guarda, o da statua é quando abre a sala de espera para começar o evento, entendeu? Tem que mudar algo no codigo

Link para o post
Compartilhar em outros sites

Realmente confundi feio ali, mais tenta puxar direto a posição sem o for ja que é apenas 1 estatua agora.E confirma pra mim oque é o "1304"

function removeStones()
          local pedra = getTileItemById(bloodconfig.posPedras, 1304)
          if pedra then
               doRemoveItem(pedra.uid, 1)
          end
end

function putStones()
         local pedra = getTileItemById(bloodconfig.posPedras, 1304).uid
         if pedra < 1 then
             doCreateItem(1304, 1, bloodconfig.posPedras[i])
         end
end 

 

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites
26 minutos atrás, klipstyle disse:

Realmente confundi feio ali, mais tenta puxar direto a posição sem o for ja que é apenas 1 estatua agora.E confirma pra mim oque é o "1304"


function removeStones()
          local pedra = getTileItemById(bloodconfig.posPedras, 1304)
          if pedra then
               doRemoveItem(pedra.uid, 1)
          end
end

function putStones()
         local pedra = getTileItemById(bloodconfig.posPedras, 1304).uid
         if pedra < 1 then
             doCreateItem(1304, 1, bloodconfig.posPedras[i])
         end
end 

 

 

Eu que tenho que me desculpar, você tinha razão sobre os ids, o problema era que o cara criou isso direto dentro dos codigos, e não fez uma variavel, essa parte essa resolvida, só falta mesmo essa mensagem do distro.

 

 

Link para o post
Compartilhar em outros sites

Eu não entendi pq um Stepin printa no start do server, e tambem nao vejo a menor utilidade para printar quantia de players na distro, eu simplesmente desativaria o print amigo.

-- == Blood Castle Event por Killua == --

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
     if item.actionid == 4726 then
          setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()+1)
          --print(getPlayersInBlood().. " Jogadores no Blood Castle")
     elseif item.actionid == 9371 then
          setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()-1)
          --print(getPlayersInBlood().. " Jogadores no Blood Castle")
     end
return true
end

 

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites
4 horas atrás, klipstyle disse:

Eu não entendi pq um Stepin printa no start do server, e tambem nao vejo a menor utilidade para printar quantia de players na distro, eu simplesmente desativaria o print amigo.


-- == Blood Castle Event por Killua == --

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
     if item.actionid == 4726 then
          setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()+1)
          --print(getPlayersInBlood().. " Jogadores no Blood Castle")
     elseif item.actionid == 9371 then
          setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()-1)
          --print(getPlayersInBlood().. " Jogadores no Blood Castle")
     end
return true
end

 

 

É importante sim, pois avisa a quantidade que ja tem dentro, fazendo com que os que querem vir, venha com pressa, etc...

O problema é que ta aparecendo no distro, sem mesmo começar o evento etcc...

Link para o post
Compartilhar em outros sites
  • Solução

Sobre o print que aparece ao iniciar o servidor, no arquivo do globalevents, tira essa linha:

 

     print(getPlayersInBlood().. "Jogadores no Blood Castle")

 

Contato:

 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo