Jump to content
  • 0
Petey Pablo

Need help about advanced stylist

Question

Help me to fix this error. Thank you

 

image.png.89c60a979f3cc208adc3e86e43bf66e3.png

 

This is the full script

// 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	FAKE_NPC,{
OnTalk:
	mes "[^0055FF ::: Adv. 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,
		10000,	//	Hairstyle ( 10,000 Zeny )
		10000,	//	Hair Color ( 10,000 Zeny )
		10000;	//	Cloth Color ( 10,000 Zeny )
		
	// Blacklisted Style for each style and each gender.
	// --- Female ---
	.blacklist_hairstyle_0$ = "2,4,6";
	.blacklist_haircolor_0$ = "1,3,5";
	.blacklist_cloth_0$ = "1,2,3";
	// --- Male ---
	.blacklist_hairstyle_1$ = "3,5,7";
	.blacklist_haircolor_1$ = "2,4,6";
	.blacklist_cloth_1$ = "4,5,6";

	// 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,155,181,5	script	Adv. Stylist#main	4_M_OILMAN,{
	doevent "Stylist::OnTalk";
}

prontera,115,181,5	duplicate(Adv. Stylist#main)	Adv. Stylist#1	4_M_OILMAN
prontera,115,181,5	duplicate(Adv. Stylist#main)	Adv. Stylist#2	4_M_OILMAN
prontera,115,181,5	duplicate(Adv. Stylist#main)	Adv. Stylist#3	4_M_OILMAN

 

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

pow() has been replaced by the exponentiation operator (x ** y),

see here: 

 

 

 

In your case you would need to do these changes:

// change this
set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;

// to this:
.@num$ = .@num % (10 ** (.@i + 1)) / (10 ** .@i) + .@num$;

 

Share this post


Link to post
Share on other sites
  • 0
7 hours ago, meko said:

pow() has been replaced by the exponentiation operator (x ** y),

see here: 

 

 

 

In your case you would need to do these changes:

// change this set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$; // to this: .@num$ = .@num % (10 ** (.@i + 1)) / (10 ** .@i) + .@num$;


// change this
set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;

// to this:
.@num$ = .@num % (10 ** (.@i + 1)) / (10 ** .@i) + .@num$;

 

 

I already change but still error

image.png.421f2187cb19c85ed2cd205e5dbede55.png

Share this post


Link to post
Share on other sites
  • 0
53 minutes ago, HD Scripts said:

try 

 

set .@num$, .@num % (10 ** (.@i + 1)) / (10 ** .@i) + .@num$;


set .@num$, .@num % (10 ** (.@i + 1)) / (10 ** .@i) + .@num$;

 

 

No error but the zeny cost is not working!

Share this post


Link to post
Share on other sites
  • 0
On 3/31/2020 at 1:50 AM, Petey Pablo said:

 

No error but the zeny cost is not working!

Hi there 😃

 

Fix for the Zeny issue:

Add this line after "@style_value = .@style_number;" (line 92)

Zeny -= .cost[@style];

The problem was, that the script only checks IF you have the zeny, but didn't take it from you.

 

But it works with that line ;)

Edited by yani9o

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.