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)
|
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++)
|
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;
|
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...");
|
PrintToChatAll("First Player joining. Restarting the round...");
|
||||||
CS_TerminateRound(4.0, CSRoundEnd_Draw, true);
|
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)
|
public Action ApplySettings(Event event, const char[] name, bool dontBroadcast)
|
||||||
{
|
{
|
||||||
int activePlayers = 0;
|
int activeBots = 0;
|
||||||
for (int i = 1; i < MaxClients; i++)
|
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;
|
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"));
|
int client = GetClientOfUserId(event.GetInt("userid"));
|
||||||
if (!IsValidClient(client) || !IsPlayerAlive(client) || IsClientSourceTV(client))
|
if (!IsValidClient(client) || !IsPlayerAlive(client) || IsClientSourceTV(client))
|
||||||
{
|
{
|
||||||
return Plugin_Handled;
|
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.
|
if (!IsFakeClient(client) && g_iClientRespawnCount[client] < 1) //player ran out of human respawns and will be zm instead.
|
||||||
{
|
{
|
||||||
SelectWaveBasedZM(client, 1);
|
SelectWaveBasedZM(client, 1);
|
||||||
@ -844,7 +865,6 @@ public void OnMapStart()
|
|||||||
LoadClasses();
|
LoadClasses();
|
||||||
LoadExtraSettings();
|
LoadExtraSettings();
|
||||||
loadWeapons();
|
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(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);
|
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;
|
g_iClientHumanClasses[client] = 0;
|
||||||
}
|
}
|
||||||
SetAdminGroups(client);
|
SetAdminGroups(client);
|
||||||
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnClientPutInServer(int client)
|
||||||
|
{
|
||||||
|
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
|
||||||
|
SDKHook(client, SDKHook_WeaponEquip, OnWeaponEquip);
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -909,6 +935,7 @@ public void OnClientDisconnect(int client)
|
|||||||
g_fDamageMultiplier[client] = 1.0;
|
g_fDamageMultiplier[client] = 1.0;
|
||||||
g_iClientRespawnCount[client] = 0;
|
g_iClientRespawnCount[client] = 0;
|
||||||
SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
|
SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
|
||||||
|
SDKUnhook(client, SDKHook_WeaponEquip, OnWeaponEquip);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
@ -1594,28 +1621,6 @@ public Action ModelSelection(int client, int state, int modelIndex)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// 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)
|
public Action Timer_CheckIfBotsStuck(Handle timer, any userid)
|
||||||
{
|
{
|
||||||
float l_fClientVelocity[3];
|
float l_fClientVelocity[3];
|
||||||
@ -1831,6 +1836,22 @@ public Action OnTakeDamage(int client, int &attacker, int &inflictor, float &dam
|
|||||||
}
|
}
|
||||||
return Plugin_Continue;
|
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
|
// Purpose: zombie reloaded copied knockback
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user