Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá pessoal alguma alma no tk pode me ajudar ?

 

Então me problema e o seguinte preciso de um npc que troca x item por y item tipo 

 

 

100 ferro por uma espada .... 

200 ouro por um Elmo 

 

 

Então preciso de um npc desses .. quem ajudar rep +

IBNJHen.gifrf1sSxg.gif

Link para o post
Compartilhar em outros sites

No caso da, se desejar me passe porque eu ja coloco no script!

 

Eu fiz aqui rapidinho, no caso serve para apenas um item mais pode facilmente ser modificado para colocar quantos quiser. Eu fiz como eu imaginei que seria melhor, esta totalmente em português, e caso queira editar as mensagens ou item e id fique a vontade. Caso precise de suporte apenas poste aqui que acompanharei o post ate ser fechado.

 

Vai na pasta data/npc e cria um arquivo chamado changer.xml e coloca isso dentro:

 

 

<npc name="Nome que voce deseja" script="data/npc/scripts/changer.lua" access="5" lookdir="1">

<health now="1000" max="1000"/>
<look type="133" head="95" body="86" legs="86" feet="38" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. Eu posso trocar o seu ferro por uma espada apenas digite 'troca1' ." />
 
<parameter key="message_alreadyfocused" value="Senhor ? Nao vai falar nada ?" /> 
<parameter key="message_farewell" value="Adeus. Volte novamente." /> 
<parameter key="message_walkaway" value="Adeus. Volte novamente." /> 
 
</parameters>
</npc>
 

 Apenas edite o nome do npc na primeira linha e as mensagens da forma que desejar.

 

Agora vá na pasta data/npc/scripts e crie um arquivo chamado changer.lua e coloque isto dentro:

 

 

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
 
function rechargeFirewalker(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
 
 
if getPlayerItemCount(cid,6567) >= 100 then
doPlayerRemoveItem(cid, 6567, 100)
doPlayerAddItem(cid, 12415, 1)
npcHandler:say("Aqui esta sua Espada conforme prometido!", cid)
else
npcHandler:say("Voce nao tem a quantidade de ferro nescessario.", cid)
end
keywordHandler:moveUp(1)
return true
end
 
 
local node1 = keywordHandler:addKeyword({'troca1'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 100 ferros por uma espada?'})
node1:addChildKeyword({'sim'}, rechargeferro, {blessing = 1})
node1:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'})
 
 
 
npcHandler:addModule(FocusModule:new())

 

E isto faz a troca conforme você pediu. No caso o player vai falar "Hi", o npc vai enviar uma mensagem respondendo o que ele faz e o que o player deve falar. O player apos isso digita "troca1" e o npc ira falar, "Voce deseja trocar 100 ferros por uma espada?". Caso ele responda sim e tiver os 100 ferro o npc agradecera e trocara o itens, caso não tenha a quantidade certa o npc alertara o player que não tem o suficiente de ferro e caso o player fale não, ele fala para o player voltar quando desejar e finaliza conversa.

 

Eu deixei como troca1 a segunda fala pelo fato de voce poder adicionar mais itens e colocar troca2, troca3.

 

Caso ajudei de +Rep

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

Oushe vou ver .. já posto se seu certo ;)

 

-------------- @editado

 

 

 

Bom ele Aparace no mapa ... pergunta pra mim se quero trocar beleza , quando vou confirmar "sim" ele não faz nada não da o item n fala se ta faltando alguma coisa ..... 

 

 

e o por que o erro no distro era que tinha colocado "change" e  é "changer" com o r no final ;)

 

a queria saber como faz pra eu colocar outro item .... tipo troca 2

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

IBNJHen.gifrf1sSxg.gif

Link para o post
Compartilhar em outros sites

Bem eu refiz aqui, e vou explicar um pouquinho.

 

 

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
 
function ferro(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
 
if getPlayerItemCount(cid,6567) >= 100 then
doPlayerRemoveItem(cid, 6567, 100)
doPlayerAddItem(cid, 12415, 1)
npcHandler:say("Aqui esta sua espada como prometido!", cid)
else
npcHandler:say("Voce nao tem o ferro nescessario.", cid)
end
keywordHandler:moveUp(1)
return true
end
 
function ouro(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
 
 
if getPlayerItemCount(cid,ID_DO_OURO) >= QUANTIDADE_QUE_O_PLAYER_PRECISA_TER then
doPlayerRemoveItem(cid, ID_DO_OURO, QUANTIDADE_QUE_O_PLAYER_PRECISA_TER)
doPlayerAddItem(cid, ID_DO_NOVO_ITEM, 1)
npcHandler:say("Aqui esta o item que te prometi!", cid)
else
npcHandler:say("Voce nao tem o ouro suficiente.", cid)
end
keywordHandler:moveUp(1)
return true
end
 
local node2 = keywordHandler:addKeyword({'troca2'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 200 ouro por um item ?'})
node2:addChildKeyword({'sim'}, ouro, {blessing = 1})
node2:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'})
local node1 = keywordHandler:addKeyword({'troca1'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 100 ferro por uma espada?'})
node1:addChildKeyword({'sim'}, ferro, {blessing = 1})
node1:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'})
 
 
npcHandler:addModule(FocusModule:new())

 

 

Bem eu adicionei uma fuction, que no caso seria um novo item. Na function ferro ficou o que você tinha pedido 100 ferros por 1 espada. Ja na function ouro eu deixei algumas palavras chaves:

 

QUANTIDADE_QUE_O_PLAYER_PRECISA_TER Você troca pela quantidade de item que o player vai dar pra trocar.

ID_DO_NOVO_ITEM você troca pelo id do item que ele vai ganhar

ID_DO_OURO você troca pelo id do objeto que ele vai ter que dar.

 

Ali nos nodes, voce pode editar as frases. Caso queira colocar mais itens apenas adiciona node3 ou 4 ou 5. E uma function para cada node.

Link para o post
Compartilhar em outros sites

Pera deixa eu ver se entendi e para fazer isso : 

 

if getPlayerItemCount(cid,ID_DO_OURO) >=  100 then
doPlayerRemoveItem(cid, ID_DO_OURO, 100)
doPlayerAddItem(cid, ID_DO_NOVO_ITEM, 1)
npcHandler:say("Aqui esta o item que te prometi!", cid)
else
npcHandler:say("Voce nao tem o ouro suficiente.", cid)
end
keywordHandler:moveUp(1)
return true
end
 
???
 
 
----------------------- @edit
 
 
 
 
Cara tu e foda Funciono Bom eu deixei como ta a script não mechi caso desse um erro eu ia fazer como falei ali em cima  , masi não deu  ... Te dei 2 Rep + hj não tenho mais .. mais amanha dou mais 2 Pode ser ? 
 
Bem antes de feicha o topico .. pode me explicar como Faso para add a troca2  ?  
Editado por ryukicho (veja o histórico de edições)

IBNJHen.gifrf1sSxg.gif

Link para o post
Compartilhar em outros sites

Vou criar um script com comentários explicando tudo certinho e ja posto aqui editando este meu comentário.

 

--EDIT-- 

 

Como prometido aqui esta. espero que ajude muitas pessoas, e todos aqueles que aprenderam ou gostaram do trabalho por favor +Rep. Isto faz com que eu seja reconhecido no Fórum.

Caso tenha algo errado por favor, me indique para que eu aprenda também. Não sou formado nisso sou igual a todos que vão ler isso ;)

O conhecimento esta na frente de todos e todos são capazes de obtê-lo basta querer.

 

Data/Npc/Troca.xml

 

<!--
-----------------------------------------------------------
-- Criado por Thiago Renan                               
-- Script de trocas explicativo                          
-- Este Script foi criado com o intuito de aprendizagem  
-- Tem como funcoes um NPC que executa troca de itens    
-- Neste Script o npc faz a troca de apenas 2 itens      
-- Mas sera ensinado como adicionar mais itens           
-----------------------------------------------------------
-----------------------------------------------------------
-- Aqui voce mudara o nome do NPC de trocar, a sua aparencia
-- Coisas que ele respondera e tambem podera mudar a
-- Vida do NPC mesmo sendo um pouco inutil.
-----------------------------------------------------------
-- Nesta primeira linha aonde esta "Buckerman", voce coloca
-- o nome que desejar.
--
-- <npc name="Buckerman" script="data/npc/scripts/soft.lua" access="5" lookdir="1">
-----------------------------------------------------------
-- Na segunda linha se desejar mude a vida do seu NPC,
-- Aonde esta "700" e o tanto de vida que ele ta, e aonde
-- esta "1000" e a vida maxima dele.
--
-- <health now="700" max="1000"/>
-----------------------------------------------------------
-- Nesta linha voce muda o visual dele. Aonde esta 133
-- voce troca pelo id da skin que desejar.
-- 
-- <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/>
-----------------------------------------------------------
-- Nos parametros voce pode editar as mensagens como desejar
-- Acredito que elas nao precisao ser explicadas.
-- Da maneira como estao da para entender o que fazem.
-----------------------------------------------------------
-->
<npc name="Buckerman" script="data/npc/scripts/soft.lua" access="5" lookdir="1">
<health now="700" max="1000"/>
<look type="133" head="95" body="86" legs="86" feet="38" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. Eu posso trocar 100 ferro por uma espada digitando 'troca1' ou posso trocar 200 ouro por um helmo digitando 'troca2'." />
 
<parameter key="message_alreadyfocused" value="Senhor ? Nao vai falar nada ?" /> 
<parameter key="message_farewell" value="Adeus. Volte novamente." /> 
<parameter key="message_walkaway" value="Adeus. Volte novamente." /> 
 
</parameters>
</npc>
 

 

Data/Npc/Scripts/Troca.lua

 

-----------------------------------------------------------

-- Criado por Thiago Renan                               
-- Script de trocas explicativo                          
-- Este Script foi criado com o intuito de aprendizagem  
-- Tem como funcoes um NPC que executa troca de itens    
-- Neste Script o npc faz a troca de apenas 2 itens      
-- Mas sera ensinado como adicionar mais itens           
-----------------------------------------------------------
-----------------------------------------------------------
-- Inicio das Funçoes basicas                            
-- Nao mudar nada!                                       
-----------------------------------------------------------
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
-----------------------------------------------------------
-- Fim das Funçoes basicas                               
-- Nao mudar nada!                                       
-----------------------------------------------------------
-----------------------------------------------------------
-- Inicio das Functions                                  
-- Cada function neste caso de script representa um item 
-- O player iniciara a conversa com o NPC dizendo "hi"   
-- Como de costume, e em seguida o npc indicara ao player
-- Algumas coisas que ele pode trocar e cada comando que 
-- O player devera falar para trocar o item que deseja   
-- Neste caso, cada palavra-chave que o player falar     
-- Executara a fuction relacionada a esta palavra.       
--                                                       
-- Como por exemplo:                                     
--                                                       
-- Player say: hi                                        
-- NPC say:  Bem vindo, eu posso trocar ferro por uma    
-- espada caso voce digite "troca1" e tambem troco ouro  
-- por um helmo caso voce digite "troca2"                
--                                                       
-- Se o player responder troca1 iria executar            
-- a function troca1 e no caso do player digitar troca2  
-- ira executar a troca2. Ou seja cada item que voce     
-- adicionar nescessitara de uma function.               
-----------------------------------------------------------
-----------------------------------------------------------
-- Fuction da troca 1
-- Esta function ira trocar 100 ferro por 1 espada
-- Ela tem tambem a funcao de verificar se o player
-- Nao tem os 100 ferros e alertar ele que ele nao tem
-- Os itens nescessarios
-----------------------------------------------------------
-----------------------------------------------------------
-- Este script nao ensina 100%       
-- Voce deve ter um minimo de conhecimento
-- Generalizando um pouco. Vou indicar o que cada
-- Numero nela representa.
--                                                       
-- "6567" = Item que o player precisara ter, neste caso  
--          ele precisara ter ferro.                     
--                                                       
-- "100"  = Quantidade do item que o player precisara    
--          ter para trocar. Neste caso 100 ferro.       
--                                                       
-- "2383" = ID do item que o player ira ganhar em troca. 
--          Neste caso uma espada.                       
--                                                       
-- "1"    = Quantidade do item que o player ganhara.     
-- Neste exemplo uma espada.                    
-----------------------------------------------------------
-----------------------------------------------------------
-- A primeira frase nesta function representa se o player
-- tiver o suficiente para trocar. Ja a segunda indica ao
-- player que ele nao tem o nescessario para trocar.     
-----------------------------------------------------------
function troca1(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
 
if getPlayerItemCount(cid,6567) >= 100 then
doPlayerRemoveItem(cid, 6567, 100)
doPlayerAddItem(cid, 2383, 1)
npcHandler:say("Aqui esta a sua espada!", cid)
else
npcHandler:say("Voce nao tem 100 ferros.", cid)
end
keywordHandler:moveUp(1)
return true
end
-----------------------------------------------------------
-- Fim da primeira function                              
-----------------------------------------------------------
-----------------------------------------------------------
-- Inicio da segunda function                            
-- Igual a primeira com a diferenca, que agora precisa   
-- de 200 ouro para ganhar um helmo                      
-----------------------------------------------------------
function troca2(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
 
if getPlayerItemCount(cid,9971) >= 200 then
doPlayerRemoveItem(cid, 9971, 200)
doPlayerAddItem(cid, 2460, 1)
npcHandler:say("Aqui esta o seu helmo!", cid)
else
npcHandler:say("Voce nao tem 200 ouro.", cid)
end
keywordHandler:moveUp(1)
return true
end
-----------------------------------------------------------
-- Fim da segunda function                               
-----------------------------------------------------------
-----------------------------------------------------------
-- Fim das Functions                                     
-----------------------------------------------------------
-----------------------------------------------------------
-- Inicio dos nodes                                      
-- Eu vou ensinar apenas o nescessario para que voce     
-- consiga adicionar novos itens.                        
-----------------------------------------------------------
-- Bem como pode ver inicia com o Local nodex            
-- No caso para organizacao deixe os nodes numerados em  
-- sequencia 1,2,3,4,5,6,7. Vamos imaginar uma arma, para
-- aqueles que tem conhecimento em armas, sabe que       
-- algumas armas possuem trava de seguranca.             
-- Tecnicamente o node neste script e isso, o player fala
-- a palavra-chave e ele pergunta se deseja ou nao fazer 
-- uma determinada troca. Caso o player digite "nao"     
-- o script simplismente envia uma mensagem para o player
-- voltar quando desejar, e mata a conversa.             
-- Ja a palavra "sim", funciona como o gatilho sendo     
-- puxado. Como voce pode ver nesta linha:               
-- node1:addChildKeyword({'sim'}, troca1, {blessing = 1})
-- Ela detecta a palavra "sim" e envia pra function      
-- "troca1".                                             
-----------------------------------------------------------
-----------------------------------------------------------
-- Inicio node1 ou seja o node da troca1                 
-----------------------------------------------------------
local node1 = keywordHandler:addKeyword({'troca1'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 100 ferro por uma espada?'})
node1:addChildKeyword({'sim'}, troca1, {blessing = 1})
node1:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'})
-----------------------------------------------------------
-- Fim node1 ou seja o node da troca1                    
-----------------------------------------------------------
-----------------------------------------------------------
-- Inicio node2 ou seja o node da troca2                 
-----------------------------------------------------------
local node2 = keywordHandler:addKeyword({'troca2'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 200 ouro por um helmo?'})
node2:addChildKeyword({'sim'}, troca2, {blessing = 1})
node2:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'})
-----------------------------------------------------------
-- Fim node2 ou seja o node da troca2                    
-----------------------------------------------------------
-----------------------------------------------------------
-- Fim dos nodes                                         
-----------------------------------------------------------
-----------------------------------------------------------
-- Nao mecher nesta ultima linha                         
-----------------------------------------------------------
npcHandler:addModule(FocusModule:new())
-----------------------------------------------------------
-- Fim do script                                         
-- Nao mecher nesta ultima linha                         
-----------------------------------------------------------
Editado por thiago270 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Vlw  , aprendi como funciona o script tem como colocar o script ja com as duas opção não estou conseguindo colocar ^^ se poderia fazer um Topico com esse script vai ajudar muita gente ^^

 

 

 

--------------- @edit ----- 

 

 

Deixa consegui ) duvida sanada .... e Se poderia Fazer um topico como disse antes ! vlw amanha do o resto do rep 

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

IBNJHen.gifrf1sSxg.gif

Link para o post
Compartilhar em outros sites
  • 2 years later...

Desculpa Reviver o Topico, Mais Preciso de um npc que troque gold nuggets, pelos os itens vip que tenho em meu server.

se alguém poder ajudar.

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo