Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as HTML by Chojek ( 16 years ago )
#include <a_samp>



#define SNOW_OBJECT      354

#define SLOTS        200         // aka MAX_PLAYERS

#define MAX_SNOW        20


static snowObject[SLOTS][MAX_SNOW+1];
static snowActive[SLOTS];




public OnFilterScriptExit()
{
 for(new i = 0; i < SLOTS; i++)
 {
  if(!IsPlayerConnected(i) || IsPlayerNPC(i))
      continue;
      
     DestroySnow(i);
 }
 return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
 if(!IsPlayerNPC(playerid))
  DestroySnow(playerid);
}

public OnPlayerSpawn(playerid)
{
 CreateSnow(playerid);
}

public OnPlayerCommandText(playerid, cmdtext[])
{
 if(!strcmp(cmdtext, "/snow"))
 {
     if(!snowActive[playerid])
     {
         CreateSnow(playerid);
     }else{
         DestroySnow(playerid);
     }
     return 1;
 }
 return 0;
}


stock CreateSnow(playerid)
{
 if(GetPlayerState(playerid) == 0 || GetPlayerState(playerid) > 6)
     return;

 if(GetPlayerInterior(playerid) != 0)
     return;

 if(snowActive[playerid] == 1)
     return;

 snowActive[playerid] = 1;

 new
     Float:x,
     Float:y,
     Float:z;

 GetPlayerPos(playerid, x, y, z);

 for(new i = 0; i < MAX_SNOW; i++)
 {
  snowObject[playerid][i] = CreatePlayerObject(playerid, SNOW_OBJECT, x, y , z , 0, 0, 0);
  RecreateSnow(playerid, snowObject[playerid][i]);
 }
}



stock DestroySnow(playerid)
{
 snowActive[playerid] = 0;

 for(new i = 0; i < MAX_SNOW; i++)
 {
     DestroyPlayerObject(playerid, snowObject[playerid][i]);
 }
}

stock RecreateSnow(playerid, objectid)
{
 if(snowActive[playerid] == 0)
     return;


 new
     Float:x,
     Float:y,
     Float:z,
     Float:objX,
     Float:objY,
     Float:objZ;
     
 GetPlayerPos(playerid, x, y, z);

 // And before you ask, I use random twice because SA:MP's random sucks ass
    new i = random(random(100));

 if(i < 20)
 {
     SetPlayerObjectPos(playerid, objectid, x - random(random(100)), y + random (random(70)), z + random(20)+20);
 }
 else if(i >= 21 && i <= 30)
 {
  SetPlayerObjectPos(playerid, objectid, x + random(random(100)), y + random (random(70)), z + random(20)+20);
 }
 else if (i >= 31 && i < 40)
 {
  SetPlayerObjectPos(playerid, objectid, x + random(random(70)), y - random (random(100)), z + random(20)+20);
 }
 else
 {
     SetPlayerObjectPos(playerid, objectid, x + random(random(120)), y + random (random(30)), z + random(20)+20);
 }

 GetPlayerObjectPos(playerid, objectid, objX, objY, objZ);

 MovePlayerObject(playerid, objectid, objX, objY, z-10, random(70)+5);

}

public OnPlayerObjectMoved(playerid, objectid)
{

 if(snowActive[playerid] == 0)
     return 1;

 for(new i = 0; i < MAX_SNOW; i++)
 {
     if(objectid == snowObject[playerid][i])
     {
         RecreateSnow(playerid, objectid);
         return 1;
     }
 }
 return 1;
}

 

Revise this Paste

Parent: 12564
Children: 14321
Your Name: Code Language: