public Action OnPlayerRunCmd(int client, int &buttons)
{
if(IsClientInGame(client) && !IsFakeClient(client) && (!bSnowfallDisabled[client] || !bSnowDisabled[client]))
{
if(fSnowflakesCycleTime[client] > GetGameTime())
return Plugin_Continue;
float pos[3], vel[3];
GetClientAbsOrigin(client, pos);
switch(iMode[client])
{
case MODE_OPTIMIZED: pos[2] += fcvSnowflakeHeight;
case MODE_SMART:
{
if(icvEnableExpensiveModes == -1)
{
iMode[client] = MODE_OPTIMIZED;
return Plugin_Continue;
}
if(icvEnableExpensiveModes == 0 && !GetAdminFlag(GetUserAdmin(client), Admin_Reservation))
{
iMode[client] = MODE_OPTIMIZED;
return Plugin_Continue;
}
if(TraceResultSkybox(pos))
pos[2] += fcvSnowflakeHeight;
else
return Plugin_Continue;
}
}
pos[0] += GetRandomFloat(-1400.0, 1400.0);
pos[1] += GetRandomFloat(-1400.0, 1400.0);
if(iMode[client] == MODE_EXTREME)
{
if(icvEnableExpensiveModes == -1)
{
iMode[client] = MODE_OPTIMIZED;
return Plugin_Continue;
}
if(icvEnableExpensiveModes == 0 && !GetAdminFlag(GetUserAdmin(client), Admin_Reservation))
{
iMode[client] = MODE_OPTIMIZED;
return Plugin_Continue;
}
if(TraceResultSkybox(pos))
pos[2] += fcvSnowflakeHeight;
else
return Plugin_Continue;
}
switch(iPrefab[client])
{
case PREFAB_RANDOM:
{
vel[0] = GetRandomFloat(-50.0, 50.0);
vel[1] = GetRandomFloat(-50.0, 50.0);
}
case PREFAB_NORTH:
{
vel[0] = -100.0;
vel[1] = GetRandomFloat(-25.0, 25.0);
}
case PREFAB_SOUTH:
{
vel[0] = 100.0;
vel[1] = GetRandomFloat(-25.0, 25.0);
}
case PREFAB_EAST:
{
vel[0] = GetRandomFloat(-25.0, 25.0);
vel[1] = -100.0;
}
case PREFAB_WEST:
{
vel[0] = GetRandomFloat(-25.0, 25.0);
vel[1] = 100.0;
}
case PREFAB_ZANGLE:
{
vel[0] = vel[1] = 0.0;
}
}
vel[2] = GetRandomFloat(-50.0, -100.0);
if(!bSnowfallDisabled[client])
{
TE_Start("Client Projectile");
TE_WriteVector("m_vecOrigin", pos);
TE_WriteVector("m_vecVelocity", vel);
TE_WriteNum("m_nModelIndex", iSnowFlakes[GetRandomInt(0, 3)]);
TE_WriteNum("m_hOwner", 0);
TE_WriteNum("m_nLifeTime", 7);
TE_SendToClient(client);
}
fSnowflakesCycleTime[client] = GetGameTime() + fcvSnowflakeRate;
/*
if(!bSnowDisabled[client] && icvEnableSnow != -1)
{
if(icvEnableSnow == 0 && !GetAdminFlag(GetUserAdmin(client), Admin_Reservation))
return Plugin_Continue;
if(fSnowCycleTime[client] > GetGameTime())
return Plugin_Continue;
Handle tr = TR_TraceRayEx(pos, view_as<float>({90.0, 0.0, 0.0}), MASK_SHOT, RayType_Infinite);
if(TR_DidHit(tr))
{
int surfaceFlags = TR_GetSurfaceFlags(tr);
if(surfaceFlags != 0)
{
CloseHandle(tr);
return Plugin_Continue;
}
TR_GetEndPosition(pos, tr);
}
CloseHandle(tr);
TE_Start("BSP Decal");
TE_WriteVector("m_vecOrigin", pos);
TE_WriteNum("m_nEntity", 0);
TE_WriteNum("m_nIndex", iSnow);
TE_SendToClient(client);
fSnowCycleTime[client] = GetGameTime() + fcvSnowRate;
}
*/
}
return Plugin_Continue;
}