Jump to content
  • 0
Yami

WOE Job count limit - Updated

Question

Hey there everyone! I can't seem to find any script regarding this request, but I know it exists for I've seen it in a couple servers that I've played recently.

I'm looking for a script that Limits a job class' specific count per guild inside WOE castles.

In example, Only 5 Knight class are allowed inside the castle per guild, If a guild has 6 online knights inside the castle from ECALL, OR a 6th knight enters the castle the whole guild will be warped out to their savepoint.

As long as they go pass the 5 limit for whatever job that has it, the whole guild should be warped out of the castle. Thank you! Any information will be helpful.

 

Edit:

Okay I found this piece of script in herc forums which is basically almost identical to what I need. But the script is incomplete, and I can't make it to work properly.

So far I've managed it to check for Knight Classes in a guild, when inside WOE castle. But the script is kicking out every one of them even before hitting the target limit. Can someone help me fix this script? Please.

-	script	ckeckguildjob	-1,{
{
OnPCLoadMapEvent:
getguildmember(getcharid(0),2);
set [email protected][0],[email protected][0],[email protected];
set [email protected], [email protected];
for (set [email protected], 0; [email protected] < [email protected];
set [email protected], [email protected] + 1)
attachrid [email protected][[email protected]];
set [email protected][[email protected]], 4008;// Check Job from other current jobs
for (set [email protected], 0; [email protected] < getarraysize([email protected]); 
set [email protected], [email protected] + 1)
if (Class == [email protected][[email protected]]) {
set [email protected], [email protected] + 1;
if ([email protected] > 1) // Too many knights made it limit of 1 for testing purposes but will be 8
        dispbottom "There can only be 8 Knight per guild members inside a castle during woe.";
        warp "SavePoint",0,0;
set [email protected], 0;
}
}
OnInit:
	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";
	for ( [email protected] = 0; [email protected] < 30; [email protected]++ )
		setmapflag .castles$[[email protected]], mf_loadevent;
	end;
}

 

Edited by Yami
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Bumping this request

Okay I found this piece of script in herc forums which is basically almost identical to what I need. But the script is incomplete, and I can't make it to work properly.

So far I've managed it to check for Knight Classes in a guild, when inside WOE castle. But the script is kicking out every one of them even before hitting the target limit. Can someone help me fix this script? Please

-	script	ckeckguildjob	-1,{
{
OnPCLoadMapEvent:
getguildmember(getcharid(0),2);
set [email protected][0],[email protected][0],[email protected];
set [email protected], [email protected];
for (set [email protected], 0; [email protected] < [email protected];
set [email protected], [email protected] + 1)
attachrid [email protected][[email protected]];
set [email protected][[email protected]], 4008;// Check Job from other current jobs
for (set [email protected], 0; [email protected] < getarraysize([email protected]); 
set [email protected], [email protected] + 1)
if (Class == [email protected][[email protected]]) {
set [email protected], [email protected] + 1;
if ([email protected] > 1) // Too many knights made it limit of 1 for testing purposes but will be 8
        dispbottom "There can only be 8 Knight per guild members inside a castle during woe.";
        warp "SavePoint",0,0;
set [email protected], 0;
}
}
OnInit:
	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";
	for ( [email protected] = 0; [email protected] < 30; [email protected]++ )
		setmapflag .castles$[[email protected]], mf_loadevent;
	end;
}

 

Link to comment
Share on other sites

  • 0

try

-	script	Sample	-1,{
	
	OnInit:
		.max_limit = 10;
		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";
		.castle_size = getarraysize(.castles$);
		for ([email protected] = 0; [email protected] < .castle_size; [email protected]++)
			setmapflag .castles$[[email protected]], mf_loadevent;
		end;
		
	OnPCLoadMapEvent:
		[email protected]$ = strcharinfo(3)
		if (inarray(.castles$, [email protected]$) != -1) {
			[email protected]_id = getcharid(2);
			if ([email protected]_id) {
				
				getguildmember [email protected], 1;
				getguildmember [email protected], 2;
				
				// skip check if member count less than limit
				if ([email protected] < .max_limit) end;
				
				for ([email protected] = 0; [email protected] < [email protected] && [email protected]_count < .max_limit; [email protected]++) {
					if (isloggedin([email protected][[email protected]], [email protected][[email protected]])) {
						if (attachrid([email protected][[email protected]])) {
							[email protected] = eaclass();
							if ([email protected] & EAJ_SWORDMAN|EAJL_2_1 == EAJ_KNIGHT)
								[email protected]_count++;
							detachrid;
						}
					}
				}
				
				if ([email protected]_count >= .max_limit) {
					for ([email protected] = 0; [email protected] < [email protected]; [email protected]++) {
						if (isloggedin([email protected][[email protected]], [email protected][[email protected]])) {
							if (attachrid([email protected][[email protected]])) {
								if (strcharinfo(3) == [email protected]$) {
									dispbottom "There can only be "+.max_limit+" Knight per guild members inside a castle during woe.";
									warp "SavePoint", 0, 0;
								}
								detachrid;
							}
						}
					}
				}
			}
		}
		end;
}

 

Edited by Emistry
update
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.