//===== Hercules Script ====================================== //= Stylist //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.1 //===== Description: ========================================= //= Changes your hair style, hair color, and cloth color. //===== Additional Comments: ================================= //= 1.1 Switched to 'getbattleflag', credits to Saithis. [Euphy] //============================================================ // 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$; } prontera,170,180,1 script Stylist#custom_stylist 878,{ if (BaseClass == Job_Novice) && #styletalked != 1 { mes "[Stylist]"; mes "Hey there cutie pie! I'm the hippest and best ^0000FFStylist^000000 in all of Prontera!"; next; mes "[Stylist]"; mes "Change your hair? You should! That style and color are old! Change your clothes color? Fashion demands it!"; next; mes "[Stylist]"; mes "Oh and one last thing before I unleash you to the \'Hounds of no Taste\', the runway of life only extends so far, once you've reached the end of it, you can just turn right around and walk back! Ha!"; next; mes "[Stylist]"; mes "..."; sleep2 2500; mes "............."; sleep2 2500; mes "But seriously, change that nasty hair."; close2; getexp 70,30; getitem 2103,1; set #styletalked, 1; getmapxy .@map$, .@x, .@y, 0; warp .@map$, .@x, .@y; end; } doevent "Stylist::OnTalk"; } - script Stylist -1,{ 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, 10, // Hairstyle ( 10,000 Zeny ) 10, // Hair Color ( 10,000 Zeny ) 10; // 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; OnPCLoadMapEvent: if( strcharinfo(3) == strnpcinfo(4) ) if (BaseClass == Job_Novice) && #styletalked != 1 { showevent 2,0; } }