prontera,150,150,5 script Build Manager 617,{ function ManageBuild; mes "Select Your Services"; next; switch( select( ( .BMMode & 1 )?"^FF0000Save & Switch Builds^000000":"", ( .BMMode & 2 )?"^0000FFReset Status^000000":"", ( .BMMode & 4 )?"^0000FFReset Skills^000000":"")){ case 1: for( set .@i,1; .@i <= .MaxSlots; set .@i,.@i + 1 ) set .@Menu$,.@Menu$ + (( getd( "Slot_"+.@i+"$" ) == "" )?"^FF0000Empty Slot^000000":getd( "Slot_"+.@i+"$" ) )+":"; set .@Slot,select( .@Menu$ ); do{ next; mes "Build : ^FF0000"+(( getd( "Slot_"+.@Slot+"$" ) == "" )?"Slot "+.@Slot:getd( "Slot_"+.@Slot+"$" ) )+"^000000"; mes "STR - ^0000FF"+getd( "STR_"+.@Slot )+"^000000 INT - ^0000FF"+getd( "INT_"+.@Slot )+"^000000"; mes "AGI - ^0000FF"+getd( "AGI_"+.@Slot )+"^000000 DEX - ^0000FF"+getd( "DEX_"+.@Slot )+"^000000"; mes "VIT - ^0000FF"+getd( "VIT_"+.@Slot )+"^000000 LUK - ^0000FF"+getd( "LUK_"+.@Slot )+"^000000"; mes " "; mes "Remaining Points : ^0000FF"+getd( "STATS_"+.@Slot )+"^000000"; set .@Option,select(( getd( "Slot_"+.@Slot+"$" ) == "" )?"":"^0000FFSwitch", ( getd( "Slot_"+.@Slot+"$" ) == "" )?"Save":"", ( getd( "Slot_"+.@Slot+"$" ) == "" )?"":"^FF0000Clear" ); ManageBuild( .@Slot,.@Option); }while( .@Option != 1 ); break; case 2: resetstatus; mes "Status has been Reseted."; break; case 3: resetskill; mes "Skills has been Reseted."; break; } close; function ManageBuild { switch( getarg(1) ){ case 1: // Switch Build message strcharinfo(0),"Build has been ^FF0000Switched^000000."; resetstatus; set StatusPoint,getd( "STATS_"+getarg(0) ); statusup2 bStr,getd( "STR_"+getarg(0) ) - 1; statusup2 bAgi,getd( "AGI_"+getarg(0) ) - 1; statusup2 bVit,getd( "VIT_"+getarg(0) ) - 1; statusup2 bInt,getd( "INT_"+getarg(0) ) - 1; statusup2 bDex,getd( "DEX_"+getarg(0) ) - 1; statusup2 bLuk,getd( "LUK_"+getarg(0) ) - 1; break; case 2: // Save Build setd( "STR_"+getarg(0) ),readparam(bStr); setd( "AGI_"+getarg(0) ),readparam(bAgi); setd( "VIT_"+getarg(0) ),readparam(bVIT); setd( "INT_"+getarg(0) ),readparam(bInt); setd( "DEX_"+getarg(0) ),readparam(bDex); setd( "LUK_"+getarg(0) ),readparam(bLuk); setd( "STATS_"+getarg(0) ),StatusPoint; if( .Length[0] < .Length[1] && .Length[0] ){ mes "Input a ^FF0000Name^000000 for this Slot."; mes "Name Length : "+.Length[0]+" ~ "+.Length[1]+" Chars"; do{ input getd( "Slot_"+getarg(0)+"$" ); }while( getstrlen( getd( "Slot_"+getarg(0)+"$" ) ) < .Length[0] || getstrlen( getd( "Slot_"+getarg(0)+"$" ) ) > .Length[1] ); }else{ setd( "Slot_"+getarg(0)+"$" ),"Build "+getarg(0); } message strcharinfo(0),"Build has been ^FF0000Saved^000000."; break; case 3: // Remove Build message strcharinfo(0),"Build has been ^FF0000Cleared^000000."; setd( "STR_"+getarg(0) ),0; setd( "AGI_"+getarg(0) ),0; setd( "VIT_"+getarg(0) ),0; setd( "INT_"+getarg(0) ),0; setd( "DEX_"+getarg(0) ),0; setd( "LUK_"+getarg(0) ),0; setd( "STATS_"+getarg(0) ),0; setd( "Slot_"+getarg(0)+"$" ),""; break; } return; } OnInit: // Mode of NPC // 1 = Save & Switch // 2 = Reset Status // 4 = Reset Skills // 7 = All of Above [ 1+2+4 = 7 ] set .BMMode,7; // How Many Slots available to Save Status Builds. set .MaxSlots,3; // Enable Stats Slot Rename + Max Name Length ( 0 = Disable ) setarray .Length,4,26; // Min. ~ Max. Words. end; }