[Resolvido] npc troca item por pokemon

clebao666
em Resolvidos
  • 1
  • 2

clebao666

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 09/10/13Posts: 124

ola galera!

 

gostaria de uma ajuda na criação de um npc que troca x item por 1 pokemon exemplo:

escence zard x 50 >shiny charizard

escence toise x 50 >shiny blastoise

 

estarei colocando uns 40 pokes nesse npc .

 

agradeço dmais a ajuda dos companheiros ae do forum. vlw

 

uso base cyan by senhor

Bluester

Ervinha
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 01/07/15Posts: 416Gênero: MasculinoChar no Tibia: Bluester

pode ser por box ? por exemplo, você dá 50x Essence Zard por uma box que dá um Charizard...

Refe

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/07/10Posts: 645Gênero: Masculino

Foi mal, eu li depois


pode ser por box ? por exemplo, você dá 50x Essence Zard por uma box que dá um Charizard...

tem como sem ser por Box, mas eu tô meio ocupado...

Contato:

 

 

Email: contato@ceetros.com

Discord: Ceetros#5376

Telegram: @ceetros

 

 

Bluester

Ervinha
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 01/07/15Posts: 416Gênero: MasculinoChar no Tibia: Bluester

Foi mal, eu li depois

tem como sem ser por Box, mas eu tô meio ocupado...

Também estou sem tempo, por isso vou fazer um com box, se ele quiser, ele pega...

Refe

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/07/10Posts: 645Gênero: Masculino

Também estou sem tempo, por isso vou fazer um com box, se ele quiser, ele pega...

Blz '-'

Contato:

 

 

Email: contato@ceetros.com

Discord: Ceetros#5376

Telegram: @ceetros

 

 

Bluester

Ervinha
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 01/07/15Posts: 416Gênero: MasculinoChar no Tibia: Bluester

Estou meio que sem tempo, então vou te passar um rápido aqui !

 

Em data/actions/scripts crie um arquivo chamado boox.lua e cole isso:

 

 

local a = {

[iDDABOX] = {pokemons = {"Shiny Charizard"}}
local happy = 1000
function onUse(cid, item, frompos, item2, topos)
local b = a[item.itemid]
if not b then return true end
local pokemon = b.pokemons[math.random(#b.pokemons)]
if not pokes[pokemon] then return true end
doPlayerSendTextMessage(cid, 27, "You opened a pokemon prize box +"..item.itemid - (11637).."!")
doPlayerSendTextMessage(cid, 27, "The prize pokemon was a "..pokemon..", congratulations!")
doSendMagicEffect(getThingPos(cid), 29)
addPokeToPlayer(cid, pokemon, 0, nil, btype) --alterado v1.9
doRemoveItem(item.uid, 1)
if useOTClient then
doCreatureExecuteTalkAction(cid, "/salvar")
end
return true
end

Em data/actions/actions.xml cole essa tag:

<action itemid="IDDABOX" event="script" value="boox.lua"/>

Data/npc: Crie um arquivo com o nome do NPC que quiser, vou usar Ruby como exemplo, e dentro do arquivo cole isso:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Ruby" script="RUBYTRADE.lua" walkinterval="350000" floorchange="0" speed="0">
<health now="100" max="100"/>
<look type="2335" head="20" body="100" legs="50" feet="0"/>
<parameters>
<parameter key="message_greet" value="Hello |PLAYERNAME|.I need {help}...you help me?"/> </parameters>
</npc>
Em data/npc/scripts crie um arquivo chamado RUBYTRADE.lua e cole isso 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
msg = string.lower(msg)
---------
local need = {
{id = ID DAS ESSENCES, qt = 50}, --ID DAS ESSENCES ZARD, QUANTIDADE
}
local rewards = {
{id = IDDABOX, qt = 1}, --charizard BOX
}
local stoFinish = 92120 -- USE ESSA OU A STORAGE QUE QUISER
---------
if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then
if getPlayerStorageValue(cid, stoFinish) >= 500 then
selfSay("Sorry, you already had done this quest.", cid)
talkState[talkUser] = 0
return true
end
selfSay("Olá meu amigo, sou o NPC de trocas de Essences, me dê 50 Essences e lhe darei 1 Box que virá seu Pokemon! Diga YES para trocarmos.",cid)
talkState[talkUser] = 1
return true
elseif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 1 then
if getPlayerItemCount(cid, need[1].id) < need[1].qt then
selfSay("Você não me trouxe todas as Essences...", cid)
selfSay("Lembre-se, eu preciso de 50 Essences...", cid)
talkState[talkUser] = 0
return true
end
for i = 1, #need do
doPlayerRemoveItem(cid, need.id, need.qt)
end
for i = 1, #rewards do
doPlayerAddItem(cid, rewards.id, rewards.qt)
doPlayerAddExperience(cid, 0)
end
selfSay("Obrigado, tchau!", cid)
setPlayerStorageValue(cid, stoFinish, 1)
talkState[talkUser] = 0
return true
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
OBS: Não testei

clebao666

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 09/10/13Posts: 124

 

Estou meio que sem tempo, então vou te passar um rápido aqui !

 

Em data/actions/scripts crie um arquivo chamado boox.lua e cole isso:

 

 

local a = {

[iDDABOX] = {pokemons = {"Shiny Charizard"}}
local happy = 1000
function onUse(cid, item, frompos, item2, topos)
local b = a[item.itemid]
if not b then return true end
local pokemon = b.pokemons[math.random(#b.pokemons)]
if not pokes[pokemon] then return true end
doPlayerSendTextMessage(cid, 27, "You opened a pokemon prize box +"..item.itemid - (11637).."!")
doPlayerSendTextMessage(cid, 27, "The prize pokemon was a "..pokemon..", congratulations!")
doSendMagicEffect(getThingPos(cid), 29)
addPokeToPlayer(cid, pokemon, 0, nil, btype) --alterado v1.9
doRemoveItem(item.uid, 1)
if useOTClient then
doCreatureExecuteTalkAction(cid, "/salvar")
end
return true
end

Em data/actions/actions.xml cole essa tag:

<action itemid="IDDABOX" event="script" value="boox.lua"/>

Data/npc: Crie um arquivo com o nome do NPC que quiser, vou usar Ruby como exemplo, e dentro do arquivo cole isso:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Ruby" script="RUBYTRADE.lua" walkinterval="350000" floorchange="0" speed="0">
<health now="100" max="100"/>
<look type="2335" head="20" body="100" legs="50" feet="0"/>
<parameters>
<parameter key="message_greet" value="Hello |PLAYERNAME|.I need {help}...you help me?"/> </parameters>
</npc>
Em data/npc/scripts crie um arquivo chamado RUBYTRADE.lua e cole isso 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
msg = string.lower(msg)
---------
local need = {
{id = ID DAS ESSENCES, qt = 50}, --ID DAS ESSENCES ZARD, QUANTIDADE
}
local rewards = {
{id = IDDABOX, qt = 1}, --charizard BOX
}
local stoFinish = 92120 -- USE ESSA OU A STORAGE QUE QUISER
---------
if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then
if getPlayerStorageValue(cid, stoFinish) >= 500 then
selfSay("Sorry, you already had done this quest.", cid)
talkState[talkUser] = 0
return true
end
selfSay("Olá meu amigo, sou o NPC de trocas de Essences, me dê 50 Essences e lhe darei 1 Box que virá seu Pokemon! Diga YES para trocarmos.",cid)
talkState[talkUser] = 1
return true
elseif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 1 then
if getPlayerItemCount(cid, need[1].id) < need[1].qt then
selfSay("Você não me trouxe todas as Essences...", cid)
selfSay("Lembre-se, eu preciso de 50 Essences...", cid)
talkState[talkUser] = 0
return true
end
for i = 1, #need do
doPlayerRemoveItem(cid, need.id, need.qt)
end
for i = 1, #rewards do
doPlayerAddItem(cid, rewards.id, rewards.qt)
doPlayerAddExperience(cid, 0)
end
selfSay("Obrigado, tchau!", cid)
setPlayerStorageValue(cid, stoFinish, 1)
talkState[talkUser] = 0
return true
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
OBS: Não testei

 

acho que esse da certo sim vo testar aq vlw jaja posto se funciono.

so como pedi la sera varios pokes mesmo que eu crie uma box pra cada shiny que eu quero trocar tem como esse npc trocar todas as box.

 

tipo 50 ecence zard > 1 box zard

50 escence toise > 1 box toise

 

tendeu o mesmo npc trocar varios itens por varias box.

 

agradeço dmais a ajuda de vcs ae vlw galera.

Foi mal, eu li depois

tem como sem ser por Box, mas eu tô meio ocupado...

 

ola amigo.

 

pode ser por box sim amis como falei ae teria que o mesmo npc tipo pedir

 

me de 50 escence zard e te do > uma box shiny charizard

se me der 50 escence toise te do > uma box toise e assim por diante.

 

tera uns 30 shiny ou mais pra ele fazer.

 

desde ja agradeço a qquer ajuda vlw.

Bluester

Ervinha
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 01/07/15Posts: 416Gênero: MasculinoChar no Tibia: Bluester

acho que esse da certo sim vo testar aq vlw jaja posto se funciono.

so como pedi la sera varios pokes mesmo que eu crie uma box pra cada shiny que eu quero trocar tem como esse npc trocar todas as box.

 

tipo 50 ecence zard > 1 box zard

50 escence toise > 1 box toise

 

tendeu o mesmo npc trocar varios itens por varias box.

 

agradeço dmais a ajuda de vcs ae vlw galera.

 

 

ola amigo.

 

pode ser por box sim amis como falei ae teria que o mesmo npc tipo pedir

 

me de 50 escence zard e te do > uma box shiny charizard

se me der 50 escence toise te do > uma box toise e assim por diante.

 

tera uns 30 shiny ou mais pra ele fazer.

 

desde ja agradeço a qquer ajuda vlw.

Testa o script que postei acima.

Faltou o REP né ? rs, mas fico feliz em ter ajudado de alguma forma.

clebao666

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 09/10/13Posts: 124

Testa o script que postei acima.

 

testado e aprovado. script sem erro e funfando legau apenas teria que ser refeita pra o mesmo npc poder trocar mais itens diferentes por pokes diferentes.

 

se puder me ajudar agradeço muito vlww ja dei rep++

Bluester

Ervinha
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 01/07/15Posts: 416Gênero: MasculinoChar no Tibia: Bluester

 

testado e aprovado. script sem erro e funfando legau apenas teria que ser refeita pra o mesmo npc poder trocar mais itens diferentes por pokes diferentes.

 

se puder me ajudar agradeço muito vlww ja dei rep++

Só adicionar mais boxes no script boox.lua, e trocar os itens de trocas e as falas do NPC ^^

clebao666

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 09/10/13Posts: 124

Só adicionar mais boxes no script boox.lua, e trocar os itens de trocas e as falas do NPC ^^

 

tipo man se nao entendeu . as box e de boas criar mais umas 200 o foda e enfia um npc pra cada troca de itens por box tendeu. eu queria um npc que o cara fala hi help yes se ele tive o item escence zard ele ganha uma box de shiny zard , ja se ele tiver por exenplo um escence toise ae o proprio npc da pra ele uma box de shiny toise. tendeu senao vo ter que criar um npc e uma box pra cada shiny que eu va por pra trocar e pretendo por todos do server. se souber me ajudar agradeço dmaissss vlw ae man.

Refe

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/07/10Posts: 645Gênero: Masculino

tipo man se nao entendeu . as box e de boas criar mais umas 200 o foda e enfia um npc pra cada troca de itens por box tendeu. eu queria um npc que o cara fala hi help yes se ele tive o item escence zard ele ganha uma box de shiny zard , ja se ele tiver por exenplo um escence toise ae o proprio npc da pra ele uma box de shiny toise. tendeu senao vo ter que criar um npc e uma box pra cada shiny que eu va por pra trocar e pretendo por todos do server. se souber me ajudar agradeço dmaissss vlw ae man.

 

   local need = {
      {id = ID DAS ESSENCES, qt = 50}, --ID DAS ESSENCES ZARD, QUANTIDADE
   }
   local rewards = {
      {id = IDDABOX, qt = 1}, --charizard BOX
   }
   local need = {
      {id = ID DAS ESSENCES, qt = 50}, --ID DAS ESSENCES ZARD, QUANTIDADE
      {id = ID DAS ESSENCES2, qt = 50}, --ID DAS ESSENCES Blastoise, QUANTIDADE
   }
   local rewards = {
      {id = IDDABOX, qt = 1}, --charizard BOX
      {id = IDDABOX2, qt = 1}, --blastoise BOX
   }


já tentou ?

Contato:

 

 

Email: contato@ceetros.com

Discord: Ceetros#5376

Telegram: @ceetros

 

 

clebao666

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 09/10/13Posts: 124
   local need = {
      {id = ID DAS ESSENCES, qt = 50}, --ID DAS ESSENCES ZARD, QUANTIDADE
   }
   local rewards = {
      {id = IDDABOX, qt = 1}, --charizard BOX
   }
   local need = {
      {id = ID DAS ESSENCES, qt = 50}, --ID DAS ESSENCES ZARD, QUANTIDADE
      {id = ID DAS ESSENCES2, qt = 50}, --ID DAS ESSENCES Blastoise, QUANTIDADE
   }
   local rewards = {
      {id = IDDABOX, qt = 1}, --charizard BOX
      {id = IDDABOX2, qt = 1}, --blastoise BOX
   }


já tentou ?

 

desse jeito ae se o cara tem apenas 50 de um item o npc ja da todas as box de uma ves que tao na parte de baixo

no caso testei apenas duas do zard e toise e so tiro 50 das escences e ja foi dando as 2 box

tem que mudar a script ae so nao sei como

 

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino


local trade_pokes, options = {

["Shiny Charizard"] = {itemid = ID_do_item, count = quantidade},

["Shiny Blastoise"] = {itemid = ID_do_item, count = quantidade},

}, {}

 

for poke_name, trade_info in pairs(trade_pokes) do

table.insert(options, poke_name.." - "..trade_info.count.."x "..getItemNameById(trade_info.itemid))

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

 

if msgcontains(msg:lower(), "help") or msgcontains(msg:lower(), "trade") then

selfSay("I can trade the following pokemons for the subsequent items. Which one do you wanna buy?", cid)

doPlayerPopupFYI(cid, "*** TRADEABLE POKEMONS ***\n\n"..table.concat(options, "\n"))

talkState[talkUser] = 1

elseif talkState[talkUser] == 1 then

local poke = trade_pokes[msg]

 

if poke then

if doPlayerRemoveItem(cid, poke.itemid, poke.count) then

selfSay("It was a pleasure to make bussiness with you! Make a good use of your new "..msg..".", cid)

addPokeToPlayer(cid, msg, 0, nil, "normal")

talkState[talkUser] = 0

else

selfSay("You do not have enough itens to buy this pokemon, sorry.", cid)

end

else

selfSay("Sorry, you probably wrote this pokemon's name wrong or I don't sell it. Make sure you're typing it in case-sensitive.")

end

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

  • 1
  • 2