Ir para conteúdo
  • Cadastre-se

(Resolvido)[Ajuda] NPC


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

Gostaria de pedir, se alguem sabe fazer um npc, que troca X item por Y item..

 

Por Exemplo, trocar 100 Diamonds ,ID 2159, por 100 Thousand Dollar ,ID 2160

 

Queria um npc disso, poderia mi ajudar quem souber!

 

Link para o post
Compartilhar em outros sites

toddy.lua

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
 
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
 
 
-- Config --
 
local configs = {
 
FirstItemId = 2159,
FirstItemCount = 100,
SecondItemId = 2160,
SecondItemCount = 100,
 
isQuest = "false", 
questStorage = 17890,
 
msgMeet = 'Você deseja trocar '..FirstItemCount .. ' '.. getItemName(FirstItemId) ..' por '.. SecondItemCount ..' '.. getItemName(SecondItemId) ..'?',
msgQuestCompleted = "Você já fez essa quest.",
msgQuestNotItem = "Voce não tem o item necessario.",
 
}
 
 
function npcTroca(cid, message, keywords, parameters, node)
 
if(not npcHandler:isFocused(cid)) then
return false
end
 
if (configs.isQuest == "true") then
if (getPlayerStorageValue(configs.questStorage) <= 0) then
if (getItemCount(cid, configs.FirstItemId) == configs.FirstItemCount) then
doRemoveItem(configs.FirstItemId, config.FirstItemCount)
doPlayerAddItem(cid, configs.SecondItemId, configs.SecondItemCount)
else
return  doPlayerSendTextMessage(cid, 27, configs.msgQuestNotItem)
end
else
return doPlayerSendTextMessage(cid, 27, configs.msgQuestCompleted)
end
   else
if (getItemCount(cid, configs.FirstItemId) == configs.FirstItemCount) then
doRemoveItem(configs.FirstItemId, config.FirstItemCount)
doPlayerAddItem(cid, configs.SecondItemId, configs.SecondItemCount)
else
return  doPlayerSendTextMessage(cid, 27, configs.msgQuestNotItem)
end 
   end
end
 
itemTrade = keywordHandler:addKeyword({'offer'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = configs.msgMeet})
itemTrade:addChildKeyword({'yes'}, npcTroca, {})
itemTrade:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then.', reset = true})
 
npcHandler:addModule(FocusModule:new())

 

O código acima possui a acessibilidade de troca de IDs e Quantidades, para isso vá no CONFIGS e altere.

Editado por AnnaFeeh (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

acho que tem que adiciona nos npc --> scripts ou é nas duas pastas

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

Gente, não dou suporte via mp, caso queira ajuda crie um tópico no fórum!!!
youtube.png  10869_64x64.png
Ajudei? Clicar em gostar não vai te matar

Link para o post
Compartilhar em outros sites

nao entendi, como faço pra adicionar issu no npc? tem npc xml e npc .lua

Aquele é o Lua esse é o .xml

toddy.xml

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Super Vendedor" script="toddy.lua" walkinterval="350000" floorchange="0" speed="0">
<health now="150" max="150"/>
<look type="134" head="69" body="32" legs="32" feet="0"/>
<parameters>
<parameter key="message_greet" value="Ola voce que compra alguma coisa comigo?"/>
<parameter key="message_farewell" value="Good bye!"/>
<parameter key="message_idletimeout" value="Good bye!"/>
<parameter key="message_walkaway" value="Good bye!"/>
</parameters>
</npc>

Link para o post
Compartilhar em outros sites

Você adicionou o NPC "Toddy.xml" na pasta NPC e a arquivo toddy.lua na pasta "NPC / Scripts"?

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

Pra saber se é erro no script, basta tentar criar o NPC e quando aparecer a mensagem de erro no Jogo, veja na Distro (o launcher que abre o servidor) se acusa algum erro.

Se sim, poste para que possamos corrigi-lo.

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
[27/08/2014 13:44:59] [Error - Npc interface] 
[27/08/2014 13:44:59] data/npc/scripts/toddy.lua
[27/08/2014 13:44:59] Description: 
[27/08/2014 13:44:59] data/lib/050-function.lua:239: attempt to index a boolean value
[27/08/2014 13:44:59] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/toddy.lua
 
ai o erro

 

Link para o post
Compartilhar em outros sites

Abra o arquivo toddy.lua e cole este código dentro.

 

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

------------------- CONFIG ITENS --------------

local diamonds = {2159, 100} -- id, quantidade
local moeda = {2160, 100} -- id, quantidade

------------------ MESSAGENS --------------------------
if (msgcontains(msg, 'trocar') or msgcontains(msg, 'trade')) then
selfSay('Deseja trocar '..diamonds[2]..' '..getItemNameById(diamonds[1])..' por '..moeda[2]..' '..getItemNameById(moeda[1])..'?', cid)
talkState[talkUser] = 3


---------------------- NEGOCIAÇÃO ---------------------------------------
elseif talkState[talkUser] == 3 then
    if (msgcontains(msg, 'sim') or msgcontains(msg, 'yes')) then
    if getPlayerItemCount(cid, diamonds[1]) >= diamonds[2] then
        doPlayerRemoveItem(cid, diamonds[1], diamonds[2])
        doPlayerAddItem(cid, moeda[1], moeda[2])
        selfSay('Obrigado, foi bom fazer negocio com voce', cid)
    else
        selfSay('Voce nao tem '..diamonds[2]..' '..getItemNameById(diamonds[1])..' contigo.', cid)
        talkState[talkUser] = 0
    end
end

end
  return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Boa sorte.

Volte e poste o resultado.

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

cara tenho esse é facin

Vamos chama-lo de Max *--*

em data/npc/Max.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<npc name="Max" script="diamond.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2">
 
<health now="150" max="150"/>
 
<look type="510" head="91" body="114" legs="86" feet="0"/>
                   
<parameters>
 
 
        <parameter key="message_greet" value="Bem vindo |PLAYERNAME| eu posso te ajudar diga {ajuda}."/>
</parameters>
 
</npc>

 
agora em npc/script/diamond.lua

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  
 
-- Conversa Jogador/NPC  
if(msgcontains(msg, 'tgyhdfyhfuyu') or msgcontains(msg, 'uigyuurtdrt')) then
selfSay('hi', cid) 
elseif(msgcontains(msg, 'help') or msgcontains(msg, 'ajuda')) then
selfSay('Eu troco 100 Diamonds por 100 Tds voce deseja?', cid) 
talkState[talkUser] = 1
 
-- Confirmação da Compra  
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then  
if(doPlayerRemoveItem(cid, 2159, 100) == true) then  
selfSay('Thanks!', cid) 
doPlayerAddItem(cid, 2160, 100)
talkState[talkUser] = 0  
end
end
return TRUE
end

 
Editado por MaxxSilva (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Abra o arquivo toddy.lua e cole este código dentro.

 

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

------------------- CONFIG ITENS --------------

local diamonds = {2159, 100} -- id, quantidade
local moeda = {2160, 100} -- id, quantidade

------------------ MESSAGENS --------------------------
if (msgcontains(msg, 'trocar') or msgcontains(msg, 'trade')) then
selfSay('Deseja trocar '..diamonds[2]..' '..getItemNameById(diamonds[1])..' por '..moeda[2]..' '..getItemNameById(moeda[1])..'?', cid)
talkState[talkUser] = 3


---------------------- NEGOCIAÇÃO ---------------------------------------
elseif talkState[talkUser] == 3 then
    if (msgcontains(msg, 'sim') or msgcontains(msg, 'yes')) then
    if getPlayerItemCount(cid, diamonds[1]) >= diamonds[2] then
        doPlayerRemoveItem(cid, diamonds[1], diamonds[2])
        doPlayerAddItem(cid, moeda[1], moeda[2])
        selfSay('Obrigado, foi bom fazer negocio com voce', cid)
    else
        selfSay('Voce nao tem '..diamonds[2]..' '..getItemNameById(diamonds[1])..' contigo.', cid)
        talkState[talkUser] = 0
    end
end

end
  return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Boa sorte.

Volte e poste o resultado.

Obrigado funcionou :D

 

Link para o post
Compartilhar em outros sites
  • Solução

Por nada.

Faça bom aproveito.

 

Vou só pedir para selecionar como Melhor Resposta para que o tópico tenha a tag de Resolvido.

 

Obrigado.

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

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.

  • Conteúdo Similar

    • Por sidneivascao
      gostaria de um script de npc que venda esses item >>
       
      pirate tapestry,5616,300;pikachu tapestry,11520,300;blue tapestry,1872,300;green tapestry,1860,300;orange tapestry,1866,300;white tapestry,1880,3000;purple tapestry,1857,300;golden blackpack,2004,300;grey blackpack,2003,300;blue backpack,2002,300
       
       
      AI OS NOMES DOS ITEM, ID DO ITEM E O PREÇO DELES, MI AJUDEM AI QUERO Q OS PLAYER COMPRAM ESSES ITEM, QUERO UM NPC PRA ISSO PFPF
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo