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

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

  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.

Loading...

×
×
  • Create New...

Important Information

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