Ir para conteúdo
Propaganda

Posts Recomendados

Guys, eu gostaria de saber se alguem consegue me ajudar com um script de bosses

gostaria que fizesse uma estrutura de script que seria o seguinte
Player chega ate uma alavanca nessa alavanca tem 4 SQM (não precisa ocupar os 4 SQM)
mas quem tiver em cima dos 4 SQM é levado para a localização fixa do boss, se caso o player ir ate o boss e mata-lo ele só consegue clicar na alavanca novamente após 24hrs ou se ele estiver no SQM e alguem puxar a alavanca ele não é mandado para boss.

2° Quem der mais dano no boss ganha alguns itens e XP a mais.
 os itens vão direto para o bau 19250 Reward Chest
de todos os player que mataram o boss

3° que o player falasse !boss
e aparecesse "janela" os boss disponivel para ele matar e os que estão em cooldown
meu servidor é 14.12

eu meio que tava se baseando nessa custom
 

Citar

local config = {  
    boss = {  
        name = "Custom Boss", -- Nome do seu boss  
        position = Position(1000, 1000, 7) -- Posição onde o boss spawna  
    },  
    timeToFightAgain = 24 * 60 * 60, -- 24 horas em segundos  
    requiredLevel = 100, -- Level mínimo  
    playerPositions = {  
        { pos = Position(100, 100, 7), teleport = Position(1000, 1005, 7) },  
        { pos = Position(101, 100, 7), teleport = Position(1000, 1005, 7) },  
        { pos = Position(100, 101, 7), teleport = Position(1000, 1005, 7) },  
        { pos = Position(101, 101, 7), teleport = Position(1000, 1005, 7) },  
    },  
    specPos = {  
        from = Position(995, 995, 7),  
        to = Position(1005, 1005, 7),  
    },  
    exit = Position(100, 95, 7), -- Posição de saída  
}  
  
local lever = BossLever(config)  
lever:position(Position(99, 100, 7)) -- Posição da alavanca  
lever:register()

esse seria o dano causado:
 

Citar

local bossReward = CreatureEvent("CustomBossReward")  
  
function bossReward.onDeath(creature, corpse, killer, mostDamageKiller, lastHitUnjustified, mostDamageUnjustified)  
    if not creature or creature:getName() ~= "Custom Boss" then  
        return true  
    end  
      
    -- Pega todos os players que deram dano  
    local damageMap = creature:getDamageMap()  
    local topDamager = nil  
    local maxDamage = 0  
      
    -- Encontra quem deu mais dano  
    for playerId, damage in pairs(damageMap) do  
        if damage.total > maxDamage then  
            maxDamage = damage.total  
            topDamager = Player(playerId)  
        end  
    end  
      
    -- Recompensas para todos os participantes  
    for playerId, damage in pairs(damageMap) do  
        local player = Player(playerId)  
        if player then  
            -- Cria reward chest para cada player  
            local rewardChest = Game.createItem(19250, 1) -- Reward Chest  
            if rewardChest then  
                -- Itens básicos para todos  
                rewardChest:addItem(2160, 10) -- Crystal coins  
                  
                -- Bonus para quem deu mais dano  
                if player == topDamager then  
                    rewardChest:addItem(2160, 20) -- Bonus coins  
                    rewardChest:addItem(8103, 1) -- Epiphany  
                    player:addExperience(100000, true) -- Bonus XP  
                end  
                  
                -- Envia o chest para o player  
                local inbox = player:getInbox()  
                if inbox then  
                    inbox:addItemEx(rewardChest)  
                    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your reward has been sent to your inbox!")  
                end  
            end  
        end  
    end  
      
    return true  
end  
  
bossReward:register()

Mas não ta funcionando nome de um dos boss seria Hades
e ele não aparece no 19250(ID)  Reward Chest
DE CADA PLAYER

Editado por Bielzet
esqueci de complementar
Link para o comentário
https://tibiadevs.com/forums/topic/1262-ravescript-boss-time-24hrs/
Compartilhar em outros sites

  • Moderador
1 minuto atrás, Bielzet disse:

Guys, eu gostaria de saber se alguem consegue me ajudar com um script de bosses

gostaria que fizesse uma estrutura de script que seria o seguinte
Player chega ate uma alavanca nessa alavanca tem 4 SQM (não precisa ocupar os 4 SQM)
mas quem tiver em cima dos 4 SQM é levado para a localização fixa do boss, se caso o player ir ate o boss e mata-lo ele só consegue clicar na alavanca novamente após 24hrs ou se ele estiver no SQM e alguem puxar a alavanca ele não é mandado para boss.

2° Quem der mais dano no boss ganha alguns itens e XP a mais.
 os itens vão direto para o bau 19250 Reward Chest
de todos os player que mataram o boss

Va em actions 

Spoiler

-- Configurações

local leverPos = {x=100, y=100, z=7} -- posição da alavanca

local bossPos = {x=200, y=200, z=7} -- local fixo do boss

local tpPositions = { -- SQMs que precisam estar ocupados

    {x=101, y=100, z=7},

    {x=102, y=100, z=7},

    {x=103, y=100, z=7},

    {x=104, y=100, z=7}

}

local destination = {x=210, y=210, z=7} -- para onde os players vão

local bossName = "Dark Mewtwo"

local storage = 50001 -- storage para controlar cooldown

local cooldown = 24 * 60 * 60 -- 24 horas

 

function onUse(cid, item, fromPos, itemEx, toPos)

    local players = {}

 

    -- Verifica players nos SQMs

    for i = 1, #tpPositions do

        local player = getTopCreature(tpPositions[i]).uid

        if isPlayer(player) then

            if getPlayerStorageValue(player, storage) > os.time() then

                doPlayerSendCancel(cid, "Um dos jogadores ainda está em cooldown.")

                return true

            end

            table.insert(players, player)

        end

    end

 

    if #players == 0 then

        doPlayerSendCancel(cid, "Ninguém está pronto para enfrentar o boss.")

        return true

    end

 

    -- Teleporta players

    for _, pid in ipairs(players) do

        doTeleportThing(pid, destination)

        doSendMagicEffect(destination, CONST_ME_TELEPORT)

        setPlayerStorageValue(pid, storage, os.time() + cooldown)

    end

 

    -- Summona o boss

    if not getCreatureByName(bossName) then

        doCreateMonster(bossName, bossPos)

    end

    return true

end

 A seguir em  creaturescript

Spoiler

-- Boss Reward System
local rewardChestId = 19250

function onDeath(cid, corpse, deathList)
    if not isMonster(cid) then return true end

    local boss = getCreatureName(cid)
    if boss == "Dark Mewtwo" then
        local topDamage = 0
        local topPlayer = nil

        for attacker, damage in pairs(getDamageMap(cid)) do
            if isPlayer(attacker) then
                if damage > topDamage then
                    topDamage = damage
                    topPlayer = attacker
                end
                -- todos recebem uma recompensa básica
                local chest = doCreateItem(rewardChestId, 1, getThingPos(attacker))
                doAddContainerItem(chest, 2160, 5) -- exemplo: 5 crystal coins
                doPlayerAddExperience(attacker, 5000)
            end
        end

        -- recompensa extra para quem mais bateu
        if topPlayer then
            local chest = doCreateItem(rewardChestId, 1, getThingPos(topPlayer))
            doAddContainerItem(chest, 2494, 1) -- exemplo: demon armor
            doPlayerAddExperience(topPlayer, 20000)
            doPlayerSendTextMessage(topPlayer, MESSAGE_INFO_DESCR, "Você foi o MVP e recebeu uma recompensa extra!")
        end
    end
    return true
end

 Logo após isso vai em xml

<event type="death" name="BossReward" script="boss_reward.lua"/>

 

 Depois no mostro desejado 

<script>

    <event name="BossReward"/>

</script>

 

 

Foi feito para Poketibia mais pode se user em Tibia 

  • Like 1
Link para o comentário
https://tibiadevs.com/forums/topic/1262-ravescript-boss-time-24hrs/#findComment-6495
Compartilhar em outros sites

2 minutos atrás, Suporte Derivados Tibia disse:

Va em actions 

  Mostrar conteúdo oculto

-- Configurações

local leverPos = {x=100, y=100, z=7} -- posição da alavanca

local bossPos = {x=200, y=200, z=7} -- local fixo do boss

local tpPositions = { -- SQMs que precisam estar ocupados

    {x=101, y=100, z=7},

    {x=102, y=100, z=7},

    {x=103, y=100, z=7},

    {x=104, y=100, z=7}

}

local destination = {x=210, y=210, z=7} -- para onde os players vão

local bossName = "Dark Mewtwo"

local storage = 50001 -- storage para controlar cooldown

local cooldown = 24 * 60 * 60 -- 24 horas

 

function onUse(cid, item, fromPos, itemEx, toPos)

    local players = {}

 

    -- Verifica players nos SQMs

    for i = 1, #tpPositions do

        local player = getTopCreature(tpPositions[i]).uid

        if isPlayer(player) then

            if getPlayerStorageValue(player, storage) > os.time() then

                doPlayerSendCancel(cid, "Um dos jogadores ainda está em cooldown.")

                return true

            end

            table.insert(players, player)

        end

    end

 

    if #players == 0 then

        doPlayerSendCancel(cid, "Ninguém está pronto para enfrentar o boss.")

        return true

    end

 

    -- Teleporta players

    for _, pid in ipairs(players) do

        doTeleportThing(pid, destination)

        doSendMagicEffect(destination, CONST_ME_TELEPORT)

        setPlayerStorageValue(pid, storage, os.time() + cooldown)

    end

 

    -- Summona o boss

    if not getCreatureByName(bossName) then

        doCreateMonster(bossName, bossPos)

    end

    return true

end

 A seguir em  creaturescript

  Mostrar conteúdo oculto

-- Boss Reward System
local rewardChestId = 19250

function onDeath(cid, corpse, deathList)
    if not isMonster(cid) then return true end

    local boss = getCreatureName(cid)
    if boss == "Dark Mewtwo" then
        local topDamage = 0
        local topPlayer = nil

        for attacker, damage in pairs(getDamageMap(cid)) do
            if isPlayer(attacker) then
                if damage > topDamage then
                    topDamage = damage
                    topPlayer = attacker
                end
                -- todos recebem uma recompensa básica
                local chest = doCreateItem(rewardChestId, 1, getThingPos(attacker))
                doAddContainerItem(chest, 2160, 5) -- exemplo: 5 crystal coins
                doPlayerAddExperience(attacker, 5000)
            end
        end

        -- recompensa extra para quem mais bateu
        if topPlayer then
            local chest = doCreateItem(rewardChestId, 1, getThingPos(topPlayer))
            doAddContainerItem(chest, 2494, 1) -- exemplo: demon armor
            doPlayerAddExperience(topPlayer, 20000)
            doPlayerSendTextMessage(topPlayer, MESSAGE_INFO_DESCR, "Você foi o MVP e recebeu uma recompensa extra!")
        end
    end
    return true
end

 Logo após isso vai em xml

<event type="death" name="BossReward" script="boss_reward.lua"/>

 

 Depois no mostro desejado 

<script>

    <event name="BossReward"/>

</script>

 

 

Foi feito para Poketibia mais pode se user em Tibia 

Vou testar muito obrigado

Link para o comentário
https://tibiadevs.com/forums/topic/1262-ravescript-boss-time-24hrs/#findComment-6496
Compartilhar em outros sites

 

@ Suporte Derivados Tibia

 

 Depois no mostro desejado 

<script>

    <event name="BossReward"/>

</script>

eu coloco o nome do boss nessas parte?



e aqui no XML como eu uso canary eu adiciono

 

Logo após isso vai em xml

<event type="death" name="BossReward" script="boss_reward.lua"/> eu colo o nome que adicionei no creaturescript o nome?

Por exemplo no action/custo/alabossnissea
e no creaturescript coloquei rewardbossnissea

e no caso eu coloquei o nome do boss

Spoiler

-- Boss Reward System
local rewardChestId = 19250

function onDeath(cid, corpse, deathList)
    if not isMonster(cid) then return true end

    local boss = getCreatureName(cid)
    if boss == "Dragon Warden" then
        local topDamage = 0
        local topPlayer = nil

        for attacker, damage in pairs(getDamageMap(cid)) do
            if isPlayer(attacker) then
                if damage > topDamage then
                    topDamage = damage
                    topPlayer = attacker
                end
                -- todos recebem uma recompensa básica
                local chest = doCreateItem(rewardChestId, 1, getThingPos(attacker))
                doAddContainerItem(chest, 2160, 5) -- exemplo: 5 crystal coins
                doPlayerAddExperience(attacker, 5000)
            end
        end

        -- recompensa extra para quem mais bateu
        if topPlayer then
            local chest = doCreateItem(rewardChestId, 1, getThingPos(topPlayer))
            doAddContainerItem(chest, 2494, 1) -- exemplo: demon armor
            doPlayerAddExperience(topPlayer, 20000)
            doPlayerSendTextMessage(topPlayer, MESSAGE_INFO_DESCR, "Você foi o MVP e recebeu uma recompensa extra!")
        end
    end
    return true
end

e no monstro eu coloquei
 

Spoiler

local mType = Game.createMonsterType("Dragon Warden")
local monster = {}

monster.description = "a dragon warden"
monster.experience = 4600
monster.outfit = {
    lookType = 947,
    lookHead = 5,
    lookBody = 5,
    lookLegs = 8,
    lookFeet = 8,
    lookAddons = 0,
    lookMount = 0,
}

monster.health = 2800
monster.maxHealth = 2800
monster.race = "blood"
monster.corpse = 25186
monster.speed = 160
monster.manaCost = 0

monster.changeTarget = {
    interval = 2000,
    chance = 5,
}

monster.flags = {
    summonable = false,
    attackable = true,
    hostile = true,
    convinceable = false,
    pushable = false,
    rewardBoss = false,
    illusionable = false,
    canPushItems = true,
    canPushCreatures = true,
    staticAttackChance = 90,
    targetDistance = 1,
    runHealth = 366,
    healthHidden = false,
    isBlockable = false,
    canWalkOnEnergy = false,
    canWalkOnFire = false,
    canWalkOnPoison = true,
}

monster.light = {
    level = 0,
    color = 0,
}

monster.voices = {
    interval = 5000,
    chance = 10,
}

monster.loot = {}

monster.attacks = {
    { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 80 },
    { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false },
}

monster.defenses = {
    defense = 35,
    armor = 45,
    --    mitigation = ???,
    { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 70, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false },
}

monster.elements = {
    { type = COMBAT_PHYSICALDAMAGE, percent = 0 },
    { type = COMBAT_ENERGYDAMAGE, percent = 0 },
    { type = COMBAT_EARTHDAMAGE, percent = 0 },
    { type = COMBAT_FIREDAMAGE, percent = 95 },
    { type = COMBAT_LIFEDRAIN, percent = 0 },
    { type = COMBAT_MANADRAIN, percent = 0 },
    { type = COMBAT_DROWNDAMAGE, percent = 0 },
    { type = COMBAT_ICEDAMAGE, percent = 0 },
    { type = COMBAT_HOLYDAMAGE, percent = 0 },
    { type = COMBAT_DEATHDAMAGE, percent = 0 },
}

monster.immunities = {
    { type = "paralyze", condition = true },
    { type = "outfit", condition = false },
    { type = "invisible", condition = true },
    { type = "bleed", condition = false },
}
<script>

    <event name="BossReward"/>

</script>

mType:register(monster)
 

Está correto?

Link para o comentário
https://tibiadevs.com/forums/topic/1262-ravescript-boss-time-24hrs/#findComment-6497
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...