Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

3 Teans and 1 Boss

 

Informações:
Abre-se um portal em uma determinada posição que levara os players para uma sala de espera lá eles aguardaram até caírem em outro mapa, separados em 3 times, objetivo, o time que matar o boss primeiro tem direito a entrar na sala de premio e pegar o premio.   
 
Descrição:
Todo dia as 15:00 horas o script é ativado, aparecera um teleport na posição desejada, ao se passar um tempo pré determinado, se houverem a quantidade de players necessários na sala de espera todos os players na sala de espera serão divididos em 3 times, o time que mais tirar vida do boss terá o privilégio de passar pelo tile com aid 32114, e pegar o premio no bau com o  aid 12688.
 
OBS: IMPORTANTE! Colocar piso no-logout em todo mapa utilizado no sistema.

 

Sigam as instruções das linhas que apresentam "-- Alterar".
 
 

Instalação

 
Vá em data/globalevents/scripts/ e cria um arquivo chamado evento times.lua, dentro dele coloque.

function onTime(interval, lastExecution)
 
local players = getPlayersOnline()
local conta_players = 0
local player_time = 1              -- ALTERAR quantidade de players por time
local pos_teleport = {x = 156, y = 55, z = 7} -- ALTERAR posição em que o teleport vai nascer
local pos_espera = {x = 158, y = 52, z = 5}   -- ALTERAR posição da sala de espera até iniciar o evento
local storage = 873456                     -- ALTERAR storage usado no sistema
local tempo_espera = 60 * 1000             -- ALTERAR tempo que players vão esperar na sala de espera
local pos_topos = {
{x = 571, y = 701, z = 7},     -- ALTERAR posição em que o time 1 vai nascer
{x = 567, y = 743, z = 7},     -- ALTERAR posição em que o time 2 vai nascer
{x = 634, y = 742, z = 7},     -- ALTERAR posição em que o time 3 vai nascer
}  
local pos_templo = {x = 0, y = 0, z = 0} -- ALTERAR posição do templo
 
if #players <= (player_time*3) then
   print("[************] >> Evento Cancelado - Menos de "..(player_time*3).." players online.")
   return TRUE
end
 
doCreateTeleport(1387, pos_espera, pos_teleport)
doBroadcastMessage("Evento de Times Aberto Vocês tem "..(tempo_espera/1000).." segundos para entrar no portal.",22)
 
