Então galera do xTibia, Blz?
Esses dias eu tava me matando pra conseguir por um Npc que venda items por outro tipo de moeda, porem não achava nada, nem conseguia modificar os script, os unicos script que eu achei nunca funcionava direito, ou o npc realmente anunciava que vendia os items, porem nao vendia, ou simplesmente nao falava nada, ficava perambulando la, foi quando eu achei um script que realmente funcione, e quero compartilha ele com voces, porque sei que muita gente quer esse tipo de npc .
Começando:
- Vai em data/npc e crie um arquivo.xml, nomeia ele como você quiser, depois você cola isso dentro dele:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Nome do Npc" script="nome_do_arquivo.lua" walkinterval="2000" floorchange="0"><health now="100" max="100"/><look type="300" head="0" body="0" legs="0" feet="0" corpse="5995"/><parameters><parameter key="message_greet" value="Hello |PLAYERNAME|! Do you want to do some {trading}?"/></parameters></npc>
Editando:
Vermelho - Nome de seu npc que vai aparecer no jogo.
Azul - nome do arquivo .lua que voce vai criar na pasta data/npc/script esse script eu vou passar pra voce jaja aki em baixo.
Verde - Aparencia do Npc.
- Pronto, feito isso vai em data/npc/script, e cria um arquivo .lua é so copiar um arquivo existente e renomear, depois voce cola isso dentro:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cidlocal shopWindow = {}local moeda = 9971local t = {[6096] = {price = 500}, -- Nome do Item[6095] = {price = 500}, -- Nome do Item[5918] = {price = 500}, -- Nome do Item[2527] = {price = 500}, -- Nome do Item}local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)if t[item] and not doPlayerRemoveItem(cid, moeda, t[item].price) thenselfSay("Desculpe, mas voce nao tem "..t[item].price.." "..getItemNameById(moeda), cid)elsedoPlayerAddItem(cid, item)selfSay("aqui esta seu item!", cid)endreturn trueendif (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))thenfor var, ret in pairs(t) dotable.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)})endopenShopWindow(cid, shopWindow, onBuy, onSell)endreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())
configurando:
- Vermelho - ID do item que voce quer usar como moeda.
- Roxo - Valor do item
- Azul - ID do item que o npc ira vender
- Marrom - Nome do item, nao é obrigatório por isso, mais é bom botar pra voce na hora que quiser alterar algo saber qual é o items.
Pronto, agora é so testar
PS: Esse script so tem um pequeno "erro", para comprar os items no npc é preciso ter GOLD na backpack, mais o GOLD nao sera removido, so sera removido a "Moeda" que voce escolheu .
.
Espero ter ajudado. boa sorte.
Creditos pelo script: Vodkart (ele que postou em um topico, nao sei se foi ele, mais enfim, tem que por os credito ne kkk)
Editado: corrigido um erro no script, que quando o player tentava comprar algo, e nao tivesse a "moeda vip" dava um pequeno erro de aviso na distro.
28/11