Ir para conteúdo
  • Cadastre-se

NPC que compra e vende itens so por diamonds


Posts Recomendados

olá,queria um npc que compra e vende so por diamonds tipo um henry so que ives de ser td's é diamonds,para versao 8.54 e so comprar e vender stone obg REP + para quem ajudar

Link para o post
Compartilhar em outros sites

Bom dia.

Bom, criei um script onde você configura os itens que serão vendidos no início e o preço será sempre por diamantes (configura o item que será usado como moeda).

Porém, não é OpenTrade e sim dinâmico... pois para ser opentrade creio que será preciso editar algo nas sources do servidor.

 

Enfim...

 

Crie o seu npc com o nome desejado e a extensão (XML) na pasta npcs, como por exemplo: "Jack Stone.xml" e adicione o código dentro:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Jack Stone" script="jack_stone.lua" walkinterval="0" floorchange="0">
    <health now="0" max="0"/>
    <look type="274" corpse="2212"/>
    <parameters>
        <parameter key="message_greet" value=" Seja bem-vindo{ |PLAYERNAME|}!"/>
    </parameters>
</npc>

 

Agora abra a pasta scripts e crie um arquivo com o nome "jack_stone.lua" e adicione o código abaixo 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
------------------- Configuração dos Itens -----------------------
local strg = 12120 -- Não Mexa
local items = {
["demon armor"] = {2494, 5},  --["nome item"] = {id do item, quantidade de diamantes para comprar}
["demon legs"] = {2495, 10},
}
local valor = 2145 -- id da moeda de compra (diamantes)

------------------- MESSAGES INICIAIS ----------------------------------------
local item = items[msg]
    if item then
        selfSay('Deseja comprar um {'..msg..'} pagando {'..item[2]..' '..getItemNameById(valor)..'?}', cid)
        setPlayerStorageValue(cid, strg, tostring(msg))
        talkState[talkUser] = 1

    ---------------------- NEGOCIAÇÃO -------------------------------
    elseif msg == 'yes' and talkState[talkUser] == 1 then
        local check = items[getPlayerStorageValue(cid, strg)]
        if check then
            if getPlayerItemCount(cid, valor) >= check[2] then
                doPlayerRemoveItem(cid, valor, check[2])
                doPlayerAddItem(cid, check[1], 1)
                selfSay('Parabens, voce acaba de adquirir um {'..getPlayerStorageValue(cid, strg)..'}.', cid)
                setPlayerStorageValue(cid, strg, -1)
            else
                selfSay('Voce precisa de '..check[2]..' diamantes para adquirir uma {'..getPlayerStorageValue(cid, strg)..'}.', cid)
                setPlayerStorageValue(cid, strg, -1)
                talkState[talkUser] = 0
            end
        end
    else
        local str = ''
        for index, result in pairs(items) do
        str = str..index..","
        end
        selfSay('Atualmente temos: {'..str..'} para a venda.', cid)
        talkState[talkUser] = 0
    end

return true
end

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

 

Configure à gosto e diga se é isto mesmo que precisas.

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

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

Esse aqui fiz agora e foi testado em um 8.54 ^^

 

Em data/npc, coloque um novo arquivo com o nome Ditem.xml e cole isso dentro:

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Dian" script="Ditem.lua" walkinterval="3000" floorchange="0" access="5" >
<health now="150" max="150"/>
<look type="664" head="0" body="114" legs="114" feet="0"/>
<parameters>
<parameter key="message_greet" value="Bem-vindo |PLAYERNAME| Aqui voce pode comprar Stones, Vamos la diga {offer}."/>
<parameter key="message_farewell" value="Bye! See you next time."/>
</parameters>
</npc>

Na pasta data/npc/script, crie um arquivo chamado "Ditem.lua" e cole isso:

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  
 
-- Conversa Jogador/NPC  
if(msgcontains(msg, 'offer') or msgcontains(msg, 'Offer')) then
selfSay('Eu vendo Fire stone, Water stone, Leaf stone. Diga qual voce quer adquirir.', cid) 
elseif(msgcontains(msg, 'Fire stone') or msgcontains(msg, 'fire stone')) then
selfSay('A Fire stone custa 3 Diamonds, Voce vai querer?', cid) 
talkState[talkUser] = 1 
elseif(msgcontains(msg, 'Water stone') or msgcontains(msg, 'water stone')) then
selfSay('A Water stone Custa 3 Diamonds, Voce vai querer?', cid) 
talkState[talkUser] = 2 
elseif(msgcontains(msg, 'Leaf stone') or msgcontains(msg, 'leaf stone')) then
selfSay('A Leaf stone Custa 3 Diamonds, Voce vai querer?', cid) 
talkState[talkUser] = 3 
  
 
-- Confirmação da Compra  
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then  
if(doPlayerRemoveItem(cid, 2145, 3) == true) then  
selfSay('Thanks!', cid) 
doPlayerAddItem(cid, 11447, 1)
talkState[talkUser] = 0 
else  
selfSay('Voce nao tem  diamonds suficiente.', cid) 
talkState[talkUser] = 0  
end  
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then  
if(doPlayerRemoveItem(cid, 2145, 3) == true) then
selfSay('Thanks!', cid) 
doPlayerAddItem(cid, 11442, 1)
talkState[talkUser] = 0
else
selfSay('Voce nao tem  diamonds suficiente.', cid) 
talkState[talkUser] = 0  
end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 3) then  
if(doPlayerRemoveItem(cid, 2145, 3) == true) then  
selfSay('Thanks!', cid) 
doPlayerAddItem(cid, 11441, 1)
talkState[talkUser] = 0 
else  
selfSay('Voce nao tem  diamonds suficiente.', cid) 
talkState[talkUser] = 0  
end 
end
return TRUE
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) 
npcHandler:addModule(FocusModule:new())

Bom como já disse ele ja foi testado ^^ Espero ter ajudado ^^ 

 

 

                                                                             1535210279_tumblr_o9b6yoxM1Z1tco8kto1_500(3).gif.f527686e19da738322c39555244decac.gif

                                                             Meus tópicos         

                                                         Se ajudei você deixe seu Rep! para fortalecer a amizade ^^

                                                                              Vamos ajudar o fórum a crescer mais.

                                                                          1641206641_gif-escudo-fla-3d(1).gif.a5d3c0c24824d5272a181aa91c5eda0c.gif

                                                                                                Mengão porra! . .

                                                                     tumblr_oxm8eriUeU1sqwgnro2_400.gif.22e347b2fc58fdfd88dbf84f4bdaa1bc.gif

                                                                                ----- NPC que vende informação -----

                                                                           -----Baú Que dá Outfit se tiver Level -----

                                                                     ----- [Npc] Que vende Stones (itens) por diamonds -----

 

 

                                                                       

                       

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