viewing paste Class Restriction v2 | Athena

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
// -------- BitMasks --------
// 1    -       Normal jobs,
// 2    -       Adv jobs.
// 4    -       Baby jobs,
// 8    -       Normal 3rd jobs.
// 16   -       Adv. 3rd jobs.
// 32   -       Baby 3rd jobs.
// 64   -       Certain Jobs ( Specific )
 
// ----- Mode Example : ( Blocked Class ) ------
//      63      -       All Class that has been defined
//      64      -       Only the Specific Job you defined
//      7       -       Normal + Advanced + Baby Jobs
//      56      -       Normal 3rd + Advanced 3rd + Baby 3rd Jobs
 
// Just add in the Value for the Bitmask.
// Aware of the Usage of Certain Jobs.
//      --- If you using Bitmask Above , aware of the Limit Reach. ( ~128 Total Class )
//      --- If your Bitmask = ( 63 + 64 ) , Your "Certain Jobs" have only about 20 Slots.
//      --- Anyway, i dont think you will do so since Bitmask 63 will block most of the Class already.
// * Common Sense : Make sure the Array ".@Restrict" didnt exceed limit of 128 element.
 
 
-       script  ClassRestriction        -1,{
function        RestrictJob;
 
OnPCLoadMapEvent:
if( getgmlevel() < .LowGMLvl )
        for( set .@i,0; .@i < getarraysize( .Map$ ); set .@i,.@i + 2 )
                if( strcharinfo(3) == .Map$[.@i] )      RestrictJob( atoi( .Map$[.@i+1] ) );
       
function        RestrictJob     {
//      Normal Jobs
        if( getarg(0) & 1 ) setarray .@Restrict[getarraysize(.@Restrict)],0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,23,24,25,4046,4047,4049;
//      Adv Jobs
        if( getarg(0) & 2 ) setarray .@Restrict[getarraysize(.@Restrict)],4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4015,4016,4017,4018,4019,4020,4021;
//      Baby Jobs
        if( getarg(0) & 4 ) setarray .@Restrict[getarraysize(.@Restrict)],4023,4024,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4037,4038,4039,4040,4041,4042,4043,4045;
//      Normal 3rd Jobs
        if( getarg(0) & 8 ) setarray .@Restrict[getarraysize(.@Restrict)],4054,5055,4056,4057,4058,4059,4066,4067,4068,4069,4070,4071,4072;
//      Adv 3rd Jobs
        if( getarg(0) & 16 ) setarray .@Restrict[getarraysize(.@Restrict)],4060,4061,4062,4063,4064,4065,4073,4074,4075,4076,4077,4078,4079;
//      Baby 3rd Jobs
        if( getarg(0) & 32 ) setarray .@Restrict[getarraysize(.@Restrict)],4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108;
 
//      Certain Jobs ( Specific Your Own Class Restriction )
        if( getarg(0) & 64 ) setarray .@Restrict[getarraysize(.@Restrict)],4046,4002,4004,4013,4011;
 
        for( set .@i,0; .@i < getarraysize(.@Restrict); set .@i,.@i + 1 )
                if( Class == .@Restrict[.@i] ){
                        mes "[   ^FF0000Job Restriction System^000000   ]";
                        mes "^0000FFMap^000000 : ^FF0000"+strcharinfo(3)+"^000000";
                        mes "^FFFFFF________________________________^000000";
                                if( getarg(0) & 1 ) mes " -- ^0000FFNormal Jobs^000000";
                                if( getarg(0) & 2 ) mes " -- ^0000FFAdvanced Jobs^000000";
                                if( getarg(0) & 4 ) mes " -- ^0000FFNormal Baby Jobs^000000";
                                if( getarg(0) & 8 ) mes " -- ^0000FFNormal Third Jobs^000000";
                                if( getarg(0) & 16 ) mes " -- ^0000FFAdvanced Third Jobs^000000";
                                if( getarg(0) & 32 ) mes " -- ^0000FFBaby Third Jobs^000000";
                                if( getarg(0) & 64 )
                                        for( set .@i,0; .@i < getarraysize(.@Restrict); set .@i,.@i + 1 )
                                                mes " -- ^0000FF"+jobname( .@Restrict[.@i] )+"^000000";
                        mes "^FFFFFF________________________________^000000";
                        mes "You will be warped out within "+.Sec+" Seconds.";
                        sleep2 ( .Sec * 1000 );
                        warp "prontera",155,181;
                }
return;
}
       
OnInit:
//      Wait X Seconds before warped out.
set .Sec,5;
//      Lowest GM Level to Bypass
set .LowGMLvl,80;
 
setarray .Map$, // <Mapname>,<Mode>.... ( Mode = Bitwise Value )  Max of ~64 Map Settings.
                        "prtg_cas01","63",
                        "prtg_cas02","64",
                        "prtg_cas03","7",
                        "prtg_cas04","56",
                        "prtg_cas05","1";
                       
//      Assign a LoadEvent Mapflag to each map you listed.
for( set .map,0; .map < getarraysize( .Map$ ); set .map,.map + 2 )
        setmapflag .Map$[.map],mf_loadevent;
}
Viewed 253 times, submitted by unknown.