Postado Junho 9, 2018 6 anos Autor 50 minutos atrás, edusorcer disse: E ai cara, tudo certo? Lendo o seu código, percebo que talvez você esteja cometendo um pequeno erro de lógica, e alguns erros de semântica. 1- erros de semântica não há necessidade de colocar a sua variável em um objeto. como você está apenas declarando a variável nome, ela pode ser acessada diretamente, ou seja, essas linhas poderiam se resumir em: local nome = getCreatureName(cid) nesse contexto, a variável nome não existe, pois você criou ela dentro do objeto config, então ficaria config.nome 2- erro de lógica por que você está comparando a variável nome com o nome da criatura? Você já declarou a variável nome com o nome da criatura nas linhas anteriores dessa forma, acredito que esse if é desnecessário, e você pode remover. quando remover o if anterior, altere essa linha removendo o elseif e colocando um if no lugar, dessa forma: if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then aqui você remove o config.nome e deixa apenas nome @edusorcerMuito obrigo! Fui editando e anotando pelo que entendi, veja se seria assim: Spoiler 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 function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid --[[local config = { nome = getCreatureName(cid), }]]-- Removido local nome = getCreatureName(cid) -- Adicionado if getCreatureName(cid) then --Removido o 'Nome' if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid) talkState[talkUser] = 1 return true end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Se estiver tudo certo, entendi o que quis dizer hehe Caso tenha algo errado por favor me avise! (Obs: Teste a script e esta funcionando) 38 minutos atrás, Skydrowz disse: 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 function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local nome = "nome" if nome == getCreatureName(cid) then if (msgcontains(msg, "blz") or msgcontains(msg, "blzz")) and (talkState[talkUser]) == 1 then -- Você vai precisar dos () para separar o 'or' do 'and', caso contrário sua condição ia bugar. selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid) talkState[talkUser] = 1 -- Altere aqui, pois a talkState já está 1, de acordo com sua condição. end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) @SkydrowzQuando digo "Blz" ou "Blzz" o Npc Não responde...
Postado Junho 9, 2018 6 anos @peterson18 está quase, faltou remover o if desnecessário acredito que a versão correta do script seria assim: 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 function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local nome = getCreatureName(cid) if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid) return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) veja se deu certo ?
Postado Junho 9, 2018 6 anos Autor 3 minutos atrás, edusorcer disse: @peterson18 está quase, faltou remover o if desnecessário acredito que a versão correta do script seria assim: 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 function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local nome = getCreatureName(cid) if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid) return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) veja se deu certo ? Exato, esta funcionando! E entendi a logica para essa situação. O getCreatureName é uma função global ou seja quando eu chamo ela não preciso defini-la como 'Nome" para depois chama-la de novo... Ou seja eu estava falando a mesma coisa umas 3 vez kkk. Muito obrigado!
Postado Junho 9, 2018 6 anos Autor 1 minuto atrás, Skydrowz disse: O nome da creature é "nome"? No caso eu estava tentando que o NPC disse o nome do player Ele teria que buscar o nome Exemplo: Olá, como está Skydrows, faz tempo que não aparece por aqui... Em que posso lhe ajudar?
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.