Jump to content
  • 0

WOE Job count limit - Updated


Question

Posted (edited)

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 .@guildids[0],$@guildmembercid[0],$@guildmembercount;
set .@count, $@guildmembercount;
for (set .@a, 0; .@a < .@count;
set .@a, .@a + 1)
attachrid .@partyids[.@a];
set .@jobs[.@a], 4008;// Check Job from other current jobs
for (set .@b, 0; .@b < getarraysize(.@jobs); 
set .@b, .@b + 1)
if (Class == .@jobs[.@b]) {
set .@matches, .@matches + 1;
if (.@matches > 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 .@matches, 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 ( .@i = 0; .@i < 30; .@i++ )
		setmapflag .castles$[.@i], mf_loadevent;
	end;
}

 

Edited by Yami

6 answers to this question

Recommended Posts

  • 0
Posted (edited)

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 (.@i = 0; .@i < .castle_size; .@i++)
			setmapflag .castles$[.@i], mf_loadevent;
		end;
		
	OnPCLoadMapEvent:
		.@map$ = strcharinfo(3);
		if (inarray(.castles$, .@map$) != -1) {
			.@guild_id = getcharid(2);
			if (.@guild_id) {
				
				getguildmember .@cid, 1;
				getguildmember .@aid, 2;
				
				// skip check if member count less than limit
				if ($@guildmembercount < .max_limit) end;
				
				for (.@i = 0; .@i < $@guildmembercount && .@match_count < .max_limit; .@i++) {
					if (isloggedin(.@aid[.@i], .@cid[.@i])) {
						if (attachrid(.@aid[.@i])) {
							.@eac = eaclass();
							if (.@eac & EAJ_SWORDMAN|EAJL_2_1 == EAJ_KNIGHT)
								.@match_count++;
							detachrid;
						}
					}
				}
				
				if (.@match_count >= .max_limit) {
					for (.@i = 0; .@i < $@guildmembercount; .@i++) {
						if (isloggedin(.@aid[.@i], .@cid[.@i])) {
							if (attachrid(.@aid[.@i])) {
								if (strcharinfo(3) == .@map$) {
									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
  • 0
Posted

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 .@guildids[0],$@guildmembercid[0],$@guildmembercount;
set .@count, $@guildmembercount;
for (set .@a, 0; .@a < .@count;
set .@a, .@a + 1)
attachrid .@partyids[.@a];
set .@jobs[.@a], 4008;// Check Job from other current jobs
for (set .@b, 0; .@b < getarraysize(.@jobs); 
set .@b, .@b + 1)
if (Class == .@jobs[.@b]) {
set .@matches, .@matches + 1;
if (.@matches > 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 .@matches, 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 ( .@i = 0; .@i < 30; .@i++ )
		setmapflag .castles$[.@i], mf_loadevent;
	end;
}

 

  • 0
Posted
On 8/31/2021 at 8:25 PM, Emistry said:

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

 

hello sir emistry i got this error

 

Screenshot 2022-09-28 150955.png

  • 0
Posted

tried to use this but im not sure why it is still not limiting the knight job in a castle.
i set the maxlimit to 3 and added the loading of the script in scripts_custom.conf

what am i missing?

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...