Ir para conteúdo
  • Cadastre-se

(Ajuda) Como Colocar Tempo No Npc


Posts Recomendados

Queria Colocar Tempo No Meu Npc Para Ele Dar Level Ao Player De 5 Em 5 Minutos Alguem Pode Me Ajudar Olha Vou Deixa o Script Do Npc Ae

 

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)
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        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
Link para o post
Compartilhar em outros sites

Teste ai

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
local limitedeuso = 49002
 
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 (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then
setPlayerStorageValue(cid, limitedeuso, os.time() + 600)
else
doPlayerSendTextMessage(cid, 22, "Espere " ..(getPlayerStorageValue(cid, limitedeuso) - os.time()).. " segundos para usar o comando novamente.")
end
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        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


alterando os segundos ali > local limitedeuso = 49002

Link para o post
Compartilhar em outros sites

Teste ai

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
local limitedeuso = 49002
 
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 (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then
setPlayerStorageValue(cid, limitedeuso, os.time() + 600)
else
doPlayerSendTextMessage(cid, 22, "Espere " ..(getPlayerStorageValue(cid, limitedeuso) - os.time()).. " segundos para usar o comando novamente.")
end
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        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

alterando os segundos ali > local limitedeuso = 49002

olha funciono nao aki so aparece em verde o tempo que tem que esperar mais quando eu volto no npc ele ainda permite que eu consiga falar desbug

Link para o post
Compartilhar em outros sites

olha funciono nao aki so aparece em verde o tempo que tem que esperar mais quando eu volto no npc ele ainda permite que eu consiga falar desbug

 

Esqueci de setar uma storage :P

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
storage = 19400 -- storage em que será salvo o tempo
tempo = 5 -- em minutos
 
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 getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*1)) 
else
doPlayerSendCancel(cid, "You have to wait " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds until you can broadcast again.")
return true
end
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        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

Editado por TopllDanStar (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Esqueci de setar uma storage :P

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
storage = 19400 -- storage em que será salvo o tempo
tempo = 5 -- em minutos
 
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 getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*1)) 
else
doPlayerSendCancel(cid, "You have to wait " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds until you can broadcast again.")
return true
end
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        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

olha agr quando eu vou falar HI ele nem responde ele fica mudo qualquer coisa desbug hi ele nao ta respondendo mais

Link para o post
Compartilhar em outros sites

olha agr quando eu vou falar HI ele nem responde ele fica mudo qualquer coisa desbug hi ele nao ta respondendo mais

 

 

olha agr quando eu vou falar HI ele nem responde ele fica mudo qualquer coisa desbug hi ele nao ta respondendo mais

 

Estou sem nada pra testar e não sou muito bom com NPCs kk 

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
storage = 19400 -- storage em que será salvo o tempo
tempo = 5 -- em minutos
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        end
        end
        talk_state = 0
        
        if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*1)) 
else
doPlayerSendCancel(cid, "You have to wait " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds until you can broadcast again.")
return true
end
 
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

Link para o post
Compartilhar em outros sites

poxa ainda nao funciono tipo agr eu consigo ter dialogo soque ele nao da o tempo para eu parar de falar tipo eu posso ficar falando hi desbug direto igual no primeiro script que eu te passei  :O  :O  :O  :O  :O  :O


 

Estou sem nada pra testar e não sou muito bom com NPCs kk 

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
storage = 19400 -- storage em que será salvo o tempo
tempo = 5 -- em minutos
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        end
        end
        talk_state = 0
        
        if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*1)) 
else
doPlayerSendCancel(cid, "You have to wait " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds until you can broadcast again.")
return true
end
 
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

 

agora ta igual o primeiro script eu consigo manter dialogo mais ainda ele nao proibe os 5 minutos para o cara nao fica toda hora falando hi desbug 

Link para o post
Compartilhar em outros sites

Tente assim

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
local tempo = 10 -- em segundos
local strg = 12980 -- Storage onde salvará o tempo (Não Mexa)
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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

if not exhaustion.check(cid, strg) then
exhaustion.set(cid, strg, tempo)
 else
        doPlayerSendCancel(cid, "Voce precisa aguardar "..exhaustion.get(cid, strg).." segundos para usar novamente.")
    end
 
 
 
                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)
     
        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

 

ou 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)
msg = string.lower(msg)
 
if not exhaustion.check(cid, strg) then
exhaustion.set(cid, strg, tempo)
 else
        doPlayerSendCancel(cid, "Voce precisa aguardar "..exhaustion.get(cid, strg).." segundos para usar novamente.")
    end
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        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

