Pedi para o chat, fazer com que fique atirando até usar o item novamente ou acabar a munição:
local WEAPON_ID = 31159 -- ID da sua arma personalizada
local AMMO_ID = 29564 -- ID da munição
local MISSILE_EFFECT = 113 -- Efeito de míssil
local DAMAGE_TYPE = COMBAT_PHYSICALDAMAGE -- Tipo de dano físico
local SHOOT_INTERVAL = 1000 -- Intervalo de disparo em milissegundos (1 segundo)
local shooting = false -- Variável de controle para saber se está atirando
local function shoot(player, target)
-- Verifica se o alvo ainda é válido e se o jogador tem munição
if not target or not target:isMonster() or player:getItemCount(AMMO_ID) <= 0 then
player:sendCancelMessage("Você não tem munição suficiente ou o alvo não é válido.")
shooting = false
return
end
-- Remove a munição
player:removeItem(AMMO_ID, 1)
-- Cria o efeito do míssil
local startPosition = player:getPosition()
local endPosition = target:getPosition()
startPosition:sendDistanceEffect(endPosition, MISSILE_EFFECT)
-- Calcula o dano
local ammoItem = ItemType(AMMO_ID)
local minDamage = ammoItem:getAttack()
local maxDamage = minDamage * 2
local damage = math.random(minDamage, maxDamage)
-- Aplica o dano ao monstro
target:addHealth(-damage)
target:getPosition():sendMagicEffect(CONST_ME_HITAREA)
end
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
-- Verifica se a arma está equipada na mão direita ou esquerda
local weaponInRightHand = player:getSlotItem(CONST_SLOT_RIGHT)
local weaponInLeftHand = player:getSlotItem(CONST_SLOT_LEFT)
local isWeaponEquipped = (weaponInRightHand and weaponInRightHand:getId() == WEAPON_ID) or
(weaponInLeftHand and weaponInLeftHand:getId() == WEAPON_ID)
if not isWeaponEquipped then
player:sendCancelMessage("Você precisa equipar a arma na sua mão para usá-la.")
return false
end
-- Se o jogador já está atirando, interrompe o loop
if shooting then
shooting = false
player:sendCancelMessage("Você parou de atirar.")
return true
end
-- Verifica se o alvo é um monstro
if not target or not target:isMonster() then
player:sendCancelMessage("Você só pode usar essa arma em monstros.")
return false
end
-- Ativa o modo de tiro contínuo
shooting = true
player:sendCancelMessage("Atirando automaticamente...")
-- Função que repete o disparo em intervalos definidos
addEvent(function()
if shooting and player:isPlayer() then
shoot(player, target)
addEvent(onUse, SHOOT_INTERVAL, player, item, fromPosition, target, toPosition, isHotkey)
end
end, SHOOT_INTERVAL)
return true
end