Advertisement
Emistry

Limited Item v2

Dec 27th, 2011
594
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1.  
  2. - script Limited Items -1,{
  3. function LimitItems;
  4. function CheckItems;
  5.  
  6. OnInit:
  7. // GM Level to Bypass
  8. set .GMLevel,80;
  9. // Check Every X Seconds
  10. set .Seconds,5;
  11. // Apply on Which Maps and what Zone No.
  12. setarray .DisableMap$, // "<mapname>","<zone number>",
  13. "guild_vs1","0",
  14. "guild_vs2","1",
  15. "guild_vs3","2",
  16. "guild_vs4","3",
  17. "guild_vs5","4";
  18.  
  19. for( set .i,0; .i < getarraysize( .DisableMap$ ); set .i,.i + 2 )
  20. setmapflag .DisableMap$[.i],mf_loadevent;
  21. end;
  22.  
  23. OnPCLoadMapEvent:
  24. if( getgmlevel() >= .GMLevel ) end;
  25. set @Exceed,0;
  26. for( set .@i,0; .@i < getarraysize( .DisableMap$ ); set .@i,.@i + 2 )
  27. if( strcharinfo(3) == .DisableMap$[.@i] )
  28. LimitItems( atoi( .DisableMap$[.@i+1] ) );
  29. end;
  30.  
  31. function LimitItems {
  32. switch( getarg(0) ){
  33. // Case <zone>: CheckItems( <Item>,<Amount>,<Item>,<Amount>,.....,<Item>,<Amount> ); break;
  34. Case 0: CheckItems( 607,1 ); break;
  35. Case 1: CheckItems( 607,5,608,1 ); break;
  36. Case 2: CheckItems( 607,2,608,3,4002,1 ); break;
  37. Case 3: CheckItems( 607,5,608,1,4002,1,5022,1 ); break;
  38. Case 4: CheckItems( 607,1,608,15,5022,2,7227,10 ); break;
  39. default:
  40. debugmes "[NPC : "+strnpcinfo(0)+"] - Invalid Zone:"+getarg(0);
  41. break;
  42. }
  43. return;
  44. }
  45.  
  46. function CheckItems {
  47. for( set .@i,0; getarg( .@i,0 ); set .@i,.@i + 2 ){
  48. set .@Limit,0;
  49. for( set .@eq,0; .@eq <= 10; set .@eq,.@eq + 1 )
  50. for( set .@slot,0; .@slot <= getequipcardcnt( .@eq ); set .@slot,.@slot + 1 )
  51. if( getequipcardid( .@eq,.@slot ) == getarg(.@i) )
  52. set .@Limit,.@Limit + 1;
  53. set .@Limit,.@Limit + countitem( getarg(.@i) );
  54. if( .@Limit > getarg(.@i+1) ){
  55. set @Exceed,1;
  56. mes "[ ^FF0000Limit : ^0000FF"+getarg(.@i+1)+"^000000 ] "+getitemname( getarg(.@i) );
  57. }
  58. }
  59. if( @Exceed ){
  60. mes "Please ensure all the Items above didnt reach the Limit as stated above.";
  61. close2;
  62. warp "SavePoint",0,0;
  63. deltimer strnpcinfo(0)+"::OnPCLoadMapEvent";
  64. }else{
  65. addtimer ( .Seconds * 1000 ),strnpcinfo(0)+"::OnPCLoadMapEvent";
  66. end;
  67. }
  68. return;
  69. }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement