Ir para conteúdo
  • 0

juliok80

Pergunta

E ae galera, blz!?

 

Estou tendo problemas com o NPC abaixo, esses dias ele travou de vez e deixou o OT todo lagado... gostaria de saber se alguém sabe o que tem de errado nele, a função que tinha dado pau foi a onThink, não consegui tirar o print, pq o pc travou e tive que reiniciar... o NPC ainda exibe alguns erros no console, mas não consigo identificar onde está o erro.

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Morte" script="data/npc/scripts/npchunt.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="300"/>
<parameters>
<parameter key="message_greet" value="Ola. Para entrar na arena voce deve pagar uma taxa de 500k. Diga {arena} para entrar na quest." />
<parameter key="message_farewell" value="Ate mais." />
<parameter key="message_walkaway" value="Ate mais." />
</parameters>
</npc>

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
local pos = {x=86, y=945, z=15} -- Local da hunt
local posreturn = {x=160, y=54, z=7} -- Posiçao onde o player sera teleportado quando acabar o tempo
local money = 250000 --- Quanto de dinheiro sera removido

config = {
time = 15 ---Tempo que ele vai ficar na hunt sabendo que cada numeral equivale a um minuto-----
}
function doReturnPos()
doTeleportThing(cid, posreturn)
setGlobalStorageValue(24688, 0)
setGlobalStorageValue(24686, none)
setPlayerStorageValue(cid, 28680, 0)
end
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'arena') then
if getGlobalStorageValue(24688) == 1 then
doPlayerSendTextMessage(cid,22,"O player "..getGlobalStorageValue(24686).." esta na arena")
return true
end
if not doPlayerRemoveMoney(cid, money) then
doPlayerSendTextMessage(cid,22,""..getPlayerName(cid).." precisa de 500k para entrar na arena")
return true
end
doPlayerRemoveMoney(cid, money)
doPlayerSendTextMessage(cid,22,""..getPlayerName(cid).." voce tem 15 minutos para fazer a quest se passar o tempo, voce sera teleportado para o templo.")
doTeleportThing(cid, pos)
setGlobalStorageValue(24688, 1)
setGlobalStorageValue(24686, getPlayerName(cid))
setPlayerStorageValue(cid, 28680, 1)
addEvent(doReturnPos, config.time*60*1000)
else
selfSay('Diga arena', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Erros que aparecem no console:

 

errotg.png

 

Estou usando ele para liberar a entrada para a quest arena, a função dele é teleportar o player para dentro da arena e deixar o player nesta área por 15 minutos, após este tempo o player é teleportado para o templo e se outro player tentar entrar na arena, o NPC informa que já existe um player dentro da arena.

 

Só estou postando o código do NPC aqui, pois o código completo possui também funções para verificar se o player deslogou ou morreu.

Segue o link do NPC completo: http://www.xtibia.co...87179-npc-hunt/

 

Ah... e outra coisa que reparei é que o NPC cobra o dobro do preço que é colocado na variável money, por este motivo tive que colocar 250k na variável e 500k na mensagem. tongue.png

 

Muitíssimo obrigado!

Editado por juliok80
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

function doReturnPos()

mude pra

function doReturnPos(cid)

tu precisa por os parametros nas funçoes.. ;x

 

aki tb ta errado...

setGlobalStorageValue(24686, none)

 

da onde ta vindo esse none?

Editado por Slicer
Link para o comentário
Compartilhar em outros sites

  • 0

function doReturnPos()

mude pra

function doReturnPos(cid)

tu precisa por os parametros nas funçoes.. ;x

 

aki tb ta errado...

setGlobalStorageValue(24686, none)

 

da onde ta vindo esse none?

 

Rapaz... não faço a minima idéia! UAHEUHAUEHA

Não entendo muito de scripts, ainda sou bem iniciante!

 

Vou testar e daqui a pouco eu volto pra dizer se funfou.

 

@EDIT

 

Troquei a função conforme informado e não funfou, continua aparecendo os erros...

 

Por favor me ajudem cry.gif

 

UAHUEHAUEA

Editado por juliok80
Link para o comentário
Compartilhar em outros sites

  • 0

erro meu, esqueci de mandar arrumar embaixo tb..

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)

