Postado Maio 31, 2015 10 anos Tente assim: local focus = 0 local talk_start = 0 local target = 0 local days = 0 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 storage = 34213 msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. getCreatureName(cid) .. '! Oi eu lhe dou 1 nivel por 10 Gold') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then if getPlayerVocation(cid) > 4 then selfSay('Sorry, you are already promoted.') talk_state = 0 elseif not isPremium(cid) then selfSay('Sorry, you must be premium to buy promotion.') talk_state = 0 else selfSay('Do you want to buy promotion for 20k?') talk_state = 1 end elseif msgcontains(msg, 'desbug') or msgcontains(msg, 'desbugar') then if getPlayerStorageValue(cid, storage) < os.time() then selfSay('Quer Desbugar por 10 Gold?') talk_state = 2 else selfSay("Você deve esperar "..math.ceil((getPlayerStorageValue(cid, storage) - os.time())/60).." minutos para desbugar novamente!") talk_start = 0 end elseif talk_state == 1 then if msgcontains(msg, 'yes') then if pay(cid,200000000) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) selfSay('You are now promoted!') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 elseif talk_state == 2 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid,2160,10) == 0 then selfSay('Voce Nao Tem Golds Suficiente.') else selfSay('Voce Foi Desbugado.') addLevel(cid, 1) setPlayerStorageValue(cid, storage, 5 * 60 + os.time()) talk_start = 0 end end talk_state = 0 elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 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 ➥ Regras | Seções OTServ | Seções BOT
Postado Maio 31, 2015 10 anos Tente assim: local focus = 0 local talk_start = 0 local target = 0 local days = 0 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 storage = 34213 msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. getCreatureName(cid) .. '! Oi eu lhe dou 1 nivel por 10 Gold') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then if getPlayerVocation(cid) > 4 then selfSay('Sorry, you are already promoted.') talk_state = 0 elseif not isPremium(cid) then selfSay('Sorry, you must be premium to buy promotion.') talk_state = 0 else selfSay('Do you want to buy promotion for 20k?') talk_state = 1 end elseif msgcontains(msg, 'desbug') or msgcontains(msg, 'desbugar') then if getPlayerStorageValue(cid, storage) < os.time() then selfSay('Quer Desbugar por 10 Gold?') talk_state = 2 else selfSay("Você deve esperar "..math.ceil((getPlayerStorageValue(cid, storage) - os.time())/60).." minutos para desbugar novamente!") talk_start = 0 end elseif talk_state == 1 then if msgcontains(msg, 'yes') then if pay(cid,200000000) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) selfSay('You are now promoted!') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 elseif talk_state == 2 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid,2160,10) == 0 then selfSay('Voce Nao Tem Golds Suficiente.') else selfSay('Voce Foi Desbugado.') addLevel(cid, 1) setPlayerStorageValue(cid, storage, 5 * 60 + os.time()) talk_start = 0 end end talk_state = 0 elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 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 ainda continua a mesma coisa, ele repeti desbug quantas vezes quiser e ainda continua sem o tempo
Postado Maio 31, 2015 10 anos Modifiquei uma parte, testa ai: local focus = 0 local talk_start = 0 local target = 0 local days = 0 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 storage = 34213 msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Olá ' .. getCreatureName(cid) .. ', eu posso lhe dar um level por 10 golds, diga "desbug".') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then if getPlayerVocation(cid) > 4 then selfSay('Sorry, you are already promoted.') talk_state = 0 elseif not isPremium(cid) then selfSay('Sorry, you must be premium to buy promotion.') talk_state = 0 else selfSay('Do you want to buy promotion for 20k?') talk_state = 1 end elseif msgcontains(msg, 'desbug') or msgcontains(msg, 'desbugar') then if getPlayerStorageValue(cid, storage) < os.time() then selfSay('Você deseja desbugar por 10 golds?') talk_state = 2 else selfSay("Você deve esperar "..math.ceil((getPlayerStorageValue(cid, storage) - os.time())/60).." minutos para desbugar novamente!") talk_start = 0 end elseif talk_state == 1 then if msgcontains(msg, 'yes') then if pay(cid,200000000) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) selfSay('You are now promoted!') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 elseif talk_state == 2 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid, 2160, 10) == false then selfSay('Você não tem o gold necessário.') talk_start = 0 else selfSay('Você foi desbugado com sucesso, aguarde 5 minutos para desbugar novamente.') addLevel(cid, 1) setPlayerStorageValue(cid, storage, 5 * 60 + os.time()) talk_start = 0 end end talk_state = 0 elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 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 Eu testei na base do Tibia e está normal, porém as funções podem ser diferentes, se der erro verifique se aparece algum erro na distro ao dar /reload npcs ou durante o carregamento da distro. ➥ Regras | Seções OTServ | Seções BOT
Postado Maio 31, 2015 10 anos Modifiquei uma parte, testa ai: local focus = 0 local talk_start = 0 local target = 0 local days = 0 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 storage = 34213 msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Olá ' .. getCreatureName(cid) .. ', eu posso lhe dar um level por 10 golds, diga "desbug".') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then if getPlayerVocation(cid) > 4 then selfSay('Sorry, you are already promoted.') talk_state = 0 elseif not isPremium(cid) then selfSay('Sorry, you must be premium to buy promotion.') talk_state = 0 else selfSay('Do you want to buy promotion for 20k?') talk_state = 1 end elseif msgcontains(msg, 'desbug') or msgcontains(msg, 'desbugar') then if getPlayerStorageValue(cid, storage) < os.time() then selfSay('Você deseja desbugar por 10 golds?') talk_state = 2 else selfSay("Você deve esperar "..math.ceil((getPlayerStorageValue(cid, storage) - os.time())/60).." minutos para desbugar novamente!") talk_start = 0 end elseif talk_state == 1 then if msgcontains(msg, 'yes') then if pay(cid,200000000) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) selfSay('You are now promoted!') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 elseif talk_state == 2 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid, 2160, 10) == false then selfSay('Você não tem o gold necessário.') talk_start = 0 else selfSay('Você foi desbugado com sucesso, aguarde 5 minutos para desbugar novamente.') addLevel(cid, 1) setPlayerStorageValue(cid, storage, 5 * 60 + os.time()) talk_start = 0 end end talk_state = 0 elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 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 Eu testei na base do Tibia e está normal, porém as funções podem ser diferentes, se der erro verifique se aparece algum erro na distro ao dar /reload npcs ou durante o carregamento da distro. Mesma coisa, acho que é a distro pois é versão 8.0 testei desse modo e funcionou aqui local focus = 0 local talk_start = 0 local target = 0 local days = 0 local time = 60 --Em minutos. local storage = 91838 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) msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. getCreatureName(cid) .. '! Oi eu lhe dou 1 nivel por 10 Gold') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then if getPlayerVocation(cid) > 4 then selfSay('Sorry, you are already promoted.') talk_state = 0 elseif not isPremium(cid) then selfSay('Sorry, you must be premium to buy promotion.') talk_state = 0 else selfSay('Do you want to buy promotion for 20k?') talk_state = 1 end elseif msgcontains(msg, 'desbug') or msgcontains(msg, 'desbugar') then if getPlayerStorageValue(cid, storage) < os.time() then selfSay('Quer Desbugar por 10 Gold?') talk_state = 2 end elseif talk_state == 1 then if msgcontains(msg, 'yes') then if pay(cid,200000000) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) selfSay('You are now promoted!') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 elseif talk_state == 2 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid,2160,10) == 0 then selfSay('Voce Nao Tem Golds Suficiente.') else selfSay('Voce Foi Desbugado.') setPlayerStorageValue(cid, storage, os.time() + time * 60) selfSay('Você pegou sua recompensa recentemente, aguarde 5 minutos.') addLevel(cid, 1) end end talk_state = 0 elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 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 Desse modo ai está funcionando, só que por enquanto que não passa os 5 minutos o player pode falar a vontade com o NPC que ele não vai responder ~~ Editado Maio 31, 2015 10 anos por TopllDanStar (veja o histórico de edições)
Postado Maio 31, 2015 10 anos Autor Mesma coisa, acho que é a distro pois é versão 8.0 testei desse modo e funcionou aqui local focus = 0 local talk_start = 0 local target = 0 local days = 0 local time = 60 --Em minutos. local storage = 91838 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) msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. getCreatureName(cid) .. '! Oi eu lhe dou 1 nivel por 10 Gold') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then if getPlayerVocation(cid) > 4 then selfSay('Sorry, you are already promoted.') talk_state = 0 elseif not isPremium(cid) then selfSay('Sorry, you must be premium to buy promotion.') talk_state = 0 else selfSay('Do you want to buy promotion for 20k?') talk_state = 1 end elseif msgcontains(msg, 'desbug') or msgcontains(msg, 'desbugar') then if getPlayerStorageValue(cid, storage) < os.time() then selfSay('Quer Desbugar por 10 Gold?') talk_state = 2 end elseif talk_state == 1 then if msgcontains(msg, 'yes') then if pay(cid,200000000) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) selfSay('You are now promoted!') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 elseif talk_state == 2 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid,2160,10) == 0 then selfSay('Voce Nao Tem Golds Suficiente.') else selfSay('Voce Foi Desbugado.') setPlayerStorageValue(cid, storage, os.time() + time * 60) selfSay('Você pegou sua recompensa recentemente, aguarde 5 minutos.') addLevel(cid, 1) end end talk_state = 0 elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 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 Desse modo ai está funcionando, só que por enquanto que não passa os 5 minutos o player pode falar a vontade com o NPC que ele não vai responder ~~ aff nao foi resolvido --' o npc nao deixa eu da desbug tipo o tempo dele seila sei que ta tipo depois do primeiro desbug eu to aki faz 30 minutos e ele nao deixo eu da desbug dnv Editado Maio 31, 2015 10 anos por anthonyx22 (veja o histórico de edições)
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.