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:
- O jogador usa um item específico (itemid = 10615) sobre o item que quer vender.
- O script verifica se o item alvo está na lista de vendáveis.
- Remove o item do inventário do jogador.
- Adiciona o gold correspondente ao total (preço × quantidade).
- 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.