Guest User

Untitled

a guest
Sep 4th, 2014
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3.  
  4. #undef MAX_PLAYERS
  5. #define MAX_SLOTS 400
  6.  
  7. #define MAX_SNOW_OBJECTS 8
  8. #define UPDATE_INTERVAL 750
  9.  
  10. #if MAX_SLOTS == 500
  11. #error Change MAX_SLOTS to the max players of your server! (At line 6)
  12. #endif
  13.  
  14. #define ploop(%0) for(new %0 = 0; %0 < MAX_SLOTS; %0++) if(IsPlayerConnected(%0))
  15. #define CB:%0(%1) forward %0(%1); public %0(%1)
  16.  
  17. new bool:snowOn[MAX_SLOTS char],
  18. snowObject[MAX_SLOTS][MAX_SNOW_OBJECTS],
  19. updateTimer[MAX_SLOTS char]
  20. ;
  21.  
  22. public OnFilterScriptExit()
  23. {
  24. ploop(i)
  25. {
  26. if(snowOn{i})
  27. {
  28. for(new j = 0; j < MAX_SNOW_OBJECTS; j++) DestroyObject(snowObject[i][j]);
  29. KillTimer(updateTimer{i});
  30. }
  31. }
  32. return 1;
  33. }
  34.  
  35. public OnPlayerDisconnect(playerid)
  36. {
  37. if(snowOn{playerid})
  38. {
  39. for(new i = 0; i < MAX_SNOW_OBJECTS; i++) DestroyObject(snowObject[playerid][i]);
  40. snowOn{playerid} = false;
  41. KillTimer(updateTimer{playerid});
  42. }
  43. return 1;
  44. }
  45.  
  46. CB:UpdateSnow(playerid)
  47. {
  48. if(!snowOn{playerid}) return 0;
  49. new Float:pPos[3];
  50. GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
  51. for(new i = 0; i < MAX_SNOW_OBJECTS; i++) SetObjectPos(snowObject[playerid][i], pPos[0] + random(25), pPos[1] + random(25), pPos[2] - 5 + random(10));
  52. return 1;
  53. }
  54.  
  55. stock CreateSnow(playerid)
  56. {
  57. if(snowOn{playerid}) return 0;
  58. new Float:pPos[3];
  59. GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
  60. for(new i = 0; i < MAX_SNOW_OBJECTS; i++) snowObject[playerid][i] = CreateObject(18864, pPos[0] + random(25), pPos[1] + random (25), pPos[2] - 5 + random(10), random(280), random(280), 0, -1, -1, playerid);
  61. snowOn{playerid} = true;
  62. updateTimer{playerid} = SetTimerEx("UpdateSnow", UPDATE_INTERVAL, true, "i", playerid);
  63. return 1;
  64. }
  65.  
  66. stock DeleteSnow(playerid)
  67. {
  68. if(!snowOn{playerid}) return 0;
  69. for(new i = 0; i < MAX_SNOW_OBJECTS; i++) DestroyObject(snowObject[playerid][i]);
  70. KillTimer(updateTimer{playerid});
  71. snowOn{playerid} = false;
  72. return 1;
  73. }
  74.  
  75. CMD:snow(playerid, params[])
  76. {
  77. if(snowOn{playerid})
  78. {
  79. DeleteSnow(playerid);
  80. SendClientMessage(playerid, 0x00FF00AA, "* It's not snowing anymore now.");
  81. }
  82. else
  83. {
  84. CreateSnow(playerid);
  85. SendClientMessage(playerid, 0x00FF00AA, "* Let it snow, let it snow, let it snow!");
  86. }
  87. return 1;
  88. }
  89.  
  90. CMD:allsnowon(playerid, params[])
  91. {
  92. if(!IsPlayerAdmin(playerid)) return 0;
  93. ploop(i) //This is included in my FS! It's the '#define ploop(%0)' thing.
  94. {
  95. if(snowOn{i}) continue;
  96. CreateSnow(i);
  97. }
  98. return 1;
  99. }
  100.  
  101. CMD:allsnowoff(playerid, params[])
  102. {
  103. if(!IsPlayerAdmin(playerid)) return 0;
  104. ploop(i)
  105. {
  106. if(!snowOn{i}) continue;
  107. DeleteSnow(i);
  108. }
  109. return 1;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment