Ir para conteúdo
  • 0

Depot House


Layh

Pergunta

Olá xTibianos!

Estava precisando de um suporte para a questão de depot nas houses. Ao adicionar um depot na house o jogador não consegue acessar os itens que estão no seu depot original aquele que fica localizado no CP.

Alguém sabe como resolver isso?

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá! Isso acontece porque cada depot no Tibia é vinculado a uma determinada "town" (cidade). Quando você coloca um depot em uma house, ele é tratado como um novo depot separado do depot original localizado no CP (temple) da cidade.

Para resolver esse problema, você precisará garantir que ambos os depots (o da house e o do CP) estejam vinculados à mesma "town ID" e que eles compartilhem a mesma "depot ID"

 

  • Verifique a Town ID:

    • Certifique-se de que a "town ID" do depot na house seja a mesma do depot original no CP. Essa informação geralmente está definida no arquivo map ou no código da script que cria o depot.
  • Vincule o Depot ID:

    • Verifique o depotid do depot da house e do depot no CP. Ambos precisam compartilhar o mesmo depotid para que os itens sejam acessíveis de qualquer um dos depots.
  • Scripts e Configurações:

Em alguns casos, pode ser necessário ajustar o código do servidor para garantir que os depots compartilhem o mesmo inventário. Dependendo do código do servidor, você pode precisar revisar as funções que lidam com a criação e gestão de depots para garantir que eles estejam corretamente sincronizados.

 

  • Outra opção é criar ou modificar um script LUA que faz a checagem e sincronização entre os depots. Isso pode ser feito no evento de abertura do depot, onde você sincroniza os itens entre os depots do CP e da casa do jogador.

Um exemplo básico de script:

local function syncDepots(player)
    local mainDepot = player:getDepot(1) -- CP depot ID
    local houseDepot = player:getDepot(2) -- House depot ID (ajuste conforme o ID do depot na casa)
    
    -- Sincroniza itens do depot da casa com o CP
    for i = 0, houseDepot:getCapacity() - 1 do
        local item = houseDepot:getItem(i)
        if item then
            mainDepot:addItemEx(item)
        end
    end
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    syncDepots(player)
    -- Continuar a lógica normal de abrir o depot...
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 03/09/2024 em 21:43, Holograma disse:

Olá! Isso acontece porque cada depot no Tibia é vinculado a uma determinada "town" (cidade). Quando você coloca um depot em uma house, ele é tratado como um novo depot separado do depot original localizado no CP (temple) da cidade.

Para resolver esse problema, você precisará garantir que ambos os depots (o da house e o do CP) estejam vinculados à mesma "town ID" e que eles compartilhem a mesma "depot ID"

 

  • Verifique a Town ID:

    • Certifique-se de que a "town ID" do depot na house seja a mesma do depot original no CP. Essa informação geralmente está definida no arquivo map ou no código da script que cria o depot.
  • Vincule o Depot ID:

    • Verifique o depotid do depot da house e do depot no CP. Ambos precisam compartilhar o mesmo depotid para que os itens sejam acessíveis de qualquer um dos depots.
  • Scripts e Configurações:

Em alguns casos, pode ser necessário ajustar o código do servidor para garantir que os depots compartilhem o mesmo inventário. Dependendo do código do servidor, você pode precisar revisar as funções que lidam com a criação e gestão de depots para garantir que eles estejam corretamente sincronizados.

 

  • Outra opção é criar ou modificar um script LUA que faz a checagem e sincronização entre os depots. Isso pode ser feito no evento de abertura do depot, onde você sincroniza os itens entre os depots do CP e da casa do jogador.

Um exemplo básico de script:

local function syncDepots(player)
    local mainDepot = player:getDepot(1) -- CP depot ID
    local houseDepot = player:getDepot(2) -- House depot ID (ajuste conforme o ID do depot na casa)
    
    -- Sincroniza itens do depot da casa com o CP
    for i = 0, houseDepot:getCapacity() - 1 do
        local item = houseDepot:getItem(i)
        if item then
            mainDepot:addItemEx(item)
        end
    end
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    syncDepots(player)
    -- Continuar a lógica normal de abrir o depot...
end

 

É possível fazer isso por uma action?
Tipo eu configuro um item com a id XXXX e quando o payer clicar nele vai abrir como DEPOT...

Link para o comentário
Compartilhar em outros sites

  • 0
Em 14/09/2024 em 03:02, wenderotpoke disse:

É possível fazer isso por uma action?
Tipo eu configuro um item com a id XXXX e quando o payer clicar nele vai abrir como DEPOT...

sim.. 

Crie um script chamado depot_sync.lua com o seguinte conteúdo:
 

local function syncDepots(player)
    local mainDepot = player:getDepot(1) -- ID do depot do CP
    local houseDepot = player:getDepot(2) -- ID do depot na casa (ajuste conforme necessário)
    
    -- Sincroniza os itens do depot da casa com o depot do CP
    for i = 0, houseDepot:getCapacity() - 1 do
        local item = houseDepot:getItem(i)
        if item then
            mainDepot:addItemEx(item)
        end
    end
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    syncDepots(player)
    player:sendTextMessage(MESSAGE_INFO_DESCR, "Seus depots foram sincronizados com sucesso.")
    return true
end
  1. Substitua XXXX pelo ID do item que você quer usar para abrir e sincronizar o depot.

Como Funciona:

  • O script sincroniza os itens do depot da house com o depot do CP (central) sempre que o jogador clicar no item configurado.
  • A função syncDepots cuida da sincronização dos itens entre os depots.
  • A função onUse é o evento que ocorre quando o jogador clica no item. Ela chama a função de sincronização e exibe uma mensagem ao jogador.

Com isso, o jogador pode clicar no item específico e sincronizar seus depots.

Depois, registre a action no arquivo actions.xml, associando o item com o script:

<action itemid="XXXX" script="depot_sync.lua"/>

 

Link para o comentário
Compartilhar em outros sites

  • 0
14 horas atrás, Holograma disse:

sim.. 

Crie um script chamado depot_sync.lua com o seguinte conteúdo:
 

local function syncDepots(player)
    local mainDepot = player:getDepot(1) -- ID do depot do CP
    local houseDepot = player:getDepot(2) -- ID do depot na casa (ajuste conforme necessário)
    
    -- Sincroniza os itens do depot da casa com o depot do CP
    for i = 0, houseDepot:getCapacity() - 1 do
        local item = houseDepot:getItem(i)
        if item then
            mainDepot:addItemEx(item)
        end
    end
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    syncDepots(player)
    player:sendTextMessage(MESSAGE_INFO_DESCR, "Seus depots foram sincronizados com sucesso.")
    return true
end
  1. Substitua XXXX pelo ID do item que você quer usar para abrir e sincronizar o depot.

Como Funciona:

  • O script sincroniza os itens do depot da house com o depot do CP (central) sempre que o jogador clicar no item configurado.
  • A função syncDepots cuida da sincronização dos itens entre os depots.
  • A função onUse é o evento que ocorre quando o jogador clica no item. Ela chama a função de sincronização e exibe uma mensagem ao jogador.

Com isso, o jogador pode clicar no item específico e sincronizar seus depots.

Depois, registre a action no arquivo actions.xml, associando o item com o script:

<action itemid="XXXX" script="depot_sync.lua"/>

 

To ligado mas eu falo da seguinte forma, o item não está configurado como um DEPOT nos itens, até por que a source que tenho aqui não permite ter DEPOT itens na house, sempre que abre o servidor ela remove a DP da casa
a ideia que pensei seria ter um OnUse que transformasse o item que foi usado numa depot

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...