Jump to content
  • 0

Party Vs Party Script [need your help to fix the errors]


nasagnilac

Question


  • Group:  Members
  • Topic Count:  89
  • Topics Per Day:  0.02
  • Content Count:  232
  • Reputation:   15
  • Joined:  11/02/13
  • Last Seen:  

// Supplies and Item Shop
06guild_r,78,76,4,25001	sshop	Headgear's#1::number1	112,5288:1,5401:1,5471:1,5362:1,5361:1,5462:1,5225:1,5420:1,5313:1,5375:1,5389:1,5325:1,5463:1,5372:1,5379:1,5137:1,5377:1,5800:1,18511:1,5376:1,5314:1,5155:1,18510:1,18508:1,18509:1,18506:1,5423:1,5224:1
06guild_r,67,76,4	shop	Cards#1::number2	113,4035:-1,4092:-1,4004:-1,4043:-1,4031:-1,4058:-1,4133:-1,4381:-1,4079:-1,4064:-1
06guild_r,71,76,4	shop	Weapons#1::number3	114,1208:-1,1108:-1,1117:-1,1408:-1,1464:-1,1302:-1,1352:-1,1514:-1,1602:-1,1705:-1,1802:-1,1902:-1,1953:-1,1550:-1,1251:-1
06guild_r,74,76,4	shop	Armors#1::number4	115,2310:-1,2102:-1,2504:-1,2404:-1,2621:-1,2624:-1

06guild_r,132,76,4,25001	sshop	Headgear's#2::number5	112,5288:1,5401:1,5471:1,5305:1,5362:1,5361:1,5462:1,5225:1,5420:1,5313:1,5375:1,5389:1,5325:1,5463:1,5372:1,5379:1,5137:1,5377:1,5800:1,18511:1,5376:1,5314:1,5155:1,18510:1,18508:1,18509:1,18506:1,5423:1,5224:1
06guild_r,121,76,4	shop	Cards#2::number6	113,4035:-1,4092:-1,4004:-1,4043:-1,4031:-1,4058:-1,4133:-1,4381:-1,4079:-1,4064:-1
06guild_r,125,76,4	shop	Weapons#2::number7	114,1208:-1,1108:-1,1117:-1,1408:-1,1464:-1,1302:-1,1352:-1,1514:-1,1602:-1,1705:-1,1802:-1,1902:-1,1953:-1,1550:-1,1251:-1
06guild_r,128,76,4	shop	Armors#2::number8	115,2310:-1,2102:-1,2504:-1,2404:-1,2621:-1,2624:-1


-	script	disable	-1,{
OnInit:
	disablenpc "number1";
	disablenpc "number2";
	disablenpc "number3";
	disablenpc "number4";
	disablenpc "number5";
	disablenpc "number6";
	disablenpc "number7";
	disablenpc "number8";
	disablenpc "PVPB";
	end;

OnDisable:
	disablenpc "number1";
	disablenpc "number2";
	disablenpc "number3";
	disablenpc "number4";
	disablenpc "number5";
	disablenpc "number6";
	disablenpc "number7";
	disablenpc "number8";
	end;

OnEnable:
	enablenpc "number1";
	enablenpc "number2";
	enablenpc "number3";
	enablenpc "number4";
	enablenpc "number5";
	enablenpc "number6";
	enablenpc "number7";
	enablenpc "number8";
	end;

}


-	script	mainevent	-1,{

OnInit:
	setwall "06guild_r",74,78,4,2,0,"TeamAWall";
	setwall "06guild_r",128,78,4,2,0,"TeamBWall";

	setarray .delitem[0],5288,5401,5471,515,5362,5361,5462,5225,5420,5313,5375,5389,5325,5463,5372,5379,
				  5137,5377,5800,18511,5376,5314,5155,18510,18508,18509,18506,5423,5224,4035,4092,
				  4004,4043,4031,4058,4133,4381,4079,4064,2310,2102,2504,2404,2621,2624,1208,1108,
				  1117,1408,1464,1302,1352,1514,1602,1705,1802,1902,1953,1550,1251,25001,14003,645,
				  657,656,678,12009,1751,715,716,717,7136,7135;

	setarray .delitems[0],14003,645,657,656,678,601,12009,1751,715,716,717,7136,7135;

	setarray .BMap$[0],"guild_vs1","guild_vs2","guild_vs3","guild_vs4","guild_vs5";

	setarray .Xa[0],7,7,16,7,19;
	setarray .Ya[0],49,49,50,49,49;

	setarray .Xb[0],92,92,83,92,80;
	setarray .Yb[0],49,49,50,49,49;

	set .MaxMembers,1;
	set .Zeny,1000000;
	set $teama$,"Null";
	set $teamb$,"Null";
	set .Map$,"06guild_r";
	set .gmlvl, 1;

	// Commands
	bindatcmd "gvgteam","mainevent::OnDoTeam",50,99;
	bindatcmd "gvgnpcitem","mainevent::OnDoNpcItem",99,99;
	bindatcmd "gvgsupply","mainevent::OnDoSupply",99,99;
	bindatcmd "gvgstart","mainevent::OnDoStart",99,99;
	bindatcmd "gvgtimer","mainevent::OnDoTimer",99,99;
	bindatcmd "gvgdismiss","mainevent::OnDoDismiss",99,99;
	bindatcmd "gvgreset","mainevent::OnDoReset",99,99;
	end;

//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//
OnDoReset:
	set $teama$,"Null";
	set $teamb$,"Null";
	dispbottom "Team's has been reset";
end;
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//
OnDoTeam:
	if ( compare( .@atcmd_parameters$, "A" )) {
		if( $teama$ != "Null" ){
			dispbottom "Party "+$teama$+" are still registered."; 
			end;
		}
	input .@teama$;


			query_sql ("SELECT `party_id`,`name` FROM `party` WHERE `name` = '"+.@teama$+"'",.@pid,$teama$);
				if (!.@pid){
					dispbottom "Invalid party name."; 
					end;
				}else{
					getpartymember .@pid, 1;
					getpartymember .@pid, 2;
				}

				if ($@partymembercount != .MaxMembers ){
					dispbottom "Party members is not equal to "+.MaxMembers+" members.";
					end;
				}else{
					set .@team$, $teama$;
					set .@x,73;
					set .@y,69;
				}



	}
	else if ( compare( .@atcmd_parameters$, "B" )) {
	if( $teamb$ != "Null" ){
		dispbottom "Party "+$teamb$+" are still registered."; 
		end;
	}
	input .@teamb$;
	

			query_sql ("SELECT `party_id`,`name` FROM `party` WHERE `name` = '"+.@teamb$+"'",.@pid,$teamb$);
				if (!.@pid){
					dispbottom "Invalid party name."; 
					end;
				}else{
					getpartymember .@pid, 1;
					getpartymember .@pid, 2;
				}

				if ($@partymembercount != .MaxMembers ){
					dispbottom "Party members is not equal to "+.MaxMembers+" members.";
					end;
				}else{
					set .@team$, $teamb$;
					set .@x,127;
					set .@y,69;
				}



	}
	else {
		end;
	}

	dispbottom "Team ["+.@team$+"] has been warped.";
	
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
	if(isloggedin($@partymemberaid[.@i],$@partymembercid[.@i])){
		attachrid $@partymemberaid[.@i];
		if(strcharinfo(3) == .Map$) {end;}
		if(Class == Job_Whitesmith || Class == Job_Creator){
			atcommand "@clearcart";
		}
			unequip EQI_HEAD_TOP;
			unequip EQI_ARMOR;
			unequip EQI_HAND_L;
			unequip EQI_HAND_R;
			unequip EQI_GARMENT;
			unequip EQI_SHOES;
			unequip EQI_ACC_L;
			unequip EQI_ACC_R;
			unequip EQI_HEAD_MID;
			unequip EQI_HEAD_LOW;
			atcommand "@storeall";
			set Zeny, Zeny + .Zeny;
			getitem 25001,3;
			warp .Map$,.@x,.@y;
			savepoint .Map$,.@x,.@y;
		}
	}
end;
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//

OnDoNpcItem:
donpcevent "disable::OnEnable";
	mapannounce ""+.Map$+"","Admin: You have 3 minutes to set-up your items.",0;
sleep2 120000;
	mapannounce ""+.Map$+"","Admin: You have 1 minute left to set-up your items.",0;
sleep2 60000;
	mapannounce ""+.Map$+"","Admin: Time's up.",0;
donpcevent "disable::OnDisable";
goto OnDoSupply;
end;

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

OnDoSupply:
	donpcevent "mainevent::OnSupply1";
	donpcevent "mainevent::OnSupply2";
	set .count_online1,0;
	set .count_online2,0;
	donpcevent "mainevent::OnDoStart";
	end;

OnSupply1:
	query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teama$+"'",.@pid);
	getpartymember .@pid, 2;
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
		attachrid $@partymemberaid[.@i];

		if(strcharinfo(3) != .Map$) {end;}
		if (getgmlevel() >= .gmlvl){end;}
		if(Class == Job_Whitesmith || Class == Job_Creator){atcommand "@clearcart";}

		getinventorylist; 
			for(set .@k,0; .@k<getarraysize(.delitems); set .@k,.@k+1){
				if(countitem( .delitems[.@k]) > 0){
					delitem .delitems[.@k],countitem(.delitems[.@k]);
				}
			}
	
		if (Class == Job_Lord_Knight || Class == Job_Paladin || Class == Job_Knight || Class == Job_Crusader){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Assassin_Cross || Class == Job_Assassin){
			getitem 14003,5; getitem 656,10; getitem 678,3;
		}else if(Class == Job_Stalker || Class == Job_Rogue){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Sniper || Class == Job_Clown || Class == Job_Gypsy || Class == Job_Hunter || Class == Job_Bard || Class == Job_Dancer){
			getitem 14003,5; getitem 656,10; getitem 12009,2;
		}else if(Class == Job_High_Wizard || Class == Job_Professor || Class == Job_Wizard || Class == Job_Sage){
			getitem 14003,5; getitem 656,10; getitem 717,75; getitem 716,75; getitem 715,75;
		}else if(Class == Job_High_Priest || Class == Job_Priest){
			getitem 14003,5; getitem 645,10; getitem 717,75;
		}else if(Class == Job_Champion || Class == Job_Monk){
			getitem 14003,5; getitem 656,10;
		}else if(Class == Job_Whitesmith || Class == Job_Blacksmith){
			getitem 14003,5; getitem 657,10; getitem 601,1600;
		}else if(Class == Job_Creator || Class == Job_Alchemist){
			getitem 14003,5; getitem 657,10; getitem 7136,5; getitem 7135,5; getitem 547,150;
		}

	}
end;

OnSupply2:
	query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teamb$+"'",.@pid);
	getpartymember .@pid, 2;
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
		attachrid $@partymemberaid[.@i];

		if(strcharinfo(3) != .Map$) {end;}
		if (getgmlevel() >= .gmlvl){end;}
		if(Class == Job_Whitesmith || Class == Job_Creator){atcommand "@clearcart";}

		getinventorylist; 
			for(set .@k,0; .@k<getarraysize(.delitems); set .@k,.@k+1){
				if(countitem( .delitems[.@k]) > 0){
					delitem .delitems[.@k],countitem(.delitems[.@k]);
				}
			}
	
		if (Class == Job_Lord_Knight || Class == Job_Paladin || Class == Job_Knight || Class == Job_Crusader){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Assassin_Cross || Class == Job_Assassin){
			getitem 14003,5; getitem 656,10; getitem 678,3;
		}else if(Class == Job_Stalker || Class == Job_Rogue){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Sniper || Class == Job_Clown || Class == Job_Gypsy || Class == Job_Hunter || Class == Job_Bard || Class == Job_Dancer){
			getitem 14003,5; getitem 656,10; getitem 12009,2;
		}else if(Class == Job_High_Wizard || Class == Job_Professor || Class == Job_Wizard || Class == Job_Sage){
			getitem 14003,5; getitem 656,10; getitem 717,75; getitem 716,75; getitem 715,75;
		}else if(Class == Job_High_Priest || Class == Job_Priest){
			getitem 14003,5; getitem 645,10; getitem 717,75;
		}else if(Class == Job_Champion || Class == Job_Monk){
			getitem 14003,5; getitem 656,10;
		}else if(Class == Job_Whitesmith || Class == Job_Blacksmith){
			getitem 14003,5; getitem 657,10; getitem 601,1600;
		}else if(Class == Job_Creator || Class == Job_Alchemist){
			getitem 14003,5; getitem 657,10; getitem 7136,5; getitem 7135,5; getitem 547,150;
		}

	}
end;

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

OnDoStart:

	mapannounce ""+.Map$+"","Admin: You have 1 minute to set-up your supplies.",0;
	announce "Admin: Betting for your favorite team is now open at prontera.",0;
enablenpc "PVPB";
initnpctimer;
end;

OnTimer60000:
	mapannounce ""+.Map$+"","Admin: Time's up.",0;
end;

OnTimer63000:
	mapannounce ""+.Map$+"","Admin: You will warped now to the battle arena.",0;
stopnpctimer;
disablenpc "PVPB";
goto S_warp;
end;


S_warp:
set .@bmap, rand(getarraysize(.BMap$));
set $TMap$, .BMap$[.@bmap];

set .@Xmapa, .Xa[.@bmap];
set .@Ymapa, .Ya[.@bmap];

set .@Xmapb, .Xb[.@bmap];
set .@Ymapb, .Yb[.@bmap];

warpchar $TMap$,50,49,1;
areawarp .Map$,66,60,79,77,$TMap$,.@Xmapa,.@Ymapa;	// Team A
areawarp .Map$,120,60,133,77,$TMap$,.@Xmapb,.@Ymapb;	// Team B

	sleep 5000;
		mapannounce ""+$TMap$+"","Before we start you have 10 seconds to buffs",0;
	sleep 10000;
		mapannounce ""+$TMap$+"","Get ready at the count of 5 we will start the battle!!....",0;
	sleep 3000;
		mapannounce ""+$TMap$+"","5",0;
	sleep 1000;
		mapannounce ""+$TMap$+"","4",0;
	sleep 1000;
		mapannounce ""+$TMap$+"","3",0;
	sleep 1000;
		mapannounce ""+$TMap$+"","2",0;
	sleep 1000;
		mapannounce ""+$TMap$+"","1",0;
	sleep 1000;
		mapannounce ""+$TMap$+"","GO!",0;
end;

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

OnDoTimer:

if ( compare( .@atcmd_parameters$, "on" )) {
	mapannounce ""+$TMap$+"","5 minutes to eliminate all your opponent.",0;
	initnpctimer;
	end;

	OnTimer120000:
	mapannounce ""+$TMap$+"","3 minutes left to eliminate all your opponent.",0;
	end;

	OnTimer180000:
	mapannounce ""+$TMap$+"","2 minutes left to eliminate all your opponent.",0;
	end;

	OnTimer240000:
	mapannounce ""+$TMap$+"","1 minute left to eliminate all your opponent.",0;
	end;

	OnTimer300000:
	mapannounce ""+$TMap$+"","Time is up.",0;
	stopnpctimer;
	goto OnDoCheck;
}else if ( compare( .@atcmd_parameters$, "off" )) {
	stopnpctimer;
	goto OnDoCheck;
}
	message strcharinfo(0),"Usage @gvgtimer <on/off>";
	message strcharinfo(0),"@gvgtimer failed.";
end;

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

OnDoCheck:

	query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teama$+"'",.@pid5);
getpartymember .@pid5, 1;
getpartymember .@pid5, 2;

	for ( set .@i, 0; .@i < .MaxMembers; set .@i, .@i +1 ){
		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ){
			attachrid $@partymemberaid[.@i];
			if(strcharinfo(3) == $TMap$) {set .count_online1, .count_online1 +1;}
		}	
	}

	query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teamb$+"'",.@pid6);
getpartymember .@pid6, 1;
getpartymember .@pid6, 2;

	for ( set .@i, 0; .@i < .MaxMembers; set .@i, .@i +1 ){
		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ){
			attachrid $@partymemberaid[.@i];
			if(strcharinfo(3) == $TMap$) {set .count_online2, .count_online2 +1;}		
		}	
	}

	if(.count_online1 == .count_online2){
			announce ""+getpartyname(.@pid1)+" Vs "+getpartyname(.@pid2)+" : The battle is draw!",0;
		set $winner$, $teamab$;
	}else if(.count_online1 > .count_online2){
			announce ""+getpartyname(.@pid1)+" Vs "+getpartyname(.@pid2)+" : Winner "+getpartyname(.@pid1)+".",0;
		set $winner$, $teama$;
	}else if(.count_online1 < .count_online2){
			announce ""+getpartyname(.@pid1)+" Vs "+getpartyname(.@pid2)+" : Winner "+getpartyname(.@pid2)+".",0;
		set $winner$, $teamb$;
	}
		set .count_online1,0;
		set .count_online2,0;
		atcommand "@doommap";
		donpcevent "Party Vs Party Betting::OnBet";
		end;
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//

OnDoDismiss:

			query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teama$+"'",.@pid7);
			getpartymember .@pid7, 1;
			getpartymember .@pid7, 2;
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){

		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ){
			attachrid $@partymemberaid[.@i];

			if(strcharinfo(3) != .Map$) {end;}

			unequip EQI_HEAD_TOP;
			unequip EQI_ARMOR;
			unequip EQI_HAND_L;
			unequip EQI_HAND_R;
			unequip EQI_GARMENT;
			unequip EQI_SHOES;
			unequip EQI_ACC_L;
			unequip EQI_ACC_R;
			unequip EQI_HEAD_MID;
			unequip EQI_HEAD_LOW;

			if(Class == Job_Whitesmith || Class == Job_Creator){atcommand "@clearcart";}

		getinventorylist; 
			for(set .@p,0; .@p<getarraysize(.delitem); set .@p,.@p+1){
				if(countitem( .delitem[.@p]) > 0){
				delitem .delitem[.@p],countitem(.delitem[.@p]);
				}
			}
		getinventorylist; 
			for(set .@k,0; .@k<getarraysize(.delitems); set .@k,.@k+1){
				if(countitem( .delitems[.@k]) > 0){
					delitem .delitems[.@k],countitem(.delitems[.@k]);
				}
			}

		savepoint "prontera", 116, 73;
		warp "prontera", 116, 73;
		}
	}

			query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teamb$+"'",.@pid8);
			getpartymember .@pid8, 1;
			getpartymember .@pid8, 2;
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){

		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ){
			attachrid $@partymemberaid[.@i];

			if(strcharinfo(3) != .Map$) {end;}

			unequip EQI_HEAD_TOP;
			unequip EQI_ARMOR;
			unequip EQI_HAND_L;
			unequip EQI_HAND_R;
			unequip EQI_GARMENT;
			unequip EQI_SHOES;
			unequip EQI_ACC_L;
			unequip EQI_ACC_R;
			unequip EQI_HEAD_MID;
			unequip EQI_HEAD_LOW;

			if(Class == Job_Whitesmith || Class == Job_Creator){atcommand "@clearcart";}

		getinventorylist; 
			for(set .@p,0; .@p<getarraysize(.delitem); set .@p,.@p+1){
				if(countitem( .delitem[.@p]) > 0){
				delitem .delitem[.@p],countitem(.delitem[.@p]);
				}
			}
		getinventorylist; 
			for(set .@k,0; .@k<getarraysize(.delitems); set .@k,.@k+1){
				if(countitem( .delitems[.@k]) > 0){
					delitem .delitems[.@k],countitem(.delitems[.@k]);
				}
			}

		savepoint "prontera", 116, 73;
		warp "prontera", 116, 73;
		}
	}
end;
}

 

 bindatcmd "gvgteam","mainevent::OnDoTeam",50,99;

At this part when I have 1 party member and I change this .MaxMembers to 5. My party will be warped but also other party will be warp to in order to complete the 5 member needed.

 

 

   bindatcmd "gvgsupply","mainevent::OnDoSupply",99,99;

At this part I just change script and doesn't work now. Both party dont receive supply. Can you please check if my codes is correct.

 

 

    bindatcmd "gvgstart","mainevent::OnDoStart",99,99;

    bindatcmd "gvgtimer","mainevent::OnDoTimer",99,99;

I am not sure if this part has no minor errors. Can you please also double check the timer if I am correct.

 

 

    bindatcmd "gvgdismiss","mainevent::OnDoDismiss",99,99;

At this part it should be removing the items from the characters to avoid exploit but it doesn't work now same as the "gvgsupply".

 

 

 

I hope someone will be interested to my script and help me.. Willing to share this idea when its 100% completed.

 

 

Link to comment
Share on other sites

4 answers to this question

Recommended Posts


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

I quickly read your script so about

 

At this part I just change script and doesn't work now. Both party dont receive supply. Can you please check if my codes is correct.

check the loop

	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
	if(isloggedin($@partymemberaid[.@i],$@partymembercid[.@i])){
		attachrid $@partymemberaid[.@i];
		if(strcharinfo(3) == .Map$) {end;}

if(strcharinfo(3) == .Map$) {end;} => the loop should continue, replace end by continue

 

 

At this part I just change script and doesn't work now. Both party dont receive supply. Can you please check if my codes is correct.

same that above

 

 

others things:

disablenpc "PVPB";

unknown npc PVPB

	set $teama$,"Null";
	set $teamb$,"Null";

you could use an empty string by default and $@ variables (no need to save permanently theses var)

query_sql ("SELECT `party_id`,`name` FROM `party` WHERE `name` = '"+.@teama$+"'",.@pid,$teama$);
	if (!.@pid){
		dispbottom "Invalid party name."; 
		end;

to check if the player had a party, use getcharid(1)

 

*getcharid(<type>{,"<character name>"})

This function will return a unique ID number of the invoking character, or, if a
character name is specified, of that player.

Type is the kind of associated ID number required:

 0 - Character ID number.
 1 - Party ID number.

...

if (Class == Job_Lord_Knight || Class == Job_Paladin || Class == Job_Knight || Class == Job_Crusader){

you can use the const BaseJob

 

BaseJob     - The character's 'normal' job, regardless of Upper value.
              For example, this will return Job_Acolyte for Acolyte,
              Baby Acolyte, and High Acolyte.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  89
  • Topics Per Day:  0.02
  • Content Count:  232
  • Reputation:   15
  • Joined:  11/02/13
  • Last Seen:  

 

I quickly read your script so about

 

At this part I just change script and doesn't work now. Both party dont receive supply. Can you please check if my codes is correct.

check the loop

	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
	if(isloggedin($@partymemberaid[.@i],$@partymembercid[.@i])){
		attachrid $@partymemberaid[.@i];
		if(strcharinfo(3) == .Map$) {end;}

if(strcharinfo(3) == .Map$) {end;} => the loop should continue, replace end by continue

 

 

At this part I just change script and doesn't work now. Both party dont receive supply. Can you please check if my codes is correct.

same that above

 

 

others things:

disablenpc "PVPB";

unknown npc PVPB

	set $teama$,"Null";
	set $teamb$,"Null";

you could use an empty string by default and $@ variables (no need to save permanently theses var)

query_sql ("SELECT `party_id`,`name` FROM `party` WHERE `name` = '"+.@teama$+"'",.@pid,$teama$);
	if (!.@pid){
		dispbottom "Invalid party name."; 
		end;

to check if the player had a party, use getcharid(1)

 

*getcharid(<type>{,"<character name>"})

This function will return a unique ID number of the invoking character, or, if a

character name is specified, of that player.

Type is the kind of associated ID number required:

 0 - Character ID number.

 1 - Party ID number.

...

if (Class == Job_Lord_Knight || Class == Job_Paladin || Class == Job_Knight || Class == Job_Crusader){

you can use the const BaseJob

 

BaseJob     - The character's 'normal' job, regardless of Upper value.

              For example, this will return Job_Acolyte for Acolyte,

              Baby Acolyte, and High Acolyte.

 

 

 

 

I guess you don't understand @gvgsupply codes will be this one and no other thing.. Error must be somewhere in this code.

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

OnDoSupply:
	donpcevent "mainevent::OnSupply1";
	donpcevent "mainevent::OnSupply2";
	set .count_online1,0;
	set .count_online2,0;
	donpcevent "mainevent::OnDoStart";
	end;

OnSupply1:
	query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teama$+"'",.@pid);
	getpartymember .@pid, 2;
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
		attachrid $@partymemberaid[.@i];
		if(strcharinfo(3) != .Map$) {end;}
		if(Class == Job_Whitesmith || Class == Job_Creator){atcommand "@clearcart";}

		getinventorylist; 
			for(set .@k,0; .@k<getarraysize(.delitems); set .@k,.@k+1){
				if(countitem( .delitems[.@k]) > 0){
					delitem .delitems[.@k],countitem(.delitems[.@k]);
				}
			}
	
		if (Class == Job_Lord_Knight || Class == Job_Paladin || Class == Job_Knight || Class == Job_Crusader){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Assassin_Cross || Class == Job_Assassin){
			getitem 14003,5; getitem 656,10; getitem 678,3;
		}else if(Class == Job_Stalker || Class == Job_Rogue){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Sniper || Class == Job_Clown || Class == Job_Gypsy || Class == Job_Hunter || Class == Job_Bard || Class == Job_Dancer){
			getitem 14003,5; getitem 656,10; getitem 12009,2;
		}else if(Class == Job_High_Wizard || Class == Job_Professor || Class == Job_Wizard || Class == Job_Sage){
			getitem 14003,5; getitem 656,10; getitem 717,75; getitem 716,75; getitem 715,75;
		}else if(Class == Job_High_Priest || Class == Job_Priest){
			getitem 14003,5; getitem 645,10; getitem 717,75;
		}else if(Class == Job_Champion || Class == Job_Monk){
			getitem 14003,5; getitem 656,10;
		}else if(Class == Job_Whitesmith || Class == Job_Blacksmith){
			getitem 14003,5; getitem 657,10; getitem 601,1600;
		}else if(Class == Job_Creator || Class == Job_Alchemist){
			getitem 14003,5; getitem 657,10; getitem 7136,5; getitem 7135,5; getitem 547,150;
		}

	}
end;

OnSupply2:
	query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teamb$+"'",.@pid);
	getpartymember .@pid, 2;
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
		attachrid $@partymemberaid[.@i];

		if(strcharinfo(3) != .Map$) {end;}
		if (getgmlevel() >= .gmlvl){end;}
		if(Class == Job_Whitesmith || Class == Job_Creator){atcommand "@clearcart";}

		getinventorylist; 
			for(set .@k,0; .@k<getarraysize(.delitems); set .@k,.@k+1){
				if(countitem( .delitems[.@k]) > 0){
					delitem .delitems[.@k],countitem(.delitems[.@k]);
				}
			}
	
		if (Class == Job_Lord_Knight || Class == Job_Paladin || Class == Job_Knight || Class == Job_Crusader){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Assassin_Cross || Class == Job_Assassin){
			getitem 14003,5; getitem 656,10; getitem 678,3;
		}else if(Class == Job_Stalker || Class == Job_Rogue){
			getitem 14003,5; getitem 657,10;
		}else if(Class == Job_Sniper || Class == Job_Clown || Class == Job_Gypsy || Class == Job_Hunter || Class == Job_Bard || Class == Job_Dancer){
			getitem 14003,5; getitem 656,10; getitem 12009,2;
		}else if(Class == Job_High_Wizard || Class == Job_Professor || Class == Job_Wizard || Class == Job_Sage){
			getitem 14003,5; getitem 656,10; getitem 717,75; getitem 716,75; getitem 715,75;
		}else if(Class == Job_High_Priest || Class == Job_Priest){
			getitem 14003,5; getitem 645,10; getitem 717,75;
		}else if(Class == Job_Champion || Class == Job_Monk){
			getitem 14003,5; getitem 656,10;
		}else if(Class == Job_Whitesmith || Class == Job_Blacksmith){
			getitem 14003,5; getitem 657,10; getitem 601,1600;
		}else if(Class == Job_Creator || Class == Job_Alchemist){
			getitem 14003,5; getitem 657,10; getitem 7136,5; getitem 7135,5; getitem 547,150;
		}

	}
end;

 

disablenpc "PVPB";

I don't really add that npc to my post.

 

 

        if(strcharinfo(3) != .Map$) {end;}

This part means if the party members is not on .Map$ they wont receive any supplies.

Edited by gmprestige
Link to comment
Share on other sites


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

 

I guess you don't understand @gvgsupply codes will be this one and no other thing..

ahah ok let me explain

indead the error is here

OnSupply1:
	query_sql ("SELECT `party_id` FROM `party` WHERE `name` = '"+$teama$+"'",.@pid);
	getpartymember .@pid, 2;
	for( set .@i, 0; .@i < .MaxMembers; set .@i, .@i + 1 ){
		attachrid $@partymemberaid[.@i];
		if(strcharinfo(3) != .Map$) {end;}

you make a loop to attach the player in the party and check if they are on the event map. If the player is not on the event map, the loop should continue and check the other player but you write an end so the loop is stopped

 

A sample: party's name "bidon"

Players       map

Bernard     prontera

Lucie          geffen

Luc            prontera

 

Your event map is prontera. Lucie is on geffen, so your script will stop (if(strcharinfo(3) != .Map$) {end;}) with her. It won't delete and give the item to Luc (wow so sad)

Well well that was my 2 cents, good luck

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  89
  • Topics Per Day:  0.02
  • Content Count:  232
  • Reputation:   15
  • Joined:  11/02/13
  • Last Seen:  

Oh I got it... Thank you very much.. If you want my script just message me.. I still need to enhance it.

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