addEvent(
function()
         local i = 1
         local a = 1
         local pos_espera1 = {x = 150, y = 39, z = 5}  -- ALTERAR posição do canto superior esquerdo da sala de espera
         local pos_espera2 = {x = 171, y = 59, z = 5}  -- ALTERAR posição do canto inferior direito da sala de espera
         while i <= #players do
              
              local pos_player = getPlayerPosition(players)
              if pos_player.x >= pos_espera1.x and pos_player.y >= pos_espera1.y and pos_player.x <= pos_espera2.x and pos_player.y <= pos_espera2.y then
                       if getPlayerGroupId(players) <= 1 then
                                  conta_players = conta_players + 1
                       end
              end
              i = i + 1
               
         end
         
         i = 1
         
         if conta_players < (player_time*3) then
         
                  while i <= #players do
              
                       local pos_player = getPlayerPosition(players)
                       if pos_player.x >= pos_espera1.x and pos_player.y >= pos_espera1.y and pos_player.x <= pos_espera2.x and pos_player.y <= pos_espera2.y then
                                if getPlayerGroupId(players) <= 1 then
                                           doTeleportThing(players, pos_templo)
                                end
                       end
                       i = i + 1
               
                  end
                  print("[************] >> Evento Cancelado - Menos de "..(player_time*3).." players na sala de espera.")
                  return TRUE         
         else
 
                  while i <= #players do
                  
                  local outfit1 = getCreatureOutfit(players
                        outfit1.lookHead = 81 
                        outfit1.lookBody = 81 
                        outfit1.lookLegs = 81 
                        outfit1.lookFeet = 81
 
                  local outfit2 = getCreatureOutfit(players
                        outfit2.lookHead = 86 
                        outfit2.lookBody = 86 
                        outfit2.lookLegs = 86 
                        outfit2.lookFeet = 86
 
                  local outfit3 = getCreatureOutfit(players
                        outfit3.lookHead = 94 
                        outfit3.lookBody = 94 
                        outfit3.lookLegs = 94 
                        outfit3.lookFeet = 94 
              
                       local pos_player = getPlayerPosition(players)
                       if pos_player.x >= pos_espera1.x and pos_player.y >= pos_espera1.y and pos_player.x <= pos_espera2.x and pos_player.y <= pos_espera2.y then
                                if getPlayerGroupId(players) <= 1 then
                                           if a == 1 then
                                              setPlayerStorageValue(players, storage, 1)
                                              doTeleportThing(players, pos_topos[1])
                                              doSetCreatureOutfit(players, outfit1, -1)
                                              a = 2
                                           else
                                               if a == 2 then
                                                  setPlayerStorageValue(players, storage, 2)
                                                  doTeleportThing(players, pos_topos[2])
                                                  doSetCreatureOutfit(players, outfit2, -1)
                                                  a = 3
                                               else
                                                   if a == 3 then
                                                      setPlayerStorageValue(players, storage, 3)
                                                      doTeleportThing(players, pos_topos[3])
                                                      doSetCreatureOutfit(players, outfit3, -1)
                                                      a = 1
                                                   end                                                  
                                               end                                              
                                           end
                                           
                                end
                       end
                       i = i + 1
               
                  end
                  doBroadcastMessage("Evento Iniciado, Bora matar o Boss.",22)      
         end
          
end
,tempo_espera)
return TRUE
end

 

Vá em data/globalevents.xml e adicione a tag.

<globalevent name="eventotimes" time="15:00" event="script" value="evento times.lua"/> 

 

Vá em data/creaturescripts.xml e adicione a tag.

<event type="kill" name="eventotimes" event="script" value="evento times.lua"/>

 

Vá em data/creaturescripts/scripts/ crie um arquivo chamado evento times.lua e coloque isso.

function onKill(cid, target, lasthit)
 
if getCreatureName(target) == "Boss" then    -- ALTERAR nome do BOSS
 
local storage = 123456                   -- ALTERAR storage usado no sistema
local players = getPlayersOnline()
local storage_p = getPlayerStorageValue(cid, storage)
local i = 1
local pos_arena1 = {x = 0, y = 0, z = 0}  -- ALTERAR posição do canto superior esquerdo da sala de arena
local pos_arena2 = {x = 0, y = 0, z = 0}  -- ALTERAR posição do canto inferior direito da sala de arena
local pos_templo = {x = 0, y = 0, z = 0}  -- ALTERAR posição do templo
local tempo = 60 * 1000                   -- ALTERAR tempo para o player pegar o premio e vazar da arena antes que ele seja expulso
local pos_teleport = {x = 0, y = 0, z = 0} -- ALTERAR posição do teleport para ser retirado mesma do globalevents
 
while i <= #players do
              
      local pos_player = getPlayerPosition(players)
      
      if pos_player.x >= pos_arena1.x and pos_player.y >= pos_arena1.y and pos_player.x <= pos_arena2.x and pos_player.y <= pos_arena2.y then
                if getPlayerGroupId(players) <= 1 then
                        if getPlayerStorageValue(players, storage) == storage_p then
                                  setPlayerStorageValue(players, storage, 4)
                                  doPlayerSendTextMessage(players, MESSAGE_STATUS_CONSOLE_BLUE, "Você tem "..(tempo/1000).." segundos para pegar seu premio e sair.")
                                  addEvent(doTeleportThing,tempo,players, pos_templo)
                        else
                                  setPlayerStorageValue(players, storage, -1)
                                  doTeleportThing(players, pos_templo)
                                  doPlayerSendTextMessage(players, MESSAGE_STATUS_CONSOLE_BLUE, "Seu time perdeu o Evento, quem sabe em uma proxima.")
                        end
                end     
      end
      doRemoveCondition(players, CONDITION_OUTFIT)
      
      i = i + 1
               
end
 
local item5 = getTileItemById(pos_teleport, 1387)
if item5.uid > 0 then
   doRemoveItem(item5.uid, 1)
end
   
end
        
return TRUE
end

 

Vá em data/creaturescripts/scripts/ e adicione essa tag no arquivo login.lua.

registerCreatureEvent(cid, "eventotimes")

 

Vá em data/movements.xml e adicione a tag.

    <movevent type="StepIn" actionid="32114" event="script" value="evento times.lua"/>

 

Vá em data/movements/scripts/  e crie um arquivo chamado evento times.lua e coloque isso.

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
 
local storage = 123456                -- ALTERAR storage usado no sistema
if getPlayerStorageValue(cid, storage) ~= 4 then
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não ganhou o Evento.")
          doTeleportThing(cid, fromPosition, true)
          return TRUE
end
 
return true
end

 

Vá em data/actions.xml e adicione a tag.

<action actionid="12688" script="evento times.lua"/>

 

Vá em data/actions/scripts/  e crie um arquivo chamado evento times.lua e coloque isso.

function onUse(cid, item, frompos, item2, topos)
local storage = 123456         -- ALTERAR storage usado no sistema
local pos_templo = {x = 0, y = 0, z = 0} -- ALTERAR posição do templo
local item = 2160 -- ALTERAR item que vai ganhar de premio
local count = 1   -- ALTERAR quantidade de item que vai ganhar
 
if getPlayerStorageValue(cid, storage) == 4 then
doPlayerSendTextMessage(cid,22,"Você é um Grande Vitorioso, parabens.")
doPlayerAddItem(cid,item,count)
doTeleportThing(cid, pos_templo)
setPlayerStorageValue(cid,storage,-1)
else
doTeleportThing(cid, pos_templo)
end
 
end

 

Exemplo de Boss.

<?xml version="1.0" encoding="UTF-8"?>
  <monster name="Divine Element" nameDescription="a divine element" race="undead" experience="30000" speed="300" manacost="0">
    <health now="150000" max="150000"/>
    <look type="294" corpse="8946"/>
    <targetchange interval="60000" chance="0"/>
    <strategy attack="100" defense="0"/>.
    <script>
       <event name="eventotimes"/> 
    </script> 
    <flags>
      <flag summonable="0"/>
      <flag attackable="1"/>
      <flag hostile="1"/>
      <flag illusionable="0"/>
      <flag convinceable="1"/>
      <flag pushable="0"/>
      <flag canpushitems="1"/>
      <flag staticattack="15"/>
      <flag lightlevel="0"/>
      <flag lightcolor="0"/>
      <flag targetdistance="1"/>
      <flag runonhealth="30"/>
    </flags>
    <attacks>
      <attack name="melee" interval="500" min="-500" max="-800"/>
      <attack name="lifedrain" interval="5000" min="-1000" max="-1500"/>
    </attacks>
    <defenses armor="150" defense="170"/>
<elements>
<element energyPercent="-30"/>
<element earthPercent="-80"/>
<element deathPercent="-10"/>
</elements>
<loot>
     <item id="12696" countmax="1" chance1="10000" chancemax="0"/>
     <item id="12697" countmax="1" chance1="500" chancemax="0"/>
</loot>
    <immunities>
      <immunity physical="0"/>
      <immunity energy="0"/>
      <immunity fire="0"/>
      <immunity poison="0"/>
      <immunity lifedrain="0"/>
      <immunity paralyze="0"/>
      <immunity outfit="0"/>
      <immunity drunk="0"/>
      <immunity invisible="0"/>
    </immunities>
    <voices interval="2000" chance="5">
      <voice sentence="Crackle!"/>
      <voice sentence="Tsshh"/>
    </voices>
  </monster>

 

Vermelho - Essencial colocar no seu Boss 

 

Pronto instalado com sucesso.
Créditos Pelo Script:
100% - Gabisa00
 
Créditos Pela Ideia:
100% - Macalo
 
Dúvidas, bugs, sugestões, somente no tópico.
 
Gostou do Sistema Faça Seu Pedido Aqui!

Editado por gabisa00 (veja o histórico de edições)

  • Respostas 11
  • Visualizações 3.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Acho que esse seu evento também tem BUG camarada, você só mexeu com onKill, e se todo mundo morrer? O evento vai ficar lá acontecendo... Sem ninguém nele!

Postado

Idéia perfeita cara, sem mais, depois vou testar.

Projeto Zerphys Dragon Ball Online V1.0 (Open Source) Em breve!

 

 - Mapa 3%

 - Monstros 0%

 - Vocações 0%

 - Spells 0%

 - Scripts (talkactions, sistemas,mods, geral etc ...) 0%

 - Client 0%

 - Website 0%

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo