Petey Pablo 0 Posted March 29, 2020 Help me to fix this error. Thank you 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 Quote Share this post Link to post Share on other sites
0 meko 170 Posted March 29, 2020 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$; 1 Tsuuu reacted to this Quote Share this post Link to post Share on other sites
0 Petey Pablo 0 Posted March 30, 2020 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 Quote Share this post Link to post Share on other sites
0 HD Scripts 3 Posted March 30, 2020 try set .@num$, .@num % (10 ** (.@i + 1)) / (10 ** .@i) + .@num$; Quote Share this post Link to post Share on other sites
0 Petey Pablo 0 Posted March 30, 2020 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! Quote Share this post Link to post Share on other sites
0 yani9o 1 Posted April 29, 2020 (edited) 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 April 29, 2020 by yani9o Quote Share this post Link to post Share on other sites
Help me to fix this error. Thank you
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