Mais facil vc colocar pra repetir a frase varias vezes no vetor
Enfiar um looping ai acho que não seria muito bom
info
Grupo: Conde
Registrado: 18/12/05
Posts: 912
Reputação: +86
Gênero: Masculino
Char no Tibia: Kohzete

Mais facil vc colocar pra repetir a frase varias vezes no vetor
Enfiar um looping ai acho que não seria muito bom
info
Grupo: Artesão
Registrado: 30/07/07
Posts: 101
Reputação: +1

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
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 por HeXo
info
Grupo: Conde
Registrado: 07/05/08
Posts: 612
Reputação: +12
Char no Tibia: leviana luciferiana

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 por Marcryzius
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 por HeXo
info
Grupo: Conde
Registrado: 07/05/08
Posts: 612
Reputação: +12
Char no Tibia: leviana luciferiana

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 por Marcryzius
porque esta de forma errada o script.
Agora ele só repete a segunda palavra
17: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 por HeXo
info
Grupo: Artesão
Registrado: 30/07/07
Posts: 101
Reputação: +1

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 por lucasjockey
Muito Obrigado lucasjockey e Marcryzius.
@lucasjockey
Os dois exemplos que você citou pr ultimo funcionaram.
Obrigado a todos :smile_positivo:
info
Grupo: Marquês
Registrado: 17/01/08
Posts: 1.5k
Reputação: +15
Char no Tibia: Saint Claire

Problema resolvido,
:button_cancel: Tópico Fechado
info
Grupo: Campones
Registrado: 07/09/07
Posts: 24
Reputação: +2
Olá pessoal. To precisando de uma ajuda nesse npc:
(baseado no [npc]cantor do frerety)
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
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 por HeXo