For the stylist

anjasoleil0

New member
Messages
77
Points
0
 
 
// 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:
    @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,
        0,    //    Hairstyle ( 10,000 Zeny )
        0,    //    Hair Color ( 10,000 Zeny )
        0;    //    Cloth Color ( 10,000 Zeny )
        
    // Blacklisted Style for each style and each gender.
    // --- Female ---
    .blacklist_hairstyle_0$ = "0";
    .blacklist_haircolor_0$ = "0";
    .blacklist_cloth_0$ = "0";
    // --- Male ---
    .blacklist_hairstyle_1$ = "0";
    .blacklist_haircolor_1$ = "0";
    .blacklist_cloth_1$ = "0";
 
    // 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;
 
}
 
 
 
 
How do I disable hair-color-changing if the hairstyle is past 100?

 
 
 
// 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:
    @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,
        0,    //    Hairstyle ( 10,000 Zeny )
        0,    //    Hair Color ( 10,000 Zeny )
        0;    //    Cloth Color ( 10,000 Zeny )
        
    // Blacklisted Style for each style and each gender.
    // --- Female ---
    .blacklist_hairstyle_0$ = "0";
    .blacklist_haircolor_0$ = "0";
    .blacklist_cloth_0$ = "0";
    // --- Male ---
    .blacklist_hairstyle_1$ = "0";
    .blacklist_haircolor_1$ = "0";
    .blacklist_cloth_1$ = "0";
 
    // 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;
 
}
 
 
 
 
How do I disable hair-color-changing if the hairstyle is past 100?
Change the range value

Path : trunk/conf/battle/client.conf

Code:
// Valid range of dyes and styles on the client.
min_hair_style: 0
max_hair_style: 30
min_hair_color: 0
max_hair_color: 100
min_cloth_color: 0
max_cloth_color: 100
min_body_style: 0
max_body_style: 4
 
Last edited by a moderator:
// Valid range of dyes and styles on the client.
min_hair_style: 0
max_hair_style: 30
min_hair_color: 0
max_hair_color: 100
min_cloth_color: 0
max_cloth_color: 100
min_body_style: 0
max_body_style: 4

The problem is, I have 168 hair styles, and it errors when I change the hair color when the hair style is past 99

 
Back
Top