Ragnarok World
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Последние темы
» Два и более сервера Eathena || Two and more servers Eathena
PvP Счетчик EmptyПн Окт 10, 2011 12:39 am автор LeLush16

» Aвтокликер || Autohotkey
PvP Счетчик EmptyВт Фев 08, 2011 7:41 am автор mrbib

» ////Kobans
PvP Счетчик EmptyПн Окт 25, 2010 10:15 am автор osiki

» Nice Stylist =)
PvP Счетчик EmptyСр Мар 24, 2010 8:11 pm автор Kill Spirit

» Novice VS Zombie (RFYL)
PvP Счетчик EmptyСр Мар 24, 2010 8:10 pm автор Kill Spirit

» Disguise Event =\
PvP Счетчик EmptyСр Мар 24, 2010 8:09 pm автор Kill Spirit

» Stop The Clok
PvP Счетчик EmptyСр Мар 24, 2010 8:08 pm автор Kill Spirit

» Warper || LastWarp
PvP Счетчик EmptyСр Мар 24, 2010 8:07 pm автор Kill Spirit

» Насчет грфок
PvP Счетчик EmptyСр Мар 24, 2010 8:04 pm автор Kill Spirit

Кто сейчас на форуме
Сейчас посетителей на форуме: 2, из них зарегистрированных: 0, скрытых: 0 и гостей: 2

Нет

Больше всего посетителей (59) здесь было Ср Авг 09, 2017 11:30 am
Самые активные пользователи
Kill Spirit
PvP Счетчик I_vote_lcapPvP Счетчик I_voting_barPvP Счетчик I_vote_rcap 
osiki
PvP Счетчик I_vote_lcapPvP Счетчик I_voting_barPvP Счетчик I_vote_rcap 
mrbib
PvP Счетчик I_vote_lcapPvP Счетчик I_voting_barPvP Счетчик I_vote_rcap 
LeLush16
PvP Счетчик I_vote_lcapPvP Счетчик I_voting_barPvP Счетчик I_vote_rcap 


PvP Счетчик

Перейти вниз

PvP Счетчик Empty PvP Счетчик

Сообщение  Kill Spirit Пн Мар 08, 2010 8:40 pm

Код:
//===== eAthena Script =======================================
//= eAthena PVP-Ladder
//===== By: ==================================================
//= Terces
//===== Current Version: =====================================
//= 1.7.2
//===== Compatible With: =====================================
//= Any Athena Version that has "for" implemented
//===== Credits: =============================================
//= The whole eAthena Board and the eAthena Chat
//===== Notes: ===============================================
//= Note 1:
//= Experience gain works like this formula:
//= ($@LadderLength-(<new position>-1))*$@LadderExp
//= so if someone gets the first place he'll get
//= $@LadderLength*$@LadderExp experience points.
//============================================================
//= Fixxed by Dante
//= V1.7.2
//= Hosted by Dant3 aka Dante
//= HAFE FUN! READ THE TOPIC! IT DONT WORKS MAYBE ON OLDER REV
//= LAST UPDATE: 12th,February.2008
// Main Script - Terces (Main Thanks to Terces ^_^)
// V1.7.0 - Dant3
// v1.7.1 - AnnieRuRu
// v1.7.2 - Dant3
// v1.7.3 - Dant3
// THIS SCRIPT WORKS ONLY ON THE NEW EATHENA REVISIONS! ENJOY!

-   script   PVPLADDEROPTIONS   -1,{
end;
OnInit:
// 0 = Disabled (NO)
// 1 = Enable  (YES)
set $@languageselect, 0;   //Enable/Disable language selection [English/German] (Default: 1)
set $@LadderAnnounce, 0;   //Enable/Disable the announcement when a char reaches a new position in the ladder (Default: 1)
set $@LadderLength, 30;      //Set the length of the Ladder [!Not higher than 128!] (Default: 30)
set $@LadderSteps, 10;      //Set the views per page (Default: 10)set $@LadderExpGain, 1;      //Enable/Disable experience gain when reaching a new position in the ladder (*Note1)
set $@LadderExp, 50;      //Set Experience gain value (*Note1)
set $@LadderZenyGain, 1;   //Enable/Disable zeny gain when reaching a new position in the ladder
set $@LadderZeny, 50;      //Set Zeny gain value
set $@LadderChatRoom, 1;   //Enable/Disable an Chat Room over the NPC with the message "PvP Ladder" (Users can not enter the Chat room)
set $@LadderAskLogin, 1;   //Enable/Disable that the NPC asks about the Broadcast when a Player logins / or  with the Npc Chat (0 = Login Ask , 1 = Npc Chat) Related: 0
set $@LadderGM,   60;      //All GM LVL UNDER this value will show on the PvP Ladder (Over GM LVL: Not shown on Ladder | under GM LVL:  Shown on Ladder)
set $@LadderGMMenu,   99;   //GM LVL that need for entering GM Menu
}

-   script   PVPLADDER   -1,{
OnPCKillEvent:
if ( getgmlevel() >= $@LadderGM ) end;
if (terces_PVP_resets != $terces_PVP_resets) {
   dispbottom "Пожалуйста повторнозарегистрируйтесвойхарактер,чтобыполучитьправильныеубийствадляВасвлестнице PVP.";
   dispbottom "Because a GM just reset the ladder.";
   end;
}
if ( killedrid == getcharid(3) ) {
   set PVPDeaths, PVPDeaths +1;
   set #PVPDeathsAccount, #PVPDeathsAccount +1;
   set @PVPDeathstoday, @PVPDeathstoday +1;
   end;
}
set $@PVPcounter,$@PVPcounter+1;
set getd("$@PVPKill"+$@PVPcounter),getcharid(3);   //getd to avoid errors when more than 1 people kill someone
attachrid(killedrid);
set PVPDeaths,PVPDeaths+1;
set @PVPDeathstoday,@PVPDeathstoday+1;
set #PVPDeathsAccount,#PVPDeathsAccount+1;
set getd("$@PVPkilledplayer"+$@PVPcounter+"$"), strcharinfo(0);   //again, getd to avoid possible glitches
detachrid;

attachrid(getd("$@PVPKill"+$@PVPcounter));
CountKills:
   set PVPKills,PVPKills+1;
   set @PVPKillstoday,@PVPKillstoday+1;
   set #PVPKillsAccount,#PVPKillsAccount+1;
   setarray @playerstats[0],@PVPKillstoday,@PVPDeathstoday,PVPKills,PVPDeaths,#PVPKillsAccount,#PVPDeathsAccount;

l_ladder:
   set @considerdeath,0;
   for (set @PosinLadder, 0; @PosinLadder < $@LadderLength; set @PosinLadder, @PosinLadder + 1){
      if (PVPKills >= $terces_PVP_kills[@PosinLadder]){   //Player deserves to be in the ladder
         //Check if Death plays a role on the position
         if ((PVPKills == $terces_PVP_kills[@PosinLadder]) && (PVPDeaths > $terces_PVP_deaths[@PosinLadder])) set @considerdeath,1; //Consider Deaths
         //Check if the player only topped his own scores
         if ($terces_PVP_names$[@PosinLadder] == strcharinfo(0)){
            set $terces_PVP_kills[@PosinLadder],PVPKills;
            set $terces_PVP_deaths[@PosinLadder],PVPDeaths;
            end;
         }
         //Moves all characters in the Ladder
         for (set @beginmoving, $@LadderLength; @beginmoving >= (@PosinLadder+@considerdeath); set @beginmoving, @beginmoving - 1){
            if ($terces_PVP_names$[@beginmoving] == strcharinfo(0)){
               //If the player already is in the Ladder it only has to move players between characters new position and characters old position
               callsub L_LadderMove,0;
               end;
            }
            else if (@beginmoving == (@PosinLadder+@considerdeath)){
               //Player is not in the Ladder and therefor it has to move all players from characters new position downwards
               callsub L_LadderMove,1;
               end;
            }
         }
         end;
      }
   }


L_LadderMove:
   if (getarg(0) == 0) set @length,@beginmoving;
   if (getarg(0) == 1) set @length,$@LadderLength;
   for (set @movecycle, @length; @movecycle > (@PosinLadder+@considerdeath);
    set @movecycle, @movecycle - 1){

      set $terces_PVP_names$[@movecycle],$terces_PVP_names$[(@movecycle-1)];
      set $terces_PVP_kills[@movecycle],$terces_PVP_kills[(@movecycle-1)];
      set $terces_PVP_deaths[@movecycle],$terces_PVP_deaths[(@movecycle-1)];
      set $terces_PVP_times[@movecycle],$terces_PVP_times[(@movecycle-1)];
   }
   //sets the character's stats in the new position
   set $terces_PVP_names$[(@PosinLadder+@considerdeath)],strcharinfo(0);
   set $terces_PVP_kills[(@PosinLadder+@considerdeath)],PVPKills;
   set $terces_PVP_deaths[(@PosinLadder+@considerdeath)],PVPDeaths;
   set $terces_PVP_times[(@PosinLadder+@considerdeath)],gettimetick(2);
   //Experience Gain
   if ($@LadderExpGain == 1){
      set BaseExp,BaseExp+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderExp);
      dispbottom "You have just been rewarded with "+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderExp)+" base experience points";
   }
   //Zeny Gain
   if ($@LadderZenyGain == 1){
      set Zeny,Zeny+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderZeny);
      dispbottom "You have just been rewarded with "+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderZeny)+" Zeny";
   }
   //Announcement (Setting for Char)
   if (pvpbroadcast == 2){
   announce strcharinfo(0)+" just claimed the "+((@PosinLadder+@considerdeath)+1)+". Position in the Top "+$@LadderLength+" after killing "+getd("$@PVPkilledplayer"+$@PVPcounter+"$")+".",16;
   }
   //Announcement (Setting for Account)
   if (#pvpbroadcast == 2){
   announce strcharinfo(0)+" just claimed the "+((@PosinLadder+@considerdeath)+1)+". Position in the Top "+$@LadderLength+" after killing "+getd("$@PVPkilledplayer"+$@PVPcounter+"$")+".",16;
   }
   end;

OnPCLoginEvent:
if (terces_PVP_resets != $terces_PVP_resets){
      set PVPDeaths,0;
      set @PVPDeathstoday,0;
      set #PVPDeathsAccount,0;
      set PVPKills,0;
      set @PVPKillstoday,0;
      set #PVPKillsAccount,0;
      set terces_PVP_resets,$terces_PVP_resets;
   }
if ($@LadderAskLogin == 0){
   if (#pvpbroadcast == 2) goto L_ignore;
   if (pvpbroadcast == 2) goto L_ignore;
   if (#pvpbroadcast == 1) goto L_ignore;
   if (pvpbroadcast == 1) goto L_ignore;

   if (pvpbroadcast == 0)
   mes "Hi, "+strcharinfo(0)+"";
   mes "Me is the PvP Top Management!";
   mes "Let me ask you one Question and i will let you play!";
   menu "Later please",L_close,"Okay, fine",L_fine;

   L_fine:
   next;
   mes "Well, do you want read Broadcast Messages when a Player reach a new position on the PvP Ranglist?";
   menu "Yeah, why not",L_accept,"No, thanks",L_accept_2,"Wtf is Broadcast?",L_broadcast;

   L_accept:
   next;
   mes "Yay, thank you! ^_^";
   mes "Will this Setting work on all your Chars on this account or only this char?";
   menu "Account",L_account,"Only this char",L_char;

   L_account:
   set #pvpbroadcast,2;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   close;

   L_char:
   set pvpbroadcast,2;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   goto access_eng;
   close;
   
   L_accept_2:
   next;
   mes "Yay, thank you! ^_^";
   mes "Will this Setting work on all your Chars on this account or only this char?";
   menu "Account",L_account_2,"Only this char",L_char_2;

   L_close:
   close;

   L_account_2:
   set #pvpbroadcast,1;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   close;

   L_char_2:
   set pvpbroadcast,1;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   goto access_eng;
   close;


   L_broadcast:
   mes "Broadcasts are this yellow messages from  the GMs";
   goto L_fine;
   }
}

prontera.gat,164,174,3   script   PvP Leader   808,{
if ($@LadderChatRoom == 1) {
      waitingroom "PvP Top "+$@LadderLength+"",0;  // Look on the configuration!
}
   set @name$,"[PvP-Ladder]";
   //Colour of:         Position   Name      Kills      Deaths      Time
   setarray @colour$[0],   "^996600",   "^006699",   "^00AA00",   "^FF0000",   "^EE8800";
if ($@LadderAskLogin == 1){
   if (#pvpbroadcast == 2) goto    access_eng;
   if (pvpbroadcast == 2) goto    access_eng;
   if (#pvpbroadcast == 1) goto    access_eng;
   if (pvpbroadcast == 1) goto    access_eng;
   if (pvpbroadcast == 0)
   mes "Hi, "+strcharinfo(0)+"";
   mes "Me is the PvP Top Management!";
   mes "Let me ask you one Question and i will let you play!";
   menu "Later please",L_close,"Okay, fine",L_fine;

   L_fine:
   next;
   mes "Well, do you want read Broadcast Messages when a Player reach a new position on the PvP Ranglist?";
   menu "Yeah, why not",L_accept,"No, thanks",L_accept_2,"Wtf is Broadcast?",L_broadcast;

   L_accept:
   next;
   mes "Yay, thank you! ^_^";
   mes "Will this Setting work on all your Chars on this account or only this char?";
   menu "Account",L_account,"Only this char",L_char;

   L_account:
   set #pvpbroadcast,2;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   close;

   L_char:
   set pvpbroadcast,2;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   goto access_eng;
   close;
   
   L_accept_2:
   next;
   mes "Yay, thank you! ^_^";
   mes "Will this Setting work on all your Chars on this account or only this char?";
   menu "Account",L_account_2,"Only this char",L_char_2;

   L_close:
   close;

   L_account_2:
   set #pvpbroadcast,1;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   close;

   L_char_2:
   set pvpbroadcast,1;
   next;
   mes "Okay, "+strcharinfo(0)+"";
   mes "Thank you for your time and have fun!";
   goto access_eng;
   close;


   L_broadcast:
   mes "Broadcasts are this yellow messages from  the GMs";
   goto L_fine;
}
   access_eng:
   mes @name$;
   mes "Привет "+strcharinfo(0)+"...";
   mes "Я могу показать тебе твой PVP статус.";
   next;
   M_selection_eng:
   if ( getgmlevel () < $@LadderGMMenu )
      menu "Show me the PVP Ladder",M_Ladder_eng,"PvP stats since my login",M_seitLogin_eng,"PvP stats of this Char",M_dieserChar_eng,"Stats of the whole account",M_vomAccount_eng,"Cancel",M_abbrechen_eng;
   else
      menu "[ГМ МЕНЮ]",GMMenu,"[МЕНЮ ИГРОКА]",UserMenu;

   UserMenu:
   menu "Весь ПвП статус",M_Ladder_eng,"Мой ПвП статус",M_seitLogin_eng,"Пвп статус моего персонажа",M_dieserChar_eng,"Статус в пвп моего аккаунта",M_vomAccount_eng,"Выход",M_abbrechen_eng;

   GMMenu:
   mes "PVP Лидер Скрипт";
   mes "Версия: 1.7.3";
   mes "Статус Функций: ";
   mes "Reset Ladder: No Bugs";
   mes "Удаление: BETA [Not working perfect]";
   menu "Ресет ПвП статуса",L_reset,"Удалить Определенного Пресонажа",L_del_char,"Cancel",M_abbrechen_eng;

   M_Ladder_eng:
   mes "Alright...I'll show you the Top "+ $@LadderLength +" with "+$@LadderSteps+" entries per page.";
   mes "It'll be viewed like this:";
   mes @colour$[0]+"Place^000000: "+@colour$[1]+"<name>^000000 :"+@colour$[2]+"<kills>^000000:"+@colour$[3]+"<deaths>^000000 "+@colour$[4]+"<time>";
   next;
   callsub L_Ladder;
   goto M_selection_eng;

   M_seitLogin_eng:
   mes @name$;
   mes "Your stats since your login:";
   mes @PVPKillstoday+"/"+@PVPDeathstoday+"(Kills/Deaths)";
   next;
   goto M_selection_eng;

   M_dieserChar_eng:
   mes @name$;
   mes "Your stats of this Char:";
   mes PVPKills+"/"+PVPDeaths+"(Kills/Deaths)";
   next;
   goto M_selection_eng;

   M_vomAccount_eng:
   mes @name$;
   mes "Your stats of the whole account:";
   mes #PVPKillsAccount+"/"+#PVPDeathsAccount+"(Kills/Deaths)";
   next;
   goto M_selection_eng;

   M_abbrechen_eng:
   mes @name$;
   mes "OK. You can come back to me and see your stats whenever you want.";
   close;

L_del_char:
   if (getgmlevel() < 99) end;
   mes "Do you want to delete a char on the Ladder?";
   if (select ("Yes","No") == 2) goto L_end;
   next;
   mes "Please give me the Ladder Position of the Char";
   input $@CharLadderInput;
   set $@CharLadder, $@CharLadderInput;
   deletearray @PosinLadder, $@CharLadderInput;
   next;
   mes "THIS IS ONLY  BETA";
   mes "When this step has not worked PLEASE wait until the next Update for this script";
   mes "Please don't request support when this step has not worked";
   close;

L_reset:
   if (getgmlevel() < 99) end;
   mes "Do you want to reset the ladder?";
   if (select ("Yes","No") == 2) goto L_end;
   mes "Are you really really sure you want to reset it?";
   menu "Yes, ffs!!",-,"No",L_end;
   deletearray $terces_PVP_kills,128;
   deletearray $terces_PVP_deaths,128;
   deletearray $terces_PVP_names$,128;
   deletearray $terces_PVP_times,128;
   set $terces_PVP_resets,$terces_PVP_resets +1;

   L_end:
   mes "Okay...cya";
   close;
   
   L_Ladder:
   for (set @y,0; @y < $@LadderLength; set @y,@y+$@LadderSteps){
      for (set @x,@y; (@x < (@y+$@LadderSteps)) && (@x < ($@LadderLength)); set @x,@x+1){
         if ($terces_PVP_names$[@x] != ""){
            mes @colour$[0]+(@x+1)+"^000000: "+@colour$[1]+$terces_PVP_names$[@x]+"^000000 "+@colour$[2]+$terces_PVP_kills[@x]+"^000000:"+@colour$[3]+$terces_PVP_deaths[@x]+"^000000 ~ "+@colour$[4]+callfunc ("Gettime",$terces_PVP_times[@x])+"^000000";
         } else {
            mes "^DD0000"+(@x+1)+": ^006699None^000000 ";
         }
      }
      next;
   }
   return;
}

function   script   Gettime   {
if (getarg(0)==0) return;

set @difftimedays,(gettimetick(2) - getarg(0));
set @difftimehours,@difftimedays%86400;
set @difftimeminutes,@difftimehours%3600;
set @difftimeseconds,@difftimeminutes%60;

set @days,@difftimedays/86400;
set @hours,@difftimehours/3600;
set @minutes,@difftimeminutes/60;
set @seconds,@difftimeseconds;
set @result$,"";
if(@days != 0) set @result$,@result$+@days+"d ";
if(@hours != 0) set @result$,@result$+@hours+"h ";
if(@minutes != 0) set @result$,@result$+@minutes+"m ";
if(@seconds != 0) set @result$,@result$+@seconds+"s";

return (@result$);
}
Kill Spirit
Kill Spirit
Администратор
Администратор

Сообщения : 34
Количество тем пользователя : 70
Дата регистрации : 2010-03-08

http://ragna-faq.forumgrad.ru

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения