Ragnarok Developer
Please Login to able Download the File
Ragnarok Developer

Official Forums
 
HomeHome  CalendarCalendar  FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  RegisterRegister  Log in  
Your Ad Here

Share | 
 

 *PVP LADDER*

Go down 
AuthorMessage
JamesArgana



Posts : 9
Join date : 29/10/2012

PostSubject: *PVP LADDER*   Wed Oct 31, 2012 8:10 am

* You can reset the pvp ladder in the npc*
Hope ya like it Very Happy
Code:

//===== 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



// 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)



// Update v1.7.0

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)



// Update v1.7.1 (Thanks to AnnieRuRu)

// Added GM PvP Ladder Reset Function



// Update v1.7.2

// Thanks to for the Feedback

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

}



-   script   PVPLADDER   -1,{

OnPCKillEvent:

if (terces_PVP_resets != $terces_PVP_resets) {

   dispbottom "Please relog your character, in order to get the correct kills for you in the PVP ladder.";

   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,149,202,5   script   PvP Ladder   57,{

if ($@LadderChatRoom == 1) {

   // 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;

OnInit:
     waitingroom "PVP Ranking",0;
    end;

   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 "Hello "+strcharinfo(0)+"...";

   mes "If you want to I can show you your PVP stats.";

   next;

   M_selection_eng:

   if ( getgmlevel () < 99 )

      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 "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,"Reset Ladder",L_reset,"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_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$);

}
Back to top Go down
View user profile
 
*PVP LADDER*
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
Ragnarok Developer :: Scripts :: Scripts Release-
Jump to: