HeXo 2 Postado Julho 22, 2009 Share Postado Julho 22, 2009 (editado) Olá pessoal. To precisando de uma ajuda nesse npc: (baseado no [npc]cantor do frerety) local focus = 0local talk_start = 0 local target = 0 local following = false local attacking = false local tempo = 2 local musica = {"LALALA";"LULULU";} start = os.clock() step = 1 onThink = function () if step > 0 and os.clock() - start >= tempo then start = os.clock() if musica[step] == nil then step = 0 return 1 elseif musica[step] ~= 0 then selfSay(musica[step]) end step = step + 1 end end Seguinte, ele fala as frases de 2 em 2 segundos, mas depois que ele fala as 2 frases, ele nao fala mais nada. Como eu faço para ele repetir as frases?? Obrigado! Editado Julho 22, 2009 por HeXo Link para o comentário Compartilhar em outros sites More sharing options...
tibiaa4e 86 Postado Julho 22, 2009 Share Postado Julho 22, 2009 Mais facil vc colocar pra repetir a frase varias vezes no vetor Enfiar um looping ai acho que não seria muito bom Link para o comentário Compartilhar em outros sites More sharing options...
lucasjockey 1 Postado Julho 22, 2009 Share Postado Julho 22, 2009 Caso queira um loop: local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false local tempo = 2 local musica = {"LALALA";"LULULU";} start = os.clock() step = 1 onThink = function () if step > 0 and os.clock() - start >= tempo then start = os.clock() if musica[step] == nil then step = 0 return 1 elseif musica[step] ~= 0 then selfSay(musica[step]) end if step == table.getn(musica) + 1 then step = 1 else step = step + 1 end end end Link para o comentário Compartilhar em outros sites More sharing options...
HeXo 2 Postado Julho 22, 2009 Autor Share Postado Julho 22, 2009 (editado) Caso queira um loop: local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false local tempo = 2 local musica = {"LALALA";"LULULU";} start = os.clock() step = 1 onThink = function () ... Exato, eu quero um loop. Porém eu testei esse exemplo que vc postou e não funcionou aqui. O npc fala 1 vez as duas palavras e depois para. Editado Julho 22, 2009 por HeXo Link para o comentário Compartilhar em outros sites More sharing options...
satan666 12 Postado Julho 22, 2009 Share Postado Julho 22, 2009 (editado) que ot voce usa e que versao e ele. local focus = 0local talk_start = 0 local target = 0 local following = false local attacking = false local musica = {"LALALA";"LULULU";} local tempo=2; var=math.random(1,2); time = os.clock() function onThink() npcHandler:onThink() if (time + tempo) < os.clock() then selfSay(musica[var]) time = os.clock() end end esse script que voce postou voce nao pode usar mate rand por que o mat rand pega um dos numeros aleatoriamente o que voce deveria fazer e usar for que resolveria o problema Editado Julho 22, 2009 por Marcryzius Link para o comentário Compartilhar em outros sites More sharing options...
HeXo 2 Postado Julho 22, 2009 Autor Share Postado Julho 22, 2009 (editado) que ot voce usa e que versao e ele. esse script que voce postou voce nao pode usar mate rand por que o mat rand pega um dos numeros aleatoriamente o que voce deveria fazer e usar for que resolveria o problema estou usando o TFS 0.3.4 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) -- OTServ event handling functions start function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -- OTServ event handling functions end local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false local musica = {"LALALA";"LULULU";} local tempo=2; var=math.random(1,2); time = os.clock() function onThink() npcHandler:onThink() if (time + tempo) < os.clock() then selfSay(musica[var]) time = os.clock() end end desse jeito ele fica repetindo apenas a primeira palavra. e ele não fala a segunda. Obs: ele precisa falar as frases em ordem Editado Julho 22, 2009 por HeXo Link para o comentário Compartilhar em outros sites More sharing options...
satan666 12 Postado Julho 22, 2009 Share Postado Julho 22, 2009 (editado) porque esta de forma errada o script. local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local musica = {"LALALA";"LULULU";} local tempo=2; var=math.random(1,2); time = os.clock() function onThink() npcHandler:onThink() if (time + tempo) < os.clock() then selfSay(musica[var]) time = os.clock() end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) agora que vi a obs tem que ser na ordem vo refazer e posto pra voce arruamdo. Editado Julho 22, 2009 por Marcryzius Link para o comentário Compartilhar em outros sites More sharing options...
HeXo 2 Postado Julho 22, 2009 Autor Share Postado Julho 22, 2009 (editado) porque esta de forma errada o script. Agora ele só repete a segunda palavra 17:21 Gaucho dono do pingo: LULULU17:21 Gaucho dono do pingo: LULULU 17:21 Gaucho dono do pingo: LULULU 17:21 Gaucho dono do pingo: LULULU 17:21 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU 17:22 Gaucho dono do pingo: LULULU ----EDIT---- não, não é isso. quando eu coloco ele no mapa, ele escolhe uma frase aleatoriamente, ai começa a repetir a mesma frase infinitas vezes. só que eu preciso que ele diga as frases em ordem, e depois que acabar de falar um segmento de frases, começar a repeti-las, desde a primeira. Editado Julho 22, 2009 por HeXo Link para o comentário Compartilhar em outros sites More sharing options...
lucasjockey 1 Postado Julho 22, 2009 Share Postado Julho 22, 2009 (editado) local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false local tempo = 2 local musica = {"LALALA";"LULULU";} start = os.clock() step = 1 onThink = function () if step > 0 and os.clock() - start >= tempo then start = os.clock() if musica[step] == nil then step = 0 return 1 elseif musica[step] ~= 0 then selfSay(musica[step]) end if (step == table.getn(musica)) then step = 1 else step = step + 1 end end end Se não funcionar tente: local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false local tempo = 2 local musica = {"LALALA";"LULULU";} start = os.clock() step = 1 onThink = function () if step > 0 and os.clock() - start >= tempo then start = os.clock() if musica[step] == nil then step = 0 return 1 elseif musica[step] ~= 0 then selfSay(musica[step]) end if (step == 2) then step = 1 else step = step + 1 end end end Editado Julho 22, 2009 por lucasjockey Link para o comentário Compartilhar em outros sites More sharing options...
HeXo 2 Postado Julho 22, 2009 Autor Share Postado Julho 22, 2009 Muito Obrigado lucasjockey e Marcryzius. @lucasjockey Os dois exemplos que você citou pr ultimo funcionaram. Obrigado a todos :smile_positivo: Link para o comentário Compartilhar em outros sites More sharing options...
DaNDaNrOxX 15 Postado Julho 22, 2009 Share Postado Julho 22, 2009 Problema resolvido, :button_cancel: Tópico Fechado Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados