Que tal uma janela pop-up com os itens que o NPC vende e o preço e depois o jogador fala o que quer?
NPC que vende itens por Scarab coins
Por jefersonzc, 15 de out. de 2013 em Scripts
info
Grupo: Marquês
Registrado: 16/06/07
Posts: 1.2k
Reputação: +377
Gênero: Masculino
Char no Tibia: Nenhum

info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

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 shopWindow = {}
local moeda = 9020 -- ID da moeda
local t = {
[2195] = {price = 15}, -- [ITEM ID PARA VENDER] = {QNTO CUSTARÁ}
[2493] = {price = 25},
[2361] = {price = 30},
[8851] = {price = 20},
[8925] = {price = 30},
[2640] = {price = 50},
[2494] = {price = 100},
[9932] = {price = 50},
[2472] = {price = 70},
[8931] = {price = 100}
}
local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)
if t[item] and not doPlayerRemoveItem(cid, moeda, t[item].price) then
selfSay("you dont have"..t[item].price.." "..getItemNameById(moeda), cid)
else
doPlayerAddItem(cid, item)
selfSay("Here your item!", cid)
end
return true
end
if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then
for var, ret in pairs(t) do
table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)})
end
openShopWindow(cid, shopWindow, onBuy, onSell)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
info
Grupo: Campones
Registrado: 27/02/11
Posts: 30
Reputação: +2
Char no Tibia: Galileu Galilei

Primeiramente, obrigado pelas respostas.
omega blueheaven, creio que o sistema que você descreveu não seja muito interessante para o meu propósito. Até porque eu poderia colocar alguns "black boards" na parede atrás do nnpc que mostrasse os preços quando o player desse look, seria mais fácil.
Vodkart, vou testar aqui e posto um feedback ![]()
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 shopWindow = {} local moeda = 9020 -- ID da moeda local t = { [2195] = {price = 15}, -- [ITEM ID PARA VENDER] = {QNTO CUSTARÁ} [2493] = {price = 25}, [2361] = {price = 30}, [8851] = {price = 20}, [8925] = {price = 30}, [2640] = {price = 50}, [2494] = {price = 100}, [9932] = {price = 50}, [2472] = {price = 70}, [8931] = {price = 100} } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and not doPlayerRemoveItem(cid, moeda, t[item].price) then selfSay("you dont have"..t[item].price.." "..getItemNameById(moeda), cid) else doPlayerAddItem(cid, item) selfSay("Here your item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Mano, funcionou parcialmente. O que aconteceu foi o seguinte:
Sabe quando vc vai comprar algo e ta sem grana na mochila? Os nomes dos itens não ficam ressaltados de branco, eles ficam escurecidos.
Então, quando falei trade para o npc, os nomes ficaram assim e eu não conseguia comprar nada. Mas se eu tiver com grana bag (gps mesmo), ai os itens ficam compráveis, só que quando compro, disconta as Scarab coins numa boa.
Resumindo, vc só consegue comprar se tiver com gp na bag.
PS.: a quantidade de gp na bag tem que ser igual ou superior ao price do item para ele ser habilitado, como nos npcs normais
-----------------------------------------------------------------------------------------------
Mais alguém? Alguma solução?
Editado Outubro 17 por jefersonzc
info
Grupo: Campones
Registrado: 27/02/11
Posts: 30
Reputação: +2
Char no Tibia: Galileu Galilei

up.... quem sabe né ![]()
Editado Outubro 23 por jefersonzc
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

<item id="2159" article="a" name="scarab coin" plural="scarab coins">
<attribute key="weight" value="100" />
</item>
<item id="2159" article="a" name="scarab coin" plural="scarab coins">
<attribute key="weight" value="100"/>
<attribute key="worth" value="10000"/>
</item>
info
Grupo: Campones
Registrado: 27/02/11
Posts: 30
Reputação: +2
Char no Tibia: Galileu Galilei

em items.xml troque<item id="2159" article="a" name="scarab coin" plural="scarab coins"> <attribute key="weight" value="100" /> </item>por<item id="2159" article="a" name="scarab coin" plural="scarab coins"> <attribute key="weight" value="100"/> <attribute key="worth" value="10000"/> </item>
Cara.... muito obrigado por toda a ajuda, de verdade, mas vou desistir disso.
Fiz o que você sugeriu, mas ai virou bagunça. Auahuahuahuahauh! Todos os npcs passaram a intender que a scarab coin valia 10k. E eu queria que apenas um npc aceitasse ela como grana. Acho que o que quero não ficará perfeito nunca.
Vou pensar se faço como o omega blueheaven sugeriu e colocar uma pop up ou algo assim.
De todo o modo, muito obrigado pela atenção.
Rep++



info
Grupo: Campones
Registrado: 27/02/11
Posts: 30
Reputação: +2
Char no Tibia: Galileu Galilei
Galera, queria um npc que vendesse itens por Scarab coins ao invés de gps.
Mas não queria que o player falasse o nome do item para que o npc descontasse as coins. Queria que quando o player dissesse "trade", aparecesse aquela janelinha para selecionar o item e a quantidade desejada, tal como é feito com os npcs normais de compra e venda. A única diferença é que onde é mostrado o dinheiro do jogardor, seria mostrado a quantidade de Scarab coins que ele tem e quanto ele iria gastar. Só não sei se isso é possível