Ir para conteúdo
  • Cadastre-se

(Ajuda) Como Colocar Tempo No Npc


Posts Recomendados

Tente assim:

  Mostrar conteúdo oculto

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
  • Respostas 19
  • Created
  • Última resposta

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Popular Posts

Modifiquei uma parte, testa ai:   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.

Tente assim:

ainda continua a mesma coisa, ele repeti desbug quantas vezes quiser e ainda continua sem o tempo

  Em 31/05/2015 em 08:19, Wakon disse:

Tente assim:

  Mostrar conteúdo oculto

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

Mostrar mais  

 

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:

  Mostrar conteúdo oculto

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
  Em 31/05/2015 em 08:44, Wakon disse:

Modifiquei uma parte, testa ai:

  Mostrar conteúdo oculto

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.

Mostrar mais  

 

Mesma coisa, acho que é a distro pois é versão 8.0

testei desse modo e funcionou aqui

 

  Mostrar conteúdo oculto

 

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
  Em 31/05/2015 em 08:55, TopllDanStar disse:

Mesma coisa, acho que é a distro pois é versão 8.0

testei desse modo e funcionou aqui

 

  Mostrar conteúdo oculto

 

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 ~~

Expand   Mostrar mais  

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.

  • Estatísticas dos Fóruns

    96847
    Tópicos
    519606
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo