//===== eAthena Script ======================================= //= PvP //===== By: ================================================== //= kobra_k88 //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= eAthena 0.5.2 + //===== Description: ========================================= //= //===== Additional Comments: ================================= //= v1.1 Fixed arena names for Nightmare mode. Added room limit check. //============================================================ //***********************************************************************************************************************************************************// // PvP Narrator and Gate Keeper Scripts // //***********************************************************************************************************************************************************// // Alberta =========================================================>\\ // PvP Narrator ------------------------------------------------------ alberta_in.gat, 22, 146,4 script PvP Narrator#1::PvPNarr 84, { mes "[PvP Narrator]"; mes "Hello and welcome! I am in charge of explaining the PvP mode to all of those who inquire. I am the PvP Narrator!"; M_Menu: next; menu "What is PvP?",M_0, "What are the PvP modes?",M_1, "What are the rules for PvP?",M_2, "Save position.",M_3; M_0: mes "[PvP Narrator]"; mes "PvP is short for 'Player versus Player'! It is a unique play mode that allows players to duel other players!"; next; mes "[PvP Narrator]"; mes "If you're interested just speak with the ^5533FFGate Keeper'^000000. He will let you into the PvP square."; next; mes "[PvP Narrator]"; mes "That IS, IF you have at least a base level of 31 and you have 500 zeny to pay for the enterance fee."; mes "Those are the requirements to participate in PvP."; goto M_Menu; M_1: mes "[PvP Narrator]"; mes "There are 2 PvP modes to choose from."; mes "One is called ^5533FF'Yoyo'^000000 Mode and the other is called ^5533FF'Nightmare'^000000 Mode."; next; mes "[PvP Narrator]"; mes "Yoyo mode essentially lets you play risk free. You can experience the thrill of PvP without any restrictions or penalties."; mes "It is recomended that you practice your skills in this mode before you move on."; next; mes "[PvP Narrator]"; mes "Nightmare Mode is very dangerous! Please use caution when trying this mode of play."; mes "You will lose some of your real EXP if you are defeated. There is also the small chance that you will drop some items and equipment."; next; mes "[PvP Narrator]"; mes "Of course if you win, the rewards can be great!! Even so you should really think twice before you attempt Nightmare Mode."; mes "Anyways, good luck."; goto M_Menu; M_2: mes "[PvP Narrator]"; mes "Before you enter any actual PvP areana, you must first choose your level of ability based on your base level."; mes "You will do this in the pre-fight room. There will be a row of narrators, each one representing a set of player levels."; next; mes "[PvP Narrator]"; mes "Speak to the narrator that represents your base level. You will then be asked to choose from five different fight maps."; mes "You will be able to see how many people are currently participating in any given map."; next; mes "[PvP Narrator]"; mes "This will be represented by the 'Attendee/Total' figure in the corner of the screen. There is a limit to how many can play on a map."; mes "There is a hidden EXP value in PvP mode. This EXP will only apply inside of the PvP zone and not outside."; next; mes "[PvP Narrator]"; mes "Every one will recieve a base EXP of 5 points when they first start. If you win a match your EXP with increase by 1 point."; mes "If you loose your EXP will drop by 5 points, so be carefull!"; next; mes "[PvP Narrator]"; mes "If you are defeated and your EXP is equal to or less than 0, you will be removed from the PvP arena."; mes "If your EXP is more than 0 than you may continue fighting and even get help from healers."; next; mes "[PvP Narrator]"; mes "The fighting commands inside of PvP are the same as outside. Just remember that you won't be able to save inside a PvP arena."; next; mes "[PvP Narrator]"; mes "Remember these rules well as they can help to ensure your victory."; goto M_Menu; M_3: savepoint "geffen_in.gat",64,60; mes "[PvP Narrator]"; mes "Your position has been saved."; close; } // Gate Keeper --------------------------------------------------------------- alberta_in.gat, 26,146,4 script Gate Keeper#1::GateKeep 83, { mes "[Gate Keeper]"; mes "Hi. I'm glad to be of service. I will open the PvP fight square for you!"; mes "If you have any questions about the PvP modes or rules, please ask the Narrator....."; next; menu "^5533FF'PvP Yoyo Mode'^000000 Fight Square.",M_0, "^FF5533'PvP Nightmare Mode'^000000 Fight Square.",M_1, "^5533FF'PvP Duel (Fighting) Mode'^000000 Combat Square.",M_2, "End Conversation.",M_End; M_0: set @mode$, "Yoyo"; set @players1, 128; set @players2, 128; set @room1$, "Prontera"; set @room2$, "Izlude"; set @room3$, "Payon"; set @room4$, "Alberta"; set @room5$, "Morroc"; callsub sF_Move; warp "pvp_y_room.gat", 51, 23; end; M_1: set @mode$, "Nightmare"; set @players1, 64; set @players2, 32; set @room1$, "Sandwhich Arena"; set @room2$, "Rock Arena"; set @room3$, "Four Arena"; set @room4$, "UnderCross Arena"; set @room5$, "Copass Arena"; callsub sF_Move; warp "pvp_n_room.gat", 51, 23; end; M_2: mes "[Gate Keeper]"; mes "To enter the Duel (Fighting) Mode square you must have an admission ticket. Do you have one?"; next; menu "Yes I do.",-, "No I don't.",sM_1; if(countitem(7029) < 1) goto sM_1; delitem 7029, 1; set @mode$, "Fighting"; callsub sF_Move; warp "pvp_y_room.gat", 51, 23; end; sM_1: mes "[Gate Keeper]"; mes "Eh? You don't have one? I'm sorry but this fight square is only for people who have admission or viewing tickets."; mes "You cannot come in without one."; close; M_End: mes "[Gate Keeper]"; mes "In this war between Monsters and Humans this competition between people, PvP, encourages all of us to become stronger."; mes "Come again anytime. We welcome your challenge!"; close; sF_Move: mes "[Gate Keeper]"; mes "The admission fee is 500 Zeny. Do you want to move to the "+@mode$+" fight square?"; next; menu "Yes",-, "No",M_End; if(BaseLevel < 31) goto sL_LowLvl; if(Zeny < 500) goto sL_NdZeny; set Zeny, Zeny - 500; mes "[Gate Keeper]"; mes "Prepare to be warped to the arena....."; next; return; sL_LowLvl: mes "[Gate Keeper]"; mes "In order to participate in PvP you must have a base level of at least ^FF4444'31'^000000."; close; sL_NdZeny: mes "[Gate Keeper]"; mes "As I stated, the admission fee is ^FF4444'500'^000000 Zeny. You seem to be short on Zeny."; close; } // Geffen ===================================================>\\ geffen_in.gat, 67,63,4 duplicate(PvPNarr) PvP Narrator#2 84 geffen_in.gat, 63,63,4 duplicate(GateKeep) Gate Keeper#2 83 // Morroc ===================================================>\\ morocc_in.gat,144,138,4 duplicate(PvPNarr) PvP Narrator#3 84 morocc_in.gat, 144,142,4 duplicate(GateKeep) Gate Keeper#3 83 // Payon ===================================================>\\ payon_in01.gat,6,55,4 duplicate(PvPNarr) PvP Narrator#5 84 payon_in01.gat,10,54,4 duplicate(GateKeep) Gate Keeper#5 83 // Prontera =================================================>\\ prt_in.gat,56,140,4 duplicate(PvPNarr) PvP Narrator#6 84 prt_in.gat,52,140,4 duplicate(GateKeep) Gate Keeper#6 83 //***********************************************************************************************************************************************// // PvP Yoyo Mode Fight Square Helpers // //***********************************************************************************************************************************************// // LV31 ~ 40 ------------------------------------------------------------------------------ pvp_y_room.gat,30,85,4 script Fight Square Helper::YHelper1 105, { set @map$, "y_1"; set @lvl2, 40; callfunc "F_PvPRoom"; OnInit: waitingroom "LV31 ~ LV40",0; end; } // LV41 ~ 50 ------------------------------------------------------------------------------ pvp_y_room.gat,38,85,4 script Fight Square Helper::YHelper2 105, { set @map$, "y_2"; set @lvl1, 41; set @lvl2, 50; callfunc "F_PvPRoom"; OnInit: waitingroom "LV41 ~ LV50",0; end; } // LV51 ~ 60 ------------------------------------------------------------------------------ pvp_y_room.gat,46,85,4 script Fight Square Helper::YHelper3 105, { set @map$, "y_3"; set @lvl1, 51; set @lvl2, 60; callfunc "F_PvPRoom"; OnInit: waitingroom "LV51 ~ LV60", 0; end; } // LV61 ~ 70 ------------------------------------------------------------------------------ pvp_y_room.gat,54,85,4 script Fight Square Helper::YHelper4 105, { set @map$, "y_4"; set @lvl1, 61; set @lvl2, 70; callfunc "F_PvPRoom"; OnInit: waitingroom "LV61 ~ LV70", 0; end; } // LV71 ~ 80 ------------------------------------------------------------------------------ pvp_y_room.gat,62,85,4 script Fight Square Helper::YHelper5 105, { set @map$, "y_5"; set @lvl1, 71; set @lvl2, 80; callfunc "F_PvPRoom"; OnInit: waitingroom "LV71 ~ LV80", 0; end; } // LV81 ~ 90 ------------------------------------------------------------------------------ pvp_y_room.gat,70,85,4 script Fight Square Helper::YHelper6 105, { set @map$, "y_6"; set @lvl1, 81; set @lvl2, 90; callfunc "F_PvPRoom"; OnInit: waitingroom "LV81 ~ LV90", 0; end; } // LV91 ~ ------------------------------------------------------------------------------ pvp_y_room.gat,78,85,4 script Fight Square Helper::YHelper7 105, { set @map$, "y_7"; set @lvl1, 91; callfunc "F_PvPRoom"; OnInit: waitingroom "LV91 ~ ", 0; end; } // No Limit ------------------------------------------------------------------------------ pvp_y_room.gat,86,85,4 script Fight Square Helper::YHelper8 105, { set @map$, "y_8"; set @lvl1, 0; set @lvl2, 200; callfunc "F_PvPRoom"; OnInit: waitingroom "No Limit", 0; end; } //***********************************************************************************************************************************************// // PvP Nightmare Mode Fight Square Helpers // //***********************************************************************************************************************************************// // LV31 ~ 40 ------------------------------------------------------------------------------ pvp_n_room.gat,30,85,4 script Fight Square Helper#N1 105, { set @map$, "n_1"; set @lvl2, 40; callfunc "F_PvPRoom"; OnInit: waitingroom "LV31 ~ LV40",0; end; } // LV41 ~ 50 ------------------------------------------------------------------------------ pvp_n_room.gat,38,85,4 script Fight Square Helper#N2 105, { set @map$, "n_2"; set @lvl1, 41; set @lvl2, 50; callfunc "F_PvPRoom"; OnInit: waitingroom "LV41 ~ LV50",0; end; } // LV51 ~ 60 ------------------------------------------------------------------------------ pvp_n_room.gat,46,85,4 script Fight Square Helper#N3 105, { set @map$, "n_3"; set @lvl1, 51; set @lvl2, 60; callfunc "F_PvPRoom"; OnInit: waitingroom "LV51 ~ LV60", 0; end; } // LV61 ~ 70 ------------------------------------------------------------------------------ pvp_n_room.gat,54,85,4 script Fight Square Helper#N4 105, { set @map$, "n_4"; set @lvl1, 61; set @lvl2, 70; callfunc "F_PvPRoom"; OnInit: waitingroom "LV61 ~ LV70", 0; end; } // LV71 ~ 80 ------------------------------------------------------------------------------ pvp_n_room.gat,62,85,4 script Fight Square Helper#N5 105, { set @map$, "n_5"; set @lvl1, 71; set @lvl2, 80; callfunc "F_PvPRoom"; OnInit: waitingroom "LV71 ~ LV80", 0; end; } // LV81 ~ 90 ------------------------------------------------------------------------------ pvp_n_room.gat,70,85,4 script Fight Square Helper#N6 105, { set @map$, "n_6"; set @lvl1, 81; set @lvl2, 90; callfunc "F_PvPRoom"; OnInit: waitingroom "LV81 ~ LV90", 0; end; } // LV91 ~ ------------------------------------------------------------------------------ pvp_n_room.gat,78,85,4 script Fight Square Helper#N7 105, { set @map$, "n_7"; set @lvl1, 91; set @lvl2, 255; callfunc "F_PvPRoom"; OnInit: waitingroom "LV91 ~ ", 0; end; } // No Limit ------------------------------------------------------------------------------ pvp_n_room.gat,86,85,4 script Fight Square Helper#N8 105, { set @map$, "n_8"; set @lvl1, 0; set @lvl2, 255; callfunc "F_PvPRoom"; OnInit: waitingroom "No Limit", 0; end; } //***********************************************************************************************************************************************************// // Function: PvP Fight Square Helper // //***********************************************************************************************************************************************************// function script F_PvPRoom { mes "[Fight Square Helper]"; if(BaseLevel < @lvl1) goto L_LowLvl; if(BaseLevel > @lvl2) goto L_HiLvl; mes "Please choose an arena to fight in..."; M_Menu: next; menu @room1$ + " [" + getmapusers("pvp_"+@map$ + "-1.gat") + "/" +@players1+ "]",M_Rm1, @room2$ + " [" + getmapusers("pvp_"+@map$ + "-2.gat") + "/" +@players2+ "]",M_Rm2, @room3$ + " [" + getmapusers("pvp_"+@map$ + "-3.gat") + "/" +@players2+ "]",M_Rm3, @room4$ + " [" + getmapusers("pvp_"+@map$ + "-4.gat") + "/" +@players2+ "]",M_Rm4, @room5$ + " [" + getmapusers("pvp_"+@map$ + "-5.gat") + "/" +@players2+ "]",M_Rm5, "Cancel",M_End; M_Rm1: if (getmapusers("pvp_"+@map$+"-1.gat") == @players1) goto L_Full; warp "pvp_"+@map$+"-1.gat",0,0; end; M_Rm2: if (getmapusers("pvp_"+@map$+"-2.gat") == @players2) goto L_Full; warp "pvp_"+@map$+"-2.gat",0,0; end; M_Rm3: if (getmapusers("pvp_"+@map$+"-3.gat") == @players2) goto L_Full; warp "pvp_"+@map$+"-3.gat",0,0; end; M_Rm4: if (getmapusers("pvp_"+@map$+"-4.gat") == @players2) goto L_Full; warp "pvp_"+@map$+"-4.gat",0,0; end; M_Rm5: if (getmapusers("pvp_"+@map$+"-5.gat") == @players2) goto L_Full; warp "pvp_"+@map$+"-5.gat",0,0; end; M_End: close; L_LowLvl: mes "I'm sorry but you do not meet the Base Level requirements to enter. Please try a lower level room."; close; L_HiLvl: mes "I'm sorry but you exceed the Base Level requirements to enter. Please try a higher level room."; close; L_Full: mes "[Fight Square Helper]"; mes "I'm sorry but this arena is full. Please choose another one to participate in...."; goto M_Menu; }