Killua 389 Postado Abril 25, 2014 Share Postado Abril 25, 2014 (editado) Dice Arena Esse evento foi postado para o Script de Terça, para ver os outros scripts de terça, clique aqui. Como o evento funciona? Um número configurado de jogadores deve permanecer em posições configuradas (Igual na annihilator). Quando todas as posições tiverem ocupadas, o primeiro jogador puxa a alavanca, levando todos para dentro da Arena. Dentro da arena, tem um dado que, quando usado, sorteia um monstro. Quando os jogadores matam o monstro, um loot cai no chão (Quanto menor o número do dado, mais forte será o monstro e melhor será o item que dropa). - Se já tiver gente dentro da arena, outro time não poderá entrar. - Uma vez dentro da arena, cada jogador só pode rodar o dado uma vez. - Cada jogador só pode entrar na arena uma vez por dia (tempo configurável). - Os monstros e loots são configuráveis. Vídeo do evento (obrigado ao por me ajudar a gravar) Instalação Lib Crie diceArena.lua em data/lib e coloque: -- Dice Arena Event criado por Killua, XTibia.com dice_cfg = { positions_ = {{x = 164, y = 17, z = 7}, {x = 164, y = 18, z = 7}}, arena_pos = {x = 501, y = 141, z = 7}, wait_ = 60*60*24, max_time = 1800, numbers = { [1] = {"Orshabaal", "Morgaroth", "Ferumbras"}, [2] = {"Demodras", "Juggernaut"}, [3] = {"Demon", "Behemoth"}, [4] = {"Dragon Lord", "Hydra"}, [5] = {"Dragon", "Cyclops"}, [6] = {"Rotworm", "Rat"} }, noob_item = {2158, 10}, pro_item = {2160, 5}, arena_frompos = {x = 491, y = 125, z = 7}, arena_topos = {x = 512, y = 144, z = 7} } function removeDiceMonsters() for x = dice_cfg.arena_frompos.x, dice_cfg.arena_topos.x do for y = dice_cfg.arena_frompos.y, dice_cfg.arena_topos.y do local area_ = {x = x, y = y, z = dice_cfg.arena_frompos.z} local creature = getTopCreature(area_) if isMonster(creature.uid) then doRemoveCreature(creature.uid) end end end end Actions Crie diceLever.lua em data/actions/scripts e coloque: -- Dice Arena Event criado por Killua, XTibia.com function onUse(cid, item, fromPosition, itemEx, toPosition) local check = 0 local players = {} if item.actionid == 8733 then for i = 1, #dice_cfg.positions_ do if isPlayer(getTopCreature(dice_cfg.positions_[i]).uid) then check = check + 1 end end if check == #dice_cfg.positions_ then if getGlobalStorageValue(182221) == -1 then for j = 1, #dice_cfg.positions_ do table.insert(players, getTopCreature(dice_cfg.positions_[j]).uid) end for e = 1, #players do if getPlayerStorageValue(players[e], 181293) > os.time() then check = check- 1 end end if check == #dice_cfg.positions_ then for u = 1, #players do doTeleportThing(players[u], dice_cfg.arena_pos, false) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) doPlayerSendTextMessage(players[u], MESSAGE_STATUS_CONSOLE_BLUE, "Voce entrou na arena do dado! Teste sua sorte...") setGlobalStorageValue(182221, #dice_cfg.positions_ - 1) doPlayerSetStorageValue(players[u], 181293, os.time() + dice_cfg.wait_) addEvent(function() if isInArea(getThingPos(players[u]), dice_cfg.arena_frompos, dice_cfg.arena_topos) then doTeleportThing(players[u], getTownTemplePosition(getPlayerTown(players[u])), false) setGlobalStorageValue(182221, -1) removeDiceMonsters() end end, dice_cfg.max_time * 1000) end else doPlayerSendCancel(cid, "Alguem do seu time ja entrou na arena nos ultimos "..dice_cfg.wait_" segundos.") end else doPlayerSendCancel(cid, "Ja tem alguem dentro da arena, aguarde...") end else doPlayerSendCancel(cid, "Sao necessarios pelo menos "..#dice_cfg.positions_.." jogadores para entrar na arena.") end elseif item.uid == 8734 then if getPlayerStorageValue(cid, 281811) <= os.time() then doPlayerSetStorageValue(cid, 281811, os.time() + dice_cfg.wait_ - dice_cfg.wait_ / 3) local value = math.random(5792, 5797) doSendMagicEffect(fromPosition, CONST_ME_CRAPS) doTransformItem(item.uid, value) doCreatureSay(cid, getCreatureName(cid) .. " rolled a " .. value - 5791 .. ".", TALKTYPE_ORANGE_1) if dice_cfg.numbers[value - 5791] then local rand = math.random(1, #dice_cfg.numbers[value - 5791]) doCreateMonster(dice_cfg.numbers[value - 5791][rand], getClosestFreeTile(cid, fromPosition)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce criou um "..dice_cfg.numbers[value - 5791][rand].."! Um monstro de nivel " .. value - 5791 .. ", derrote-o para conseguir seu premio!") end else doPlayerSendCancel(cid, "Voce so podera usar o dado daqui a "..getPlayerStorageValue(cid, 281811) - os.time().." segundos.") end end return true end Em actions.xml, coloque essas TAGs: <action actionid="8733" script="diceLever.lua"/> <action uniqueid="8734" script="diceLever.lua"/> Creaturescripts Em data/creaturescripts/scripts crie diceKill.lua e coloque: -- Dice Arena Event criado por Killua, XTibia.com local function getMonsterCategory(name) for index, names in pairs(dice_cfg.numbers) do if isInArray(names, ""..name.."") then return index end end end function onKill(cid, target, lastHit) if isMonster(target) and isPlayer(cid) then if isInArea(getThingPos(target), dice_cfg.arena_frompos, dice_cfg.arena_topos) then if getGlobalStorageValue(8181818) <= os.time() then setGlobalStorageValue(8181818, os.time() + 1) if getMonsterCategory(getCreatureName(target)) then if getMonsterCategory(getCreatureName(target)) > 2 then addEvent(doCreateItem, 200, dice_cfg.noob_item[1], math.random(1, dice_cfg.noob_item[2]), getThingPos(target)) elseif getMonsterCategory(getCreatureName(target)) == 2 then local chance = math.random(1,100) if chance <= 20 then addEvent(doCreateItem, 200, dice_cfg.pro_item[1], math.random(1, dice_cfg.pro_item[2]), getThingPos(target)) else addEvent(doCreateItem, 200, dice_cfg.noob_item[1], math.random(1, dice_cfg.noob_item[2]), getThingPos(target)) end elseif getMonsterCategory(getCreatureName(target)) == 1 then addEvent(doCreateItem, 200, dice_cfg.pro_item[1], math.random(1, dice_cfg.pro_item[2]), getThingPos(target)) end doSendMagicEffect(getThingPos(target), 38) doCreatureSay(target, "You have gained a special loot!", TALKTYPE_ORANGE_1) end end end end return true end function onLogin(cid) if isInArea(getThingPos(cid), dice_cfg.arena_frompos, dice_cfg.arena_topos) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end registerCreatureEvent(cid, "diceKill") return true end Em creaturescripts.xml, coloque essas TAGs: <event type="kill" name="diceKill" event="script" value="diceKill.lua"/> <event type="login" name="diceLogin" event="script" value="diceKill.lua"/> Movements Em data/movements/scripts crie diceMove.lua e coloque: -- Dice Arena Event criado por Killua, XTibia.com function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) if getGlobalStorageValue(182221) == 0 then removeDiceMonsters() elseif getGlobalStorageValue(182221) > 0 then setGlobalStorageValue(182221, getGlobalStorageValue(182221) - 1) end return true end Em movements.xml, coloque essa TAG: <movevent type="StepIn" actionid="8730" event="script" value="diceMove.lua"/> Globalevents Em data/globalevents/scripts crie diceStart.lua e coloque: function onStartup() setGlobalStorageValue(182221, -1) return true end Em globalevents.xml, coloque essa TAG: <globalevent name="diceStart" type="start" event="script" value="diceStart.lua"/> Configuração A configuração é feita inteiramente na lib, nesta tabela: dice_cfg = { positions_ = {{x = 164, y = 17, z = 7}, {x = 164, y = 18, z = 7}}, arena_pos = {x = 501, y = 141, z = 7}, wait_ = 60*60*24, max_time = 1800, numbers = { [1] = {"Orshabaal", "Morgaroth", "Ferumbras"}, [2] = {"Demodras", "Juggernaut"}, [3] = {"Demon", "Behemoth"}, [4] = {"Dragon Lord", "Hydra"}, [5] = {"Dragon", "Cyclops"}, [6] = {"Rotworm", "Rat"} }, noob_item = {2158, 10}, pro_item = {2160, 5}, arena_frompos = {x = 491, y = 125, z = 7}, arena_topos = {x = 512, y = 144, z = 7} } Em positions_, coloque as posições que os jogadores devem ficar para poder puxar a alavanca (Pode por quantas quiser). Em arena_pos, coloque a posição da arena (Pra onde os jogadores vão quando puxarem a alavanca). Em wait_, coloque o tempo que o jogador deve esperar para entrar na arena novamente (em segundos). 60*60*24 = 1 dia, aconselho deixar assim. Em max_time, coloque o tempo máximo que os jogadores podem permanecer na arena (em segundos (após esse tempo, eles serão teleportados para o templo)). Em numbers, coloque o nome dos monstros que podem vir dependendo do número sorteado pelo dado (quanto menor o número, mais forte devem ser os monstros). Em noob_item, coloque o {id, quantidade} do item que dropa dos monstros mais fracos/médios Em pro_item, coloque o {id, quantidade} do item que pode dropar dos monstros mais fortes/médios Em arena_frompos, coloque a posição do canto superior esquerdo da arena. Em arena_topos, coloque a posição do canto inferior direito da arena. Coloque NO-LOGOUT TOOL na arena inteira. Siga as imagens para facilitar a configuração: Arena: Entrando na arena: Se alguém se dispuser a fazer um mapa pro evento para eu disponibilizar para download, eu agradeceria. Espero que gostem do evento. Download do evento: Dice Arena Event por Killua.rar Editado Abril 26, 2014 por Killua Link para o comentário Compartilhar em outros sites More sharing options...
Junior001 362 Postado Abril 25, 2014 Share Postado Abril 25, 2014 Aiai como sempre foda em scripter em, malvado só por que quero aprender kkk Link para o comentário Compartilhar em outros sites More sharing options...
RodriigoRobson 110 Postado Abril 25, 2014 Share Postado Abril 25, 2014 Bem Bolado o sistema Parabens Rep Link para o comentário Compartilhar em outros sites More sharing options...
vital900 570 Postado Abril 26, 2014 Share Postado Abril 26, 2014 bem pensado este script, o cara q pensou isto é um gênio UAhuHAuHA Link para o comentário Compartilhar em outros sites More sharing options...
Killua 389 Postado Abril 26, 2014 Autor Share Postado Abril 26, 2014 bem pensado este script, o cara q pensou isto é um gênio UAhuHAuHA kkkkkkkkkkkkk é mesmo né Link para o comentário Compartilhar em outros sites More sharing options...
VictorWEBMaster 369 Postado Abril 26, 2014 Share Postado Abril 26, 2014 Cara, parabéns velho.... Voce manja mto na moral. Link para o comentário Compartilhar em outros sites More sharing options...
Killua 389 Postado Abril 26, 2014 Autor Share Postado Abril 26, 2014 Cara, parabéns velho.... Voce manja mto na moral. Valeu vitão Link para o comentário Compartilhar em outros sites More sharing options...
Killua 389 Postado Abril 29, 2014 Autor Share Postado Abril 29, 2014 Post removido e membro @OptimusHostOficial suspendido permanentemente. Link para o comentário Compartilhar em outros sites More sharing options...
Martelix 3 Postado Maio 9, 2015 Share Postado Maio 9, 2015 Nossa, que sistema top! Uma dúvida, posso colocar mais de um item ali né, porque os que estão ali são bem normais kkkk Posso Colocar {{tem1}, {item2}} ? Obrigado! Link para o comentário Compartilhar em outros sites More sharing options...
Killua 389 Postado Maio 10, 2015 Autor Share Postado Maio 10, 2015 Do jeito que está aí vc pode escolher um item "noob" e um item "pro" e suas quantidades máximas. Quanto mais forte o monstro, maior a quantidade de item q vai cair. Link para o comentário Compartilhar em outros sites More sharing options...
Idealx 1 Postado Junho 25, 2015 Share Postado Junho 25, 2015 Todos falaram bem do script, porem não funciona corretamente. Ao matar o boss e entrar no TP e ir para o templo, qualquer pessoa que tentei puxar alavanca diz que "ja tem alguem dentro da arena, aguarde.." Caso você morra pro boss, acontece a mesma coisa. carlinhoo0ww reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
carlinhoo0ww 0 Postado Outubro 8, 2018 Share Postado Outubro 8, 2018 Em 10/05/2015 em 12:47, Killua disse: Do jeito que está aí vc pode escolher um item "noob" e um item "pro" e suas quantidades máximas. Quanto mais forte o monstro, maior a quantidade de item q vai cair. estou com essa mesmo problema alguem pode ajudar? Todos falaram bem do script, porem não funciona corretamente. Ao matar o boss e entrar no TP e ir para o templo, qualquer pessoa que tentei puxar alavanca diz que "ja tem alguem dentro da arena, aguarde.." Caso você morra pro boss, acontece a mesma coisa. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados