Advertisement
Kwarde

Snow FS 0.1.3

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