Ir para conteúdo
  • Cadastre-se

(Resolvido)[Pedido] NPC que vende itens em troca de diamond Poketibia


Ir para solução Resolvido por Wakon,

Posts Recomendados

Olá galera, precisava de um script que trocava itens em troca de diamonds e queria que essa compra seja feita através de falas. Ex:

Hi,Bike,yes

 

Link para o post
Compartilhar em outros sites
  • Solução

Em "Data/npc/scripts", arquivo.lua:

local items = {
-- [Nome do item] {id do item} {preço do item}.
["enforced helmet"] = {2502, 5},
["enforced armor"] = {2503, 5}
}
 
local moeda = 6527 -- ID do diamond.
local storage = 87595 -- Só altere caso essa esteja em uso.
 
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, "items") or msgcontains(msg, "Items") then
        local offer = ''
        for i, r in pairs(items) do
        offer = offer..i..","
        end
        selfSay('Eu vendo: {'..offer..'} por {'..getItemNameById(moeda)..'}.', cid)
        talkState[talkUser] = 0
    end
 
local item = items[msg]
    if item then
        selfSay('Deseja comprar um {'..msg..'} por {'..item[2]..' '..getItemNameById(moeda)..'?}', cid)
        setPlayerStorageValue(cid, storage, tostring(msg))
        talkState[talkUser] = 1
 
    elseif msg == 'yes' and talkState[talkUser] == 1 then
        local stg = items[getPlayerStorageValue(cid, storage)]
        if stg then
            if getPlayerItemCount(cid, moeda) < stg[2] then 
selfSay('Você não tem '..stg[2]..' {'..getItemNameById(moeda)..'}.', cid)
                setPlayerStorageValue(cid, storage, -1)
                talkState[talkUser] = 0
            else
                doPlayerRemoveItem(cid, moeda, stg[2])
                doPlayerAddItem(cid, stg[1], 1)  
                selfSay('Você comprou um {'..getPlayerStorageValue(cid, storage)..'} por {'..stg[2]..'} {'..getItemNameById(moeda)..'}.', cid)
                setPlayerStorageValue(cid, storage, -1)
            end
        end
    end
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Em "Data/npc", nome_do_npc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="NOMEDONPC" script="data/npc/scripts/seller.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="138" head="57" body="59" legs="40" feet="76" addons="0"/>
<parameters>
<parameter key="message_greet" value="Olá, |PLAYERNAME|. Eu vendo alguns {items}, está interessado em algum?"/>
</parameters>
</npc>

Está configurado para Tibia, mas basta você modificar os id's/nomes ao seu gosto!

 

Créditos: Adriano SwaTT

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