Jump to content
  • 0

R> Simple Bodystyle changer


Hayato

Question


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.01
  • Content Count:  66
  • Reputation:   10
  • Joined:  11/15/17
  • Last Seen:  

Hi.

Im looking for a NPC with only 1 option which is "Change to Alternative Outfit?/Change back to normal outfit?".

or could somebody add it to this stylist please?



// credits to Annieruru
function	script	ValueConvert	{
	set .@num, atoi(""+getarg(0));
	if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
	set .@l, getstrlen(""+.@num);
	for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) {
		set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
			if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
	}
	return .@num$;
}


-	script	Stylist	-1,{
OnTalk:
	mes "[^0055FF ::: Stylist ::: ^000000]";
	mes "I can change your appearance.";
	if( .cost_size ){
		mes " ";
		mes "^777777[ SERVICES PAYMENT ]^000000";
		for( .@i = 0; .@i < .menu_size; .@i++ )
			if( .npc_mode & ( 1 << .@i ) )
				if( .cost[.@i] )
					mes "^0055FF"+.menu_name$[.@i]+" : ^777777"+ValueConvert( .cost[.@i] )+" "+.currency_name$[.@i]+"^000000";
				else
					mes "^0055FF"+.menu_name$[.@i]+" : ^777777Free of Charge^000000";
	}
	next;
	@style = ( select( .npc_menu$ ) - 1 );
	@style_value = getlook( .look_type[@style] );
	deletearray .@blacklist;
	switch( @style ){
		Case 0: .@blacklist$ = ","+getd( ".blacklist_hairstyle_"+Sex+"$" )+","; break;
		Case 1: .@blacklist$ = ","+getd( ".blacklist_haircolor_"+Sex+"$" )+","; break;
		Case 2: .@blacklist$ = ","+getd( ".blacklist_cloth_"+Sex+"$" )+","; break;
		default: break;
	}

	.@style_number = .min_style[@style];

	addtimer 1000,strnpcinfo(0)+"::OnPCLogoutEvent";
	do{
		message strcharinfo(0),.menu_name$[@style]+" : "+.@style_number+"th";
		.@removed = 0;
		if( compare( .@blacklist$,","+.@style_number+"," ) ){
			message strcharinfo(0),"[ REMOVED ] "+.menu_name$[@style]+" : "+.@style_number+"th";
			.@removed = 1;
			// setlook .look_type[@style],.min_style[@style];
		}else{
			setlook .look_type[@style],.@style_number;
		}
		
		.@next = .@style_number + 1;
		.@prev = .@style_number - 1;
		if( .@next > .max_style[@style] ) .@next = .min_style[@style];
		if( .@prev < .min_style[@style] ) .@prev = .max_style[@style];
		
		@select = prompt( (( .@backward )?"Backward":"Forward" )+" - [ ^777777"+(( .@backward )? .@prev:.@next )+"th Style^000000 ]",
					(( !.@backward )?"Backward":"Forward" )+" - [ ^777777"+(( !.@backward )? .@prev:.@next )+"th Style^000000 ]",
					"Jump to a Style",
					( .@removed )?"":"^0055FFOkay, I want this "+.menu_name$[@style]+"^000000" );
					
		if( @select == 2 ) .@backward = !.@backward;
		
		switch( @select ){
			Case 1:	
			Case 2:
				.@style_number = (( .@backward )? .@prev:.@next );
				break;
			Case 3:	
				message strcharinfo(0),"Available Style : "+.min_style[@style]+" ~ "+.max_style[@style]+".";
				input .@style_number,.min_style[@style],.max_style[@style];
				break;
			Case 4:
				.@atoi_currency = atoi( .currency$[@style] );
				if( @style_value == .@style_number ){
					message strcharinfo(0),"Swt..that is your original hairstyles.";
					break;
				} else if( .@atoi_currency ){
					if( countitem( .@atoi_currency ) >= .cost[@style] ){
						.@success = 1;
						delitem .@atoi_currency,.cost[@style];
					}
				}else{
					if( getd( ""+.currency$[@style] ) >= .cost[@style] ){
						.@success = 1;
						setd( ""+.currency$[@style] ),( getd( ""+.currency$[@style] ) - .cost[@style] );
					}
				}
				if( .@success ){
					message strcharinfo(0),"Enjoy your NEW "+.menu_name$[@style]+" !!";
					@style_value = .@style_number;
				}else{
					mes "You dont have enough "+.currency_name$[@style]+" to change this "+.menu_name$[@style]+".";
					mes "Cost : ^777777"+ValueConvert( .cost[@style] )+" "+.currency_name$[@style]+"^000000";
					close2;
				}

			default:
				setlook .look_type[@style],@style_value;
				break;
		}
	}while( @select != 4 && @select != 255 );
	mes "Come back again next time. ^^";
	@select = 0;
	close2;
	deltimer strnpcinfo(0)+"::OnPCLogoutEvent";

OnPCLogoutEvent:
	if( @select )
		setlook .look_type[@style],@style_value;
	end;
	
OnInit:
	// NPC Mode ( Bitmask )
	//	1 - Enable Hairstyle
	//	2 - Enable Hair Color
	//	4 - Enable Cloth Color
	.npc_mode = 7;
	
	// Menu Name
	setarray .menu_name$,
		"Hair Style",
		"Hair Color",
		"Cloth Color";
	
	// Payment Currency + Cost
	// Can be ITEM ID or Any Variable.
	setarray .currency$,
		"Zeny",	//	Hairstyle - Ex. need Zeny
		"Zeny",	//	Hair Color - Ex. need Zeny
		"Zeny";	//	Cloth Color - Ex. need Zeny
		
	setarray .cost,
		50000,	//	Hairstyle ( 10,000 Zeny )
		50000,	//	Hair Color ( 10,000 Zeny )
		50000;	//	Cloth Color ( 10,000 Zeny )
		
	// Blacklisted Style for each style and each gender.
	// --- Female ---
	.blacklist_hairstyle_0$ = "0";
	.blacklist_haircolor_0$ = "99";
	.blacklist_cloth_0$ = "99";
	// --- Male ---
	.blacklist_hairstyle_1$ = "0";
	.blacklist_haircolor_1$ = "99";
	.blacklist_cloth_1$ = "99";

	// Dont edit
	setarray .min_style,getbattleflag( "min_hair_style" ),getbattleflag( "min_hair_color" ),getbattleflag( "min_cloth_color" );
	setarray .max_style,getbattleflag( "max_hair_style" ),getbattleflag( "max_hair_color" ),getbattleflag( "max_cloth_color" );
	.menu_size = getarraysize( .menu_name$ );
	.cost_size = getarraysize( .cost );
	setarray .look_type,LOOK_HAIR,LOOK_HAIR_COLOR,LOOK_CLOTHES_COLOR;
	for( .npc_menu$ = ""; .@i < .menu_size; .@i++ )
		.npc_menu$ = .npc_menu$ + ( ( .npc_mode & ( 1 << .@i ) )? .menu_name$[.@i]:"" ) +":";
	for( .@i = 0; .@i < .cost_size; .@i++ ){
		.@atoi = atoi( .currency$[.@i] );
		.currency_name$[.@i] = ( ( !.@atoi || getitemname( .@atoi ) == "null" )? .currency$[.@i]:getitemname( .@atoi ) );
	}
	end;

}


// NPC Lists
prontera,184,216,4	script	Stylist#main	878,{
	doevent "Stylist::OnTalk";
}

//prontera,149,184,5	duplicate(Adv. Stylist#main)	Adv. Stylist#1	878

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  59
  • Topics Per Day:  0.01
  • Content Count:  1281
  • Reputation:   170
  • Joined:  06/12/12
  • Last Seen:  

12 hours ago, rye305 said:

Hi.

Im looking for a NPC with only 1 option which is "Change to Alternative Outfit?/Change back to normal outfit?".

or could somebody add it to this stylist please?




// credits to Annieruru
function	script	ValueConvert	{
	set .@num, atoi(""+getarg(0));
	if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
	set .@l, getstrlen(""+.@num);
	for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) {
		set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
			if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
	}
	return .@num$;
}


-	script	Stylist	-1,{
OnTalk:
	mes "[^0055FF ::: Stylist ::: ^000000]";
	mes "I can change your appearance.";
	if( .cost_size ){
		mes " ";
		mes "^777777[ SERVICES PAYMENT ]^000000";
		for( .@i = 0; .@i < .menu_size; .@i++ )
			if( .npc_mode & ( 1 << .@i ) )
				if( .cost[.@i] )
					mes "^0055FF"+.menu_name$[.@i]+" : ^777777"+ValueConvert( .cost[.@i] )+" "+.currency_name$[.@i]+"^000000";
				else
					mes "^0055FF"+.menu_name$[.@i]+" : ^777777Free of Charge^000000";
	}
	next;
	@style = ( select( .npc_menu$ ) - 1 );
	@style_value = getlook( .look_type[@style] );
	deletearray .@blacklist;
	switch( @style ){
		Case 0: .@blacklist$ = ","+getd( ".blacklist_hairstyle_"+Sex+"$" )+","; break;
		Case 1: .@blacklist$ = ","+getd( ".blacklist_haircolor_"+Sex+"$" )+","; break;
		Case 2: .@blacklist$ = ","+getd( ".blacklist_cloth_"+Sex+"$" )+","; break;
		default: break;
	}

	.@style_number = .min_style[@style];

	addtimer 1000,strnpcinfo(0)+"::OnPCLogoutEvent";
	do{
		message strcharinfo(0),.menu_name$[@style]+" : "+.@style_number+"th";
		.@removed = 0;
		if( compare( .@blacklist$,","+.@style_number+"," ) ){
			message strcharinfo(0),"[ REMOVED ] "+.menu_name$[@style]+" : "+.@style_number+"th";
			.@removed = 1;
			// setlook .look_type[@style],.min_style[@style];
		}else{
			setlook .look_type[@style],.@style_number;
		}
		
		.@next = .@style_number + 1;
		.@prev = .@style_number - 1;
		if( .@next > .max_style[@style] ) .@next = .min_style[@style];
		if( .@prev < .min_style[@style] ) .@prev = .max_style[@style];
		
		@select = prompt( (( .@backward )?"Backward":"Forward" )+" - [ ^777777"+(( .@backward )? .@prev:.@next )+"th Style^000000 ]",
					(( !.@backward )?"Backward":"Forward" )+" - [ ^777777"+(( !.@backward )? .@prev:.@next )+"th Style^000000 ]",
					"Jump to a Style",
					( .@removed )?"":"^0055FFOkay, I want this "+.menu_name$[@style]+"^000000" );
					
		if( @select == 2 ) .@backward = !.@backward;
		
		switch( @select ){
			Case 1:	
			Case 2:
				.@style_number = (( .@backward )? .@prev:.@next );
				break;
			Case 3:	
				message strcharinfo(0),"Available Style : "+.min_style[@style]+" ~ "+.max_style[@style]+".";
				input .@style_number,.min_style[@style],.max_style[@style];
				break;
			Case 4:
				.@atoi_currency = atoi( .currency$[@style] );
				if( @style_value == .@style_number ){
					message strcharinfo(0),"Swt..that is your original hairstyles.";
					break;
				} else if( .@atoi_currency ){
					if( countitem( .@atoi_currency ) >= .cost[@style] ){
						.@success = 1;
						delitem .@atoi_currency,.cost[@style];
					}
				}else{
					if( getd( ""+.currency$[@style] ) >= .cost[@style] ){
						.@success = 1;
						setd( ""+.currency$[@style] ),( getd( ""+.currency$[@style] ) - .cost[@style] );
					}
				}
				if( .@success ){
					message strcharinfo(0),"Enjoy your NEW "+.menu_name$[@style]+" !!";
					@style_value = .@style_number;
				}else{
					mes "You dont have enough "+.currency_name$[@style]+" to change this "+.menu_name$[@style]+".";
					mes "Cost : ^777777"+ValueConvert( .cost[@style] )+" "+.currency_name$[@style]+"^000000";
					close2;
				}

			default:
				setlook .look_type[@style],@style_value;
				break;
		}
	}while( @select != 4 && @select != 255 );
	mes "Come back again next time. ^^";
	@select = 0;
	close2;
	deltimer strnpcinfo(0)+"::OnPCLogoutEvent";

OnPCLogoutEvent:
	if( @select )
		setlook .look_type[@style],@style_value;
	end;
	
OnInit:
	// NPC Mode ( Bitmask )
	//	1 - Enable Hairstyle
	//	2 - Enable Hair Color
	//	4 - Enable Cloth Color
	.npc_mode = 7;
	
	// Menu Name
	setarray .menu_name$,
		"Hair Style",
		"Hair Color",
		"Cloth Color";
	
	// Payment Currency + Cost
	// Can be ITEM ID or Any Variable.
	setarray .currency$,
		"Zeny",	//	Hairstyle - Ex. need Zeny
		"Zeny",	//	Hair Color - Ex. need Zeny
		"Zeny";	//	Cloth Color - Ex. need Zeny
		
	setarray .cost,
		50000,	//	Hairstyle ( 10,000 Zeny )
		50000,	//	Hair Color ( 10,000 Zeny )
		50000;	//	Cloth Color ( 10,000 Zeny )
		
	// Blacklisted Style for each style and each gender.
	// --- Female ---
	.blacklist_hairstyle_0$ = "0";
	.blacklist_haircolor_0$ = "99";
	.blacklist_cloth_0$ = "99";
	// --- Male ---
	.blacklist_hairstyle_1$ = "0";
	.blacklist_haircolor_1$ = "99";
	.blacklist_cloth_1$ = "99";

	// Dont edit
	setarray .min_style,getbattleflag( "min_hair_style" ),getbattleflag( "min_hair_color" ),getbattleflag( "min_cloth_color" );
	setarray .max_style,getbattleflag( "max_hair_style" ),getbattleflag( "max_hair_color" ),getbattleflag( "max_cloth_color" );
	.menu_size = getarraysize( .menu_name$ );
	.cost_size = getarraysize( .cost );
	setarray .look_type,LOOK_HAIR,LOOK_HAIR_COLOR,LOOK_CLOTHES_COLOR;
	for( .npc_menu$ = ""; .@i < .menu_size; .@i++ )
		.npc_menu$ = .npc_menu$ + ( ( .npc_mode & ( 1 << .@i ) )? .menu_name$[.@i]:"" ) +":";
	for( .@i = 0; .@i < .cost_size; .@i++ ){
		.@atoi = atoi( .currency$[.@i] );
		.currency_name$[.@i] = ( ( !.@atoi || getitemname( .@atoi ) == "null" )? .currency$[.@i]:getitemname( .@atoi ) );
	}
	end;

}


// NPC Lists
prontera,184,216,4	script	Stylist#main	878,{
	doevent "Stylist::OnTalk";
}

//prontera,149,184,5	duplicate(Adv. Stylist#main)	Adv. Stylist#1	878

 

 

here my scrpt

prontera,154,194,4	script	Bodystyle Changer	122,{
	set @nama$,"[^FF8000Stylist^000000]";
	
	STYLISH:
	opendressroom(0);
	mes @nama$;
	mes "Do you want change your bodystyle?";
	Lmain:
	menu "Yes",Lbodystyle,"No, Thanks",GJ;

	Lbodystyle:
		next;
		if ( class <= 4054 || class == 4060 || 
			class == 4080 || class == 4081 ||
			class == 4082 || class == 4096 || class >= 4112 ) {
		mes "Sorry, this service not available for your job.";
		end;}
		mes "^FF0000[ Super Stylist - Bodystyle ]^000000";
		mes "Insert a bodystyle number";
		mes "Bodystyles: 0 to 1";
		input .@bodystyle;
		if (.@bodystyle < 0 || .@bodystyle > 1) {
			set .@bodystyle,0;
		}
			setlook LOOK_BODY2,.@bodystyle;
		next;
		mes "Are you done?";
		menu "Back to menu",Lmain,"I'm done",SETUJU;	

	SETUJU:
	next;
	mes @nama$;
	mes "Wow... You look so cool! Come to me if you want change bodystyle!";
	close;
	
	GJ:
	next;
	mes @nama$;
	mes "Alright... Come to me if you want change bodystyle!";
	close;
}
Edited by hendra814
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...