changed check to see if bots actually spawned in, instead of checking if player spawned in. removed timer that removes weapons and use a hook instead
This commit is contained in:
parent
c907d9e99f
commit
962d6ce67f
@ -156,20 +156,22 @@ public void OnPluginStart()
|
||||
|
||||
public Action Timer_CheckIfRestartNeeded(Handle timer, any userid)
|
||||
{
|
||||
int activePlayers = 0;
|
||||
//the bots dont spawn right away. therefore we have the 6 seconds delay for them to actually spawn in.
|
||||
int activeBots = 0;
|
||||
for (int i = 1; i < MaxClients; i++)
|
||||
{
|
||||
if (IsValidClient(i) && (GetClientTeam(i) == CS_TEAM_CT || GetClientTeam(i) == CS_TEAM_T))
|
||||
if (IsValidClient(i) && IsFakeClient(i) && !IsClientSourceTV(i))
|
||||
{
|
||||
activePlayers++;
|
||||
activeBots++;
|
||||
}
|
||||
if (activePlayers > 1)
|
||||
if (activeBots > 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (activePlayers == 1)
|
||||
if (activeBots == 0)
|
||||
{
|
||||
//bots did still not spawn. we need the restart to spawn them in.
|
||||
PrintToChatAll("First Player joining. Restarting the round...");
|
||||
CS_TerminateRound(4.0, CSRoundEnd_Draw, true);
|
||||
}
|
||||
@ -178,27 +180,46 @@ public Action Timer_CheckIfRestartNeeded(Handle timer, any userid)
|
||||
|
||||
public Action ApplySettings(Event event, const char[] name, bool dontBroadcast)
|
||||
{
|
||||
int activePlayers = 0;
|
||||
int activeBots = 0;
|
||||
for (int i = 1; i < MaxClients; i++)
|
||||
{
|
||||
if (IsValidClient(i) && (GetClientTeam(i) == CS_TEAM_CT || GetClientTeam(i) == CS_TEAM_T))
|
||||
if (IsValidClient(i) && IsFakeClient(i) && !IsClientSourceTV(i))
|
||||
{
|
||||
activePlayers++;
|
||||
activeBots++;
|
||||
}
|
||||
if (activePlayers > 1)
|
||||
if (activeBots > 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (activePlayers == 1)
|
||||
if (activeBots == 0)
|
||||
{
|
||||
CreateTimer(10.0, Timer_CheckIfRestartNeeded);
|
||||
CreateTimer(10.0, Timer_CheckIfRestartNeeded); //if only one guy is on a team we force a restart to spawn the bots.
|
||||
}
|
||||
|
||||
|
||||
int client = GetClientOfUserId(event.GetInt("userid"));
|
||||
if (!IsValidClient(client) || !IsPlayerAlive(client) || IsClientSourceTV(client))
|
||||
{
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
//when zombies spawn remove every weapon they have except of knife. When their spawn protection runs out we also check if they have a knife.
|
||||
int l_iWeapon;
|
||||
if (GetClientTeam(client) == CS_TEAM_T)
|
||||
{
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
l_iWeapon = GetPlayerWeaponSlot(client, i);
|
||||
if (l_iWeapon != -1 && i != 2)
|
||||
{
|
||||
RemovePlayerItem(client, l_iWeapon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//removing guns from zombies when they spawn.
|
||||
|
||||
if (!IsFakeClient(client) && g_iClientRespawnCount[client] < 1) //player ran out of human respawns and will be zm instead.
|
||||
{
|
||||
SelectWaveBasedZM(client, 1);
|
||||
@ -844,7 +865,6 @@ public void OnMapStart()
|
||||
LoadClasses();
|
||||
LoadExtraSettings();
|
||||
loadWeapons();
|
||||
CreateTimer(0.5, Timer_restrictWeapons, INVALID_HANDLE, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
|
||||
CreateTimer(2.0, Timer_CheckIfBotsStuck, INVALID_HANDLE, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
|
||||
CreateTimer(g_fZMSounds, Timer_zombieSounds, INVALID_HANDLE, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
|
||||
}
|
||||
@ -880,8 +900,14 @@ public void OnClientPostAdminCheck(int client)
|
||||
g_iClientHumanClasses[client] = 0;
|
||||
}
|
||||
SetAdminGroups(client);
|
||||
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
|
||||
}
|
||||
|
||||
public void OnClientPutInServer(int client)
|
||||
{
|
||||
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
|
||||
SDKHook(client, SDKHook_WeaponEquip, OnWeaponEquip);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
@ -909,6 +935,7 @@ public void OnClientDisconnect(int client)
|
||||
g_fDamageMultiplier[client] = 1.0;
|
||||
g_iClientRespawnCount[client] = 0;
|
||||
SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
|
||||
SDKUnhook(client, SDKHook_WeaponEquip, OnWeaponEquip);
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
@ -1594,28 +1621,6 @@ public Action ModelSelection(int client, int state, int modelIndex)
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Timer_restrictWeapons(Handle timer, any userid)
|
||||
{
|
||||
int l_iWeapon;
|
||||
for(int j = 1; j <= MaxClients; j++)
|
||||
{
|
||||
if (IsValidClient(j) && GetClientTeam(j) == CS_TEAM_T)
|
||||
{
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
l_iWeapon = GetPlayerWeaponSlot(j, i);
|
||||
if (l_iWeapon != -1 && i != 2)
|
||||
{
|
||||
RemovePlayerItem(j, l_iWeapon);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Plugin_Handled;
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Timer_CheckIfBotsStuck(Handle timer, any userid)
|
||||
{
|
||||
float l_fClientVelocity[3];
|
||||
@ -1831,6 +1836,22 @@ public Action OnTakeDamage(int client, int &attacker, int &inflictor, float &dam
|
||||
}
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
//why do retards suggest using OnWeaponCanUse instead when its not even stopping zombies from using weapons that you drop to them.
|
||||
public Action OnWeaponEquip(int client, int weapon)
|
||||
{
|
||||
if (GetClientTeam(client) == CS_TEAM_T)
|
||||
{
|
||||
char sWeapon[64];
|
||||
GetEdictClassname(weapon, sWeapon, sizeof(sWeapon));
|
||||
if(!StrEqual(sWeapon, "weapon_knife"))
|
||||
{
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose: zombie reloaded copied knockback
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user