Bielzet 0 Postado 1 de Outubro Compartilhar Postado 1 de Outubro (editado) 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 1 de Outubro por Bielzet esqueci de complementar Link para o comentário https://tibiadevs.com/forums/topic/1262-ravescript-boss-time-24hrs/ Compartilhar em outros sites Mais opções de compartilhamento...
Moderador Suporte Derivados Tibia 2277 Postado 1 de Outubro Moderador Compartilhar Postado 1 de Outubro 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 1 Link para o comentário https://tibiadevs.com/forums/topic/1262-ravescript-boss-time-24hrs/#findComment-6495 Compartilhar em outros sites Mais opções de compartilhamento...
Bielzet 0 Postado 1 de Outubro Autor Compartilhar Postado 1 de Outubro 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 Mais opções de compartilhamento...
Bielzet 0 Postado 1 de Outubro Autor Compartilhar Postado 1 de Outubro @ 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 Mais opções de compartilhamento...
Posts Recomendados
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora