Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Npc troca item por item e da storage


Ir para solução Resolvido por Wakon,

Posts Recomendados

Tipo do script: Npc

Protocolo (versão do Tibia): 8.60

Servidor utilizado: Tfs 0.4

Nível de experiência: Médio

Adicionais/Informações:

 

 

Olá,

Eu Tenho um npc que ele troca item por item, só que ele não da storage ai o pessoal leva 10 negocio e faz 10 vezes avontade

Eu Gostaria que quando o player levasse 10 item por x item e ainda ganharia storage para não ir lá novamente falar com ele.

Script :

Spoiler

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
 
local items = {
        item1 = {5785, 13506}
}
local counts = {
        count1 = {10, 1}

}
 
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, 'kefla') then
                    if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then
                              doPlayerRemoveItem(cid, items.item1[1], counts.count1[1])
                              doPlayerAddItem(cid, items.item1[2], counts.count1[2])
                              selfSay('You just swap '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' for '.. counts.count1[2] ..' '.. getItemNameById(items.item1[2]) ..'.', cid)
                    else
                              selfSay('You need '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid)
                    end
          end
          return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

URGENTEEE..

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

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

@Christinacsa, testa ai:

local cfg = {
    need_item = {5785, 10},
    reward_item = {13506, 1},
    storage = 40531,
}

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 msg = msg:lower()

    if msgcontains(msg, 'kefla') then
        if getPlayerStorageValue(cid, cfg.storage) < 1 then
            if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) then
                doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2])
                selfSay('You just swap '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..' for '.. cfg.reward_item[2] ..' '.. getItemNameById(cfg.reward_item[1]) ..'.', cid)
                setPlayerStorageValue(cid, cfg.storage, 1)
            else
                selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid)
            end
        else
            selfSay('...', cid)
        end
    end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Link para o post
Compartilhar em outros sites
26 minutos atrás, Wakon disse:

@Christinacsa, testa ai:


local cfg = {
    need_item = {5785, 10},
    reward_item = {13506, 1},
    storage = 40531,
}

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 msg = msg:lower()

    if msgcontains(msg, 'kefla') then
        if getPlayerStorageValue(cid, cfg.storage) < 1 then
            if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) then
                doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2])
                selfSay('You just swap '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..' for '.. cfg.reward_item[2] ..' '.. getItemNameById(cfg.reward_item[1]) ..'.', cid)
                setPlayerStorageValue(cid, cfg.storage, 1)
            else
                selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid)
            end
        else
            selfSay('...', cid)
        end
    end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Só funciona com players

Ou posso testar com Group 6?

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites
2 horas atrás, Christinacsa disse:

Só funciona com players

Ou posso testar com Group 6?

Pelo que eu li no script não tem nada constando o group, então funciona para ambos

Aconselho só mudar o selfsay da linha 34 falando para o player que ele ja fez a troca.

local cfg = {
    need_item = {5785, 10},
    reward_item = {13506, 1},
    storage = 40531,
}

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 msg = msg:lower()

    if msgcontains(msg, 'kefla') then
        if getPlayerStorageValue(cid, cfg.storage) < 1 then
            if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) then
                doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2])
                selfSay('You just swap '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..' for '.. cfg.reward_item[2] ..' '.. getItemNameById(cfg.reward_item[1]) ..'.', cid)
                setPlayerStorageValue(cid, cfg.storage, 1)
            else
                selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid)
            end
        else
            selfSay('You already did this exchange!', cid)
        end
    end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Ajudei? REP+

 

Meus Servers:

PokeUnwind Em Breve

Rust Tibia Fechado

 

Tópicos: 

[Tutorial] Adicionando Pokemons com icon system

[Solução] ElfBot não abre corpos

 

Projetos:

DigiTibia Fechado

Rust Tibia Fechado(temporariamente!)

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 02/12/2017 em 10:45, Ckfox disse:

Pelo que eu li no script não tem nada constando o group, então funciona para ambos

Aconselho só mudar o selfsay da linha 34 falando para o player que ele ja fez a troca.


local cfg = {
    need_item = {5785, 10},
    reward_item = {13506, 1},
    storage = 40531,
}

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 msg = msg:lower()

    if msgcontains(msg, 'kefla') then
        if getPlayerStorageValue(cid, cfg.storage) < 1 then
            if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) then
                doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2])
                selfSay('You just swap '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..' for '.. cfg.reward_item[2] ..' '.. getItemNameById(cfg.reward_item[1]) ..'.', cid)
                setPlayerStorageValue(cid, cfg.storage, 1)
            else
                selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid)
            end
        else
            selfSay('You already did this exchange!', cid)
        end
    end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Olá tem como por pro player PAGAR + de 1 item ?

Exemplo pago esses items 2160 - 10 / 5785 - 10

Por esse 13506 e ainda recebo a storage para não poder trocar mais.

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites

@Christinacsa 

local cfg = {
    need_item = {5785, 10, 2160, 10},
    reward_item = {13506, 1},
    storage = 40531,
}

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 msg = msg:lower()

    if msgcontains(msg, 'kefla') then
        if getPlayerStorageValue(cid, cfg.storage) < 1 then
            if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) and doPlayerRemoveItem(cid, cfg.need_item[3], cfg.need_item[4])then
                doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2])
                selfSay('You just swap '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..' for '.. cfg.reward_item[2] ..' '.. getItemNameById(cfg.reward_item[1]) ..'.', cid)
                setPlayerStorageValue(cid, cfg.storage, 1)
            else
                selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid)
            end
        else
            selfSay('You already did this exchange!', cid)
        end
    end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Ajudei? REP+

 

Meus Servers:

PokeUnwind Em Breve

Rust Tibia Fechado

 

Tópicos: 

[Tutorial] Adicionando Pokemons com icon system

[Solução] ElfBot não abre corpos

 

Projetos:

DigiTibia Fechado

Rust Tibia Fechado(temporariamente!)

Link para o post
Compartilhar em outros sites
15 minutos atrás, Ckfox disse:

@Christinacsa 


local cfg = {
    need_item = {5785, 10, 2160, 10},
    reward_item = {13506, 1},
    storage = 40531,
}

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 msg = msg:lower()

    if msgcontains(msg, 'kefla') then
        if getPlayerStorageValue(cid, cfg.storage) < 1 then
            if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) and doPlayerRemoveItem(cid, cfg.need_item[3], cfg.need_item[4])then
                doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2])
                selfSay('You just swap '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..' for '.. cfg.reward_item[2] ..' '.. getItemNameById(cfg.reward_item[1]) ..'.', cid)
                setPlayerStorageValue(cid, cfg.storage, 1)
            else
                selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid)
            end
        else
            selfSay('You already did this exchange!', cid)
        end
    end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Tem como eu adicionar mais items , aonde contem o nome kefla? gostaria de por um SET inteiro

Ai o player pagaria oque você acabou de adicionar saka?

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites

@Christinacsa Entendi não

 

Ajudei? REP+

 

Meus Servers:

PokeUnwind Em Breve

Rust Tibia Fechado

 

Tópicos: 

[Tutorial] Adicionando Pokemons com icon system

[Solução] ElfBot não abre corpos

 

Projetos:

DigiTibia Fechado

Rust Tibia Fechado(temporariamente!)

Link para o post
Compartilhar em outros sites
10 horas atrás, Ckfox disse:

@Christinacsa Entendi não

 

Exemplo eu dou esses items que você acabou de adicionar 2 items com quantia de 10 totalizando 20 items 

Ai os jogadores iram pagar esses item e receberia 4 items  - 2180 , 2190 , 2191, 2192    e também receberia a storage

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites

@Christinacsa 

local cfg = {
    need_item = {5785, 10, 2160, 10},
    reward_item = {13506, 1, 2160, 1, 2161, 1, 2162, 1},
    storage = 40531,
}

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 msg = msg:lower()

    if msgcontains(msg, 'kefla') then
        if getPlayerStorageValue(cid, cfg.storage) < 1 then
            if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) and doPlayerRemoveItem(cid, cfg.need_item[3], cfg.need_item[4])then
                doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2])
				doPlayerAddItem(cid, cfg.reward_item[3], cfg.reward_item[4])
				doPlayerAddItem(cid, cfg.reward_item[5], cfg.reward_item[6])
				doPlayerAddItem(cid, cfg.reward_item[7], cfg.reward_item[8])
                selfSay('You just swap '.. cfg.need_item[2] cfg.need_item[1] ..' and '.. cfg.need_item[4] cfg.need_item[3] ..'for a kefla set', cid)
                setPlayerStorageValue(cid, cfg.storage, 1)
            else
                selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid)
            end
        else
            selfSay('You already did this exchange!', cid)
        end
    end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Ajudei? REP+

 

Meus Servers:

PokeUnwind Em Breve

Rust Tibia Fechado

 

Tópicos: 

[Tutorial] Adicionando Pokemons com icon system

[Solução] ElfBot não abre corpos

 

Projetos:

DigiTibia Fechado

Rust Tibia Fechado(temporariamente!)

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