Jump to content
  • 0

Need Support Regarding on King of emperium event


Kudo

Question


  • Group:  Members
  • Topic Count:  56
  • Topics Per Day:  0.01
  • Content Count:  139
  • Reputation:   0
  • Joined:  08/18/12
  • Last Seen:  

//===== rAthena Script ======================================= 
/*==============================================================
 * King of Emperium Hill Original idea by : AnnieRuru
 * King of Emperium Hill Version 5.0 by : Yumi Haruka(https://rathena.org/board/profile/47351-haruka-mayumi/)
 * Version 1.0 : Added. King Of Emperium Mapflag
 * Version 2.0 : Revamped to rotational KoE
 * Version 2.1 : Added Rewards
 * Version 2.2 : Fixed Bug where adding session not recognized
 * Version 2.3 : Added Participation Points
 * Version 3.0 : Added Defender Time for holding the emperium.
 * Version 3.1 : Revamped Rewards
 * Version 3.2 : Fixed Manage Session adding .gm_allow.
 * Version 4.0 : Added Enable Barricade
 * Version 4.1 : Added Enable Guardian
 * Version 4.2 : Added Special Effect to NPC when King of Emperium is Active.
 * Version 4.3 : Fixed KOE Points saving when logged out.
 * Version 4.4 : Revamped rewards due to rAthena guild members sql.
 * Version 4.5 : Added Losers Participation reward
 * Version 5.0 : Simplified most of the code
 *   - Added Gepard Unique ID Restriction on rewards
 *   - Made guardians more Flexible to add
 *   - Enable/Disable Position Warping
 *==============================================================*/
arlandria,159,192,4	script	King Of Emperium	965,{
function Add_Zero; function Add_Zero2;

L_Menu1:
mes "[ ^FF5500King of Emperium^000000 ]";
for(.@i=0;.@i<getarraysize(.Maps$);.@i++){
	if(getd("$@koe_"+.Maps$[.@i]+"_start")){
		.@active = 1;
		.@Maps$[.@x] = .Maps$[.@i];
		.@MapsName$[.@x++] = .MapsName$[.@i];
	}
}
if(.@active)
	mes "The King of Emperium is ^0055FFactive^000000.";
else{
	deletearray .@time[0],getarraysize(.@time);
	for(.@i=0; .@i<.Size; .@i+=3)
		if ((gettime(DT_DAYOFWEEK) == $KOE_CONTROL[.@i]-1 && gettime(DT_HOUR) <= $KOE_CONTROL[.@i+1]-1 ) || gettime(DT_DAYOFWEEK) < $KOE_CONTROL[.@i]-1) {
			setarray .@time[0],$KOE_CONTROL[.@i]-1,$KOE_CONTROL[.@i+1]-1;
		break;
	}
	if (!getarraysize(.@time))
		setarray .@time[0],$KOE_CONTROL[0]-1,$KOE_CONTROL[1]-1;
		mes "The King of Emperium is ^777777inactive^000000.";
	if (.Size) {
		mes " ";
		mes "The next session will begin";
		mes "on ^0055FF"+.Days$[.@time[0]]+"^000000 at "+Add_Zero(.@time[1])+"^000000.";
	}
}
next;
switch(select((.@active ? "^0055FF~ Enter King of Emperium^000000":"")+":~ ^008000Check Schedules^000000:"+( getgmlevel()>= .gm_allow ? "~ Manage Sessions":"")+":~ Information:~ Goodbye")){
	case 1:
		mes "[ King of Emperium ]";
		mes "Which arena are you going to join?.";
		next;
		.@menu$ = "";
		for(.@i=0;.@i<.Size;.@i+=3)
			if(gettime(DT_DAYOFWEEK) == $KOE_CONTROL[.@i]-1 && gettime(DT_HOUR) == $KOE_CONTROL[.@i+1]-1){
				.@menu$ = .@menu$+"~ "+.MapsName$[$KOE_CONTROL[.@i+2]-1]+":";
				.@sel[.@j++] = $KOE_CONTROL[.@i+2]-1;
			}
		.@warp = select(.@menu$)-1;
		if(getd("$koe_"+.Maps$[.@sel[.@warp]])==getcharid(2)) //owner warps
			explode(.@Warps$,.Warp2$[.@sel[.@warp]],",");
		else
			explode(.@Warps$,.Warp1$[.@sel[.@warp]],",");
		.@warppoints = getarraysize(.@Warps$);
		.@menu2$ ="";
		for(.@i=0;.@i<.@warppoints;.@i+=3)
			.@menu2$ = .@menu2$ + .@Warps$[.@i]+":";
		.@loc = select(.@menu2$)-1;
		next;
		warp .Maps$[.@sel[.@warp]],atoi(.@Warps$[(.@loc*3)+1]),atoi(.@Warps$[(.@loc*3)+2]);
		end;
	case 2:
		callsub OnSchedule;
		goto L_Menu1;
	case 3:
		L_Menu2:
		switch(select(" ~ Add a session...: ~ Delete a session...: ~ ^777777Go back^000000")){
			case 1:
				mes "[New Session]";
				mes "Select a day.";
				next;
				set .@Day, select(" ~ "+implode(.Days$,": ~ "))-1;
				mes "[New Session]";
				mes "Select a start time for ^0055FF"+.Days$[.@Day]+"^000000.";
				next;
				set .@menu$,"";
				for(set .@i,0; .@i<24; set .@i,.@i+1)
					set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
				set .@Start, select(.@menu$)-1;
				mes "[New Session]";
				mes "Select a map for ^0055FF"+.Days$[.@Day]+" ("+Add_Zero(.@Start)+")^000000.";
				next;
				set .@map, select(" ~ "+implode(.MapsName$,": ~ "))-1;
				mes "[New Session]";
				mes "You are about to add a\nKing of Emperium Session.";
				mes "Schedule : \n~ ^0055FF"+.Days$[.@Day]+"^000000\n~ ^0055FF"+Add_Zero(.@Start)+"^000000\n~ ^0055FF"+.MapsName$[.@map]+"^000000";
				next;
				if(select(" ~ Add Session...: ~ Cancel")==2)
					goto L_Menu1;
				mes "[New Session]";
				mes "New session has been added!";
				if(!.@Day && !.@Start && !.@map ) goto L_Menu1;
				set $KOE_CONTROL[.Size],.@Day+1;
				set $KOE_CONTROL[.Size+1],.@Start+1;
				set $KOE_CONTROL[.Size+2],.@map+1;
				set .Size,getarraysize($KOE_CONTROL);
				next;
				break;
			case 2:
				mes "[Remove Session]";
				if (!.Size) {
					mes "There are no sessions configured.";
					next;
					break;
				}
				mes "Select a session to remove.";
				next;
				set .@menu$,"";
				for(set .@i,0; .@i<.Size; set .@i,.@i+3)
					set .@menu$, .@menu$+" ~ [^0055FF"+.MapsName$[$KOE_CONTROL[.@i+2]-1]+"^000000] "+.Days$[$KOE_CONTROL[.@i]-1]+" "+Add_Zero($KOE_CONTROL[.@i+1]-1,1)+"-"+Add_Zero2($KOE_CONTROL[.@i+1]-1,1)+":";
				set .@i, select(.@menu$)-1;
				mes "[Remove Session]";
				mes "Delete ^0055FF"+.MapsName$[$KOE_CONTROL[.@i+2]-1]+" "+.Days$[$KOE_CONTROL[.@i*3]-1]+"^000000 session?";
				mes "This action cannot be undone.";
				next;
				set .@j, select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000");
				mes "[Remove Session]";
				if (.@j == 2)
					mes "cancelled.";
				else {
					deletearray $KOE_CONTROL[.@i*3],3;
					set .Size, getarraysize($KOE_CONTROL);
					mes "Session deleted.";
				}
				next;
				break;
			case 3:
				break;
		}
		goto L_Menu1;
	case 4:
		mes "[ King of Emperium ]";
		mes "The King of Emperium hill";
		mes "is a guild royal rumble event";
		mes "in which the strongest guild";
		mes "will receive tons of awards and glory.";
		next;
		goto L_Menu1;
	case 5:
		mes "[ King of Emperium ]";
		mes "Good bye~";
		mes "See you again next time~";
		end;
}
end;

OnStart:
OnMinute00: //START OF KOE
	for(.@i=0;.@i<.Size;.@i+=3)
		if(gettime(DT_DAYOFWEEK) == $KOE_CONTROL[.@i]-1 && gettime(DT_HOUR) == $KOE_CONTROL[.@i+1]-1)
			donpcevent "KoE#"+.Maps$[$KOE_CONTROL[.@i+2]-1]+"::OnStartKoE";
	while(1){
		$@koeactive = 0;
		for(.@i=0;.@i<getarraysize(.Maps$);.@i++)
			if(getd("$@koe_"+.Maps$[.@i]+"_start")){
				$@koeactive = 1;
				break;
			}
		if(!$@koeactive) break;
		//EF_FLOWERCAST
		specialeffect EF_HOMUNCASTING;
		sleep 500;
	}
end;

OnEnd:
OnMinute45: //END OF KOE
	for(.@i=0;.@i<.Size;.@i+=3)
		if(gettime(DT_DAYOFWEEK) == $KOE_CONTROL[.@i]-1 && gettime(DT_HOUR) == $KOE_CONTROL[.@i+1]-1)
			donpcevent "KoE#"+.Maps$[$KOE_CONTROL[.@i+2]-1]+"::OnEndKoE";
end;

OnSchedule:
	freeloop(1);
	for(.@j=0;.@j<7;.@j++){
		mes "[ King of Emperium ]";
		mes "King of Emperium Schedules";
		mes "^0055FF"+.Days$[.@j]+"^000000 :";
		for(.@i=0;.@i<.Size;.@i+=3)
			if($KOE_CONTROL[.@i]-1==.@j)
				mes "~ ^FF5500"+.MapsName$[$KOE_CONTROL[.@i+2]-1]+"^000000 [ "+Add_Zero($KOE_CONTROL[.@i+1]-1)+" - "+Add_Zero2($KOE_CONTROL[.@i+1]-1)+" ]";
		next;
	}
	freeloop(0);
return;

OnInit:
	.gm_allow = 99;	//Manage Sessions
	////////////////////////////////////////////////////
	//CONSTANTS! DO NOT TOUCH WITHOUT KNOWING ANYTHING//
	////////////////////////////////////////////////////
	set .Size,getarraysize($KOE_CONTROL);
	setarray .MapsName$[0], "Geffen Arena",
							"Valkyrie Arena",
							"Payon Arena";

	setarray .Maps$[0], "guild_vs1",
						"koe",
						"koe_goods";
						
	setarray .Warp1$[0],"Left,7,50,Bottom,49,7,Right,92,49,Top,49,91",	//This is Geffen Arena
						"Bottom-Left,12,14,Top-Left,12,84,Bottom-Right,85,14,Top-Right,85,84",			//Valkyrie
						"Bottom-Left,135,135,Top-Left,135,256,Bottom-Right,256,135,Top-Right,255,255";	//Payon
						//"Bottom-Left,11,12,Top-Left,11,87,Bottom-Right,88,12,Top-Right,88,88",	//Freyja
						//"Bottom-Left,11,12,Top-Left,11,87,Bottom-Right,88,12,Top-Right,88,88"; //Non owner warps
						
	setarray .Warp2$[0],"Top-Left,31,68,Bottom-Left,31,31,Bottom-Right,68,31,Top-Right,68,68",
						"Left,26,50,Right,73,50,Top,49,72,Bottom,50,25",
						"Left,171,196,Right,220,196,Top,195,220,Bottom,195,171",
						"Left,26,50,Right,73,50,Top,49,72,Bottom,50,25",
						"Left,26,50,Right,73,50,Top,49,72,Bottom,50,25";	//Owner Warps
						
	setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
	////////////////////////////////////////////////////
	//CONSTANTS! DO NOT TOUCH WITHOUT KNOWING ANYTHING//
	////////////////////////////////////////////////////
	sleep 2000;
	if(gettime(DT_MINUTE)<45)
		donpcevent strnpcinfo(0)+"::OnStart";
	else
		donpcevent strnpcinfo(0)+"::OnEnd";
end;



function Add_Zero {
	return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00";
}

function Add_Zero2 {
	return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"45";
}

//$KOE_CONTROL[0], {Day}{TIME START},{MAP}
}

//==========================KoE Engine===================//
-	script	KoE	-1,{

OnStartKoE:
setd "$@koe_"+strnpcinfo(2)+"_start", 1;
//============ Initilialize ============//
.@timesize = getarraysize(getd(".koe_part_n_"+strnpcinfo(2)+"["+getarraysize(getd(".koe_part_n_"+strnpcinfo(2)))+"]"));
deletearray getd(".koe_part_n_"+strnpcinfo(2)+"[0]"),.@timesize;
deletearray getd(".koe_part_t_"+strnpcinfo(2)+"[0]"),.@timesize;
setd "$koe_"+strnpcinfo(2),0;
SetCastleData strnpcinfo(2),CD_GUILD_ID, 0;
.@size = getarraysize(getd(".koe_"+strnpcinfo(2)+"_def"));
deletearray getd(".koe_"+strnpcinfo(2)+"_def[0]"),.@size;
deletearray getd(".koe_"+strnpcinfo(2)+"_time[0]"),.@size;
setd ".koe_"+strnpcinfo(2)+"_defguild",0;
setd ".koe_"+strnpcinfo(2)+"_deftime",0;
//============ Initilialize ============//
announce "The King of Emperium Hill in "+callsub(OnKoeMap)+" has begun! Prove who's the best!..", 0;
donpcevent "::OnRevKoE";
maprespawnguildid strnpcinfo(2), getd("$koe_"+strnpcinfo(2)), 6;
callsub OnSetKoE;
end;

OnWhisperGlobal: if(getgmlevel()<99) end;
OnEndKoE:
if(!getd("$@koe_"+strnpcinfo(2)+"_start")) end;
announce "The King of Emperium Hill at "+callsub(OnKoeMap)+" is over!~", 0;
setcell strnpcinfo(2),getd(".walkable_"+strnpcinfo(2)+"[0]"),getd(".walkable_"+strnpcinfo(2)+"[1]"),getd(".walkable_"+strnpcinfo(2)+"[2]"),getd(".walkable_"+strnpcinfo(2)+"[3]"),cell_walkable,1;
setd "$@koe_"+strnpcinfo(2)+"_start", 0;
// DEFENDER START
callsub OnDefTime;
for(.@i=0;.@i<getarraysize(getd(".koe_"+strnpcinfo(2)+"_def"));.@i++){
	if(getd(".koe_"+strnpcinfo(2)+"_deftime") < getd(".koe_"+strnpcinfo(2)+"_time["+.@i+"]")){
		setd ".koe_"+strnpcinfo(2)+"_defguild",getd(".koe_"+strnpcinfo(2)+"_def["+.@i+"]");
		setd ".koe_"+strnpcinfo(2)+"_deftime",getd(".koe_"+strnpcinfo(2)+"_time["+.@i+"]");
	}
}
// DEFENDER END
if(getd(".koe_"+strnpcinfo(2)+"_defguild")){
	announce "The Guild "+getguildname(getd(".koe_"+strnpcinfo(2)+"_defguild"))+" defended the "+callsub(OnKoeMap)+" Emperium the longest. "+callsub(OnConvertTime,getd(".koe_"+strnpcinfo(2)+"_deftime")), 0;
	// REWARD START
	if((.Options&1)){
		if(getd(".koe_"+strnpcinfo(2)+"_defguild") == getd("$koe_"+strnpcinfo(2)))
			callsub OnRewardBoth,getd("$koe_"+strnpcinfo(2));
		else{
			callsub OnRewardDefender,getd(".koe_"+strnpcinfo(2)+"_defguild");
			callsub OnRewardHolder,getd("$koe_"+strnpcinfo(2));
		}
	}
	// REWARD END
}
callsub OnRewardLosers;
killmonsterall strnpcinfo(2);
sleep 10000;
mapwarp strnpcinfo(2),"arlandria",156,177;
end;
 
OnConvertTime:
	.@Time = getarg(0);
	.@Hours = .@Time / 3600000;
	.@Time = .@Time - (.@Hours * 3600000);
	.@Minutes = .@Time / 60000;
	.@Time = .@Time - (.@Minutes * 60000);
	.@Seconds = .@Time / 1000;
	.@Time = .@Time - (.@Seconds * 1000);
	.@timestr$ = (.@Hours ? .@Hours+"h ":"")+(.@Minutes ? .@Minutes+"m ":"")+(.@Seconds ? .@Seconds+"s ":"")+(.@Time ? .@Time+"ms ":"");
return .@timestr$;

OnEmpDead:
if(getd("$koe_"+strnpcinfo(2)))
	callsub OnDefTime;
initnpctimer strnpcinfo(0);
SetCastleData strnpcinfo(2),CD_GUILD_ID, getcharid(2);
setd "$koe_"+strnpcinfo(2), getcharid(2);
announce "The current King of Emperium Hill in "+callsub(OnKoeMap)+" is the [ "+ strcharinfo(2) +" ] guild.", 0;
donpcevent "::OnRevKoE";
maprespawnguildid strnpcinfo(2), getd("$koe_"+strnpcinfo(2)), 6;
sleep 500;
if ( getd("$@koe_"+strnpcinfo(2)+"_start") ){
	mapwarp strnpcinfo(2),strnpcinfo(2),getd(".warpbreak_"+strnpcinfo(2)+"[0]"),getd(".warpbreak_"+strnpcinfo(2)+"[1]"),1,getd("$koe_"+strnpcinfo(2));
	callsub OnSetKoE;
	if(getd("."+strnpcinfo(2)+"_guardian")){
		for(.@i=0;.@i<getarraysize(getd("."+strnpcinfo(2)+"_guardian"));.@i+=3)
			guardian strnpcinfo(2),getd("."+strnpcinfo(2)+"_guardian["+(.@i+1)+"]"),getd("."+strnpcinfo(2)+"_guardian["+(.@i+2)+"]"),"Emperium Guardian",getd("."+strnpcinfo(2)+"_guardian["+.@i+"]");
	}
}
end;

//============================= Defender Engine ===============================//
OnDefTime:
	.@tick = getnpctimer(0),strnpcinfo(0);
	.@a = inarray(getd(".koe_"+strnpcinfo(2)+"_def"),getd("$koe_"+strnpcinfo(2)));
	if(.@a>=0)
		setd ".koe_"+strnpcinfo(2)+"_time["+.@a+"]",getd(".koe_"+strnpcinfo(2)+"_time["+.@a+"]")+.@tick;
	else {
		.@size = getarraysize(getd(".koe_"+strnpcinfo(2)+"_def"));
		setd ".koe_"+strnpcinfo(2)+"_def["+.@size+"]",getd("$koe_"+strnpcinfo(2));
		setd ".koe_"+strnpcinfo(2)+"_time["+.@size+"]",getd(".koe_"+strnpcinfo(2)+"_time["+.@size+"]")+.@tick;
	}
return;
//============================== Defender Engine ==============================//

//============================= Barricade Engine ===============================//
OnSetKoE:
	killmonsterall strnpcinfo(2);
	monster strnpcinfo(2),getd("."+strnpcinfo(2)+"_emp[0]"),getd("."+strnpcinfo(2)+"_emp[1]"),"EMPERIUM",.Emperium_id,1,strnpcinfo(0)+"::OnEmpDead";
	if(.enableBarricade){
		setd ".EmpID_"+strnpcinfo(2),$@mobid[0];
		setunitdata getd(".EmpID_"+strnpcinfo(2)),UMOB_DMGIMMUNE,1;
		setd ".Barricade_"+strnpcinfo(2),0;
		for(.@i=0;.@i<getarraysize(getd(".barx_"+strnpcinfo(2)));.@i++){
			if(getd("$koe_"+strnpcinfo(2)))
				guardian strnpcinfo(2),getd(".barx_"+strnpcinfo(2)+"["+.@i+"]"),getd(".bary_"+strnpcinfo(2)+"["+.@i+"]"),"Barricade",.Barricade_id,strnpcinfo(0)+"::OnBarDead";
			else
				monster	strnpcinfo(2),getd(".barx_"+strnpcinfo(2)+"["+.@i+"]"),getd(".bary_"+strnpcinfo(2)+"["+.@i+"]"),"Barricade",.Barricade_id,1,strnpcinfo(0)+"::OnBarDead",0;			
			setd ".Barricade_"+strnpcinfo(2),getd(".Barricade_"+strnpcinfo(2))+1;
		}
		setcell strnpcinfo(2),getd(".walkable_"+strnpcinfo(2)+"[0]"),getd(".walkable_"+strnpcinfo(2)+"[1]"),getd(".walkable_"+strnpcinfo(2)+"[2]"),getd(".walkable_"+strnpcinfo(2)+"[3]"),cell_walkable,0;
	}
return;

OnBarDead:
	setd ".Barricade_"+strnpcinfo(2),getd(".Barricade_"+strnpcinfo(2))-1;
	if(getd(".Barricade_"+strnpcinfo(2)) <= 0){
		mapannounce strnpcinfo(2),"The Barricades have fallen, The Emperium is now Vulnerable!",bc_map;
		setcell strnpcinfo(2),getd(".walkable_"+strnpcinfo(2)+"[0]"),getd(".walkable_"+strnpcinfo(2)+"[1]"),getd(".walkable_"+strnpcinfo(2)+"[2]"),getd(".walkable_"+strnpcinfo(2)+"[3]"),cell_walkable,1;
		setunitdata getd(".EmpID_"+strnpcinfo(2)),UMOB_DMGIMMUNE,0;
	}
end;
//============================= Barricade Engine ===============================//

//=============================== Reward Engine ===============================//
OnRewardLosers:
	freeloop(1);
	.@size = getarraysize(getd(".koe_part_n_"+strnpcinfo(2)));
	copyarray .@aid[0],getd(".koe_part_n_"+strnpcinfo(2)+"[0]"),.@size;
	copyarray .@time[0],getd(".koe_part_t_"+strnpcinfo(2)+"[0]"),.@size;
	for(.@j=0;.@j<.@size;.@j+=1) {
		if (!(.Options&4)) {
			if(.Options&8){
				set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
				if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
				setd ".@ip_"+.@i+"_"+.@ip$,1;
			}
			if(.Options&16){
				set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
				if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
				setd ".@mac_"+.@i+"_"+.@mac$,1;
			}
		}
		if(.@time[.@j] <= .timepart) continue;
		if (isloggedin(.@aid[.@j])) {
			if(getd(".koe_"+strnpcinfo(2)+"_defguild") == getcharid(2,convertpcinfo(.@aid[.@j],CPC_NAME)) ||
				getd("$koe_"+strnpcinfo(2)) == getcharid(2,convertpcinfo(.@aid[.@j],CPC_NAME))) continue;
			for(set .@k,0; .@k<getarraysize(.partprize); set .@k,.@k+2)
				getitem .partprize[.@k], .partprize[.@k+1], .@aid[.@j];
			message rid2name(.@aid[.@j]),"You have been rewarded for participating for "+.timepart+" minutes at "+callsub(OnKoeMap)+" King of Emperium.";
		}
	}
	freeloop(0);
return;

OnRewardHolder:
	freeloop(1);
	.@gid = getarg(0);
	getguildmember .@gid,1,.@cid;
	getguildmember .@gid,2,.@aid;
	.@size = $@guildmembercount;
	if(.Options&4) .@size = 1;
	for(.@j=0;.@j<.@size;.@j+=1) {
		if (!(.Options&4) && isloggedin(.@aid[.@j],.@cid[.@j])) {
			if(.Options&8){
				set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
				if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
				setd ".@ip_"+.@i+"_"+.@ip$,1;
			}
			if(.Options&16){
				set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
				if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
				setd ".@mac_"+.@i+"_"+.@mac$,1;
			}
		}
		.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),.@aid[.@j]);
		if(.@arr < 0 || getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]") < .timepart) continue;
		if (isloggedin(.@aid[.@j],.@cid[.@j])) {
			for(set .@k,0; .@k<getarraysize(.holderprize); set .@k,.@k+2)
				getitem .holderprize[.@k], .holderprize[.@k+1], .@aid[.@j];
			message rid2name(.@aid[.@j]),"You have been rewarded for being part of the guild at "+callsub(OnKoeMap)+" King of Emperium.";
		}
	}
	freeloop(0);
return;	

OnRewardDefender:
	freeloop(1);
	.@gid = getarg(0);
	getguildmember .@gid,1,.@cid;
	getguildmember .@gid,2,.@aid;
	.@size = $@guildmembercount;
	if(.Options&4) .@size = 1;
	for(.@j=0;.@j<.@size;.@j+=1) {
		if (!(.Options&4) && isloggedin(.@aid[.@j],.@cid[.@j])) {
			if(.Options&8){
				set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
				if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
				setd ".@ip_"+.@i+"_"+.@ip$,1;
			}
			if(.Options&16){
				set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
				if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
				setd ".@mac_"+.@i+"_"+.@mac$,1;
			}
		}
		.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),.@aid[.@j]);
		if(.@arr < 0 || getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]") < .timepart) continue;
		if (isloggedin(.@aid[.@j],.@cid[.@j])) {
			for(set .@k,0; .@k<getarraysize(.defenderprize); set .@k,.@k+2)
				getitem .defenderprize[.@k], .defenderprize[.@k+1], .@aid[.@j];
			message rid2name(.@aid[.@j]),"You have been rewarded for gracefully defending your Emperium "+callsub(OnKoeMap)+" King of Emperium.";
		}
	}
	freeloop(0);
return;
	
OnRewardBoth:
	freeloop(1);
	.@gid = getarg(0);
	getguildmember .@gid,1,.@cid;
	getguildmember .@gid,2,.@aid;
	.@size = $@guildmembercount;
	if(.Options&4) .@size = 1;
	for(.@j=0;.@j<.@size;.@j+=1) {
		if (!(.Options&4) && isloggedin(.@aid[.@j],.@cid[.@j])) {
			if(.Options&8){
				set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
				if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
				setd ".@ip_"+.@i+"_"+.@ip$,1;
			}
			if(.Options&16){
				set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
				if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
				setd ".@mac_"+.@i+"_"+.@mac$,1;
			}
		}
		.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),.@aid[.@j]);
		if(.@arr < 0 || getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]") < .timepart) continue;
		if (isloggedin(.@aid[.@j],.@cid[.@j])) {
			for(set .@k,0; .@k<getarraysize(.bothprize); set .@k,.@k+2)
				getitem .bothprize[.@k], .bothprize[.@k+1], .@aid[.@j];
			message rid2name(.@aid[.@j]),"You have been rewarded for being a part of the best defender guild and King Of Emperium Holder at "+callsub(OnKoeMap)+".";
		}
	}
	freeloop(0);
return;	

OnGetUniqueID:
	query_sql("SELECT `last_unique_id` FROM `login` WHERE `account_id` = '"+getarg(0)+"'",.@mac$);
return .@mac$;

OnKoeMap:
	for(.@i=0;.@i<getarraysize(.maps$);.@i+=2)
		if(.maps$[.@i]==strnpcinfo(2))
			return .maps$[.@i+1];
return;
//=============================== Reward Engine ===============================//

OnPCLoadMapEvent:
	if(.Participation) //Enable Participation?
	if(@lastmap$!=strnpcinfo(2) && strcharinfo(3)==strnpcinfo(2) && getd("$@koe_"+strnpcinfo(2)+"_start")){
		set @lastmap$,strcharinfo(3);
		message strcharinfo(0),"KoE Points Acquisition activated.";
		addtimer 60000,strnpcinfo(0)+"::OnParticipate";
	}
end;

OnParticipate:
	set @lastmap$,strcharinfo(3);
	if(@lastmap$==strnpcinfo(2) && getd("$@koe_"+strnpcinfo(2)+"_start")){
		addtimer 60000,strnpcinfo(0)+"::OnParticipate";
		set @KOEPOINTS,@KOEPOINTS+1;
		.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),getcharid(3));
		if(.@arr >= 0)
			setd ".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]",getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]")+1;
		else {
			setd ".koe_part_n_"+strnpcinfo(2)+"["+getarraysize(getd(".koe_part_n_"+strnpcinfo(2)))+"]",getcharid(3);
			setd ".koe_part_t_"+strnpcinfo(2)+"["+getarraysize(getd(".koe_part_n_"+strnpcinfo(2)))+"]",getd(".koe_part_n_"+strnpcinfo(2)+"["+getd(".koe_part_n_"+strnpcinfo(2))+"]")+1;
		}
	} else
		set @lastmap$,"";
end;

OnInit:
// -----------------------------------------------------------
//  Reward options.
// -----------------------------------------------------------
//  [1] Enable rewards.
//  [4] Only reward Guild Masters.
//      - If not set, all guild members are rewarded.
//      - If mailing is enabled (option 2), offline Guild Masters WILL receive rewards.
//  [8] Duplicate IP check. /Gepard
//      - Members in a guild with the same IP address are not rewarded.
//      - If Guild Masters is enabled (option 4), this feature is not used.
//  [16] Duplicate Gepard ID check.
//      - Members in a guild with the same Mac address are not rewarded.
//      - If Guild Masters is enabled (option 4), this feature is not used.
// -----------------------------------------------------------
	// Combine values as needed (e.g. 1|8 = 1+8 = 9).
	set .Options, 1;
	// Set Prizes Here

	set .timepart,10;	//Time needed to receive participation reward;
	set .Participation,1;	//Enable Participation points?
	setarray .partprize[0],501,60;			//Participants prize ( non winner - LOSERS only );
	setarray .defenderprize[0],501,100;		//Longest Defender Prize
	setarray .holderprize[0],501,100;			//Emperium Holder at last Minute
	setarray .bothprize[0],501,300;			//If Defender and Holder is same guild, This will be the prize instead of defenderprize and holderprize
	
	setarray .maps$[0],	// Map ID, Map Name
		"guild_vs1","Geffen Arena",
		"koe","Valhalla Arena",
		"koe_goods","Payon Arena",
		"koe_gloss","Freyja Arena",
		"koe_mash","Rachel Arena";
	
	set .Emperium_id,1288;
	set .Barricade_id,1906;
	
	//Emperium Position X,Y-Axis
	setarray .guild_vs1_emp[0],50,50;
	setarray .koe_emp[0],50,50;
	setarray .koe_goods_emp[0],196,196;
	setarray .koe_gloss_emp[0],50,50;
	setarray .koe_mash_emp[0],50,50;
	
	//Guardian Setup. Mob ID,X,Y
	setarray .guild_vs1_guardian[0],1950,36,25;	//valkyrie
	setarray .koe_guardian[0],1950,36,25;		//valkyrie					
	setarray .koe_gloss_guardian[0],1950,36,25;	//valkyrie
	setarray .koe_goods_guardian[0],1950,36,25;	//Eddga
	setarray .koe_mash_guardian[0],1949,40,49;
	//Barricade Setup
	set .enableBarricade,1;	//Enable Barricade?
	//Geffen
	setarray .warpbreak_guild_vs1[0],42,57;
	setarray .walkable_guild_vs1[0],48,51,51,48;
	setarray .barx_guild_vs1[0],47,47,52,52;
	setarray .bary_guild_vs1[0],52,47,47,52;
	//Valkyrie
	setarray .warpbreak_koe[0],48,64;
	setarray .walkable_koe[0],48,51,51,48;
	setarray .barx_koe[0],46,53,53,46,46,46,48,51,53,53,51,48;
	setarray .bary_koe[0],46,46,53,53,51,48,46,46,48,51,53,53;
	//Payon
	setarray .warpbreak_koe_goods[0],184,197;
	setarray .walkable_koe_goods[0],194,197,197,194;
	setarray .barx_koe_goods[0],192,192,199,199,197,194,192,192,194,197,199,199;
	setarray .bary_koe_goods[0],199,192,192,199,199,199,197,194,192,192,194,197;
	//Freyja
	setarray .warpbreak_koe_gloss[0],58,58;
	setarray .walkable_koe_gloss[0],48,51,51,48;
	setarray .barx_koe_gloss[0],46,46,53,53,48,51,53,53,51,48,46,46;
	setarray .bary_koe_gloss[0],46,53,53,46,53,53,51,48,46,46,48,51;
	//Rachel
	setarray .warpbreak_koe_mash[0],58,58;
	setarray .walkable_koe_mash[0],48,51,51,48;
	setarray .barx_koe_mash[0],46,46,53,53,48,51,53,53,51,48,46,46;
	setarray .bary_koe_mash[0],46,53,53,46,53,53,51,48,46,46,48,51;
	//Barricade Setup
	
	//Mapflags
	for(.@i=0;.@i<getarraysize(.Maps$);.@i+=2){
		setmapflag .Maps$[.@i],mf_gvg;
		setmapflag .Maps$[.@i],mf_nobranch;
		setmapflag .Maps$[.@i],mf_nomemo;
		setmapflag .Maps$[.@i],mf_nopenalty;
		setmapflag .Maps$[.@i],mf_nosave;
		setmapflag .Maps$[.@i],mf_noteleport;
		setmapflag .Maps$[.@i],mf_nowarp;
		setmapflag .Maps$[.@i],mf_nowarpto;
		setmapflag .Maps$[.@i],mf_loadevent;
		setmapflag .Maps$[.@i],mf_kingofemp;

	}
	//Clear Map
	for(.@i=0;.@i<getarraysize(.Maps$);.@i+=2)
		killmonsterall .Maps$[.@i];
