R
Ryusteck
Invitado
buenas miren manejo este script en mi pet sistem pero tengo un problema no es posible caminar sobre los pets y necesito que sea asi que hay que modificar? tambien si es necesario en las sources que se modifica? es tfs 1.4.2
Código Lua:
local bijuuBuffs = {
[26382] = { name = "Kurama", buff = { healthRegenPercent = 5, manaRegenPercent = 5, magicLevelPercent = 10 } },
[26390] = { name = "Shukaku", buff = { healthRegenPercent = 3, manaRegenPercent = 3 } },
[26389] = { name = "Matatabi", buff = { criticalChance = 15, criticalDamage = 15 } },
[26388] = { name = "Isobu", buff = { magicLevelPercent = 5 } },
[26387] = { name = "Son Goku", buff = { healthRegenPercent = 4 } },
[26386] = { name = "Kokuo", buff = { manaRegenPercent = 4 } },
[26385] = { name = "Saiken", buff = { magicLevelPercent = 3, manaRegenPercent = 2 } },
[26384] = { name = "Chomei", buff = { speed = 50, criticalChance = 10 } },
[26383] = { name = "Gyuki", buff = { healthRegenPercent = 1, manaRegenPercent = 1 } }
}
local function calculateRegenValue(player, percentValue, isHealth)
local maxValue = isHealth and player:getMaxHealth() or player:getMaxMana()
return math.floor((maxValue * percentValue) / 100)
end
local function calculateMagicLevelBonus(player, percentValue)
local baseMagicLevel = player:getBaseMagicLevel()
return math.floor((baseMagicLevel * percentValue) / 100)
end
local function applyBijuuBuffs(player, bijuuData)
local buff = bijuuData.buff
if buff.healthRegenPercent or buff.manaRegenPercent then
local condition = Condition(CONDITION_REGENERATION)
condition:setParameter(CONDITION_PARAM_TICKS, -1)
if buff.healthRegenPercent then
local healthGain = calculateRegenValue(player, buff.healthRegenPercent, true)
condition:setParameter(CONDITION_PARAM_HEALTHGAIN, healthGain)
condition:setParameter(CONDITION_PARAM_HEALTHTICKS, 2000)
end
if buff.manaRegenPercent then
local manaGain = calculateRegenValue(player, buff.manaRegenPercent, false)
condition:setParameter(CONDITION_PARAM_MANAGAIN, manaGain)
condition:setParameter(CONDITION_PARAM_MANATICKS, 2000)
end
player:addCondition(condition)
end
if buff.criticalChance then
local condition = Condition(CONDITION_ATTRIBUTES)
condition:setParameter(CONDITION_PARAM_TICKS, -1)
condition:setParameter(CONDITION_PARAM_SKILL_CRITICAL_HIT_CHANCE, buff.criticalChance)
if buff.criticalDamage then
condition:setParameter(CONDITION_PARAM_SKILL_CRITICAL_HIT_DAMAGE, buff.criticalDamage)
end
player:addCondition(condition)
end
if buff.magicLevelPercent then
local magicLevelBonus = calculateMagicLevelBonus(player, buff.magicLevelPercent)
local condition = Condition(CONDITION_ATTRIBUTES)
condition:setParameter(CONDITION_PARAM_TICKS, -1)
condition:setParameter(CONDITION_PARAM_STAT_MAGICPOINTS, magicLevelBonus)
player:addCondition(condition)
end
if buff.skillPoints then
local condition = Condition(CONDITION_ATTRIBUTES)
condition:setParameter(CONDITION_PARAM_TICKS, -1)
condition:setParameter(CONDITION_PARAM_SKILL_FIST, buff.skillPoints)
condition:setParameter(CONDITION_PARAM_SKILL_CLUB, buff.skillPoints)
condition:setParameter(CONDITION_PARAM_SKILL_SWORD, buff.skillPoints)
condition:setParameter(CONDITION_PARAM_SKILL_AXE, buff.skillPoints)
condition:setParameter(CONDITION_PARAM_SKILL_DISTANCE, buff.skillPoints)
condition:setParameter(CONDITION_PARAM_SKILL_SHIELD, buff.skillPoints)
player:addCondition(condition)
end
if buff.speed then
local condition = Condition(CONDITION_HASTE)
condition:setParameter(CONDITION_PARAM_TICKS, -1)
condition:setParameter(CONDITION_PARAM_SPEED, buff.speed)
player:addCondition(condition)
end
end
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local bijuuData = bijuuBuffs[item:getId()]
if not bijuuData then
player:sendCancelMessage("Este item no invoca ningún bijuu.")
return true
end
-- Si ya tiene un summon, lo removemos junto con sus buffs
if #player:getSummons() > 0 then
for _, summon in ipairs(player:getSummons()) do
summon:remove()
end
-- Remover todos los buffs
player:removeCondition(CONDITION_REGENERATION)
player:removeCondition(CONDITION_ATTRIBUTES)
player:removeCondition(CONDITION_HASTE)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Has regresado a tu bijuu!")
return true
end
-- Invocar al bijuu
local position = player:getPosition()
local summon = Game.createMonster(bijuuData.name, position)
if summon then
summon:setMaster(player)
summon:setFollowCreature(player)
-- En su lugar, la lógica para que sea atravesable va en isWalkable() usando getMaster()
position:sendMagicEffect(CONST_ME_TELEPORT)
summon:registerEvent("BijuuFollow")
summon:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
player:addSummon(summon)
applyBijuuBuffs(player, bijuuData)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Has invocado a " .. bijuuData.name .. "!")
else
player:sendCancelMessage("No se pudo invocar el bijuu.")
end
return true
end
Última edición por un moderador:





