//Limited Items //Version 2 //By Emistry - script Limited Items -1,{ function LimitItems; function CheckItems; OnInit: // GM Level to Bypass set .GMLevel,80; // Check Every X Seconds set .Seconds,5; // Apply on Which Maps and what Zone No. setarray .DisableMap$, // "","", "guild_vs1","0", "guild_vs2","1", "guild_vs3","2", "guild_vs4","3", "guild_vs5","4"; for( set .i,0; .i < getarraysize( .DisableMap$ ); set .i,.i + 2 ) setmapflag .DisableMap$[.i],mf_loadevent; end; OnPCLoadMapEvent: if( getgmlevel() >= .GMLevel ) end; set @Exceed,0; for( set .@i,0; .@i < getarraysize( .DisableMap$ ); set .@i,.@i + 2 ) if( strcharinfo(3) == .DisableMap$[.@i] ) LimitItems( atoi( .DisableMap$[.@i+1] ) ); end; function LimitItems { switch( getarg(0) ){ // Case : CheckItems( ,,,,.....,, ); break; Case 0: CheckItems( 607,1 ); break; Case 1: CheckItems( 607,5,608,1 ); break; Case 2: CheckItems( 607,2,608,3,4002,1 ); break; Case 3: CheckItems( 607,5,608,1,4002,1,5022,1 ); break; Case 4: CheckItems( 607,1,608,15,5022,2,7227,10 ); break; default: debugmes "[NPC : "+strnpcinfo(0)+"] - Invalid Zone:"+getarg(0); break; } return; } function CheckItems { for( set .@i,0; getarg( .@i,0 ); set .@i,.@i + 2 ){ set .@Limit,0; for( set .@eq,0; .@eq <= 10; set .@eq,.@eq + 1 ) for( set .@slot,0; .@slot <= getequipcardcnt( .@eq ); set .@slot,.@slot + 1 ) if( getequipcardid( .@eq,.@slot ) == getarg(.@i) ) set .@Limit,.@Limit + 1; set .@Limit,.@Limit + countitem( getarg(.@i) ); if( .@Limit > getarg(.@i+1) ){ set @Exceed,1; mes "[ ^FF0000Limit : ^0000FF"+getarg(.@i+1)+"^000000 ] "+getitemname( getarg(.@i) ); } } if( @Exceed ){ mes "Please ensure all the Items above didnt reach the Limit as stated above."; close2; warp "SavePoint",0,0; deltimer strnpcinfo(0)+"::OnPCLoadMapEvent"; }else{ addtimer ( .Seconds * 1000 ),strnpcinfo(0)+"::OnPCLoadMapEvent"; end; } return; } }