end;
}

-	duplicate(KoE)	KoE#guild_vs1	722
-	duplicate(KoE)	KoE#koe	722
-	duplicate(KoE)	KoE#koe_goods	722
-	duplicate(KoE)	KoE#koe_gloss	722
-	duplicate(KoE)	KoE#koe_mash	722

/*arlandria,141,163,6	script	KOE Shop	791,{
	mes "[ King of Emperium ]";
	mes "You can spend your King of Emperium Points here";
	mes "^FFFFFF_^000000";
	set #KOEPOINTS,(#KOEPOINTS+@KOEPOINTS);
	set @KOEPOINTS,0;
	mes "You current points: ^0000FF"+#KOEPOINTS+"^000000";
	callshop "KOEPOINTS",1;
	end;
OnPCLogoutEvent:
	set #KOEPOINTS,(#KOEPOINTS+@KOEPOINTS);
end;
	OnInit:	
		PUBTITLE:
			showscript "KoE Shop";
			sleep 3000;
		goto PUBTITLE;
	end;

}
//ADD YOUR ITEMS HERE
-	pointshop	KOEPOINTS	-0,#KOEPOINTS,501:-1,502:-1
*/
//===================== Flag Configuration =================//
-	script	::koe_flag	GUILD_FLAG,{
	mes "[King of Emperium Hill]";
	if (!getd("$koe_"+strnpcinfo(2)))
		mes "There is no current King of Emperium in ^0055FF"+strnpcinfo(1)+"^000000.";
	else
		mes "The Current King of Emperium Hill at ^0055FF"+strnpcinfo(1)+"^000000 is the [ ^0055FF"+ getguildname(getd("$koe_"+strnpcinfo(2))) +"^000000 ] guild.";
	close;
OnAgitInit: //Uncomment this line to make the emblem stay after @reloadscript
OnRevKoE:
	if(getd("$koe_"+strnpcinfo(2)))
		flagemblem getd("$koe_"+strnpcinfo(2));
	end;
}
//prontera,66,183,5	duplicate(koe_flag)	Geffen Arena#guild_vs12	GUILD_FLAG
//prontera,66,180,5	duplicate(koe_flag)	Payon Arena#koe_goods2	GUILD_FLAG
//prontera,66,177,5	duplicate(koe_flag)	Rachel Arena#koe_mash2	GUILD_FLAG
//prontera,66,174,5	duplicate(koe_flag)	Valkyrie Arena#koe2	GUILD_FLAG
//prontera,66,171,5	duplicate(koe_flag)	Freyja Arena#koe_gloss2	GUILD_FLAG
//===================== Flag Configuration =================//

im using the AnnieRuru Script i need help to do this thing. can someone do this for me?
i need to add the bindatcmd "koe" if the event is active menu will comes out to warp you inside the koe castle and if inactive it will dispbottom its inactive.
this concept is same as the woe controller of Euphy.. 
thank you in advanced.

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...