Ir para conteúdo
  • Cadastre-se

[PEDIDO] Script de NPC para trocar items


Posts Recomendados

Tenta assim amigo :

"data/npc/scripts/trocaitems.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 playerHaveItems(cid, itemid)
local items = type(itemid) == "table" and itemid or {itemid}
for i = 1, #items do
if getPlayerItemCount(cid, items[i]) <= 0 then
return false
end
end
return true
end

function doPlayerRemoveItems(cid, itemid, count)
local items = type(itemid) == "table" and itemid or {itemid}
for i = 1, #items do
doPlayerRemoveItem(cid, items[i], count ~= nil and count or 1)
end
return nil
end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then
return false
end

if msgcontains(msg, "trocar") then
if playerHaveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}) then
doPlayerRemoveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}, 10)
doPlayerAddItem(cid, 2160, 10)
else
selfSay("Voce precisa de 1 item, 1 item, 1 item, 1 item, 1 item, 1 item e 1 item, para conseguir trocar por um item.")
end
end 
return true

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

"data/npc/Osvaldo.xml"

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Osvaldo" script="trocaitems.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="146" head="123" body="74" legs="123" feet="0" addons="2"/>
<parameters>
<parameter key="message_greet" value="Olá,fale {trocar} para trocar items por comigo."/>
</parameters>
</npc>

obs : caso não entenda como funciona o script fale que eu posto como "citar" e com cores para você identificar melhor! ^^

Link para o post
Compartilhar em outros sites

eu gostei do script , vc poderia explicar ele direitin como funciona e caso eu queria colocar varios itens a serem trocados por outros como faço?

Link para o post
Compartilhar em outros sites

if playerHaveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}) then
doPlayerRemoveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}, 10)
doPlayerAddItem(cid, 2160, 10)

 

Se vc tiver 10 quantiodades de playerHaveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240})  fça... remova 10 quantidade desses itens e de 10 do item 2160 para o player(10 cristal)

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites
  • 1 year later...
Em ‎18‎/‎05‎/‎2014‎ ‎13‎:‎33‎:‎35, ViitinG disse:

if msgcontains(msg, "trocar") then if playerHaveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}) then doPlayerRemoveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}, 10) doPlayerAddItem(cid, 2160, 10) else selfSay("Voce precisa de 1 item, 1 item, 1 item, 1 item, 1 item, 1 item e 1 item, para conseguir trocar por um item.")


E se eu quisesse botar 300 de X Item / 200 de Y Item / 100 de Z Item / como ficaria? Ajuda por favor :c

​Obstaculo Impossível?

Impossível é existir algo Impossível ;) 

 

 

 

 

Confira os Meus Conteúdos ! 

Te ajudei ? REP + E Ficamos KIT ;)

Link para o post
Compartilhar em outros sites
  • 1 year later...

Perdoe-me por reviver o tópico, mas a seguir está a reposta ao caro amigo acima..

Vá até a parte deste script abaixo:

if msgcontains(msg, "trocar") then
if playerHaveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}) then
doPlayerRemoveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}, 10)
doPlayerAddItem(cid, 2160, 10)
else
selfSay("Voce precisa de 1 item, 1 item, 1 item, 1 item, 1 item, 1 item e 1 item, para conseguir trocar por um item.")
end
end 
return true

 

Corrija para esta forma:

if msgcontains(msg, "muro") then
if playerHaveItems(cid, {5901, 8309}) then
doPlayerRemoveItems(cid, {5901}, 10)
doPlayerRemoveItems(cid, {8309}, 7)
doPlayerAddItem(cid, 2160, 10)
else
selfSay("Voce precisa de 10 madeiras e 10 pregos.")
end
end 
return true

 

Em -> doPlayerRemoveItems você coloca o id do item e logo após sua quantidade, assim também funciona com o item abaixo, caso queira adicionar mais itens, só adicionar uma linha desta abaixo:

 

doPlayerRemoveItems(cid, {IDDOITEM}, QUANTIDADE)

 

Gostou? Da um rep

 

Att.

Ajudei? REP+

 

 

 
 
Spriter: |||||||||| 10%

 

Link para o post
Compartilhar em outros sites
  • 9 months later...
Em 01/05/2017 em 01:07, rodrigorodriguess disse:

Perdoe-me por reviver o tópico, mas a seguir está a reposta ao caro amigo acima..

Vá até a parte deste script abaixo:


if msgcontains(msg, "trocar") then
if playerHaveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}) then
doPlayerRemoveItems(cid, {1234, 1235, 1236, 1237, 1238, 1239, 1240}, 10)
doPlayerAddItem(cid, 2160, 10)
else
selfSay("Voce precisa de 1 item, 1 item, 1 item, 1 item, 1 item, 1 item e 1 item, para conseguir trocar por um item.")
end
end 
return true

 

Corrija para esta forma:


if msgcontains(msg, "muro") then
if playerHaveItems(cid, {5901, 8309}) then
doPlayerRemoveItems(cid, {5901}, 10)
doPlayerRemoveItems(cid, {8309}, 7)
doPlayerAddItem(cid, 2160, 10)
else
selfSay("Voce precisa de 10 madeiras e 10 pregos.")
end
end 
return true

 

Em -> doPlayerRemoveItems você coloca o id do item e logo após sua quantidade, assim também funciona com o item abaixo, caso queira adicionar mais itens, só adicionar uma linha desta abaixo:

 

doPlayerRemoveItems(cid, {IDDOITEM}, QUANTIDADE)

 

Gostou? Da um rep

 

Att.

perdoe por reviver o topico mas e seu fosse esse script ne uma alavanca????

o que eu quero é tipo issu ae

 

quero q o player clique na alavanca para trocar 10 vip coins id 11192 por 1 star of hell id 12706 mas ele prescisa ter na bp o item star of lord para efetuar a troca ou seja

ele vai trocar 2 items por um...... pode me 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.

  • 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