Jump to content
  • 0

Please help me insert a duplicate job checker on my script


Freya Jorgenson

Question


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  146
  • Reputation:   1
  • Joined:  11/22/11
  • Last Seen:  

Hello, 

I am using the following script and would like to add a duplicate job checker on my script. I have tried to incorporate several job checker script but being a noob in scripting, I got nothing worked.

 

Credits to the creator of this script, btw.

 

prontera,134,169,6	script	7v7 Team Wars::teamwar	469,{
	if (getgmlevel() >= 99){
		menu "standard menu",standard,"reset",lend;


	}

standard:
	set $@members,2; // number of party members change this to your party size you want
	set $@start,0;
	getpartymember(getcharid(1));
	set @partymembercount,$@partymembercount;
	if ( $@start == 1 ) {
		mes "The Sign Ups are currently unavailable because a match is in progress. Don't hesitate to try again in a few minutes!";
		close;

	}
	if ( @partymembercount == $@members ) {
		if ( $@TeamID1 == getcharid(1) ) {
			mes "Do you wish to sign out your team?";	
			next;	
			if (select("I Give up ~.","Never Say Quit !!")==2) close;	
			announce "Team 1 : [ " + getpartyname($@TeamID1) + " ] has sign out. We need another Party to sign up now!",bc_yellow|bc_map;	
			set $@TeamID1, 0;
			close;	
		}
		if ($@TeamID2==getcharid(1)) {	
			mes "Do you wish to sign out your team?";	
			next;	
			if (select("I Give up ~.","Never Say Quit !!")==2) close;
			announce "Team 2 : [ " + getpartyname($@TeamID2) + " ] has sign out. We need another Party to sign up now!",bc_yellow|bc_map;	
			set $@TeamID2, 0;	
			close;	
		}
		mes "Hello "+strcharinfo(0)+" what do you want?";
		if (($@TeamID1!=0) && ($@TeamID2!=0)) {
			mes "The Sign Ups are currently unavailable because a match is in progress. Don't hesitate to try again in a few minutes!";
			close;
		}
		if ( getpartyleader(getcharid(1),2) != getcharid(0) ) {
			mes "Only party leader have the right to sign up / out from the game with me..";
			close;
		}
		mes "Choose your team to register.";
		switch(select("Red Team - [" + GetPartyName($@TeamID1) + "] :Blue Team - [" + GetPartyName($@TeamID2) + "]")) {
		case 1:	mes "[  Team War  ]";
			if ($@TeamID1==0 || getpartyname($@TeamID1)=="null") {
				getpartymember(getcharid(1)),1;
				getpartymember(getcharid(1)),2;
				copyarray $@partymembercidt1[0],$@partymembercid[0],$@members;
				copyarray $@partymemberaidt1[0],$@partymemberaid[0],$@members;
				for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
					if(isloggedin($@partymemberaidt1[.@i],$@partymembercidt1[.@i]))  set .@count,.@count+1;
				}
				if(.@count < $@members) {
					mes "You need all your party members to be online to Register";
					close;
				}
				set $@TeamID1, getcharid(1);	
				initnpctimer;	
				mes "Your Party is now subscribed, good luck!";	
				announce "Team 1 : [ " +getpartyname($@TeamID1)+ " ] has sign up For the Team War!",bc_blue|bc_map;	
				doevent "teamwar::OnSubscriptionTeam";	
				close;	
			} else {
				mes "I'm sorry! Another Team has sign up before you...";	
				close;	
			}
		case 2:	mes "[  Team War  ]";
			if ($@TeamID2==0 || getpartyname($@TeamID2)=="null") {	
				getpartymember(getcharid(1)),1;
				getpartymember(getcharid(1)),2;
				copyarray $@partymembercidt2[0],$@partymembercid[0],$@members;
				copyarray $@partymemberaidt2[0],$@partymemberaid[0],$@members;
				for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
					if(isloggedin($@partymemberaidt2[.@i],$@partymembercidt2[.@i])) set .@count,.@count+1;
				}
				if(.@count < $@members) {
					mes "You need all your party members to be online to Register";
					close;
				}
				set $@TeamID2, getcharid(1);	
				initnpctimer;	
				mes "Your Party is now subscribed, good luck!";	
				announce "Team 2 : [ " +getpartyname($@TeamID2)+ " ] has sign up For the Team War!",bc_blue|bc_map;
				doevent "teamwar::OnSubscriptionTeam";	
				close;	
			} else {	
				mes "I'm sorry! Another Team has sign up before you...";	
				close;
			}
		}
	} else {
		mes "[Event Handler]";
		mes "Please contact your party leader.";
		mes "Your team must have a party consisting of "+$@members+" members.";
		close;
	}


OnSubscriptionTeam:
	getpartymember($@TeamID2),1;
	getpartymember($@TeamID2),2;
	copyarray $@partymembercidtc2[0],$@partymembercid[0],$@members;
	copyarray $@partymemberaidc2[0],$@partymemberaid[0],$@members;
	for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
		if(isloggedin($@partymemberaidc2[.@i],$@partymembercidtc2[.@i])) set .@countx,.@countx+1;
	}
	if(.@countx < $@members) {
		announce "Team War : "+getpartyname($@TeamID2)+"are not all online the match has been canceled",0;
		announce "Team War : registration for 2 new teams are now available",0;
		goto lend;
	}
	if ( $@TeamID2 && $@partymembercount != $@members ) {
		announce getpartyname($@TeamID2) +" has extra party members !", 0;
		goto lend;
	}
	getpartymember($@TeamID1),1;
	getpartymember($@TeamID1),2;
	copyarray $@partymembercidtc1[0],$@partymembercid[0],$@members;
	copyarray $@partymemberaidc1[0],$@partymemberaid[0],$@members;
	for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
		if(isloggedin($@partymemberaidc1[.@i],$@partymembercidtc1[.@i])) set .@countz,.@countz+1;
	}
	if(.@countz < $@members) {
		announce "Team War : "+getpartyname($@TeamID1)+"are not all online the match has been canceled",0;
		announce "Team War : registration for 2 new teams are now available",0;
		goto lend;
	}
	if ( $@TeamID1 &&  $@partymembercount != $@members ) {
		announce getpartyname($@TeamID1) +" has extra party members !", 0;
		goto lend;
	}
	if($@TeamID1!=0 && $@TeamID2!=0){
		announce "Team War : We have 2 Teams signed up now : "+getpartyname($@TeamID1)+" and "+getpartyname($@TeamID2)+".",bc_blue|bc_map;
		set @win1, 0;
		set @win2, 0;
		goto Onstart;
	}
	end;

OnTimer50000:
	if (($@TeamID1!=0) && ($@TeamID2!=0)) {
		stopnpctimer;
		end;
	}
	stopnpctimer;
	set $@TeamID1, 0;
	set $@TeamID1, 0;
	announce "Team War : we lack teams to start registration for two teams are now available",0;
	end;
	
OnStart:
	warpparty "guild_vs2",89,49,$@TeamID1;
	warpparty "guild_vs2",11,49,$@TeamID2;
	set $@start,1;
	end;

lend:
	stopnpctimer;
	set $@TeamID1,0;
	set $@TeamID2,0;
	set $@start,0;
	set @win1,0;
	set @win2,0;
	set @partymembercount,$@members;
	announce "Thanks for joining!",0;
	end;

OnTimer250000:
	Announce "Team War : No Party won due to time limit!",0;
	mapwarp "guild_vs2","prontera",156,191;
	goto lend;
	end;

OnPCDieEvent:
OnPCLogoutEvent:
	if(strcharinfo(3) != "guild_vs2") end;
	warp "prontera",156,191;
	for(set .@i, 0; .@i < $@members; set .@i, .@i + 1) {
		if ( $@partymembercidt1[.@i] == getcharid(0)) {
			deletearray $@partymembercidt1[.@i], 1;
			deletearray $@partymemberaidt1[.@i], 1;
			if( getarraysize($@partymembercidt1) == 0 ) {
				set @win2,getarraysize($@partymembercidt2);
				goto onwin;
			}
		}
		if ( $@partymembercidt2[.@i] == getcharid(0) ) {
			deletearray $@partymembercidt2[.@i], 1;
			deletearray $@partymemberaidt2[.@i], 1;
			if( getarraysize($@partymembercidt2)  == 0 ) {
				set @win1,getarraysize($@partymembercidt1);
				goto onwin;
			}
		}
	}
	end;


onwin:
	if (@win1==0) {
		warpparty "prontera",156,191,$@TeamID1;
		warpparty "prontera",156,191,$@TeamID2;
		Announce "Team War :"+GetPartyName($@TeamID2)+" won and got 3 RoK Star Badges!",0;
		for ( .@i = 0; .@i < @win2; .@i++ )
			getitem 7905, rand(3,3), $@partymemberaidt2[.@i];
		goto lend;
	}
	if (@win2==0) {
		warpparty "prontera",156,191,$@TeamID1;
		warpparty "prontera",156,191,$@TeamID2;
		Announce "Team War :"+GetPartyName($@TeamID1)+" won and got 3 RoK Star Badges!",0;
		for ( .@i = 0; .@i < @win1; .@i++ )
			getitem 7905, rand(3,3), $@partymemberaidt1[.@i];
		goto lend;
	}
	end;
}

guild_vs2	mapflag	nosave	SavePoint
guild_vs2	mapflag	nomemo
guild_vs2	mapflag	nobranch
guild_vs2	mapflag	pvp_noguild
guild_vs2	mapflag	nocommand	60
guild_vs2	mapflag	noicewall
guild_vs2	mapflag	pvp
guild_vs2	mapflag	partylock

Thanks for your help in advance.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 1

  • Group:  Developer
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  2407
  • Reputation:   613
  • Joined:  07/05/12
  • Last Seen:  


prontera,134,169,6	script	7v7 Team Wars::teamwar	469,{
	if (getgmlevel() >= 99){
		menu "standard menu",standard,"reset",lend;
	}

standard:
	if ( getcharid(1) == 0 ) {
		mes "your are not in a party";
		close;
	}
	set $@members,2; // number of party members change this to your party size you want
	set $@start,0;
	getpartymember(getcharid(1));
	set @partymembercount,$@partymembercount;
	if ( $@start == 1 ) {
		mes "The Sign Ups are currently unavailable because a match is in progress. Don't hesitate to try again in a few minutes!";
		close;

	}
	if ( @partymembercount == $@members ) {
		if ( $@TeamID1 == getcharid(1) ) {
			mes "Do you wish to sign out your team?";	
			next;	
			if (select("I Give up ~.","Never Say Quit !!")==2) close;	
			announce "Team 1 : [ " + getpartyname($@TeamID1) + " ] has sign out. We need another Party to sign up now!",bc_yellow|bc_map;	
			set $@TeamID1, 0;
			close;	
		}
		if ($@TeamID2==getcharid(1)) {	
			mes "Do you wish to sign out your team?";	
			next;	
			if (select("I Give up ~.","Never Say Quit !!")==2) close;
			announce "Team 2 : [ " + getpartyname($@TeamID2) + " ] has sign out. We need another Party to sign up now!",bc_yellow|bc_map;	
			set $@TeamID2, 0;	
			close;	
		}
		mes "Hello "+strcharinfo(0)+" what do you want?";
		if (($@TeamID1!=0) && ($@TeamID2!=0)) {
			mes "The Sign Ups are currently unavailable because a match is in progress. Don't hesitate to try again in a few minutes!";
			close;
		}
		if ( getpartyleader(getcharid(1),2) != getcharid(0) ) {
			mes "Only party leader have the right to sign up / out from the game with me..";
			close;
		}
		mes "Choose your team to register.";
		switch(select("Red Team - [" + GetPartyName($@TeamID1) + "] :Blue Team - [" + GetPartyName($@TeamID2) + "]")) {
		case 1:	mes "[  Team War  ]";
			if ($@TeamID1==0 || getpartyname($@TeamID1)=="null") {
				getpartymember(getcharid(1)),0;
				getpartymember(getcharid(1)),1;
				getpartymember(getcharid(1)),2;
				copyarray $@partymembercidt1[0],$@partymembercid[0],$@members;
				copyarray $@partymemberaidt1[0],$@partymemberaid[0],$@members;
				for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
					if(isloggedin($@partymemberaidt1[.@i],$@partymembercidt1[.@i])){
						set .@count,.@count+1;
						.@class = readparam( 19,$@partymembername$[.@i] );
						if ( getd( ".@checkclass3_"+ .@class ) == 1 ){
							.@duplicate_job3$ = .@duplicate_job3$ + ( getstrlen( .@duplicate_job3$ ) ? "," : "" ) + jobname( .@class ) );
							setd ".@checkclass3_"+ .@class, 999;
						}
						else if ( getd( ".@checkclass3_"+ .@class ) == 0 )
							setd ".@checkclass3_"+ .@class, 1;
					}
				}
				if(.@count < $@members) {
					mes "You need all your party members to be online to Register";
					close;
				}
				else if( getstrlen( .@duplicate_job3$ ) ){
					mes "You can't have more than 1 class of "+ .@duplicate_job3$;
					close;
				}
				set $@TeamID1, getcharid(1);	
				initnpctimer;	
				mes "Your Party is now subscribed, good luck!";	
				announce "Team 1 : [ " +getpartyname($@TeamID1)+ " ] has sign up For the Team War!",bc_blue|bc_map;	
				doevent "teamwar::OnSubscriptionTeam";	
				close;	
			} else {
				mes "I'm sorry! Another Team has sign up before you...";	
				close;	
			}
		case 2:	mes "[  Team War  ]";
			if ($@TeamID2==0 || getpartyname($@TeamID2)=="null") {	
				getpartymember(getcharid(1)),1;
				getpartymember(getcharid(1)),2;
				copyarray $@partymembercidt2[0],$@partymembercid[0],$@members;
				copyarray $@partymemberaidt2[0],$@partymemberaid[0],$@members;
				for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
					if(isloggedin($@partymemberaidt2[.@i],$@partymembercidt2[.@i])) set .@count,.@count+1;
				}
				if(.@count < $@members) {
					mes "You need all your party members to be online to Register";
					close;
				}
				set $@TeamID2, getcharid(1);	
				initnpctimer;	
				mes "Your Party is now subscribed, good luck!";	
				announce "Team 2 : [ " +getpartyname($@TeamID2)+ " ] has sign up For the Team War!",bc_blue|bc_map;
				doevent "teamwar::OnSubscriptionTeam";	
				close;	
			} else {	
				mes "I'm sorry! Another Team has sign up before you...";	
				close;
			}
		}
	} else {
		mes "[Event Handler]";
		mes "Please contact your party leader.";
		mes "Your team must have a party consisting of "+$@members+" members.";
		close;
	}


OnSubscriptionTeam:
	getpartymember($@TeamID2),1;
	getpartymember($@TeamID2),2;
	copyarray $@partymembercidtc2[0],$@partymembercid[0],$@members;
	copyarray $@partymemberaidc2[0],$@partymemberaid[0],$@members;
	for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
		if(isloggedin($@partymemberaidc2[.@i],$@partymembercidtc2[.@i])) {
			set .@countx,.@countx+1;
			.@class = readparam( 19,$@partymembername$[.@i] );
			if ( getd( ".@checkclass_"+ .@class ) == 1 ){
				.@duplicate_job$ = .@duplicate_job$ + ( getstrlen( .@duplicate_job$ ) ? "," : "" ) + jobname( .@class ) );
				setd ".@checkclass_"+ .@class, 999;
			}
			else if ( getd( ".@checkclass_"+ .@class ) == 0 )
				setd ".@checkclass_"+ .@class, 1;
		}
	}
	if(.@countx < $@members) {
		announce "Team War : "+getpartyname($@TeamID2)+"are not all online the match has been canceled",0;
		announce "Team War : registration for 2 new teams are now available",0;
		goto lend;
	}
	if ( $@TeamID2 && $@partymembercount != $@members ) {
		announce getpartyname($@TeamID2) +" has extra party members !", 0;
		goto lend;
	}
	else if( getstrlen( .@duplicate_job$ ) ){
		announce getpartyname($@TeamID2) +" more than 1 class of "+ .@duplicate_job$ +" !", 0;
		goto lend;
	}
	getpartymember($@TeamID1),1;
	getpartymember($@TeamID1),2;
	copyarray $@partymembercidtc1[0],$@partymembercid[0],$@members;
	copyarray $@partymemberaidc1[0],$@partymemberaid[0],$@members;
	for (set .@i,0; .@i<$@members; set .@i,.@i+1) {
		if(isloggedin($@partymemberaidc1[.@i],$@partymembercidtc1[.@i])) {
			set .@countz,.@countz+1;
			.@class = readparam( 19,$@partymembername$[.@i] );
			if ( getd( ".@checkclass2_"+ .@class ) == 1 ){
				.@duplicate_job2$ = .@duplicate_job2$ + ( getstrlen( .@duplicate_job2$ ) ? "," : "" ) + jobname( .@class ) );
				setd ".@checkclass2_"+ .@class, 999;
			}
			else if ( getd( ".@checkclass2_"+ .@class ) == 0 )
				setd ".@checkclass2_"+ .@class, 1;
		}
	}
	if(.@countz < $@members) {
		announce "Team War : "+getpartyname($@TeamID1)+"are not all online the match has been canceled",0;
		announce "Team War : registration for 2 new teams are now available",0;
		goto lend;
	}
	if ( $@TeamID1 &&  $@partymembercount != $@members ) {
		announce getpartyname($@TeamID1) +" has extra party members !", 0;
		goto lend;
	}
	else if( getstrlen( .@duplicate_job2$ ) ){
		announce getpartyname($@TeamID1) +" more than 1 class of "+ .@duplicate_job2$ +" !", 0;
		goto lend;
	}
	if($@TeamID1!=0 && $@TeamID2!=0){
		announce "Team War : We have 2 Teams signed up now : "+getpartyname($@TeamID1)+" and "+getpartyname($@TeamID2)+".",bc_blue|bc_map;
		set @win1, 0;
		set @win2, 0;
		goto Onstart;
	}
	end;

OnTimer50000:
	if (($@TeamID1!=0) && ($@TeamID2!=0)) {
		stopnpctimer;
		end;
	}
	stopnpctimer;
	set $@TeamID1, 0;
	set $@TeamID1, 0;
	announce "Team War : we lack teams to start registration for two teams are now available",0;
	end;
	
OnStart:
	warpparty "guild_vs2",89,49,$@TeamID1;
	warpparty "guild_vs2",11,49,$@TeamID2;
	set $@start,1;
	end;

lend:
	stopnpctimer;
	set $@TeamID1,0;
	set $@TeamID2,0;
	set $@start,0;
	set @win1,0;
	set @win2,0;
	set @partymembercount,$@members;
	announce "Thanks for joining!",0;
	end;

OnTimer250000:
	Announce "Team War : No Party won due to time limit!",0;
	mapwarp "guild_vs2","prontera",156,191;
	goto lend;
	end;

OnPCDieEvent:
OnPCLogoutEvent:
	if(strcharinfo(3) != "guild_vs2") end;
	warp "prontera",156,191;
	for(set .@i, 0; .@i < $@members; set .@i, .@i + 1) {
		if ( $@partymembercidt1[.@i] == getcharid(0)) {
			deletearray $@partymembercidt1[.@i], 1;
			deletearray $@partymemberaidt1[.@i], 1;
			if( getarraysize($@partymembercidt1) == 0 ) {
				set @win2,getarraysize($@partymembercidt2);
				goto onwin;
			}
		}
		if ( $@partymembercidt2[.@i] == getcharid(0) ) {
			deletearray $@partymembercidt2[.@i], 1;
			deletearray $@partymemberaidt2[.@i], 1;
			if( getarraysize($@partymembercidt2)  == 0 ) {
				set @win1,getarraysize($@partymembercidt1);
				goto onwin;
			}
		}
	}
	end;


onwin:
	if (@win1==0) {
		warpparty "prontera",156,191,$@TeamID1;
		warpparty "prontera",156,191,$@TeamID2;
		Announce "Team War :"+GetPartyName($@TeamID2)+" won and got 3 RoK Star Badges!",0;
		for ( .@i = 0; .@i < @win2; .@i++ )
			getitem 7905, rand(3,3), $@partymemberaidt2[.@i];
		goto lend;
	}
	if (@win2==0) {
		warpparty "prontera",156,191,$@TeamID1;
		warpparty "prontera",156,191,$@TeamID2;
		Announce "Team War :"+GetPartyName($@TeamID1)+" won and got 3 RoK Star Badges!",0;
		for ( .@i = 0; .@i < @win1; .@i++ )
			getitem 7905, rand(3,3), $@partymemberaidt1[.@i];
		goto lend;
	}
	end;
}

guild_vs2	mapflag	nosave	SavePoint
guild_vs2	mapflag	nomemo
guild_vs2	mapflag	nobranch
guild_vs2	mapflag	pvp_noguild
guild_vs2	mapflag	nocommand	60
guild_vs2	mapflag	noicewall
guild_vs2	mapflag	pvp
guild_vs2	mapflag	partylock

I did't test it... give feedback

  • Upvote 1
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  146
  • Reputation:   1
  • Joined:  11/22/11
  • Last Seen:  

Thank you Capuche. It is working great.

 



I have also seen how you help the other thread starter regarding on adding a timer and countdown and block the moves.

 

He has a follow up question on how to put the word "GO" . The script you gave is :

 

bg_updatescore "guild_vs2", .score[1], .score[2];// <- block the move after this line
for ( .@i = 0; .@i < .minplayer2start; .@i++ ){// block the players
	pcblockmove .team1aid[.@i],1;
	pcblockmove .team2aid[.@i],1;
}
sleep 5000;// add a delay of 5 secs
for ( .@i = 0; .@i < .minplayer2start; .@i++ ){// unblock players
	if ( isloggedin( .team1aid[.@i] ) )
		pcblockmove .team1aid[.@i],0;
	if ( isloggedin( .team2aid[.@i] ) )
		pcblockmove .team2aid[.@i],0;
}
sleep 5000;// add a delay of 5 secs
mapannounce "guild_vs2", "buff ready",0;
for ( .@i = 5; .@i >= 0; .@i-- ){// mapannounce the count 5 4 3
	sleep 1000;
	mapannounce "guild_vs2", "Start in "+ .@i +" seconds..",0;
}

Which I am planning to incorporate with my script. Would you mind getting me to direction on how to put a debuff command as well on my script once they are warped inside?

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