local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
if focus == cid then
selfSay('Good bye then.')
focus = 0
talk_start = 0
end
end
function onCreatureTurn(creature)
end
function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end
function onCreatureSay(cid, type, msg)
local msg = string.lower(msg)
if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 4 then
if getPlayerVocation(cid) == 4 then
selfSay('Hello ' .. creatureGetName(cid) .. '! What spell do you want to learn?')
focus = cid
talk_start = os.clock()
else
selfSay('Sorry, I sell spells for knights.')
end
elseif string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')
elseif focus == cid then
talk_start = os.clock()
if msgcontains(msg, 'annihilation') and focus == cid then
if pay(cid,170) then
learnSpell(cid,'exori gran ico')
else selfSay('Sorry, you don\'t have enough money.')
talk_start = os.clock()
end
end
if msgcontains(msg, 'blood rage') and focus == cid then
if pay(cid,170) then
learnSpell(cid,'utito tempo')
else selfSay('Sorry, you don\'t have enough money.')
talk_start = os.clock()
end
end
if msgcontains(msg, 'brutal strike') and focus == cid then
if pay(cid,170) then
learnSpell(cid,'exori ico')
else selfSay('Sorry, you don\'t have enough money.')
talk_start = os.clock()
end
end
if msgcontains(msg, 'challenge') and focus == cid then
if pay(cid,170) then
learnSpell(cid,'exeta res')
else selfSay('Sorry, you don\'t have enough money.')
talk_start = os.clock()
end
end
elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
focus = 0
talk_start = 0
end
end
function onCreatureChangeOutfit(creature)
end
function onThink()
if (os.clock() - talk_start) > 30 then
if focus > 0 then
selfSay('Next Please...')
end
focus = 0
end
if focus ~= 0 then
if getDistanceToCreature(focus) > 5 then
selfSay('Good bye then.')
focus = 0
end
end
end
- Fórum
- xTibia - Notícias e Suporte
- Soluções
- Archived
- Problema No Npc Q Vende Magias
4
584
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

26 de fevereiro de 2012 às 20:23
26 de fevereiro de 2012 às 20:39
Jhon, tu é f*** cara...
kkkkkkk
Eu me mato tentando identificar, e vc faz rapidinho!
Valeu cara...
Mais me diz ai, pra eu aprender, onde tava o problema??
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

26 de fevereiro de 2012 às 22:05
na parte da função onCreatureSay, faltou fechar com "end" três "if".
Exemplo:
Antes -
if msgcontains(msg, 'blood rage') and focus == cid then
if pay(cid,170) then
learnSpell(cid,'utito tempo')
else selfSay('Sorry, you don\'t have enough money.')
talk_start = os.clock()
end
Depois -
if msgcontains(msg, 'blood rage') and focus == cid then
if pay(cid,170) then
learnSpell(cid,'utito tempo')
else selfSay('Sorry, you don\'t have enough money.')
talk_start = os.clock()
end
end
Dica: Quando criar um código lembra de levar organizadinho pra vc n se perder depois.


info
Grupo: Campones
Registrado: 08/09/07
Posts: 7
Reputação: 0
Olá pessoal, bem meu npc que vende magias esta dando uns pequenos problemas, porém nao consigo identificar:
spellsknight.lua:170 'end' expected <to close 'if' at line 68> near '<eof>'
local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 4 then if getPlayerVocation(cid) == 4 then selfSay('Hello ' .. creatureGetName(cid) .. '! What spell do you want to learn?') focus = cid talk_start = os.clock() else selfSay('Sorry, I sell spells for knights.') end elseif string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'annihilation') and focus == cid then if pay(cid,170) then learnSpell(cid,'exori gran ico') else selfSay('Sorry, you don\'t have enough money.') talk_start = os.clock() end if msgcontains(msg, 'blood rage') and focus == cid then if pay(cid,170) then learnSpell(cid,'utito tempo') else selfSay('Sorry, you don\'t have enough money.') talk_start = os.clock() end if msgcontains(msg, 'brutal strike') and focus == cid then if pay(cid,170) then learnSpell(cid,'exori ico') else selfSay('Sorry, you don\'t have enough money.') talk_start = os.clock() end if msgcontains(msg, 'challenge') and focus == cid then if pay(cid,170) then learnSpell(cid,'exeta res') else selfSay('Sorry, you don\'t have enough money.') talk_start = os.clock() end elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. creatureGetName(cid) .. '!') focus = 0 talk_start = 0 end end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Next Please...') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Good bye then.') focus = 0 end end end