setarray .@min[1],
1, // Hair style 0 crashed my client last time I tested.
0,
0;
hmm... just tested hair style 0 works in my hexed client
perhaps its different in every client version
or maybe you just missing that palette
if(!.@opt) {
stand;
getmapxy .@m$,.@x,.@y,UNITTYPE_PC;
unitwalk getcharid(3),.@x,.@y - 1;
}
hmm ? rathena seems to be missing setunitdir
ok try 1 more time
//===== rAthena Script ======================================
//= Stylist npc
//===== By: ==================================================
//= AnnieRuru
//= original by Euphy
//===== Current Version: =====================================
//= 1.3
//===== Compatible With: =====================================
//= rAthena 2019-01-24
//===== Description: =========================================
//= stylist npc
//===== Topic ================================================
//= https://rathena.org/board/topic/118030-help-restriction-stylist-npc/
//===== Additional Comments: =================================
//= 1 more time, this time use CSV method, this method is understood by many
//============================================================
prontera,165,176,1 script Stylist HIDDEN_NPC,{
.@choose = select( "Hair style", "Hair color", "Cloth color" ) -1;
.@lookpart = .@part = .look[.@choose];
if ( BaseClass == Job_Summoner )
.@part += Job_Summoner;
.@revert = .@i = inarray( getd(".list"+ .@part), getlook( .@lookpart ) );
while ( true ) {
setlook .@lookpart, getd(".list"+ .@part +"["+ .@i +"]");
dispbottom "This is style #"+ getd(".list"+ .@part +"["+ .@i +"]") +".";
.@next = ( .@i == .maxindex[.@part] )? 0 : .@i+1;
.@previous = ( .@i == 0 )? .maxindex[.@part] : .@i-1;
switch ( select( " ~ Next (^0055FF"+ getd(".list"+ .@part +"["+ .@next +"]") +"^000000)", " ~ Previous (^0055FF"+ getd(".list"+ .@part +"["+ .@previous +"]") +"^000000)", " ~ Jump to...", " ~ Revert to original (^0055FF"+ getd(".list"+ .@part +"["+ .@revert +"]") +"^000000)" ) ) {
case 1: .@i = .@next; break;
case 2: .@i = .@previous; break;
case 3:
dispbottom "Choose a style between 0 - "+ .maxstyles[.@part] +".";
input .@num;
.@j = inarray( getd(".list"+ .@part), .@num );
if ( .@j == -1 )
dispbottom "That style is unavailable";
else
.@i = .@j;
break;
case 4: .@i = .@revert;
}
}
end;
OnInit:
// .list$[LOOK_HAIR] = "0-5,11-18,20-23";
.list$[LOOK_HAIR] = "0-"+ getbattleflag("max_hair_style");
.list$[LOOK_HAIR_COLOR] = "0-"+ getbattleflag("max_hair_color");
.list$[LOOK_CLOTHES_COLOR] = "0-"+ getbattleflag("max_cloth_color");
.list$[Job_Summoner + LOOK_HAIR] = "0-"+ getbattleflag("max_hair_style");
.list$[Job_Summoner + LOOK_HAIR_COLOR] = "0-"+ getbattleflag("max_hair_color");
.list$[Job_Summoner + LOOK_CLOTHES_COLOR] = "0-1";
freeloop true;
setarray .look[0], LOOK_HAIR, LOOK_HAIR_COLOR, LOOK_CLOTHES_COLOR,
Job_Summoner + LOOK_HAIR, Job_Summoner + LOOK_HAIR_COLOR, Job_Summoner + LOOK_CLOTHES_COLOR;
for ( .@i = 0; .@i < 6; ++.@i ) {
deletearray .@array$;
.@index = 0;
explode( .@array$, .list$[.look[.@i]], "," );
.@size = getarraysize(.@array$);
for ( .@j = 0; .@j < .@size; ++.@j ) {
if ( compare( .@array$[.@j], "-" ) ) {
explode( .@range$, .@array$[.@j], "-" );
.@min = atoi(.@range$[0]);
.@max = atoi(.@range$[1]);
.@range = .@max - .@min +1;
for ( .@k = 0; .@k < .@range; ++.@k )
setd ".list"+ .look[.@i] +"["+( .@index++ )+"]", .@min + .@k;
}
else
setd ".list"+ .look[.@i] +"["+( .@index++ )+"]", atoi( .@array$[.@j] );
}
.maxindex[.look[.@i]] = .@index -1;
.maxstyles[.look[.@i]] = getd(".list"+ .look[.@i] +"["+( .@index -1 )+"]");
}
end;
}