Support Buenas algun script de pet sistem que pueda funcionar? me refiero para atravesar a los pets

R

Ryusteck

Invited
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

JavaScript:
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
 
Last edited by a moderator:
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

JavaScript:
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

Hola,
Poder andar por encima de una criatura es la funcion canWalkTo si no digo tonterias, en sources.
Pienso que en un script no bastara escribirlo tendras que editar sources.
 
Hola,
Poder andar por encima de una criatura es la funcion canWalkTo si no digo tonterias, en sources.
Pienso que en un script no bastara escribirlo tendras que editar sources.
si mi estimado alex ya las modifique modifique esta parte
  1. bool Player::canWalkthrough(const Creature* creature) const { if (group->access || creature->isInGhostMode()) { return true; }
    //Start const Monster* monster = creature->getMonster(); if (monster) { if (monster->isSummon() && monster->getMaster()->getPlayer()) { return true; } return false; } pero lo que pasa ahora es que si puedo pasar el summon pero solo dandole click donde esta el cuando intento caminar normal a traves de el no funciona igualmente si estas en 1 espacio de 1sqm y das click y esta el pet en medio no avanza porque esta el pet
 

Tibia Server Lists

#1 FEATURED US Ultron OT 1,525 / 5,000 EXPStages PROTO8.6 ENGINEUltron OT RANK PTS6.6 -9% VOTES0 #2 FEATURED US Nefera 217 / 0 EXPx1 PROTO15.20 ENGINECrystal Server RANK PTS5.9 +26% VOTES0 #3 FEATURED CL ZHYRAVEX 15 / 500 EXPx5 PROTO10.98 ENGINETFS 1.4.2 RANK PTS4.6 +100% VOTES0 #4 FEATURED ES Deixis 0 / 0 EXPStages PROTO1098 ENGINETFS RANK PTS4.1 -59% VOTES1 #5 DE DBU Online 214 / 400 EXP11 PROTO8.6 ENGINETFS 1.0 RANK PTS6.1 +1,000% VOTES0 #6 BR Exordion Legacy 65 / 2,000 EXPx2 PROTO7.72 ENGINEExordion RANK PTS5.6 +3% VOTES0 #7 MX Marlboro War 29 / 300 EXP999 PROTO8.6 ENGINETFS 0.3.7 RANK PTS5.5 -28% VOTES0 #8 BR Tibinha YurOts 26 / 150 EXPStages PROTO7.4 ENGINEYurOTS 1.5 RANK PTS5.5 +0% VOTES0 #9 ES JustRL FreeTC 1530 26 / 250 EXPx2 PROTO15.30 ENGINECrystal Server RANK PTS5.0 +21% VOTES0 #10 US Wiki Ots 57 / 1,000 EXPx9999 PROTOcustom client ENGINETFS 1.4.2 RANK PTS5.0 +100% VOTES0 #11 PL Lubelski 12 / 1,000 EXP200 PROTO7.6 ENGINELubelskiOTS 2.56.0 RANK PTS4.9 -19% VOTES0 #12 BR Turion Server 0 / 2,000 EXPx1 PROTO7.4 ENGINETurion 7.7 Project RANK PTS4.8 +100% VOTES0 #13 PL ReWar 1 / 2,000 EXPcustom PROTO8.6 ENGINEOther RANK PTS4.6 +100% VOTES0 #14 US Halera 0 / 0 EXPStages PROTO10.98 ENGINETFS 1.4.2 RANK PTS4.4 -77% VOTES0 #15 PL Velesta 0 / 1,000 EXP20 PROTO8.0 ENGINETFS 1.4.2 RANK PTS4.4 -100% VOTES0 #16 US BerethaOnline 0 / 2,000 EXPStages PROTO15.0 ENGINETFS RANK PTS4.3 -72% VOTES0 #17 ES Farlia Global 2026 0 / 333 EXPx5 PROTO15.25 ENGINEFarliaServ 1.525 RANK PTS4.0 -100% VOTES0 #18 SE MortalisOT Custom 0 / 500 EXP100x -1.2x PROTO10.98 ENGINEMortalisOT V1 RANK PTS4.0 -100% VOTES0 #19 RU Oldavia | 8.60 0 / 0 EXPx9999 PROTO8.6 ENGINETFS 1.3 RANK PTS3.8 +100% VOTES0 #20 US Rommania 0 / 3,000 EXPstages, x10 PROTO7.4 ENGINETFS 0.4 RANK PTS3.6 -93% VOTES0 #21 MX Maeli 2 / 150 EXPx10 PROTO10.98 ENGINETFS 1.4.2 RANK PTS3.5 -33% VOTES0 #22 ES DarkDragon EXPx10 PROTO8.6 ENGINECanary RANK PTS0.0 0% VOTES0
Top