[Actions] Script Item que vende loot

Com esse script otserv você pode usar um item e vender seus loot de onde estiver sem a nescessidade de ir ate um npc.

 

Resumo do script:

  • Função principal: Permite que o jogador venda determinados itens para ganhar gold.
  • Itens vendáveis: Definidos na tabela sellableItems com o itemid
    como chave e o preço por unidade como valor. Ex.: [2472] = 150000.
  • Processo de venda:
    1. O jogador usa um item específico (itemid = 10615) sobre o item que quer vender.
    2. O script verifica se o item alvo está na lista de vendáveis.
    3. Remove o item do inventário do jogador.
    4. Adiciona o gold correspondente ao total (preço × quantidade).
    5. Envia mensagem informando a venda.

 

Configuração possível:

  • Itens vendáveis: Adicionar ou remover paresitemid = preço em sellableItems.
  • Item de uso: Alterar item.itemid ~= 10615 para outro item que servirá como “ferramenta de venda”.
  • Mensagens: Podem ser personalizadas na função sendTextMessage.

Para adicionar itens que possa ser vendido nesse codigo, basta adicionar
[id-do-item] = valor-do-item,

 

Codigo:
[spoiler]

local sellableItems = {
[2472] = 150000,

}

local function sellItem(player, item, count)
local itemId = item:getId()
local value = sellableItems[itemId]
if not value then return false end

local totalValue = value * count

— Remove o item do inventário
player:removeItem(itemId, count)

— Adiciona o dinheiro ao jogador
player:addMoney(totalValue)

player:sendTextMessage(MESSAGE_INFO_DESCR, string.format(“You sold %dx %s for %d gold.”,
count, ItemType(itemId):getName(), totalValue))

return true
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
local player = Player(cid)
if not player then return false end

— Confirma que o item usado é o 5468
if item.itemid ~= 10615 then
return false
end

local targetItem = Item(itemEx.uid)
if not targetItem then
player:sendTextMessage(MESSAGE_INFO_DESCR, “Invalid item.”)
return true
end

local itemId = targetItem:getId()
if not sellableItems[itemId] then
player:sendTextMessage(MESSAGE_INFO_DESCR, “This item cannot be sold.”)
return true
end

local count = targetItem:getCount()
if count < 1 then count = 1 end

— Tenta vender
if not sellItem(player, targetItem, count) then
player:sendTextMessage(MESSAGE_INFO_DESCR, “Failed to sell the item.”)
end

return true
end

[/spoiler]

 

Creditos:
Creditos:
Fiapo.
ChatGPT.