Advertisement
johnlol

GVG Arena RWC

Aug 9th, 2023
898
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 14.47 KB | Gaming | 0 0
  1. //===== RagnaPROJECT Script ==================================
  2. //= GVG Arena
  3. //===== By: ==================================================
  4. //= Timexy
  5. //===== Current Version: =====================================
  6. //= 0.1
  7. //===== Compatible With: =====================================
  8. //= eAthena SVN
  9. //===== Description: =========================================
  10. //=
  11. //===== Additional Comments: =================================
  12. //=
  13. //===== To Do List: ==========================================
  14. //=
  15. //============================================================
  16. prontera,181,162,5  script  Arena GVG#RWC   997,{
  17.  mes "[ Arena GVG ]";
  18.  mes "O que gostaria de fazer?";
  19.  switch(select("Criar uma Partida","Resetar Arena")) {
  20.  case 1:
  21.  next;
  22.  mes "[ Arena GVG ]";
  23.  mes "Observe que para criar uma";
  24.  mes "partida, ambos Grupos devem estar";
  25.  mes "prontos, sendo necesário 7v7.";
  26.  next;
  27.  mes "[ Arena GVG ]";
  28.  mes "Você e seu Adversário estão prontos?";
  29.  switch(select("Ainda não","Sim, estamos")) {
  30.  case 1:
  31.  mes "Volte quando estiverem";
  32.  close;
  33.  case 2:
  34.  //Verificações básicas
  35.  if(getcharid(1) == 0) {
  36.  mes "Você precisa estar em um Grupo.";
  37.  close;
  38.  }
  39.  if(getpartyleader(getcharid(1),2) != getcharid(0)) {
  40.  mes "Apenas o líder do grupo pode registrar-los.";
  41.  close;
  42.  }
  43.  if(getcharid(2) == 0) {
  44.  mes "Você precisa estar em um Clã.";
  45.  close;
  46.  }
  47.  getpartymember(getcharid(1));
  48.  if($@partymembercount != 2)
  49.  {
  50.  mes "Seu Grupo deve ter exatamente 7 jogadores para participarem.";
  51.  close;
  52.  }
  53.  //Verifica se algum Clã já está se registrando, para evitar overlaps.
  54.  if($@ARE_Waiting) {
  55.  mes "Um Clã já está se registrando.";
  56.  mes "Tente novamente em alguns instantes.";
  57.  close;
  58.  }
  59.  if($ARE_GVG_Using) {
  60.  mes "A Arena já está em uso";
  61.  close;
  62.  }
  63.  set $@ARE_Waiting,1;
  64.  callsub CHECKPARTY,getcharid(3),getcharid(1),getcharid(2),getcharid(3);
  65.  next;
  66.  mes "[ Arena GVG ]";
  67.  mes "Digite o nome do Líder do outro Grupo.";
  68.  input .@nome_lider$;
  69.  if(getcharid(1,.@nome_lider$) == 0) {
  70.  mes "Ele não está em um Grupo.";
  71.  set $@ARE_Waiting,0;
  72.  close;
  73.  }
  74.  if(getpartyleader(getcharid(1,.@nome_lider$),2) != getcharid(0,.@nome_lider$)) {
  75.  mes "Ele não é o líder do grupo em que se encontra.";
  76.  set $@ARE_Waiting,0;
  77.  close;
  78.  }
  79.  if(getcharid(2,.@nome_lider$) == 0) {
  80.  mes "Ele não está em um Clã.";
  81.  set $@ARE_Waiting,0;
  82.  close;
  83.  }
  84.  getpartymember(getcharid(1,.@nome_lider$));
  85.  if($@partymembercount != 2) {
  86.  mes "Seu Grupo deve ter exatamente 7 jogadores para participarem.";
  87.  set $@ARE_Waiting,0;
  88.  close;
  89.  }
  90.  if(getcharid(2,.@nome_lider$) == getcharid(2)) {
  91.  mes "Ambos Grupos pertencem ao mesmo Clã.";
  92.  set $@ARE_Waiting,0;
  93.  close;
  94.  }
  95.  callsub CHECKPARTY,getcharid(3),getcharid(1,.@nome_lider$),getcharid(2,.@nome_lider$),getcharid(3,.@nome_lider$);
  96.  next;
  97.  mes "[ Arena GVG ]";
  98.  mes "Tudo pronto!";
  99.  mes "Ao fechar ambos Grupos serão Teleportados!";
  100.  close2;
  101.  set $@ARE_Waiting,0;
  102.  set $ARE_GVG_Using,1;
  103.  set $ARE_GVG_Acc[1],getcharid(3);
  104.  //ID do Líder do Grupo
  105.  set $ARE_GVG_Cla[1],getcharid(2);
  106.  //ID do Clã
  107.  set $ARE_GVG_Party[1],getcharid(1);
  108.  //ID do Grupo
  109.  set $ARE_GVG_Char[1],getcharid(0);
  110.  //ID do Líder
  111.  set $ARE_GVG_Acc[2],getcharid(3,.@nome_lider$);
  112.  //ID do Líder do Grupo
  113.  set $ARE_GVG_Cla[2],getcharid(2,.@nome_lider$);
  114.  //ID do Clã
  115.  set $ARE_GVG_Party[2],getcharid(1,.@nome_lider$);
  116.  //ID do Grupo
  117.  set $ARE_GVG_Char[2],getcharid(0,.@nome_lider$);
  118.  //ID do Líder
  119.  gvgon "2008rwc_04";
  120.  donpcevent "ControlAREGVG#04::OnArenaInit";
  121.  callsub PTWARP,$ARE_GVG_Acc[1],$ARE_GVG_Acc[2];
  122.  end;
  123.  }
  124.  case 2:
  125.  if(getgmlevel() < 90) {
  126.  mes "Indisponível";
  127.  close;
  128.  }
  129.  next;
  130.  mes "[ Arena GVG ]";
  131.  mes "Isso irá resetar a Arena e cancelar qualquer partida em Andamento, tem certeza?";
  132.  switch(select("Não","Sim")) {
  133.  case 1:
  134.  close;
  135.  case 2:
  136.  stopnpctimer "ControlAREGVG#04";
  137.  mapwarp "2008rwc_04","prontera",155,155;
  138.  set $ARE_GVG_Using,0;
  139.  set $ARE_GVG_Acc[1],0;
  140.  //ID do Líder do Grupo
  141.  set $ARE_GVG_Cla[1],0;
  142.  //ID do Clã
  143.  set $ARE_GVG_Party[1],0;
  144.  //ID do Grupo
  145.  set $ARE_GVG_Char[1],0;
  146.  //ID do Líder
  147.  set $ARE_GVG_Acc[2],0;
  148.  //ID do Líder do Grupo
  149.  set $ARE_GVG_Cla[2],0;
  150.  //ID do Clã
  151.  set $ARE_GVG_Party[2],0;
  152.  //ID do Grupo
  153.  set $ARE_GVG_Char[2],0;
  154.  //ID do Líder
  155.  set $ARE_GVG_SUB,0;
  156.  set $@ARE_Waiting,0;
  157.  mes "Resetado";
  158.  close;
  159.  }
  160.  }
  161.  CHECKPARTY:
  162.  //Resetando contagem de Classes
  163.  set .@ARE_KN,0;
  164.  set .@ARE_PR,0;
  165.  set .@ARE_WZ,0;
  166.  set .@ARE_BS,0;
  167.  set .@ARE_HN,0;
  168.  set .@ARE_AS,0;
  169.  set .@ARE_CR,0;
  170.  set .@ARE_MO,0;
  171.  set .@ARE_SA,0;
  172.  set .@ARE_RO,0;
  173.  set .@ARE_AL,0;
  174.  set .@ARE_BA,0;
  175.  set .@ARE_DA,0;
  176.  set .@ARE_SN,0;
  177.  set .@ARE_GS,0;
  178.  set .@ARE_NJ,0;
  179.  set .@ARE_TK,0;
  180.  set .@ARE_SG,0;
  181.  set .@ARE_SL,0;
  182.  set .@ARE_Save,getarg(0);
  183.  //ID para Voltar
  184.  set .@ARE_CH1,getarg(1);
  185.  //ID do Grupo do Char a Verificar
  186.  set .@ARE_CH2,getarg(2);
  187.  //ID do Clã do Char a Verificar
  188.  set .@ARE_CH3,getarg(3);
  189.  //ID da Conta do Char a Verificar
  190.  attachrid(.@ARE_CH3);
  191.  getpartymember(getcharid(1));
  192.  for (set .@k,0; .@k < $@partymembercount; set .@k,.@k+1)
  193.  {
  194.  if(isloggedin(getcharid(3,$@partymembername$[.@k]))) {
  195.  attachrid(getcharid(3,$@partymembername$[.@k]));
  196.  //Verificando se o Char pertence ao Clã
  197.  if(getcharid(2) != .@ARE_CH2) {
  198.  set .@ARE_Save3$,strcharinfo(0);
  199.  attachrid(.@ARE_Save);
  200.  if(.@ARE_CH3 == getcharid(3)) {
  201.  mes "O Player ^0000FF"+.@ARE_Save3$+"^000000 não faz parte do seu Clã.";
  202.  } else {
  203.  mes "O Player ^0000FF"+.@ARE_Save3$+"^000000 não faz parte do Clã "+getguildname(.@ARE_CH3)+".";
  204.  }
  205.  set $@ARE_Waiting,0;
  206.  close;
  207.  }
  208.  //Bloqueando  1-1, 1-1-1, Novice, Xmas e Wedding
  209.  if(Class <= 6 || (Class >= 4001 && Class <= 4007) || (Class >= 4023 && Class <= 4045) || Class == 22 || Class == 26) {
  210.  set .@ARE_Save3$,strcharinfo(0);
  211.  attachrid(.@ARE_Save);
  212.  if(.@ARE_CH3 == getcharid(3))
  213.  {
  214.  mes "Desculpe mas a Classe do "+.@ARE_Save3$+" não é permitida.";
  215.  } else {
  216.  mes "Desculpe mas a Classe do "+.@ARE_Save3$+" (do outro Grupo) não é permitida.";
  217.  }
  218.  set $@ARE_Waiting,0;
  219.  close;
  220.  }
  221.  if(countitem(678) > 0 && Class != 4013) {
  222.  set .@ARE_Save3$,strcharinfo(0);
  223.  attachrid(.@ARE_Save);
  224.  if(.@ARE_CH3 == getcharid(3)) {
  225.  mes "Desculpe mas o "+.@ARE_Save3$+" está portando Garrafa de veneno e não é um Assassin Cross.";
  226.  } else {
  227.  mes "Desculpe mas o "+.@ARE_Save3$+" (do outro Grupo) está portando Garrafa de veneno e não é um Assassin Cross.";
  228.  }
  229.  set $@ARE_Waiting,0;
  230.  close;
  231.  }
  232.  if(countitem(678) > 3 && Class == 4013) {
  233.  set .@ARE_Save3$,strcharinfo(0);
  234.  attachrid(.@ARE_Save);
  235.  if(.@ARE_CH3 == getcharid(3)) {
  236.  mes "Desculpe mas o "+.@ARE_Save3$+" está portando mais que 3 Garrafa de veneno.";
  237.  } else {
  238.  mes "Desculpe mas o "+.@ARE_Save3$+" está portando mais que 3 Garrafa de veneno.";
  239.  }
  240.  set $@ARE_Waiting,0;
  241.  close;
  242.  }
  243.  //Somando Classe ao Contador
  244.  if(Class == 7 || Class == 13 || Class == 4008 || Class == 4014)
  245.  set .@ARE_KN,.@ARE_KN+1;
  246.  //Knight || Lord Knight
  247.  if(Class == 8 || Class == 4009)
  248.  set .@ARE_PR,.@ARE_PR+1;
  249.  //Priest || High Priest
  250.  if(Class == 9 || Class == 4010)
  251.  set .@ARE_WZ,.@ARE_WZ+1;
  252.  //Wizard || High Wizard
  253.  if(Class == 10 || Class == 4011)
  254.  set .@ARE_BS,.@ARE_BS+1;
  255.  //Blacksmith || Withesmith
  256.  if(Class == 11 || Class == 4012)
  257.  set .@ARE_HN,.@ARE_HN+1;
  258.  //Hunter || Sniper
  259.  if(Class == 12 || Class == 4013)
  260.  set .@ARE_AS,.@ARE_AS+1;
  261.  //Assasin || Assasin Cross
  262.  if(Class == 14 || Class == 21 || Class == 4015 || Class == 4022)
  263.  set .@ARE_CR,.@ARE_CR+1;
  264.  //Crusader || Paladin
  265.  if(Class == 15 || Class == 4016)
  266.  set .@ARE_MO,.@ARE_MO+1;
  267.  //Monk || Champion
  268.  if(Class == 16 || Class == 4017)
  269.  set .@ARE_SA,.@ARE_SA+1;
  270.  //Sage || Professor
  271.  if(Class == 17 || Class == 4018)
  272.  set .@ARE_RO,.@ARE_RO+1;
  273.  //Rogue || Stalker
  274.  if(Class == 18 || Class == 4019)
  275.  set .@ARE_AL,.@ARE_AL+1;
  276.  //Alchemist || Creator
  277.  if(Class == 19 || Class == 4020)
  278.  set .@ARE_BA,.@ARE_BA+1;
  279.  //Bard || Clown
  280.  if(Class == 20 || Class == 4021)
  281.  set .@ARE_DA,.@ARE_DA+1;
  282.  //Dancer || Gypsy
  283.  if(Class == 23)
  284.  set .@ARE_SN,.@ARE_SN+1;
  285.  //Super Novice
  286.  if(Class == 24)
  287.  set .@ARE_GS,.@ARE_GS+1;
  288.  //Gunslinger
  289.  if(Class == 25)
  290.  set .@ARE_NJ,.@ARE_NJ+1;
  291.  //Ninja
  292.  if(Class == 4046)
  293.  set .@ARE_TK,.@ARE_TK+1;
  294.  //Taekwon
  295.  if(Class == 4047 || Class == 4048)
  296.  set .@ARE_SG,.@ARE_SG+1;
  297.  //Star Gladiator
  298.  if(Class == 4049)
  299.  set .@ARE_SL,.@ARE_SL+1;
  300.  //Soul Linker
  301.  } else {
  302.  attachrid(.@ARE_Save);
  303.  if(.@ARE_CH3 == getcharid(3))
  304.  mes "Desculpe mas alguém do seu Grupo não se encontra Online.";
  305.  else {
  306.  mes "Desculpe mas alguém do seu Grupo não se encontra Online.";
  307.  }
  308.  set .@ARE_Waiting,0;
  309.  close;
  310.  }
  311.  }
  312.  attachrid(.@ARE_Save);
  313.  return;
  314.  PTWARP: attachrid(getarg(0));
  315.  getpartymember(getcharid(1));
  316.  for (set .@k,0; .@k < $@partymembercount; set .@k,.@k+1) {
  317.  if(isloggedin(getcharid(3,$@partymembername$[.@k]))) {
  318.  attachrid(getcharid(3,$@partymembername$[.@k]));
  319.  sc_end SC_ALL;
  320.  warp "2008rwc_04",16,78;
  321.  }
  322.  }
  323.  attachrid(getarg(1));
  324.  getpartymember(getcharid(1));
  325.  for (set .@k,0; .@k < $@partymembercount; set .@k,.@k+1) {
  326.  if(isloggedin(getcharid(3,$@partymembername$[.@k]))) {
  327.  attachrid(getcharid(3,$@partymembername$[.@k]));
  328.  sc_end SC_ALL;
  329.  warp "2008rwc_04",83,19;
  330.  }
  331.  }
  332.  return;
  333.  OnInit:
  334.  waitingroom "Arena GVG - RWC",0;
  335.  set $ARE_GVG_Using,0;
  336.  set $ARE_GVG_Acc[1],0;
  337.  //ID do Líder do Grupo
  338.  set $ARE_GVG_Cla[1],0;
  339.  //ID do Clã
  340.  set $ARE_GVG_Party[1],0;
  341.  //ID do Grupo
  342.  set $ARE_GVG_Char[1],0;
  343.  //ID do Líder
  344.  set $ARE_GVG_Acc[2],0;
  345.  //ID do Líder do Grupo
  346.  set $ARE_GVG_Cla[2],0;
  347.  //ID do Clã
  348.  set $ARE_GVG_Party[2],0;
  349.  //ID do Grupo
  350.  set $ARE_GVG_Char[2],0;
  351.  //ID do Líder
  352.  set $ARE_GVG_SUB,0;
  353.  set $@ARE_Waiting,0;
  354.  end;
  355.  }
  356.  //Controlador das Batalhas// ====================================================================================================
  357.  2008rwc_04,1,1,1   script  ControlAREGVG#04    -1,{
  358.  end;
  359.  OnArenaInit:
  360.  setcell "2008rwc_04",28,64,40,89,cell_walkable,0;
  361.  setcell "2008rwc_04",10,40,27,63,cell_walkable,0;
  362.  setcell "2008rwc_04",54,12,69,35,cell_walkable,0;
  363.  setcell "2008rwc_04",70,36,87,51,cell_walkable,0;
  364.  initnpctimer;
  365.  end;
  366.  OnTimer30000:
  367.  if($ARE_GVG_SUB == 1)
  368.  end;
  369.  //Caso seja Morte Súbita
  370.  set $ARE_GVG_Alive[1],getareausers("2008rwc_04",10,40,40,89);
  371.  set $ARE_GVG_Alive[2],getareausers("2008rwc_04",54,12,87,51);
  372.  if($ARE_GVG_Alive[1] == 0 && $ARE_GVG_Alive[2] == 0) {
  373.  //Caso ambos percam por W.O.
  374.  stopnpctimer;
  375.  announce "Arena GVG: Ambos os Clãs "+getguildname($ARE_GVG_Cla[1])+" e "+getguildname($ARE_GVG_Cla[2])+" desqualificados por desistencia.",bc_all;
  376.  callsub ResetArena;
  377.  end;
  378.  }
  379.  if($ARE_GVG_Alive[1] == 0) {
  380.  //Caso o G01 perca por W.O.
  381.  stopnpctimer;
  382.  announce "Arena GVG: O Clã "+getguildname($ARE_GVG_Cla[2])+" venceu por W.O.",bc_all;
  383.  callsub ResetArena;
  384.  end;
  385.  }
  386.  if($ARE_GVG_Alive[2] == 0) {
  387.  //Caso o G02 perca por W.O.
  388.  stopnpctimer;
  389.  announce "Arena GVG: O Clã "+getguildname($ARE_GVG_Cla[1])+" venceu por W.O.",bc_all;
  390.  callsub ResetArena;
  391.  end;
  392.  }
  393.  //Caso não existam W.O., continua normalmente
  394.  mapannounce "2008rwc_04","A Partida entre os Clãs "+getguildname($ARE_GVG_Cla[1])+" e "+getguildname($ARE_GVG_Cla[2])+" será iniciada em 30 segundos!",bc_map | bc_blue;
  395.  end;
  396.  OnTimer60000:
  397.  if($ARE_GVG_SUB == 1)
  398.  end;
  399.  //Caso seja Morte Súbita
  400.  setcell "2008rwc_04",28,64,40,89,cell_walkable,1;
  401.  setcell "2008rwc_04",10,40,27,63,cell_walkable,1;
  402.  setcell "2008rwc_04",54,12,69,35,cell_walkable,1;
  403.  setcell "2008rwc_04",70,36,87,51,cell_walkable,1;
  404.  mapannounce "2008rwc_04","Partida Iniciada!",bc_map | bc_blue;
  405.  end;
  406.  OnTimer300000:
  407.  if($ARE_GVG_SUB == 0)
  408.  end;
  409.  //Caso NÃO seja Morte Súbita
  410.  gvgoff "2008rwc_04";
  411.  stopnpctimer;
  412.  mapannounce "2008rwc_04","Partida Encerrada! Empate!",bc_map | bc_blue;
  413.  callsub ResetArena;
  414.  end;
  415.  OnTimer660000:
  416.  if($ARE_GVG_Alive[1] == $ARE_GVG_Alive[2]) {
  417.  //Caso Esteja empatado
  418.  if($ARE_GVG_SUB == 1) {
  419.  //Se JÁ estiver em Morte Súbita (nunca deve ocorrer)
  420.  gvgoff "2008rwc_04";
  421.  stopnpctimer;
  422.  mapannounce "2008rwc_04","Partida Encerrada! Empate!",bc_map | bc_blue;
  423.  callsub ResetArena;
  424.  end;
  425.  } else {
  426.  set $ARE_GVG_SUB,1;
  427.  mapannounce "2008rwc_04","Morte Súbita! 5 Minutos! Caso ninguém morra, ambos perdem.",bc_map | bc_blue;
  428.  stopnpctimer;
  429.  initnpctimer;
  430.  end;
  431.  }
  432.  }
  433.  if($ARE_GVG_Alive[1] > $ARE_GVG_Alive[2]) {
  434.  //Caso G01 tenha mais vivos que G02
  435.  gvgoff "2008rwc_04";
  436.  stopnpctimer;
  437.  mapannounce "2008rwc_04","O Clã "+getguildname($ARE_GVG_Cla[1])+" venceu o Clã "+getguildname($ARE_GVG_Cla[2])+"!",bc_map | bc_blue;
  438.  callsub ResetArena;
  439.  end;
  440.  }
  441.  if($ARE_GVG_Alive[1] < $ARE_GVG_Alive[2]) {
  442.  //Caso G02 tenha mais vivos que G01
  443.  gvgoff "2008rwc_04";
  444.  stopnpctimer;
  445.  mapannounce "2008rwc_04","O Clã "+getguildname($ARE_GVG_Cla[2])+" venceu o Clã "+getguildname($ARE_GVG_Cla[1])+"!",bc_map | bc_blue;
  446.  callsub ResetArena;
  447.  end;
  448.  }
  449.  ResetArena:
  450.  sleep 5000;
  451.  mapwarp "2008rwc_04","prontera",155,155;
  452.  set $ARE_GVG_Using,0;
  453.  set $ARE_GVG_Acc[1],0;
  454.  //ID do Líder do Grupo
  455.  set $ARE_GVG_Cla[1],0;
  456.  //ID do Clã
  457.  set $ARE_GVG_Party[1],0;
  458.  //ID do Grupo
  459.  set $ARE_GVG_Char[1],0;
  460.  //ID do Líder
  461.  set $ARE_GVG_Acc[2],0;
  462.  //ID do Líder do Grupo
  463.  set $ARE_GVG_Cla[2],0;
  464.  //ID do Clã
  465.  set $ARE_GVG_Party[2],0;
  466.  //ID do Grupo
  467.  set $ARE_GVG_Char[2],0;
  468.  //ID do Líder
  469.  set $ARE_GVG_SUB,0;
  470.  end;
  471.  OnPCKillEvent:
  472.  if($ARE_GVG_Using != 1)
  473.  end;
  474.  //Ativo?
  475.  getmapxy .Map$,.x,.y,0;
  476.  if(.Map$ == "2008rwc_04") {
  477.  if($ARE_GVG_Cla[1] == getcharid(2)) {
  478.  set $ARE_GVG_Alive[2],$ARE_GVG_Alive[2]-1;
  479.  if($ARE_GVG_Alive[2] == 0 || $ARE_GVG_SUB == 1) {
  480.  gvgoff "2008rwc_04";
  481.  stopnpctimer;
  482.  mapannounce "2008rwc_04","O Clã "+getguildname($ARE_GVG_Cla[1])+" venceu o Clã "+getguildname($ARE_GVG_Cla[2])+"!",bc_map | bc_blue;
  483.  callsub ResetArena;
  484.  end;
  485.  }
  486.  }
  487.  if($ARE_GVG_Cla[2] == getcharid(2)) {
  488.  set $ARE_GVG_Alive[1],$ARE_GVG_Alive[1]-1;
  489.  if($ARE_GVG_Alive[1] == 0 || $ARE_GVG_SUB == 1) {
  490.  gvgoff "2008rwc_04";
  491.  stopnpctimer;
  492.  mapannounce "2008rwc_04","O Clã "+getguildname($ARE_GVG_Cla[2])+" venceu o Clã "+getguildname($ARE_GVG_Cla[1])+"!",bc_map | bc_blue;
  493.  callsub ResetArena;
  494.  end;
  495.  }
  496.  }
  497.  }
  498.  end;
  499.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement