PHP Code:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#include <engine_const>
#define PLUGIN "[BG] Snow 1.2"
#define VERSION "1.2"
#define AUTHOR "SHA[D]OW"
#define get_bit(%1,%2) (%1 & (1 << (%2 & MAXCLIENTS-1)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & MAXCLIENTS-1)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & MAXCLIENTS-1)))
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#define MAXCLIENTS 32
#define CLASSNAME "SnowEntity"
#define bg_num 4
new g_bAlive;
new g_iMaxPlayers;
new g_num[4];
new mg_sprite[4][] =
{
"sprites/bg_snow/bg.spr",
"sprites/bg_snow/bg_b.spr",
"sprites/bg_snow/bg_c.spr",
"sprites/bg_snow/bg_d_1.spr"
};
FVecIVec(Float:FVec[3], IVec[3])
{
IVec[0] = floatround(FVec[0], floatround_round);
IVec[1] = floatround(FVec[1], floatround_round);
IVec[2] = floatround(FVec[2], floatround_round);
return 1;
}
public plugin_init()
{
register_plugin("[BG] Snow 1.2", "0.5", "SHA[D]OW");
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
new ent = create_entity("info_target");
entity_set_string(ent, 0, "SnowEntity");
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 2.00);
register_think("SnowEntity", "ThinkSnow");
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
RegisterHam(Ham_Killed, "player", "HamPlayerKilled_Post", 1);
g_iMaxPlayers = get_maxplayers();
return 0;
}
public plugin_precache()
{
new i = 0;
while (i < 4)
{
g_num[i] = precache_model(mg_sprite[i][0][0]);
i++;
}
return 0;
}
public Event_NewRound(id)
{
set_fog(random_num(0, 255), random_num(0, 255), random_num(0, 255));
set_lights("e");
return 0;
}
public Ham_PlayerSpawn_Post(id)
{
if (is_user_alive(id))
{
g_bAlive = 1 << id & 31 | g_bAlive;
}
return 0;
}
public HamPlayerKilled_Post(id)
{
g_bAlive = ~1 << id & 31 & g_bAlive;
return 0;
}
public ThinkSnow(ent)
{
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.10);
static id;
id = 1;
while (id <= g_iMaxPlayers)
{
new var2 = g_bAlive;
new var1;
if (!1 << id & 31 & var2)
{
var1 = var2;
}
else
{
new Float:fOrigin[3];
new iOrigin[3];
entity_get_vector(id, 0, fOrigin);
FVecIVec(fOrigin, iOrigin);
iOrigin[0] = random_num(-1000, 1000) + iOrigin[0];
new var3 = iOrigin[1];
var3 = random_num(-1000, 1000) + var3;
new var4 = iOrigin[2];
var4 = random_num(200, 350) + var4;
new var5 = g_num;
UTIL_CreateSnow(iOrigin, var5[random(4)][0][0], 1, 1, 4);
var1 = var5;
}
id += 1;
}
return 0;
}
UTIL_CreateSnow(iOrigin[3], iSpriteID, iCount, iLife, iScale)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, 1400, 0);
write_byte(15);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(iSpriteID);
write_byte(iCount);
write_byte(iLife);
write_byte(iScale);
write_byte(random_num(1, 5));
write_byte(random_num(1, 3));
message_end();
return 0;
}
set_fog(red, green, blue)
{
message_begin(MSG_ALL, get_user_msgid("Fog"), 1400, 0);
write_byte(red);
write_byte(green);
write_byte(blue);
write_long(964891247);
message_end();
return 0;
}