local pos = {x=86, y=945, z=15} -- Local da hunt
local posreturn = {x=160, y=54, z=7} -- Posiçao onde o player sera teleportado quando acabar o tempo
local money = 250000 --- Quanto de dinheiro sera removido
config = {
time = 15 ---Tempo que ele vai ficar na hunt sabendo que cada numeral equivale a um minuto-----
}
function doReturnPos(cid)
if isCreature(cid) then
  doTeleportThing(cid, posreturn)
  setGlobalStorageValue(24688, 0)
  setGlobalStorageValue(24686, -1)
  setPlayerStorageValue(cid, 28680, 0)
end
end

if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'arena') then
  if getGlobalStorageValue(24688) == 1 then
  doPlayerSendTextMessage(cid,22, "O player "..getGlobalStorageValue(24686).." esta na arena")
  return true
  end
  if not doPlayerRemoveMoney(cid, money) then
  doPlayerSendTextMessage(cid, 22, getPlayerName(cid).." precisa de 500k para entrar na arena")
  return true
  end
  doPlayerRemoveMoney(cid, money)
  doPlayerSendTextMessage(cid, 22, getPlayerName(cid).." voce tem 15 minutos para fazer a quest se passar o tempo, voce sera teleportado para o templo.")
  doTeleportThing(cid, pos)
  setGlobalStorageValue(24688, 1)
  setGlobalStorageValue(24686, getPlayerName(cid))
  setPlayerStorageValue(cid, 28680, 1)
  addEvent(doReturnPos, config.time*60*1000, cid)
else
  selfSay('Diga arena', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por Slicer
Link para o comentário
Compartilhar em outros sites

  • 0

erro meu, esqueci de mandar arrumar embaixo tb..

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)

local pos = {x=86, y=945, z=15} -- Local da hunt
local posreturn = {x=160, y=54, z=7} -- Posiçao onde o player sera teleportado quando acabar o tempo
local money = 250000 --- Quanto de dinheiro sera removido
config = {
time = 15 ---Tempo que ele vai ficar na hunt sabendo que cada numeral equivale a um minuto-----
}
function doReturnPos(cid)
if isCreature(cid) then
  doTeleportThing(cid, posreturn)
  setGlobalStorageValue(24688, 0)
  setGlobalStorageValue(24686, -1)
  setPlayerStorageValue(cid, 28680, 0)
end
end

if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'arena') then
  if getGlobalStorageValue(24688) == 1 then
  doPlayerSendTextMessage(cid,22, "O player "..getGlobalStorageValue(24686).." esta na arena")
  return true
  end
  if not doPlayerRemoveMoney(cid, money) then
  doPlayerSendTextMessage(cid, 22, getPlayerName(cid).." precisa de 500k para entrar na arena")
  return true
  end
  doPlayerRemoveMoney(cid, money)
  doPlayerSendTextMessage(cid, 22, getPlayerName(cid).." voce tem 15 minutos para fazer a quest se passar o tempo, voce sera teleportado para o templo.")
  doTeleportThing(cid, pos)
  setGlobalStorageValue(24688, 1)
  setGlobalStorageValue(24686, getPlayerName(cid))
  setPlayerStorageValue(cid, 28680, 1)
  addEvent(doReturnPos, config.time*60*1000, cid)
else
  selfSay('Diga arena', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

 

Rapaz, vou tentar com esse novo script ai... pq só alterando para a função function doReturnPos(cid) o player parou de ser teleportado de volta para o templo, quando acaba o tempo. Mas agora vou testar desse jeito ai e já volto pra dizer se fonunciou. he.gif

 

@EDIT

 

Aeeeeeeee MAN!

 

Aparentemente funcionou... deixei o OT o dia todo e não apareceu mais aquele erro.

 

Muchas gracias niño!

 

You have found my + REP.

Editado por juliok80
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...