Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //===== 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, 1; //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,164,168,4 script PvPLadder 416,{
- if ($@LadderChatRoom == 1) {
- waitingroom "PvP and GvG "+$@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 "Hello "+strcharinfo(0)+"...";
- mes "If you want to I can show you your PVP stats.";
- next;
- M_selection_eng:
- if ( getgmlevel () < 99 )
- menu "Catatanku",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 "Catatanku",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$);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement