otg-server-main\data\events\scripts\creature.lua
-- Increase Stamina when Attacking Trainer
local staminaBonus = {
target = 'Training Monk',
period = 360000, -- 6 minutos em milissegundos
bonus = 1, -- gain stamina
events = {}
}
local function addStamina(name)
local player = Player(name)
if not player then
staminaBonus.events[name] = nil
return
end
local target = player:getTarget()
-- Se perdeu o target ou o target não é o Trainer, para o loop
if not target or target:getName() ~= staminaBonus.target then
staminaBonus.events[name] = nil
return
end
local currentStamina = player:getStamina()
if currentStamina < 2520 then -- Trava de segurança: Máximo de 42 horas
player:setStamina(currentStamina + staminaBonus.bonus)
end
-- Agenda o próximo ciclo
staminaBonus.events[name] = addEvent(addStamina, staminaBonus.period, name)
end
function Creature:onTargetCombat(target)
-- SISTEMA DE STAMINA
if self and self:isPlayer() then
local name = self:getName()
if target and target:getName() == staminaBonus.target then
-- Se já não houver um evento rodando, inicia um novo
if not staminaBonus.events[name] then
staminaBonus.events[name] = addEvent(addStamina, staminaBonus.period, name)
end
else
-- SE MUDOU DE ALVO OU PAROU DE ATACAR O TRAINER:
-- Remove o evento pendente da memória do servidor imediatamente para não dar stamina infinita
if staminaBonus.events[name] then
stopEvent(staminaBonus.events[name])
staminaBonus.events[name] = nil
end
end
end
-- Daqui para baixo é o seu código original intocado
if hasEvent.onTargetCombat then
otg-server-main\data\events\scripts\creature.lua