Ir para conteúdo

[Npc] <Eof> Expected Near 'end'


sowpert

Posts Recomendados

Boa Tarde galera do XTibia! Tô fazendo um NPC Monk pra ajudar os new players.

Ele cura como o NPC normal do Tibia e tem uma missão com ele, que ele dá uma carta de recrutamento.

 

Estou tendo este erro: <eof> expected near 'end'

 

 

 

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

 

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 talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if (msgcontains(msg, "hello") or msgcontains(msg, "hi")) and not npcHandler:isFocused

 

(cid) then

if getCreatureHealth(cid) < 85 then

npcHandler:say("Olá, "..getCreatureName(cid).."! Voce parece precisar de

 

ajuda, deixe-me ajuda-lo. A Westwall Village precisa de guerreiros para proteger as ameaças por

 

aqui, voce gostaria de se {alistar}?", cid)

doCreatureAddHealth(cid, 500 - getCreatureHealth(cid))

doSendMagicEffect(getCreaturePosition(cid), 12)

talkState[talkUser] = 1

else

selfSay("Olá, "..getCreatureName(cid).."! Eu irei lhe {curar} caso você

 

esteja machucado ou envenenado. Você também pode se {alistar} para as tarefas que a Westwall

 

Village precisa.")

npcHandler:addFocus(cid)

talkState[talkUser] = 1

end

return true

end

if(not npcHandler:isFocused(cid)) then

return false

 

elseif msgcontains(msg, "bye") or msgcontains(msg, "farewell") then

selfSay("Que Deus lhe abençoe, " .. getCreatureName(cid) .. "!", cid, TRUE)

npcHandler:releaseFocus(cid)

elseif msgcontains(msg, "alistar") then

if (getPlayerStorageValue(cid, 101) > 0) and talkState[talkUser] == 1 then

selfSay('A Westwall Village tem enfrentado ameaças constantes e nós precisamos de

 

jovens guerreiros dispostos à desafios. Você gostaria de ser recrutado?', cid)

talkState[talkUser] = 2

else

selfsay('Você já foi recrutado', cid)

talkState[talkUser] = 0

elseif msgcontains(msg, "yes") or msgcontains(msg, "sim") and talkState[talkUser] == 2

 

then

setPlayerStorageValue(cid,101,1)

doPlayerAddItem(cid,7491,1)

selfSay('Leve esta Carta de Recrutamento para o Ferreiro Belben, ele irá prepará-lo para a

 

batalha.', cid)

elseif msgcontains(msg, "curar") then

if getCreatureCondition(cid, CONDITION_FIRE) == TRUE then

npcHandler:say("Você está queimando, deixe-me ajudá-lo.", cid)

doRemoveCondition(cid, CONDITION_FIRE)

doSendMagicEffect(getCreaturePosition(cid), 14)

elseif getCreatureCondition(cid, CONDITION_POISON) == TRUE then

npcHandler:say("Você está envenenado, deixe-me ajudá-lo.", cid)

doRemoveCondition(cid, CONDITION_POISON)

doSendMagicEffect(getCreaturePosition(cid), 13)

elseif getCreatureHealth(cid) < 85 then

npcHandler:say("Você parece estar machucado, deixe-me curá-lo.", cid)

doCreatureAddHealth(cid, 65 - getCreatureHealth(cid))

doSendMagicEffect(getCreaturePosition(cid), 12)

else

npcHandler:say("Você não parece estar machucado, " .. getCreatureName

 

(cid) .. ". Eu só ajudo em casos de verdadeiras emergencias, aumente sua vida comendo comida.",

 

cid)

end

return TRUE

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:setMessage(MESSAGE_WALKAWAY, "Que Deus lhe abençoe.")

 

Link para o comentário
Compartilhar em outros sites

Tente assim:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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 talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if (msgcontains(msg, "hello") or msgcontains(msg, "hi")) and not npcHandler:isFocused(cid) then
 if getCreatureHealth(cid) < 85 then
  npcHandler:say("Olá, "..getCreatureName(cid).."! Voce parece precisar de ajuda, deixe-me ajuda-lo. A Westwall Village precisa de guerreiros para proteger as ameaças por aqui, voce gostaria de se {alistar}?", cid)
  doCreatureAddHealth(cid, 500 - getCreatureHealth(cid))
  doSendMagicEffect(getCreaturePosition(cid), 12)
  talkState[talkUser] = 1
 else
  selfSay("Olá, "..getCreatureName(cid).."! Eu irei lhe {curar} caso você esteja machucado ou envenenado. Você também pode se {alistar} para as tarefas que a Westwall Village precisa.")
  npcHandler:addFocus(cid)
  talkState[talkUser] = 1
 end

return true
end
if(not npcHandler:isFocused(cid)) then
 return false
elseif msgcontains(msg, "bye") or msgcontains(msg, "farewell") then
 selfSay("Que Deus lhe abençoe, " .. getCreatureName(cid) .. "!", cid, TRUE)
 npcHandler:releaseFocus(cid)
elseif msgcontains(msg, "alistar") then
 if (getPlayerStorageValue(cid, 101) > 0) and talkState[talkUser] == 1 then
  selfSay('A Westwall Village tem enfrentado ameaças constantes e nós precisamos de jovens guerreiros dispostos à desafios. Você gostaria de ser recrutado?', cid)
  talkState[talkUser] = 2
 else
  selfsay('Você já foi recrutado', cid)
  talkState[talkUser] = 0
 end
elseif msgcontains(msg, "yes") or msgcontains(msg, "sim") and talkState[talkUser] == 2 then
 setPlayerStorageValue(cid,101,1)
 doPlayerAddItem(cid,7491,1)
 selfSay('Leve esta Carta de Recrutamento para o Ferreiro Belben, ele irá prepará-lo para a batalha.', cid)
elseif msgcontains(msg, "curar") then
 if getCreatureCondition(cid, CONDITION_FIRE) == TRUE then
  npcHandler:say("Você está queimando, deixe-me ajudá-lo.", cid)
  doRemoveCondition(cid, CONDITION_FIRE)
  doSendMagicEffect(getCreaturePosition(cid), 14)
 elseif getCreatureCondition(cid, CONDITION_POISON) == TRUE then
  npcHandler:say("Você está envenenado, deixe-me ajudá-lo.", cid)
  doRemoveCondition(cid, CONDITION_POISON)
  doSendMagicEffect(getCreaturePosition(cid), 13)
 elseif getCreatureHealth(cid) < 85 then
  npcHandler:say("Você parece estar machucado, deixe-me curá-lo.", cid)
  doCreatureAddHealth(cid, 65 - getCreatureHealth(cid))
  doSendMagicEffect(getCreaturePosition(cid), 12)
 else
  npcHandler:say("Você não parece estar machucado, " .. getCreatureName(cid) .. ". Eu só ajudo em casos de verdadeiras emergencias, aumente sua vida comendo comida.", cid)
 end
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:setMessage(MESSAGE_WALKAWAY, "Que Deus lhe abençoe.")

Link para o comentário
Compartilhar em outros sites

Obrigado pela ajuda, o erro foi corrigido.

Apesar de que quando eu falo "curar" ele não fala mais nada, mas aposto que é por causa dos sinais como "á" "ê" e tudo mais que o LUA não suporta.

 

Fiz de uma outra forma que também funcionou

 

 

 

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)

if(not npcHandler:isFocused(cid)) then

return false

end

 

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

 

if(msgcontains(msg, 'westwall village') or msgcontains(msg, 'Westwall Village')) then

selfSay('A Westwall Village e um lugar para novos aventureiros. Eu tambem trabalho encaminhando esses novos aventureiros que estejam interessados em se {recrutar} para tarefas.', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'recrutar') and talkState[talkUser] == 1) then

if(getPlayerStorageValue(cid, 101) < 1) then

doPlayerAddItem(cid, 7491,1)

setPlayerStorageValue(cid,101,1)

selfSay('Leve esta Carta de Recrutamento para o Ferreiro Belben, que se encontra subindo as escadas e indo para Leste. Ele ira prepara-lo para as tarefas.', cid)

else

selfSay('Voce ja foi recrutado', cid)

talkState[talkUser] = 0

end

elseif(msgcontains(msg, 'bye') and isInArray({1}, talkState[talkUser]) == TRUE) then

talkState[talkUser] = 0

selfSay('Que Deus lhe abencoe.', cid)

end

 

if(msgcontains(msg, 'curar') or msgcontains(msg, 'Curar')) then

selfSay('Com todo prazer, meu amigo!', cid)

doRemoveCondition(cid, CONDITION_POISON)

doRemoveCondition(cid, CONDITION_FIRE)

doCreatureAddHealth(cid, 500)

doSendMagicEffect(getCreaturePosition(cid), 12)

talkState[talkUser] = 0

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...