Ir para conteúdo

Posts Recomendados

Postado (editado)

O script funciona normalmente, porém estou com um erro nas mensagem espero que ajudem!

 

PROBLEMA:

MENSAGEM DO NPC: Ao falar hi/trofeus/ouro~prata~bronze , o "npc" não fala se tem certeza que quer confirmar a troca do troféu pelo item, ou seja ele já faz a troca após escreve a opção de troféu (ouro/prata/bronze).

 

Exemplo:

#Player: Hi

#NPC: Ola Fulano. Seja Bem-Vindo a Sala de Trocas. Eu coleciono {trofeus} de ouro, prata e bronze. E para garantir que todos troquem comigo, eu retribuo dando gemas aleatorias.

#Player: troféu

#NPC: Acho que você pretende trocar algum troféu por gemas. Qual troféu você pretende trocar comigo: {ouro}, {prata} ou {bronze}

#Player: bronze                                  

#NPC: Obrigado, aqui estão sua gemas.                                                                         

#Player: prata

#NPC: Obrigado, aqui estão suas gemas.                                                                        

#Player: ouro

#NPC: Obrigado, aqui estão suas gemas.

 

SOLUÇÃO:

1º MENSAGEM DO NPC: O certo é que mande uma mensagem de confirmação após escolher o tipo de troféu (bronze/prata/ouro)

 

Exemplo:

#Player: Hi

#NPC: Ola Fulano. Seja Bem-Vindo a Sala de Trocas. Eu coleciono {trofeus} de ouro, prata e bronze. E para garantir que todos troquem comigo, eu retribuo dando gemas aleatorias.

#Player: troféu

#NPC: Acho que você pretende trocar algum troféu por gemas. Qual troféu você pretende trocar comigo: {ouro}, {prata} ou {bronze}

#Player: bronze

#NPC: Você tem certeza que quer trocar 1 troféu de bronze por 1 gema aleatória?

#Player: sim                                              

#NPC: Obrigado, aqui estão sua gema.                                                                               < AS MENSAGEM QUE EU QUERO

#Player: prata

#NPC: Você tem certeza que quer trocar 1 troféu de prata por 2 gemas aleatória?                  < QUE APAREÇA AO FALAR

#Player: sim

#NPC: Obrigado, aqui estão suas gemas.                                                                                <  O TIPO DE TROFÉU !

#Player: ouro

#NPC: Você tem certeza que quer trocar 1 troféu de ouro por 3 gemas aleatória?                     

#Player: sim

#NPC: Obrigado, aqui estão suas gemas.

 

_____________________________________________________________________________________________________
Data/npc/scripts:
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)
if(not npcHandler:isFocused(cid)) then
return false
end

function thinkCallback(cid)
local rand = math.random(1,100)
if rand == 10 then
selfSay('Troque o seu troféu aqui.') -- msg que vai sair do npc
end
if rand == 11 then
selfSay ('Só entendo português, diga oi.')
end
if rand == 12 then
selfSay ('Oi! Troco gemas por trofeús!')
end
return true
end
function greetCallback(cid)
return true
end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local trophy = {
["ouro"] = {3, 5805}, --{Quantidade de items aleatórios, ID do troféu}, 
["prata"] = {2, 5806},
["bronze"] = {1, 5807}, 
}
local items = {2154, 2156, 2158}

if msgcontains(msg, "trophy") or msgcontains(msg, "trofeu") then
selfSay("Acho que você pretende trocar algum troféu por gemas. Qual troféu você pretende trocar comigo: {ouro}, {prata} ou {bronze}?", cid)
talkState[talkUser] = 1
return true
elseif talkState[talkUser] == 1 then
if trophy[msg:lower()] then
local trofeu = trophy[msg:lower()]
local id = trofeu[2]
if getPlayerItemCount(cid, id) > 0 then
for i = 1, trofeu[1] do
doPlayerAddItem(cid, items[math.random(#items)], 1)
end
doPlayerRemoveItem(cid, id, 1)
selfSay("Obrigado, aqui estão suas gemas.", cid)
talkState[talkUser] = 0
return true
else
selfSay("Você não possui este troféu.", cid)
talkState[talkUser] = 0
return true
end
else
selfSay("Este troféu não existe.", cid)
talkState[talkUser] = 0
return true
end
end
return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:setCallback(CALLBACK_ONTHINK, thinkCallback)
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:addModule(FocusModule:new())
Editado por williamcgv (veja o histórico de edições)
  • Respostas 7
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Postado

que? não entendeu a explicação que quero? apenas que o npc mande mensagem pra confirmar se quer trocar o trofeu entendeu?

Postado (editado)

Suponho que você não tenha entrado no link que enviei, então mandarei aqui mesmo o código. 

local mensagem = ""
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)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    local trophy = {
        ["ouro"] = {3, 5805},    --{Quantidade de items aleatórios, ID do troféu}, 
        ["prata"] = {2, 5806},
        ["bronze"] = {1, 5807}, 
    }
    local items = {2154, 2156, 2158}
 
    if msgcontains(msg:lower(), "trophy") or msgcontains(msg:lower(), "trofeu") then
        selfSay("Acho que você pretende trocar algum troféu por gemas. Qual troféu você pretende trocar comigo: {ouro}, {prata} ou {bronze}?", cid)
        talkState[talkUser] = 1
        return true
    elseif talkState[talkUser] == 1 then
        if trophy[msg:lower()] then
            selfSay("Você tem certeza que quer trocar 1 troféu de "..msg:lower().." por "..trophy[msg:lower()][1].." gema"..(trophy[msg:lower()][1] > 1 and "s" or "").." aleatória"..(trophy[msg:lower()][1] > 1 and "s" or "").."?", cid)
            mensagem = msg:lower()
            talkState[talkUser] = 2
            return true
        else
            selfSay("Este troféu não existe.", cid)
            talkState[talkUser] = 0
            return true
        end  
    elseif msgcontains(msg:lower(), "yes") or msgcontains(msg:lower(), "sim") and talkState[talkUser] == 2 then
        local trofeu = trophy[mensagem]
        local id = trofeu[2]
        if getPlayerItemCount(cid, id) > 0 then
            for i = 1, trofeu[1] do
                doPlayerAddItem(cid, items[math.random(#items)], 1)
            end
            doPlayerRemoveItem(cid, id, 1)
            selfSay("Obrigado, aqui estão suas gemas.", cid)
            talkState[talkUser] = 0
            return true
        else
            selfSay("Você não possui este troféu.", cid)
            talkState[talkUser] = 0
            return true
        end
    end
    return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())          
Editado por zipter98 (veja o histórico de edições)
Postado (editado)

mano era isso que eu queria para fechar só faltou essa parte:

 

Obrigado, aqui estão suas gemas.

 

se for 1 gema  tinha que ser:

 

Obrigado, aqui estão suas gema.

Editado por williamcgv (veja o histórico de edições)

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

    96.9k
    Tópicos
    519.6k
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo