GalaxyDev
Miembro Mensajes : 103
Puntos : 118
Localización : Chile
Nekokan escribió: Descripcion escribió:Hola,
Me gustaría un script para TFS 1.4 que consista en un item container (una bolsa) que haga auto loot de las monedas una vez el player haga click derecho en el corpse.
Condiciones:
> El jugador siempre ha de llevar la bolsa, indpendienemtente que sea su inventario o dentro de su mochila.
> La bolsa comprueba en todo momento si el jugador tiene cap. suficiente, al igual que slots libres en la misma.
> Por cada loot muestre un output por consola/chat
[ X monedas recogidas en la bolsa ]
Imagen Explicativa escribió:Imagen Explicativa: Version del Scripts: TFs 1.x
- Código:
local AUTO_LOOT_BAG_ID = 1234 -- Reemplaza con el ID de la bolsa que utilizarás
function onUse(cid, item, fromPosition, itemEx, toPosition)
local player = Player(cid)
if not player then
return false
end
-- Verificar si el jugador tiene la bolsa equipada o en su mochila
local bag = player:getSlotItem(CONST_SLOT_BACKPACK)
if not bag or bag:getId() ~= AUTO_LOOT_BAG_ID then
return false
end
local corpse = Tile(toPosition):getTopCorpse()
if not corpse then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "No hay un cadáver aquí.")
return true
end
local coins = corpse:getCoins()
if coins <= 0 then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "El cadáver no contiene monedas.")
return true
end
local freeCapacity = player:getFreeCapacity()
if coins > freeCapacity then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "No tienes suficiente capacidad para recoger todas las monedas.")
return true
end
-- Verificar si la bolsa tiene suficientes slots libres para las monedas
local bagFreeSlots = bag:getEmptySlots()
if bagFreeSlots <= 0 then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "La bolsa está llena, no puedes recoger más monedas.")
return true
end
local amount = math.min(coins, bagFreeSlots) -- Recoger la cantidad máxima de monedas según los espacios libres en la bolsa
local lootContainer = Container(bag.uid)
for i = 1, amount do
corpse:removeCoins(1)
lootContainer:addItem(2148, 1) -- ID de las monedas, en este caso 2148
end
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("%d moneda(s) recogidas en la bolsa.", amount))
return true
end
INTENTA CON ESTO REY LO HICE SUPER RAPIDO AVISAME SI FUNCIONA :*
Asegúrate de reemplazar AUTO_LOOT_BAG_ID con el ID de la bolsa que deseas utilizar. Además, ten en cuenta que este script asume que las monedas tienen el ID 2148. Si en tu servidor las monedas tienen un ID diferente, debes modificar la línea lootContainer:addItem(2148, 1) para que coincida con el ID correcto de las monedas.
Coloca este script en el archivo data/scripts/actions/NOMBREDETUSCRIPT.lua de tu servidor y reinicia el servidor para aplicar los cambios. Ahora, cuando los jugadores hagan clic derecho en un cadáver con la bolsa equipada o dentro de su mochila, las monedas se agregarán automáticamente a la bolsa y se mostrará un mensaje indicando la cantidad de monedas recogidas.
[Tienes que estar registrado y conectado para ver este vínculo] Servidor 24/7 Full Animes
MI GITHUB (REVSCRIPTS TFS 1.3-1.5))