Jump to content
  • 0
Ice Bear

Euphy's WOE Controller Rewards

Question

in this line how can i make it divided into two category

getitem for guild master only and getitem for members only ?

im using two boxes for woe prize guild master box ID 45000 and guild member box ID 45001

i want the system check if the player is a guild master then give the guild master box else if the player is a guild member give the guild member box 😄

for(set [email protected],0; [email protected]<getarraysize(.Reward); set [email protected],[email protected]+2)
getitem .Reward[[email protected]], .Reward[[email protected]+1], [email protected][[email protected]];

 

Edited by DaemonSpade
Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0
1 hour ago, DaemonSpade said:

thanks for encouragement and giving idea sir 😄

I just read your code right now, I think there is a better way to do that..  (without using SQL)

just few notes :

1. Use script commands available at doc/script_commands.txt such as *getguildmaster, *getcharid, *strcharinfo, *attachrid..
2. You are using "$" as variable.. read in script_commands the functions of the variables.. you can just use "[email protected]" instead.. "[email protected]$"
3. Since I still didnt check Euphy's script, I assume it ran in a loop.. 
	[email protected][[email protected]] -> already contains account ID of something?
	you can run it using *attachrid sample:

	attachrid [email protected][[email protected]]; // attaches the [email protected]
	getitem 501, 10;	// gets the item..
	detachrid; // detaches the rid 

As they say, there is still room for improvements.. I constantly learn from my mistakes and being pointed out is not a bad thing.. it means new thing you will learn which will improve your skills a lot.

Link to comment
Share on other sites

  • 0
3 hours ago, DaemonSpade said:

in this line how can i make it divided into two category

getitem for guild master only and getitem for members only ? 

im using two boxes for woe prize guild master box ID 45000 and guild member box ID 45001

i want the system check if the player is a guild master then give the guild master box else if the player is a guild member give the guild member box 😄 

for(set [email protected],0; [email protected]<getarraysize(.Reward); set [email protected],[email protected]+2)
getitem .Reward[[email protected]], .Reward[[email protected]+1], [email protected][[email protected]];

 

I assume you have basic script knowledge..

	if (strcharinfo(0) == getguildmaster( getcharid(2) )) // checks if the player interacting the npc is a guild master...
		getitem 45000, 1;	// if so... guild master reward is given here
	else 
		getitem 45001, 1;	// if not.. guild member reward is given here

That is just a psudo-code, meaning you still have to configure it to make it work with euphy's script (which I obviously didn't check /heh )

Edited by pajodex
  • MVP 1
Link to comment
Share on other sites

  • 0

i tried same line of code before it doesnt work

[Error]: buildin_strcharinfo: fatal error ! player not attached!
[Debug]: Function: strcharinfo (1 parameter):
[Debug]: Data: number value=0

this pops out still wondering how the script will check if its guild master without attaching the player

maybe i should try more test 😄 until i find answers

Edited by DaemonSpade
Link to comment
Share on other sites

  • 0
On 1/28/2019 at 3:40 PM, pajodex said:

I assume you have basic script knowledge..

	if (strcharinfo(0) == getguildmaster( getcharid(2) )) // checks if the player interacting the npc is a guild master...
		getitem 45000, 1;	// if so... guild master reward is given here
	else 
		getitem 45001, 1;	// if not.. guild member reward is given here

That is just a psudo-code, meaning you still have to configure it to make it work with euphy's script (which I obviously didn't check /heh )

it doesnt work

[Error]: buildin_strcharinfo: fatal error ! player not attached!
[Debug]: Function: strcharinfo (1 parameter):
[Debug]: Data: number value=0

Link to comment
Share on other sites

  • 0
4 minutes ago, DaemonSpade said:

it doesnt work

if you just copy and pasted it, of course it wont.. I said :

On ‎1‎/‎28‎/‎2019 at 3:40 PM, pajodex said:

That is just a psudo-code, meaning you still have to configure it to make it work with euphy's script (which I obviously didn't check /heh )

 

  • MVP 1
Link to comment
Share on other sites

  • 0
19 minutes ago, pajodex said:

if you just copy and pasted it, of course it wont.. I said :

 

yes sir

[email protected][[email protected]] = this line of code shows the account id of the player

and strcharinfo(0) is for the character name

can i use [email protected][[email protected]] or the account id to fetch its character id but if the account has many character maybe i fetch(SQL) by online state of the character so i can get the exact character id that ask by the getguildmaster( getcharid(2) ) will this work 😄 im confused right now

Edited by DaemonSpade
Link to comment
Share on other sites

  • 0
				} else if (isloggedin([email protected][[email protected]])) {
					query_sql("SELECT `name` FROM `char` WHERE `account_id` = '"[email protected][[email protected]]+"'"),$leadername$; //get the name using the account id
					query_sql("SELECT `master` FROM `guild` WHERE `master` = '"+$leadername$+"'"),$guildleader$; //match mastername to name
					if($leadername$ != $guildleader$){ //if not match reward for member only 501 as example and 502 for guild leader if the name matched
					getitem 501, 1, [email protected][[email protected]];
					} else {
					getitem 502, 1, [email protected][[email protected]];
					}
					message rid2name([email protected][[email protected]]),"You have been rewarded for conquering "+getcastlename(.Castles$[[email protected]])+".";
				}

solved 😄 thanks sir @pajodex 

Edited by DaemonSpade
Link to comment
Share on other sites

  • 0
//===== rAthena Script =======================================
//= Euphy's WOE Controller
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.5
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= A controller for War of Emperium designed for
//= simplicity and ease of use.
//= Many concepts taken from ToastOfDoom's script,
//= and "rewards" function originally by Goddameit.
//===== Additional Comments: =================================
//= Be sure to disable the default agit controllers!
//== npc\guild\agit_controller.txt
//== npc\guild2\agit_start_se.txt
//============================================================

// Information NPC
//============================================================
prontera,149,193,4	script	WOE Information	835,{
	doevent "WOE_CONTROL::OnMenu";
	end;
OnAgitStart:
	while(agitcheck()) {
		specialeffect EF_BEGINSPELL6;
		sleep 425;
	}
	end;
}

// Script Core
//============================================================
-	script	WOE_CONTROL	-1,{
function Disp_Owner; function Add_Zero;

OnInit:

// -----------------------------------------------------------
//  Configuration settings.
// -----------------------------------------------------------

	set .CastleWarp,0;		// 1: Always enable all castle warps. | 0: Warp only to active castles.
	set .AutoKick,1;		// Automatically kick players from inactive castles during WOE? (1:yes / 0:no)
	set .NoOwner,0; 		// Automatically kick players from unconquered castles outside of WOE? (1:yes / 0:no)
	set .ExitWarp,0;		// Warp all players from castles when WOE ends? (1:yes / 0:no)
	set .GMAccess,99;		// GM level required to access Session Manager.

// -----------------------------------------------------------
//  Reward options.
// -----------------------------------------------------------
//  [1] Enable rewards.
//  [2] Mail all rewards.
//      - If not set, players receive items in their inventory.
//      - Only ONE item can be sent via mail, plus Zeny.
//      - Note that offline players do NOT receive 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.
//      - Members in a guild with the same IP 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|8;

	// Rewards per castle.
	// -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...}
	// -- via mail (option 2): <itemID>,<amount>,<Zeny>
	setarray .Reward[0],45001,1;

	setarray .Reward_Leader[0], 45000, 1;

// -----------------------------------------------------------
//  Constants (leave this section alone).
// -----------------------------------------------------------

	setarray .Castles$[0],
		"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
		"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
		"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
		"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
		"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
		"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
	setarray .EndLabel$[0],"ar01","ar02","ar03","ar04","ar05","sc01","sc02","sc03","sc04","sc05";
	setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
	setarray .Regions$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt";
	setarray .Map$[0],"prt_gld","pay_gld","gef_fild13","alde_gld","aru_gld","sch_gld";
	setarray .MapX[0],134,240,153,111,208,121,295,317,140,204,214,308,143,193,305,48, 95,142,239,264,158,83, 68,299,292,293,288, 97,137, 71;
	setarray .MapY[0], 65,128,137,240,240,233,116,293,160,266, 75,240,240,278, 87,83,249, 85,242, 90,272,47,155,345,107,100,252,196, 90,315;

// -----------------------------------------------------------

	set .Size, getarraysize($WOE_CONTROL);
	if (.AutoKick || .NoOwner)
		for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) {
			setmapflag .Castles$[[email protected]], mf_loadevent;
			setd "."+.Castles$[[email protected]], [email protected];
		}
	if (!agitcheck() && !agitcheck2()) sleep 4000;
	set .Init,1;

OnMinute00:
	freeloop(1);
	if (agitcheck() || agitcheck2()) {
		for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
			if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) == $WOE_CONTROL[[email protected]+2]) {
			OnWOEEnd:
				announce "The War Of Emperium is over!",bc_all|bc_woe;
				AgitEnd; AgitEnd2;
				sleep 1000;
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) {
					if (.Active[0]&(1<<[email protected])) Disp_Owner(.Castles$[[email protected]],1);
					if (.ExitWarp) maprespawnguildid .Castles$[[email protected]],0,3;
				}
				if ((.Options&1) && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0];
				deletearray .Active[0],2;
				if (.ForceEnd) { set .ForceEnd,0; end; }
				break;
			}
	}
	if ((!agitcheck() && !agitcheck2()) || .Init) {
		if (!agitcheck() && !agitcheck2()) set .Init,0;
		for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
			if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) >= $WOE_CONTROL[[email protected]+1] && gettime(DT_HOUR) < $WOE_CONTROL[[email protected]+2]) {
				deletearray .Active[0],2;
				set .Active[0], $WOE_CONTROL[[email protected]+3];
				if (.Init) { AgitEnd; AgitEnd2; }
				else announce "The War Of Emperium has begun!",bc_all|bc_woe;
				sleep 1000;
				AgitStart; AgitStart2;
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) {
					if (.Active[0]&(1<<[email protected])) {
						if (!.Init) Disp_Owner(.Castles$[[email protected]],0);
						set .Active[1], .Active[1] | (1<<(([email protected]/5)+1));
					} else {
						if ([email protected]<20) {
							donpcevent "Agit#"+.Castles$[[email protected]]+"::OnAgitEnd";
							killmonster .Castles$[[email protected]], "Agit#"+.Castles$[[email protected]]+"::OnAgitBreak";
						} else {
							donpcevent "Manager#"+.Castles$[[email protected]]+"::OnAgitEnd2";
							killmonster .Castles$[[email protected]], "Steward#"+.EndLabel$[[email protected]]+"::OnStartArena";
						}
					}
				}
				break;
			}
	}
	set .Init,0;
	end;

function Disp_Owner {
	set [email protected], getcastledata(getarg(0),1);
	if ([email protected]) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname([email protected])+"] guild.",bc_all|bc_woe;
	else announce "The ["+getcastlename(getarg(0))+"] castle is currently unoccupied.",bc_all|bc_woe;
	return;
}
function Add_Zero {
	return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00";
}

OnReward:
	set [email protected]$, ((.Options&4)?"position = 0":"online = 1");
	if (.Options&2) set [email protected]$,gettimestr("%B %d, %Y",21);
	freeloop(1);
	for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
		if (getarg(0)&(1<<[email protected])) {
			set [email protected], getcastledata(.Castles$[[email protected]],1);
			if ([email protected]) continue;
			set [email protected], query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"[email protected]+"' AND "[email protected]$,[email protected],[email protected]);
			set [email protected]_cid, getguildmasterid([email protected]);
			for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) {
				if ((.Options&8) && !(.Options&4)) {
					set [email protected]$, replacestr(getcharip([email protected][[email protected]]),".","a");
					if (getd("[email protected]_"[email protected]+"_"[email protected]$)) continue;
					setd "[email protected]_"[email protected]+"_"[email protected]$,1;
				}
				if (.Options&2) {
					if ([email protected][[email protected]] == [email protected]_cid) {
						[email protected]_id = .Reward[0];
						[email protected]_amt = .Reward[1];
						[email protected]_zeny = .Reward[2];
					} else {
						[email protected]_id = .Reward_Leader[0];
						[email protected]_amt = .Reward_Leader[1];
						[email protected]_zeny = .Reward_Leader[2];
					}
					query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+
					          "'no-reply',"[email protected][[email protected]]+",'** Siege Reward: "+getcastlename(.Castles$[[email protected]])+" **',"+
					          "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "[email protected]$+".% % % % % [ Your reward is attached. ]',"+
					          [email protected]_id+","[email protected]_amt+",0,"[email protected]_zeny+",UNIX_TIMESTAMP(NOW()))");
					if (!getd("[email protected]_"[email protected][[email protected]]) && isloggedin([email protected][[email protected]],[email protected][[email protected]])) {
						setd "[email protected]_"[email protected][[email protected]],1;
						message rid2name([email protected][[email protected]]),"You've got mail! Please re-login to update your mailing list.";
					}
				} else if (isloggedin([email protected][[email protected]])) {
					deletearray [email protected];
					if ([email protected][[email protected]] == [email protected]_cid)
						copyarray [email protected][0],.Reward_Leader[0],getarraysize(.Reward_Leader);
					else
						copyarray [email protected][0],.Reward[0],getarraysize(.Reward);
					[email protected] = getarraysize([email protected]);
					for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+2)
						getitem [email protected][[email protected]], [email protected][[email protected]+1], [email protected][[email protected]];
					message rid2name([email protected][[email protected]]),"You have been rewarded for conquering "+getcastlename(.Castles$[[email protected]])+".";
				}
			}
		}
	if (.Options&2) query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
	return;

OnPCLoadMapEvent:
	if (!compare(strcharinfo(3),"g_cas")) end;
	if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(3),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(3))))) {
		if (getcharid(2) && getcastledata(strcharinfo(3),1) == getcharid(2)) end;
		sleep2 1000;
		message strcharinfo(0), getcastlename(strcharinfo(3))+" is currently inactive.";
		sleep2 5000;
		if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0;
	}
	end;

OnMenu:
while(1) {
	mes "[WOE Information]";
	if (agitcheck() || agitcheck2()) {
		if (.Active[0]) {
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
				if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) >= $WOE_CONTROL[[email protected]+1] && gettime(DT_HOUR) < $WOE_CONTROL[[email protected]+2]) {
					set [email protected], $WOE_CONTROL[[email protected]+2];
					break;
				}
			mes "The War of Emperium is ^0055FFactive^000000 until ^FF0000"+Add_Zero([email protected])+"^000000 in the following regions:";
			mes " ";
			for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1)
				if (.Active[1]&(1<<([email protected]+1))) mes " > ^777777"+.Regions$[[email protected]]+"^000000";
		} else
			mes "The War of Emperium is ^0055FFactive^000000.";
	} else {
		for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
			if ((gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) <= $WOE_CONTROL[[email protected]+1]) || gettime(DT_DAYOFWEEK) < $WOE_CONTROL[[email protected]]) {
				setarray [email protected][0],$WOE_CONTROL[[email protected]],$WOE_CONTROL[[email protected]+1];
				break;
			}
		if (!getarraysize([email protected]))
			setarray [email protected][0],$WOE_CONTROL[0],$WOE_CONTROL[1];
		mes "The War of Emperium is ^777777inactive^000000.";
		if (.Size) {
			mes " ";
			mes "The next session will begin";
			mes "on ^0055FF"+.Days$[[email protected][0]]+"^000000 at "+Add_Zero([email protected][1])+"^000000.";
		}
	}
	next;
	switch(select(""+((.CastleWarp || .Active[1])?" ~ Warp to castles...":"")+": ~ Check schedule...: ~ View castle owners...:"+((getgmlevel()<.GMAccess || !getgmlevel())?"":" ~ Manage sessions...")+": ~ ^777777Cancel^000000")) {
	case 1:
		if (.CastleWarp) set [email protected]$,"^0055FF";
		set [email protected]$,"";
		for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1) {
			if (.CastleWarp || .Active[1]&(1<<([email protected]+1)))
				set [email protected]$, [email protected]$+" ~ "+((.Active[1]&(1<<([email protected]+1)))[email protected]$:"^777777")+.Regions$[[email protected]]+" Castles^000000";
			set [email protected]$, [email protected]$+":";
		}
		set [email protected], select([email protected]$)-1;
		set [email protected]$,"";
		for(set [email protected],[email protected]*5; [email protected]<([email protected]*5)+5; set [email protected],[email protected]+1) {
			if (.CastleWarp || .Active[0]&(1<<[email protected]))
				set [email protected]$, [email protected]$+" ~ "+((.Active[0]&(1<<[email protected]))[email protected]$:"^777777")+getcastlename(.Castles$[[email protected]])+"^000000";
			set [email protected]$, [email protected]$+":";
		}
		set [email protected], select([email protected]$)-1;
		warp .Map$[[email protected]],.MapX[([email protected]*5)[email protected]],.MapY[([email protected]*5)[email protected]];
		close;
	case 2:
		mes "[Schedule]";
		if (.Size) {
			freeloop(1);
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) {
				mes "> ^FF0000"+.Days$[$WOE_CONTROL[[email protected]]]+" ("+Add_Zero($WOE_CONTROL[[email protected]+1])+"-"+Add_Zero($WOE_CONTROL[[email protected]+2])+")^000000";
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
					if ($WOE_CONTROL[[email protected]+3]&(1<<[email protected])) mes "  ~ "+getcastlename(.Castles$[[email protected]])+" ^777777("+.Castles$[[email protected]]+")^000000";
				if ([email protected]+4 < .Size) mes " ";
			}
			freeloop(0);
		} else
			mes "No times are configured.";
		next;
		break;
	case 3:
		mes "[Castle Ownership]";
		for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1) {
			set [email protected], [email protected]*5;
			mes "> ^FF0000"+.Regions$[[email protected]]+"^000000";
			for(set [email protected],[email protected]; [email protected]<([email protected]+5); set [email protected],[email protected]+1) { 
				set [email protected], getcastledata(.Castles$[[email protected]],1);
				mes "  ~ "+getcastlename(.Castles$[[email protected]])+": "+(([email protected])?"^0055FF"+getguildname([email protected]):"^777777unoccupied")+"^000000";
			}
			if ([email protected] < 5) mes " ";
		}
		next;
		break;
	case 4:
	while(1) {
		mes "[Session Manager]";
		mes "There are ^0055FF"+(.Size/4)+" session(s)^000000 configured.";
		mes "What would you like to do?";
		next;
		switch(select(" ~ Add a session...: ~ Delete a session...: ~ Reload settings...:"+((agitcheck() || agitcheck2())?" ~ End WOE session...":"")+": ~ ^777777Go back^000000")) {
		case 1:
			mes "[New Session]";
			if (.Size > 127) {
				mes "You have already reached the maximum of 32 sessions.";
				next;
				break;
			}
			mes "Select a day.";
			next;
			set [email protected], select(" ~ "+implode(.Days$,": ~ "))-1;
			mes "[New Session]";
			mes "Select a start time for ^0055FF"+.Days$[[email protected]]+"^000000.";
			next;
			set [email protected]$,"";
			for(set [email protected],0; [email protected]<23; set [email protected],[email protected]+1)
				set [email protected]$, [email protected]$+" ~ "+Add_Zero([email protected],1)+":";
			set [email protected], select([email protected]$)-1;
			mes "[New Session]";
			mes "Select an end time for ^0055FF"+.Days$[[email protected]]+"^000000.";
			next;
			set [email protected]$,"";
			for(set [email protected],[email protected]+1; [email protected]<24; [email protected],[email protected]+1)
				set [email protected]$, [email protected]$+" ~ "+Add_Zero([email protected],1)+":";
			set [email protected], select([email protected]$)[email protected];
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
				if ([email protected] == $WOE_CONTROL[[email protected]] &&
				   (([email protected] >= $WOE_CONTROL[[email protected]+1] && [email protected] < $WOE_CONTROL[[email protected]+2]) ||
				    ([email protected] > $WOE_CONTROL[[email protected]+1] && [email protected] <= $WOE_CONTROL[[email protected]+2]) ||
				    ([email protected] <= $WOE_CONTROL[[email protected]+1] && [email protected] >= $WOE_CONTROL[[email protected]+2]))) {
					mes "[New Session]";
					mes "The chosen times overlap with an existing session.";
					next;
					set [email protected],1;
					break;
				}
			if ([email protected]) { set [email protected],0; break; }
			set [email protected],0;
			while(1) {
				mes "[New Session]";
				mes "^0055FF"+.Days$[[email protected]]+" ("+Add_Zero([email protected])+"-"+Add_Zero([email protected])+")^000000";
				mes " > Castles:";
				if ([email protected])
					mes "   ~ ^777777(none selected)^000000";
				else for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
					if ([email protected]&(1<<[email protected])) mes "   ~ "+getcastlename(.Castles$[[email protected]])+" ("+.Castles$[[email protected]]+")";
				next;
				set [email protected]$,(([email protected])?" ~ ^FF0000Finished...^000000":"")+":";
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
					set [email protected]$, [email protected]$+" ~ "+(([email protected]&(1<<[email protected]))?"^0055FF":"")+getcastlename(.Castles$[[email protected]])+" ("+.Castles$[[email protected]]+")^000000:";
				set [email protected], select([email protected]$)-1;
				if ([email protected])
					set [email protected], [email protected]^(1<<([email protected]));
				else {
					mes "[New Session]";
					mes "Are you sure?";
					next;
					switch(select(" ~ ^0055FFAdd session...^000000: ~ Continue selecting castles...: ~ ^777777Cancel^000000")) {
					case 1:
						for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
							if (([email protected] == $WOE_CONTROL[[email protected]] && [email protected] <= $WOE_CONTROL[[email protected]+1]) || [email protected] < $WOE_CONTROL[[email protected]]) {
								set [email protected],1;
								break;
							}
						if ([email protected]) { set [email protected],1; set [email protected],.Size; }
						copyarray $WOE_CONTROL[[email protected]+4], $WOE_CONTROL[[email protected]], [email protected];
						setarray $WOE_CONTROL[[email protected]], [email protected], [email protected], [email protected], [email protected];
						set .Size, getarraysize($WOE_CONTROL);
					case 3:
						mes "[New Session]";
						mes (([email protected])?"Session added.":"cancelled.");
						next;
						set [email protected],1;
					case 2:
						break;
					}
					if ([email protected]) { set [email protected],0; break; }
				}
			}
			break;
		case 2:
			mes "[Remove Session]";
			if (!.Size) {
				mes "There are no sessions configured.";
				next;
				break;
			}
			mes "Select a session to remove.";
			next;
			set [email protected]$,"";
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
				set [email protected]$, [email protected]$+" ~ "+.Days$[$WOE_CONTROL[[email protected]]]+" ("+Add_Zero($WOE_CONTROL[[email protected]+1],1)+"-"+Add_Zero($WOE_CONTROL[[email protected]+2],1)+"):";
			set [email protected]$, [email protected]$+" ~ ^777777Cancel^000000";
			set [email protected], select([email protected]$)-1;
			if ([email protected] == (.Size/4)) break;
			mes "[Remove Session]";
			mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[[email protected]*4]]+"'s^000000 session?";
			mes "This action cannot be undone.";
			next;
			set [email protected], select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000");
			mes "[Remove Session]";
			if ([email protected] == 2)
				mes "cancelled.";
			else {
				deletearray $WOE_CONTROL[[email protected]*4],4;
				set .Size, getarraysize($WOE_CONTROL);
				mes "Session deleted.";
			}
			next;
			break;
		case 3:
			mes "[Reload Settings]";
			mes "This will trigger all events related to new session configurations, if any.";
			if (agitcheck() || agitcheck2()) {
				mes " ";
				mes "Be aware that this will disrupt the current WOE session.";
			}
			next;
			set [email protected], select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000");
			mes "[Reload Settings]";
			if ([email protected] == 2) mes "cancelled.";
			else {
				set .Init,1;
				donpcevent "WOE_CONTROL::OnMinute00";
				mes "Variables have been re-initialized.";
			}
			next;
			break;
		case 4:
			mes "[Force Agit End]";
			if (!agitcheck() && !agitcheck2())  {
				mes "WOE has already ended.";
				next;
				break;
			}
			mes "This command will safely execute all AgitEnd events.";
			mes " ";
			mes "Kill the current WOE session?";
			next;
			set [email protected], select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000");
			mes "[Force Agit End]";
			if ([email protected] == 3)
				mes "cancelled.";
			else {
				set .ForceEnd, [email protected];
				donpcevent "WOE_CONTROL::OnWOEEnd";
				mes "WOE session terminated.";
			}
			next;
			break;
		case 5:
			set [email protected],1; break;
		}
		if ([email protected]) { set [email protected],0; break; }
		} break;
	case 5:
		close;
	} }
}

 

 

	// Rewards per castle.
	// -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...}
	// -- via mail (option 2): <itemID>,<amount>,<Zeny>
	setarray .Reward[0],45001,1;

	setarray .Reward_Leader[0], 45000, 1;

 

  • Upvote 1
Link to comment
Share on other sites

  • 0
2 hours ago, pajodex said:

I just read your code right now, I think there is a better way to do that..  (without using SQL)

just few notes :

1. Use script commands available at doc/script_commands.txt such as *getguildmaster, *getcharid, *strcharinfo, *attachrid..
2. You are using "$" as variable.. read in script_commands the functions of the variables.. you can just use "[email protected]" instead.. "[email protected]$"
3. Since I still didnt check Euphy's script, I assume it ran in a loop.. 
	[email protected][[email protected]] -> already contains account ID of something?
	you can run it using *attachrid sample:

	attachrid [email protected][[email protected]]; // attaches the [email protected]
	getitem 501, 10;	// gets the item..
	detachrid; // detaches the rid 

As they say, there is still room for improvements.. I constantly learn from my mistakes and being pointed out is not a bad thing.. it means new thing you will learn which will improve your skills a lot.

wow a better way haha thank you so much sir 😄 

Link to comment
Share on other sites

  • 0
1 hour ago, n0tttt said:
//===== rAthena Script =======================================
//= Euphy's WOE Controller
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.5
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= A controller for War of Emperium designed for
//= simplicity and ease of use.
//= Many concepts taken from ToastOfDoom's script,
//= and "rewards" function originally by Goddameit.
//===== Additional Comments: =================================
//= Be sure to disable the default agit controllers!
//== npc\guild\agit_controller.txt
//== npc\guild2\agit_start_se.txt
//============================================================

// Information NPC
//============================================================
prontera,149,193,4	script	WOE Information	835,{
	doevent "WOE_CONTROL::OnMenu";
	end;
OnAgitStart:
	while(agitcheck()) {
		specialeffect EF_BEGINSPELL6;
		sleep 425;
	}
	end;
}

// Script Core
//============================================================
-	script	WOE_CONTROL	-1,{
function Disp_Owner; function Add_Zero;

OnInit:

// -----------------------------------------------------------
//  Configuration settings.
// -----------------------------------------------------------

	set .CastleWarp,0;		// 1: Always enable all castle warps. | 0: Warp only to active castles.
	set .AutoKick,1;		// Automatically kick players from inactive castles during WOE? (1:yes / 0:no)
	set .NoOwner,0; 		// Automatically kick players from unconquered castles outside of WOE? (1:yes / 0:no)
	set .ExitWarp,0;		// Warp all players from castles when WOE ends? (1:yes / 0:no)
	set .GMAccess,99;		// GM level required to access Session Manager.

// -----------------------------------------------------------
//  Reward options.
// -----------------------------------------------------------
//  [1] Enable rewards.
//  [2] Mail all rewards.
//      - If not set, players receive items in their inventory.
//      - Only ONE item can be sent via mail, plus Zeny.
//      - Note that offline players do NOT receive 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.
//      - Members in a guild with the same IP 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|8;

	// Rewards per castle.
	// -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...}
	// -- via mail (option 2): <itemID>,<amount>,<Zeny>
	setarray .Reward[0],45001,1;

	setarray .Reward_Leader[0], 45000, 1;

// -----------------------------------------------------------
//  Constants (leave this section alone).
// -----------------------------------------------------------

	setarray .Castles$[0],
		"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
		"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
		"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
		"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
		"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
		"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
	setarray .EndLabel$[0],"ar01","ar02","ar03","ar04","ar05","sc01","sc02","sc03","sc04","sc05";
	setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
	setarray .Regions$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt";
	setarray .Map$[0],"prt_gld","pay_gld","gef_fild13","alde_gld","aru_gld","sch_gld";
	setarray .MapX[0],134,240,153,111,208,121,295,317,140,204,214,308,143,193,305,48, 95,142,239,264,158,83, 68,299,292,293,288, 97,137, 71;
	setarray .MapY[0], 65,128,137,240,240,233,116,293,160,266, 75,240,240,278, 87,83,249, 85,242, 90,272,47,155,345,107,100,252,196, 90,315;

// -----------------------------------------------------------

	set .Size, getarraysize($WOE_CONTROL);
	if (.AutoKick || .NoOwner)
		for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) {
			setmapflag .Castles$[[email protected]], mf_loadevent;
			setd "."+.Castles$[[email protected]], [email protected];
		}
	if (!agitcheck() && !agitcheck2()) sleep 4000;
	set .Init,1;

OnMinute00:
	freeloop(1);
	if (agitcheck() || agitcheck2()) {
		for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
			if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) == $WOE_CONTROL[[email protected]+2]) {
			OnWOEEnd:
				announce "The War Of Emperium is over!",bc_all|bc_woe;
				AgitEnd; AgitEnd2;
				sleep 1000;
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) {
					if (.Active[0]&(1<<[email protected])) Disp_Owner(.Castles$[[email protected]],1);
					if (.ExitWarp) maprespawnguildid .Castles$[[email protected]],0,3;
				}
				if ((.Options&1) && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0];
				deletearray .Active[0],2;
				if (.ForceEnd) { set .ForceEnd,0; end; }
				break;
			}
	}
	if ((!agitcheck() && !agitcheck2()) || .Init) {
		if (!agitcheck() && !agitcheck2()) set .Init,0;
		for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
			if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) >= $WOE_CONTROL[[email protected]+1] && gettime(DT_HOUR) < $WOE_CONTROL[[email protected]+2]) {
				deletearray .Active[0],2;
				set .Active[0], $WOE_CONTROL[[email protected]+3];
				if (.Init) { AgitEnd; AgitEnd2; }
				else announce "The War Of Emperium has begun!",bc_all|bc_woe;
				sleep 1000;
				AgitStart; AgitStart2;
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) {
					if (.Active[0]&(1<<[email protected])) {
						if (!.Init) Disp_Owner(.Castles$[[email protected]],0);
						set .Active[1], .Active[1] | (1<<(([email protected]/5)+1));
					} else {
						if ([email protected]<20) {
							donpcevent "Agit#"+.Castles$[[email protected]]+"::OnAgitEnd";
							killmonster .Castles$[[email protected]], "Agit#"+.Castles$[[email protected]]+"::OnAgitBreak";
						} else {
							donpcevent "Manager#"+.Castles$[[email protected]]+"::OnAgitEnd2";
							killmonster .Castles$[[email protected]], "Steward#"+.EndLabel$[[email protected]]+"::OnStartArena";
						}
					}
				}
				break;
			}
	}
	set .Init,0;
	end;

function Disp_Owner {
	set [email protected], getcastledata(getarg(0),1);
	if ([email protected]) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname([email protected])+"] guild.",bc_all|bc_woe;
	else announce "The ["+getcastlename(getarg(0))+"] castle is currently unoccupied.",bc_all|bc_woe;
	return;
}
function Add_Zero {
	return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00";
}

OnReward:
	set [email protected]$, ((.Options&4)?"position = 0":"online = 1");
	if (.Options&2) set [email protected]$,gettimestr("%B %d, %Y",21);
	freeloop(1);
	for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
		if (getarg(0)&(1<<[email protected])) {
			set [email protected], getcastledata(.Castles$[[email protected]],1);
			if ([email protected]) continue;
			set [email protected], query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"[email protected]+"' AND "[email protected]$,[email protected],[email protected]);
			set [email protected]_cid, getguildmasterid([email protected]);
			for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) {
				if ((.Options&8) && !(.Options&4)) {
					set [email protected]$, replacestr(getcharip([email protected][[email protected]]),".","a");
					if (getd("[email protected]_"[email protected]+"_"[email protected]$)) continue;
					setd "[email protected]_"[email protected]+"_"[email protected]$,1;
				}
				if (.Options&2) {
					if ([email protected][[email protected]] == [email protected]_cid) {
						[email protected]_id = .Reward[0];
						[email protected]_amt = .Reward[1];
						[email protected]_zeny = .Reward[2];
					} else {
						[email protected]_id = .Reward_Leader[0];
						[email protected]_amt = .Reward_Leader[1];
						[email protected]_zeny = .Reward_Leader[2];
					}
					query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+
					          "'no-reply',"[email protected][[email protected]]+",'** Siege Reward: "+getcastlename(.Castles$[[email protected]])+" **',"+
					          "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "[email protected]$+".% % % % % [ Your reward is attached. ]',"+
					          [email protected]_id+","[email protected]_amt+",0,"[email protected]_zeny+",UNIX_TIMESTAMP(NOW()))");
					if (!getd("[email protected]_"[email protected][[email protected]]) && isloggedin([email protected][[email protected]],[email protected][[email protected]])) {
						setd "[email protected]_"[email protected][[email protected]],1;
						message rid2name([email protected][[email protected]]),"You've got mail! Please re-login to update your mailing list.";
					}
				} else if (isloggedin([email protected][[email protected]])) {
					deletearray [email protected];
					if ([email protected][[email protected]] == [email protected]_cid)
						copyarray [email protected][0],.Reward_Leader[0],getarraysize(.Reward_Leader);
					else
						copyarray [email protected][0],.Reward[0],getarraysize(.Reward);
					[email protected] = getarraysize([email protected]);
					for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+2)
						getitem [email protected][[email protected]], [email protected][[email protected]+1], [email protected][[email protected]];
					message rid2name([email protected][[email protected]]),"You have been rewarded for conquering "+getcastlename(.Castles$[[email protected]])+".";
				}
			}
		}
	if (.Options&2) query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
	return;

OnPCLoadMapEvent:
	if (!compare(strcharinfo(3),"g_cas")) end;
	if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(3),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(3))))) {
		if (getcharid(2) && getcastledata(strcharinfo(3),1) == getcharid(2)) end;
		sleep2 1000;
		message strcharinfo(0), getcastlename(strcharinfo(3))+" is currently inactive.";
		sleep2 5000;
		if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0;
	}
	end;

OnMenu:
while(1) {
	mes "[WOE Information]";
	if (agitcheck() || agitcheck2()) {
		if (.Active[0]) {
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
				if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) >= $WOE_CONTROL[[email protected]+1] && gettime(DT_HOUR) < $WOE_CONTROL[[email protected]+2]) {
					set [email protected], $WOE_CONTROL[[email protected]+2];
					break;
				}
			mes "The War of Emperium is ^0055FFactive^000000 until ^FF0000"+Add_Zero([email protected])+"^000000 in the following regions:";
			mes " ";
			for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1)
				if (.Active[1]&(1<<([email protected]+1))) mes " > ^777777"+.Regions$[[email protected]]+"^000000";
		} else
			mes "The War of Emperium is ^0055FFactive^000000.";
	} else {
		for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
			if ((gettime(DT_DAYOFWEEK) == $WOE_CONTROL[[email protected]] && gettime(DT_HOUR) <= $WOE_CONTROL[[email protected]+1]) || gettime(DT_DAYOFWEEK) < $WOE_CONTROL[[email protected]]) {
				setarray [email protected][0],$WOE_CONTROL[[email protected]],$WOE_CONTROL[[email protected]+1];
				break;
			}
		if (!getarraysize([email protected]))
			setarray [email protected][0],$WOE_CONTROL[0],$WOE_CONTROL[1];
		mes "The War of Emperium is ^777777inactive^000000.";
		if (.Size) {
			mes " ";
			mes "The next session will begin";
			mes "on ^0055FF"+.Days$[[email protected][0]]+"^000000 at "+Add_Zero([email protected][1])+"^000000.";
		}
	}
	next;
	switch(select(""+((.CastleWarp || .Active[1])?" ~ Warp to castles...":"")+": ~ Check schedule...: ~ View castle owners...:"+((getgmlevel()<.GMAccess || !getgmlevel())?"":" ~ Manage sessions...")+": ~ ^777777Cancel^000000")) {
	case 1:
		if (.CastleWarp) set [email protected]$,"^0055FF";
		set [email protected]$,"";
		for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1) {
			if (.CastleWarp || .Active[1]&(1<<([email protected]+1)))
				set [email protected]$, [email protected]$+" ~ "+((.Active[1]&(1<<([email protected]+1)))[email protected]$:"^777777")+.Regions$[[email protected]]+" Castles^000000";
			set [email protected]$, [email protected]$+":";
		}
		set [email protected], select([email protected]$)-1;
		set [email protected]$,"";
		for(set [email protected],[email protected]*5; [email protected]<([email protected]*5)+5; set [email protected],[email protected]+1) {
			if (.CastleWarp || .Active[0]&(1<<[email protected]))
				set [email protected]$, [email protected]$+" ~ "+((.Active[0]&(1<<[email protected]))[email protected]$:"^777777")+getcastlename(.Castles$[[email protected]])+"^000000";
			set [email protected]$, [email protected]$+":";
		}
		set [email protected], select([email protected]$)-1;
		warp .Map$[[email protected]],.MapX[([email protected]*5)[email protected]],.MapY[([email protected]*5)[email protected]];
		close;
	case 2:
		mes "[Schedule]";
		if (.Size) {
			freeloop(1);
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) {
				mes "> ^FF0000"+.Days$[$WOE_CONTROL[[email protected]]]+" ("+Add_Zero($WOE_CONTROL[[email protected]+1])+"-"+Add_Zero($WOE_CONTROL[[email protected]+2])+")^000000";
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
					if ($WOE_CONTROL[[email protected]+3]&(1<<[email protected])) mes "  ~ "+getcastlename(.Castles$[[email protected]])+" ^777777("+.Castles$[[email protected]]+")^000000";
				if ([email protected]+4 < .Size) mes " ";
			}
			freeloop(0);
		} else
			mes "No times are configured.";
		next;
		break;
	case 3:
		mes "[Castle Ownership]";
		for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1) {
			set [email protected], [email protected]*5;
			mes "> ^FF0000"+.Regions$[[email protected]]+"^000000";
			for(set [email protected],[email protected]; [email protected]<([email protected]+5); set [email protected],[email protected]+1) { 
				set [email protected], getcastledata(.Castles$[[email protected]],1);
				mes "  ~ "+getcastlename(.Castles$[[email protected]])+": "+(([email protected])?"^0055FF"+getguildname([email protected]):"^777777unoccupied")+"^000000";
			}
			if ([email protected] < 5) mes " ";
		}
		next;
		break;
	case 4:
	while(1) {
		mes "[Session Manager]";
		mes "There are ^0055FF"+(.Size/4)+" session(s)^000000 configured.";
		mes "What would you like to do?";
		next;
		switch(select(" ~ Add a session...: ~ Delete a session...: ~ Reload settings...:"+((agitcheck() || agitcheck2())?" ~ End WOE session...":"")+": ~ ^777777Go back^000000")) {
		case 1:
			mes "[New Session]";
			if (.Size > 127) {
				mes "You have already reached the maximum of 32 sessions.";
				next;
				break;
			}
			mes "Select a day.";
			next;
			set [email protected], select(" ~ "+implode(.Days$,": ~ "))-1;
			mes "[New Session]";
			mes "Select a start time for ^0055FF"+.Days$[[email protected]]+"^000000.";
			next;
			set [email protected]$,"";
			for(set [email protected],0; [email protected]<23; set [email protected],[email protected]+1)
				set [email protected]$, [email protected]$+" ~ "+Add_Zero([email protected],1)+":";
			set [email protected], select([email protected]$)-1;
			mes "[New Session]";
			mes "Select an end time for ^0055FF"+.Days$[[email protected]]+"^000000.";
			next;
			set [email protected]$,"";
			for(set [email protected],[email protected]+1; [email protected]<24; [email protected],[email protected]+1)
				set [email protected]$, [email protected]$+" ~ "+Add_Zero([email protected],1)+":";
			set [email protected], select([email protected]$)[email protected];
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
				if ([email protected] == $WOE_CONTROL[[email protected]] &&
				   (([email protected] >= $WOE_CONTROL[[email protected]+1] && [email protected] < $WOE_CONTROL[[email protected]+2]) ||
				    ([email protected] > $WOE_CONTROL[[email protected]+1] && [email protected] <= $WOE_CONTROL[[email protected]+2]) ||
				    ([email protected] <= $WOE_CONTROL[[email protected]+1] && [email protected] >= $WOE_CONTROL[[email protected]+2]))) {
					mes "[New Session]";
					mes "The chosen times overlap with an existing session.";
					next;
					set [email protected],1;
					break;
				}
			if ([email protected]) { set [email protected],0; break; }
			set [email protected],0;
			while(1) {
				mes "[New Session]";
				mes "^0055FF"+.Days$[[email protected]]+" ("+Add_Zero([email protected])+"-"+Add_Zero([email protected])+")^000000";
				mes " > Castles:";
				if ([email protected])
					mes "   ~ ^777777(none selected)^000000";
				else for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
					if ([email protected]&(1<<[email protected])) mes "   ~ "+getcastlename(.Castles$[[email protected]])+" ("+.Castles$[[email protected]]+")";
				next;
				set [email protected]$,(([email protected])?" ~ ^FF0000Finished...^000000":"")+":";
				for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1)
					set [email protected]$, [email protected]$+" ~ "+(([email protected]&(1<<[email protected]))?"^0055FF":"")+getcastlename(.Castles$[[email protected]])+" ("+.Castles$[[email protected]]+")^000000:";
				set [email protected], select([email protected]$)-1;
				if ([email protected])
					set [email protected], [email protected]^(1<<([email protected]));
				else {
					mes "[New Session]";
					mes "Are you sure?";
					next;
					switch(select(" ~ ^0055FFAdd session...^000000: ~ Continue selecting castles...: ~ ^777777Cancel^000000")) {
					case 1:
						for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
							if (([email protected] == $WOE_CONTROL[[email protected]] && [email protected] <= $WOE_CONTROL[[email protected]+1]) || [email protected] < $WOE_CONTROL[[email protected]]) {
								set [email protected],1;
								break;
							}
						if ([email protected]) { set [email protected],1; set [email protected],.Size; }
						copyarray $WOE_CONTROL[[email protected]+4], $WOE_CONTROL[[email protected]], [email protected];
						setarray $WOE_CONTROL[[email protected]], [email protected], [email protected], [email protected], [email protected];
						set .Size, getarraysize($WOE_CONTROL);
					case 3:
						mes "[New Session]";
						mes (([email protected])?"Session added.":"cancelled.");
						next;
						set [email protected],1;
					case 2:
						break;
					}
					if ([email protected]) { set [email protected],0; break; }
				}
			}
			break;
		case 2:
			mes "[Remove Session]";
			if (!.Size) {
				mes "There are no sessions configured.";
				next;
				break;
			}
			mes "Select a session to remove.";
			next;
			set [email protected]$,"";
			for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4)
				set [email protected]$, [email protected]$+" ~ "+.Days$[$WOE_CONTROL[[email protected]]]+" ("+Add_Zero($WOE_CONTROL[[email protected]+1],1)+"-"+Add_Zero($WOE_CONTROL[[email protected]+2],1)+"):";
			set [email protected]$, [email protected]$+" ~ ^777777Cancel^000000";
			set [email protected], select([email protected]$)-1;
			if ([email protected] == (.Size/4)) break;
			mes "[Remove Session]";
			mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[[email protected]*4]]+"'s^000000 session?";
			mes "This action cannot be undone.";
			next;
			set [email protected], select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000");
			mes "[Remove Session]";
			if ([email protected] == 2)
				mes "cancelled.";
			else {
				deletearray $WOE_CONTROL[[email protected]*4],4;
				set .Size, getarraysize($WOE_CONTROL);
				mes "Session deleted.";
			}
			next;
			break;
		case 3:
			mes "[Reload Settings]";
			mes "This will trigger all events related to new session configurations, if any.";
			if (agitcheck() || agitcheck2()) {
				mes " ";
				mes "Be aware that this will disrupt the current WOE session.";
			}
			next;
			set [email protected]i, select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000");
			mes "[Reload Settings]";
			if ([email protected] == 2) mes "cancelled.";
			else {
				set .Init,1;
				donpcevent "WOE_CONTROL::OnMinute00";
				mes "Variables have been re-initialized.";
			}
			next;
			break;
		case 4:
			mes "[Force Agit End]";
			if (!agitcheck() && !agitcheck2())  {
				mes "WOE has already ended.";
				next;
				break;
			}
			mes "This command will safely execute all AgitEnd events.";
			mes " ";
			mes "Kill the current WOE session?";
			next;
			set [email protected], select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000");
			mes "[Force Agit End]";
			if ([email protected] == 3)
				mes "cancelled.";
			else {
				set .ForceEnd, [email protected];
				donpcevent "WOE_CONTROL::OnWOEEnd";
				mes "WOE session terminated.";
			}
			next;
			break;
		case 5:
			set [email protected],1; break;
		}
		if ([email protected]) { set [email protected],0; break; }
		} break;
	case 5:
		close;
	} }
}

 

 

	// Rewards per castle.
	// -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...}
	// -- via mail (option 2): <itemID>,<amount>,<Zeny>
	setarray .Reward[0],45001,1;

	setarray .Reward_Leader[0], 45000, 1;

 

thanks you so much sir 😄

Link to comment
Share on other sites

  • 0

[Error]:  Loading NPC file: npc/custom/woe1.5.txt
script error on npc/custom/woe1.5.txt line 193
    parse_simpleexpr: unmatched ')'
   188 :                                                [email protected]_zeny = .Reward_                                                                                        Leader[2];
   189 :                                        }
   190 :                                        query_sql("INSERT INTO `mail` (s                                                                                        end_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+
   191 :                                                  "'no-reply',"[email protected][[email protected]                                                                                        j]+",'** Siege Reward: "+getcastlename(.Castles$[[email protected]])+" **',"+
   192 :                                                  "'Brave one,% % Congra                                                                                        tulations!% Your guild has successfully occupied% territory in the War of Emperi                                                                                        um on% "[email protected]$+".% % % % % [ Your reward is attached. ]',"+
*  193 :                                                  [email protected]_id+","[email protected]                                                                                        rd_amt+",0,"+.'.'@reward_zeny+",UNIX_TIMESTAMP(NOW()))");
   194 :                                        if (!getd("[email protected]_"[email protected][[email protected]]) &                                                                                        & isloggedin([email protected][[email protected]],[email protected][[email protected]])) {
   195 :                                                setd "[email protected]_"[email protected][[email protected]]                                                                                        ,1;
   196 :                                                message rid2name([email protected][.                                                                                        @j]),"You've got mail! Please re-login to update your mailing list.";
   197 :                                        }
   198 :                                } else if (isloggedin([email protected][[email protected]])) {
 

Link to comment
Share on other sites

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...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.