Editado por TopllDanStar (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

 

Tente assim

 

local focus = 0
local talk_start = 0
local target = 0
local days = 0
local tempo = 10 -- em segundos
local strg = 12980 -- Storage onde salvará o tempo (Não Mexa)
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        end
        end
        talk_state = 0
 
if not exhaustion.check(cid, strg) then
exhaustion.set(cid, strg, tempo)
 else
        doPlayerSendCancel(cid, "Voce precisa aguardar "..exhaustion.get(cid, strg).." segundos para usar novamente.")
    end
 
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

 

ou 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)
msg = string.lower(msg)
 
if not exhaustion.check(cid, strg) then
exhaustion.set(cid, strg, tempo)
 else
        doPlayerSendCancel(cid, "Voce precisa aguardar "..exhaustion.get(cid, strg).." segundos para usar novamente.")
    end
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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)
     
        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

O Primeiro que se me mandou ele fala direitinho soque ainda permite que eu continue falando hi desbug. O Segundo que se me mandou eu falo hi desbug ele nem responde

Link para o post
Compartilhar em outros sites

local focus = 0
local talk_start = 0
local target = 0
local days = 0
local tempo = 10 -- em segundos
local strg = 12980 -- Storage onde salvará o tempo (Não Mexa)
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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

if not exhaustion.check(cid, strg) then
exhaustion.set(cid, strg, tempo)
 else
        doPlayerSendCancel(cid, "Voce precisa aguardar "..exhaustion.get(cid, strg).." segundos para usar novamente.")
    end
 
 
 
                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)
     
        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
Link para o post
Compartilhar em outros sites
local focus = 0
local talk_start = 0
local target = 0
local days = 0
local tempo = 10 -- em segundos
local strg = 12980 -- Storage onde salvará o tempo (Não Mexa)
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
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

if not exhaustion.check(cid, strg) then
exhaustion.set(cid, strg, tempo)
 else
        doPlayerSendCancel(cid, "Voce precisa aguardar "..exhaustion.get(cid, strg).." segundos para usar novamente.")
    end
 
 
 
                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)
     
        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

olha tem certeza que ta certo cara o meu e um dbo 8.0 ainda deu certo nao ele permite de o cara falar hi desbug toda hora ainda

Editado por anthonyx22 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Meu olho quase fechando huehue

local focus = 0
local talk_start = 0
local target = 0
local days = 0
local waittime = 300 -- (300 seconds)
local storage = 5560
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
 if exhaustion.get(cid, storage) == FALSE then
exhaustion.set(cid, storage, waittime)
doSendMagicEffect(getPlayerPosition(cid), 180)
else
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You must wait another " .. exhaustion.get(cid, storage) .. " seconds.")
        end     return true
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)
     
        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

dar algum erro na distro?

Editado por TopllDanStar (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Meu olho quase fechando huehue

local focus = 0
local talk_start = 0
local target = 0
local days = 0
local waittime = 300 -- (300 seconds)
local storage = 5560
 
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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
 if exhaustion.get(cid, storage) == FALSE then
exhaustion.set(cid, storage, waittime)
doSendMagicEffect(getPlayerPosition(cid), 180)
else
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You must wait another " .. exhaustion.get(cid, storage) .. " seconds.")
        end     return true
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)
     
        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

dar algum erro na distro?

nao funciono e da um erro sim erro: data/npc/desbug.lua:67:attempt to index global 'exhaustion' <nil value>

Link para o post
Compartilhar em outros sites

nao funciono e da um erro sim erro: data/npc/desbug.lua:67:attempt to index global 'exhaustion' <nil value>

 

Se tivesse com um servidor aqui já tinha resolvido :( 

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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
elseif talk_state == 1 then
if msgcontains(msg, 'yes') then
elseif getPlayerStorageValue(cid, storage) < os.time() then
if pay(cid,200000000) then
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
setPlayerStorageValue(cid, storage, os.time() + time * 60)
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)
     
        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

Link para o post
Compartilhar em outros sites

 

Se tivesse com um servidor aqui já tinha resolvido :( 

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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
elseif talk_state == 1 then
if msgcontains(msg, 'yes') then
elseif getPlayerStorageValue(cid, storage) < os.time() then
if pay(cid,200000000) then
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
setPlayerStorageValue(cid, storage, os.time() + time * 60)
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)
     
        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

 

 

 

Se tivesse com um servidor aqui já tinha resolvido :( 

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
selfSay('Quer Desbugar por 10 Gold?')
talk_state = 2
 
elseif talk_state == 1 then
if msgcontains(msg, 'yes') then
elseif getPlayerStorageValue(cid, storage) < os.time() then
if pay(cid,200000000) then
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
setPlayerStorageValue(cid, storage, os.time() + time * 60)
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)
     
        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

 

saio o erro mais ainda continua sem limite de tempo vei arruma um servidor ai so pra test msm pega qual quer um mano ai se faz tudo direito taligado :D

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

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.

Link para o post
Compartilhar em outros sites

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 por TopllDanStar (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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 por anthonyx22 (veja o histórico de edições)
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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo