Fixed napalm error. Fixed specatators/invalid players showing up in force zspawn/ztele. Fixed knife alpha (untested)
This commit is contained in:
parent
98116d08f7
commit
fe5ed637cc
|
@ -597,42 +597,6 @@ InfectHumanToZombie(client, attacker = -1, bool:motherinfect = false, bool:respa
|
||||||
ZHPOnHealthInfectGain(attacker);
|
ZHPOnHealthInfectGain(attacker);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Switch the player to terrorists.
|
|
||||||
// TODO: A solution to stop confusing bots? Respawn and teleport?
|
|
||||||
CS_SwitchTeam(client, CS_TEAM_T);
|
|
||||||
|
|
||||||
// If respawn is enabled, then teleport mother zombie back to spawnpoint.
|
|
||||||
if (motherinfect)
|
|
||||||
{
|
|
||||||
new bool:zombierespawn = GetConVarBool(g_hCvarsList[CVAR_INFECT_MZOMBIE_RESPAWN]);
|
|
||||||
if(zombierespawn)
|
|
||||||
{
|
|
||||||
ZTeleTeleportClient(client);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Check override.
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (respawnoverride && respawn)
|
|
||||||
{
|
|
||||||
ZTeleTeleportClient(client);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set client as translation target.
|
|
||||||
SetGlobalTransTarget(client);
|
|
||||||
|
|
||||||
// Print message to client.
|
|
||||||
TranslationPrintToChat(client, "Infect infected");
|
|
||||||
|
|
||||||
// Forward event to modules.
|
|
||||||
ClassOnClientInfected(client, motherinfect);
|
|
||||||
RoundEndOnClientInfected();
|
|
||||||
DamageOnClientInfected(client, motherinfect);
|
|
||||||
SEffectsOnClientInfected(client);
|
|
||||||
ZTeleOnClientInfected(client);
|
|
||||||
ZHPOnClientInfected(client);
|
|
||||||
|
|
||||||
// Get a list of all client's weapon indexes.
|
// Get a list of all client's weapon indexes.
|
||||||
new weapons[WeaponsSlot];
|
new weapons[WeaponsSlot];
|
||||||
WeaponsGetClientWeapons(client, weapons);
|
WeaponsGetClientWeapons(client, weapons);
|
||||||
|
@ -674,6 +638,39 @@ InfectHumanToZombie(client, attacker = -1, bool:motherinfect = false, bool:respa
|
||||||
|
|
||||||
// Give zombie a new knife. (If you leave the old one there will be glitches with the knife positioning)
|
// Give zombie a new knife. (If you leave the old one there will be glitches with the knife positioning)
|
||||||
GivePlayerItem(client, "weapon_knife");
|
GivePlayerItem(client, "weapon_knife");
|
||||||
|
|
||||||
|
// Switch the player to terrorists.
|
||||||
|
// TODO: A solution to stop confusing bots? Respawn and teleport?
|
||||||
|
CS_SwitchTeam(client, CS_TEAM_T);
|
||||||
|
|
||||||
|
// If respawn is enabled, then teleport mother zombie back to spawnpoint.
|
||||||
|
if (motherinfect)
|
||||||
|
{
|
||||||
|
new bool:zombierespawn = GetConVarBool(g_hCvarsList[CVAR_INFECT_MZOMBIE_RESPAWN]);
|
||||||
|
if(zombierespawn)
|
||||||
|
{
|
||||||
|
ZTeleTeleportClient(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Check override.
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (respawnoverride && respawn)
|
||||||
|
{
|
||||||
|
ZTeleTeleportClient(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print message to client.
|
||||||
|
TranslationPrintToChat(client, "Infect infected");
|
||||||
|
|
||||||
|
// Forward event to modules.
|
||||||
|
ClassOnClientInfected(client, motherinfect);
|
||||||
|
RoundEndOnClientInfected();
|
||||||
|
DamageOnClientInfected(client, motherinfect);
|
||||||
|
SEffectsOnClientInfected(client);
|
||||||
|
ZTeleOnClientInfected(client);
|
||||||
|
ZHPOnClientInfected(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -202,9 +202,12 @@ public ZMenuMainHandle(Handle:menu, MenuAction:action, client, slot)
|
||||||
*
|
*
|
||||||
* @param client The client index.
|
* @param client The client index.
|
||||||
* @param handler The menu handler.
|
* @param handler The menu handler.
|
||||||
|
* @param team If true, only clients on a team will be displayed.
|
||||||
|
* @param alive If true, only clients that are alive will be displayed.
|
||||||
|
* @param dead If true, only clients that are dead will be displayed.
|
||||||
* @param any Title is a translations phrase.
|
* @param any Title is a translations phrase.
|
||||||
*/
|
*/
|
||||||
stock MenuClientList(client, MenuHandler:handler, any:...)
|
stock MenuClientList(client, MenuHandler:handler, bool:team = false, bool:alive = false, bool:dead = false, any:...)
|
||||||
{
|
{
|
||||||
// Create menu handle.
|
// Create menu handle.
|
||||||
new Handle:menu_clients = CreateMenu(handler);
|
new Handle:menu_clients = CreateMenu(handler);
|
||||||
|
@ -214,7 +217,7 @@ stock MenuClientList(client, MenuHandler:handler, any:...)
|
||||||
|
|
||||||
// Translate phrase.
|
// Translate phrase.
|
||||||
decl String:translation[TRANSLATION_MAX_LENGTH_CHAT];
|
decl String:translation[TRANSLATION_MAX_LENGTH_CHAT];
|
||||||
VFormat(translation, sizeof(translation), "%t", 3);
|
VFormat(translation, sizeof(translation), "%t", 6);
|
||||||
|
|
||||||
// Set menu title to the translated phrase.
|
// Set menu title to the translated phrase.
|
||||||
SetMenuTitle(menu_clients, translation);
|
SetMenuTitle(menu_clients, translation);
|
||||||
|
@ -222,6 +225,8 @@ stock MenuClientList(client, MenuHandler:handler, any:...)
|
||||||
decl String:clientoption[MAX_NAME_LENGTH];
|
decl String:clientoption[MAX_NAME_LENGTH];
|
||||||
decl String:clientuserid[8];
|
decl String:clientuserid[8];
|
||||||
|
|
||||||
|
new count = 0;
|
||||||
|
|
||||||
// x = Client index.
|
// x = Client index.
|
||||||
for (new x = 1; x <= MaxClients; x++)
|
for (new x = 1; x <= MaxClients; x++)
|
||||||
{
|
{
|
||||||
|
@ -231,12 +236,42 @@ stock MenuClientList(client, MenuHandler:handler, any:...)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If client isn't on a team, then stop.
|
||||||
|
if (team && !ZRIsClientOnTeam(x))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If client is dead, then stop.
|
||||||
|
if (alive && !IsPlayerAlive(x))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If client is alive, then stop.
|
||||||
|
if (dead && IsPlayerAlive(x))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Get client info.
|
// Get client info.
|
||||||
GetClientName(x, clientoption, sizeof(clientoption));
|
GetClientName(x, clientoption, sizeof(clientoption));
|
||||||
IntToString(GetClientUserId(x), clientuserid, sizeof(clientuserid));
|
IntToString(GetClientUserId(x), clientuserid, sizeof(clientuserid));
|
||||||
|
|
||||||
// Add option to menu.
|
// Add option to menu.
|
||||||
AddMenuItem(menu_clients, clientuserid, clientoption);
|
AddMenuItem(menu_clients, clientuserid, clientoption);
|
||||||
|
|
||||||
|
// Increment count.
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there are no clients, add an "(Empty)" line.
|
||||||
|
if (count == 0)
|
||||||
|
{
|
||||||
|
decl String:empty[64];
|
||||||
|
Format(empty, sizeof(empty), "%t", "Menu empty");
|
||||||
|
|
||||||
|
AddMenuItem(menu_clients, "empty", empty, ITEMDRAW_DISABLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a "Back" button to the main admin menu.
|
// Create a "Back" button to the main admin menu.
|
||||||
|
|
|
@ -198,7 +198,7 @@ public Action:NapalmIgniteGrenade(Handle:timer)
|
||||||
for (new x = 0; x <= maxentities; x++)
|
for (new x = 0; x <= maxentities; x++)
|
||||||
{
|
{
|
||||||
// If entity is invalid, then stop.
|
// If entity is invalid, then stop.
|
||||||
if(!IsValidEdict(x))
|
if(!IsValidEntity(x))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ RoundStartOnRoundStart()
|
||||||
/**
|
/**
|
||||||
* Kills all objective entities.
|
* Kills all objective entities.
|
||||||
*/
|
*/
|
||||||
RoundStartKillObjectives()
|
stock RoundStartKillObjectives()
|
||||||
{
|
{
|
||||||
decl String:classname[64];
|
decl String:classname[64];
|
||||||
|
|
||||||
|
@ -92,12 +92,10 @@ RoundStartKillObjectives()
|
||||||
GetEdictClassname(x, classname, sizeof(classname));
|
GetEdictClassname(x, classname, sizeof(classname));
|
||||||
|
|
||||||
// Check if it matches any objective entities, then stop if it doesn't.
|
// Check if it matches any objective entities, then stop if it doesn't.
|
||||||
if(StrContains(ROUNDSTART_OBJECTIVE_ENTITIES, classname) == -1)
|
if(StrContains(ROUNDSTART_OBJECTIVE_ENTITIES, classname) > -1)
|
||||||
{
|
{
|
||||||
continue;
|
// Entity is an objective, kill it.
|
||||||
|
RemoveEdict(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Entity is an objective, kill it.
|
|
||||||
RemoveEdict(x);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,6 +222,12 @@ RestrictOnRoundEnd()
|
||||||
*/
|
*/
|
||||||
public Action:RestrictBuyCommand(client, argc)
|
public Action:RestrictBuyCommand(client, argc)
|
||||||
{
|
{
|
||||||
|
// If client isn't in-game, then stop.
|
||||||
|
if (!IsClientInGame(client))
|
||||||
|
{
|
||||||
|
return Plugin_Continue;
|
||||||
|
}
|
||||||
|
|
||||||
// If player is a zombie, then block command.
|
// If player is a zombie, then block command.
|
||||||
if (InfectIsClientInfected(client))
|
if (InfectIsClientInfected(client))
|
||||||
{
|
{
|
||||||
|
@ -242,7 +248,7 @@ public Action:RestrictBuyCommand(client, argc)
|
||||||
// If weapon isn't configged, then allow pickup.
|
// If weapon isn't configged, then allow pickup.
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
{
|
{
|
||||||
// Allow pickup.
|
// Allow command.
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -165,7 +165,7 @@ public ZAdminMenuHandle(Handle:menu_zadmin, MenuAction:action, client, slot)
|
||||||
resend = false;
|
resend = false;
|
||||||
|
|
||||||
// Send list of clients to infect.
|
// Send list of clients to infect.
|
||||||
MenuClientList(client, ZSpawnForceHandle, "ZSpawn clients title");
|
MenuClientList(client, ZSpawnForceHandle, true, false, true, "ZSpawn clients title");
|
||||||
}
|
}
|
||||||
// Force ZTele.
|
// Force ZTele.
|
||||||
case 5:
|
case 5:
|
||||||
|
@ -174,7 +174,7 @@ public ZAdminMenuHandle(Handle:menu_zadmin, MenuAction:action, client, slot)
|
||||||
resend = false;
|
resend = false;
|
||||||
|
|
||||||
// Send list of clients to infect.
|
// Send list of clients to infect.
|
||||||
MenuClientList(client, ZTeleForceHandle, "ZTele clients title");
|
MenuClientList(client, ZTeleForceHandle, true, true, false, "ZTele clients title");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -302,7 +302,7 @@ public ZSpawnForceHandle(Handle:menu_zspawn_force, MenuAction:action, client, sl
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-send the menu.
|
// Re-send the menu.
|
||||||
MenuClientList(client, ZSpawnForceHandle, "ZSpawn clients title");
|
MenuClientList(client, ZSpawnForceHandle, true, false, true, "ZSpawn clients title");
|
||||||
}
|
}
|
||||||
// Client closed the menu.
|
// Client closed the menu.
|
||||||
if (action == MenuAction_Cancel)
|
if (action == MenuAction_Cancel)
|
||||||
|
|
|
@ -271,7 +271,7 @@ public ZTeleForceHandle(Handle:menu_ztele_force, MenuAction:action, client, slot
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-send the menu.
|
// Re-send the menu.
|
||||||
MenuClientList(client, ZTeleForceHandle, "ZTele clients title");
|
MenuClientList(client, ZTeleForceHandle, true, true, false, "ZTele clients title");
|
||||||
}
|
}
|
||||||
// Client closed the menu.
|
// Client closed the menu.
|
||||||
if (action == MenuAction_Cancel)
|
if (action == MenuAction_Cancel)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user