Ir para conteúdo
  • Cadastre-se

(Resolvido)Ajuste em um NPC


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

Olá queria que alguém fizesse uma modificação nesse NPC, ele funciona assim;

 

o player fala hi/torneio/yes e  é teleportado para uma sala, até ai tudo bem mais eu queria que alguém colocasse uma função que se o player tivesse um desses items >> 12343, 12345, 12348, 12347, 12346, 12349, 12344

se o player tivesse um desses items acima, ai o NPC não teleportava 

 

npc

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
 
if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then
 
 
 
selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid)
talkState[talkUser] = 2
 
 
elseif talkState[talkUser] == 2 then
 
if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
 
if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid)
return true
end
 
if doPlayerRemoveMoney(cid, torneio.price) then
doTeleportThing(cid, torneio.waitPlace)
setPlayerStorageValue(cid,130130,1)
doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.")
else
 
selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid)
end
else
selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid)
talkState[talkUser] = 0
end
end
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

up

Link para o post
Compartilhar em outros sites

Teste 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)
 
if(not npcHandler:isFocused(cid)) then
return false
end
 
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local items = {12343, 12345, 12348, 12347, 12346, 12349, 12344}

    if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then
        selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid)
        talkState[talkUser] = 2
    elseif talkState[talkUser] == 2 then
 
        if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
            if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
                selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid)
            return true
            end
    
        for x = 1, #items do
        if getPlayerItemCount(cid, items[x]) >= 1 then
            doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".")
            return true
        end
        
            if doPlayerRemoveMoney(cid, torneio.price) then
                doTeleportThing(cid, torneio.waitPlace)
                setPlayerStorageValue(cid,130130,1)
                doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.")
            else    
                selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid)
            end
        
        else
            selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid)
            talkState[talkUser] = 0
        end
    
    end
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Não sou bom com "FOR" e se eu fosse criar para verificar um por um iria ficar muito grande o script.

Espero que funcione.

 

Boa sorte.

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

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Teste 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)
 
if(not npcHandler:isFocused(cid)) then
return false
end
 
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local items = {12343, 12345, 12348, 12347, 12346, 12349, 12344}

    if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then
        selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid)
        talkState[talkUser] = 2
    elseif talkState[talkUser] == 2 then
 
        if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
            if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
                selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid)
            return true
            end
    
        for x = 1, #items do
        if getPlayerItemCount(cid, items[x]) >= 1 then
            doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".")
            return true
        end
        
            if doPlayerRemoveMoney(cid, torneio.price) then
                doTeleportThing(cid, torneio.waitPlace)
                setPlayerStorageValue(cid,130130,1)
                doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.")
            else    
                selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid)
            end
        
        else
            selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid)
            talkState[talkUser] = 0
        end
    
    end
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Não sou bom com "FOR" e se eu fosse criar para verificar um por um iria ficar muito grande o script.

Espero que funcione.

 

Boa sorte.

deu esse erro no NPC; 

 

[06/11/2014 17:16:36] [Error - LuaScriptInterface::loadFile] data/npc/scripts/Torneio.lua:46: 'end' expected (to close 'for' at line 32) near 'else'
[06/11/2014 17:16:36] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/Torneio.lua
[06/11/2014 17:16:36] data/npc/scripts/Torneio.lua:46: 'end' expected (to close 'for' at line 32) near 'else'
Link para o post
Compartilhar em outros sites
  • Solução

Desculpe-me, desatenção, ficou faltando um END.

 

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 items = {12343, 12345, 12348, 12347, 12346, 12349, 12344}

    if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then
        selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid)
        talkState[talkUser] = 2
    elseif talkState[talkUser] == 2 then
 
        if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
            if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
                selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid)
            return true
            end
    
        for x = 1, #items do
        if getPlayerItemCount(cid, items[x]) >= 1 then
            doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".")
            return true
        end
        end
        
            if doPlayerRemoveMoney(cid, torneio.price) then
                doTeleportThing(cid, torneio.waitPlace)
                setPlayerStorageValue(cid,130130,1)
                doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.")
            else    
                selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid)
            end
        
        else
            selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid)
            talkState[talkUser] = 0
        end
    
    end
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Desculpe-me, desatenção, ficou faltando um END.

 

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 items = {12343, 12345, 12348, 12347, 12346, 12349, 12344}

    if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then
        selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid)
        talkState[talkUser] = 2
    elseif talkState[talkUser] == 2 then
 
        if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
            if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
                selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid)
            return true
            end
    
        for x = 1, #items do
        if getPlayerItemCount(cid, items[x]) >= 1 then
            doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".")
            return true
        end
        end
        
            if doPlayerRemoveMoney(cid, torneio.price) then
                doTeleportThing(cid, torneio.waitPlace)
                setPlayerStorageValue(cid,130130,1)
                doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.")
            else    
                selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid)
            end
        
        else
            selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid)
            talkState[talkUser] = 0
        end
    
    end
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Boa sorte.

Resolvido obrigado :D

Link para o post
Compartilhar em outros sites

Resolvido obrigado :D

Então funcionou tudo certinho?

 

:)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites
  • 4 weeks later...

bump

Por que o BUMP? Houve algum problema?

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo