Fixed incorrect weapon name used in group restictions. Improved logging system (bit flags instead of on/off). CVAR zr_debug changed to zr_log. Added flag configuration to zombie admin menu. Fixed index out of bounds error in anticamp module.
This commit is contained in:
parent
972136b859
commit
58949a7fe8
@ -1,3 +1,8 @@
|
|||||||
|
2009.01.31 - 2.5.1.25
|
||||||
|
* Fixed incorrect weapon name used in group weapon restrictions (bullpup => aug).
|
||||||
|
* Improved logging system. CVAR zr_debug renamed to zr_log. Using bit flags instead of on/off CVAR. Added flag configurations to zombie admin menu.
|
||||||
|
* Fixed index out of bounds error in anticamp module.
|
||||||
|
|
||||||
2009.01.18 - 2.5.1.24
|
2009.01.18 - 2.5.1.24
|
||||||
* Created a anticamp feature that give players damage at a specified interval in custom defined volumes. Only affects humans.
|
* Created a anticamp feature that give players damage at a specified interval in custom defined volumes. Only affects humans.
|
||||||
* Re-formatted changes.txt.
|
* Re-formatted changes.txt.
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#undef REQUIRE_PLUGIN
|
#undef REQUIRE_PLUGIN
|
||||||
#include <market>
|
#include <market>
|
||||||
|
|
||||||
#define VERSION "2.5.1.24"
|
#define VERSION "2.5.1.25"
|
||||||
|
|
||||||
#include "zr/zombiereloaded"
|
#include "zr/zombiereloaded"
|
||||||
#include "zr/global"
|
#include "zr/global"
|
||||||
@ -151,6 +151,7 @@ public OnConfigsExecuted()
|
|||||||
if (FileExists(path))
|
if (FileExists(path))
|
||||||
{
|
{
|
||||||
ServerCommand("exec %s", mapconfig);
|
ServerCommand("exec %s", mapconfig);
|
||||||
|
LogMessage("Executed map config file: %s", mapconfig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,17 +186,16 @@ public OnClientDisconnect(client)
|
|||||||
PlayerLeft(client);
|
PlayerLeft(client);
|
||||||
ZTeleResetClient(client);
|
ZTeleResetClient(client);
|
||||||
|
|
||||||
new debug_val = GetConVarInt(gCvars[CVAR_DEBUG]);
|
decl String:debug_msg[64];
|
||||||
new String:debug_msg[64];
|
|
||||||
|
|
||||||
for (new x = 0; x < MAXTIMERS; x++)
|
for (new x = 0; x < MAXTIMERS; x++)
|
||||||
{
|
{
|
||||||
if (tHandles[client][x] != INVALID_HANDLE)
|
if (tHandles[client][x] != INVALID_HANDLE)
|
||||||
{
|
{
|
||||||
if (debug_val > 1)
|
if (LogHasFlag(LOG_DEBUG_MAX_DETAIL))
|
||||||
{
|
{
|
||||||
Format(debug_msg, sizeof(debug_msg), "OnClientDisconnect - Killing timer %i with handle %x.", x, tHandles[client][x]);
|
Format(debug_msg, sizeof(debug_msg), "Killing timer %i with handle %x.", x, tHandles[client][x]);
|
||||||
ZR_DebugPrintToConsole(0, debug_msg);
|
ZR_LogMessageFormatted(client, "OnClientDisconnect", "Killing timers", debug_msg, true);
|
||||||
}
|
}
|
||||||
KillTimer(tHandles[client][x]);
|
KillTimer(tHandles[client][x]);
|
||||||
tHandles[client][x] = INVALID_HANDLE;
|
tHandles[client][x] = INVALID_HANDLE;
|
||||||
|
@ -25,7 +25,7 @@ enum volume
|
|||||||
new volumes[MAX_VOLUMES][volume];
|
new volumes[MAX_VOLUMES][volume];
|
||||||
new volume_count;
|
new volume_count;
|
||||||
|
|
||||||
new Float:player_loc[MAXPLAYERS][3];
|
new Float:player_loc[MAXPLAYERS + 1][3];
|
||||||
|
|
||||||
new Handle:hUpdateTimer;
|
new Handle:hUpdateTimer;
|
||||||
|
|
||||||
@ -251,6 +251,7 @@ public Action:Command_AnticampRemoveVolume(client, argc)
|
|||||||
{
|
{
|
||||||
new vol_index;
|
new vol_index;
|
||||||
decl String:arg_buffer[32];
|
decl String:arg_buffer[32];
|
||||||
|
//decl String:client_name[192];
|
||||||
new Handle:vol_timer;
|
new Handle:vol_timer;
|
||||||
|
|
||||||
if (argc < 1)
|
if (argc < 1)
|
||||||
@ -272,6 +273,12 @@ public Action:Command_AnticampRemoveVolume(client, argc)
|
|||||||
}
|
}
|
||||||
volumes[vol_index][volume_in_use] = false;
|
volumes[vol_index][volume_in_use] = false;
|
||||||
ReplyToCommand(client, "Removed volume %d.", vol_index);
|
ReplyToCommand(client, "Removed volume %d.", vol_index);
|
||||||
|
|
||||||
|
if (LogHasFlag(LOG_CORE_EVENTS))
|
||||||
|
{
|
||||||
|
//GetClientName(client, client_name, sizeof(client_name));
|
||||||
|
ZR_LogMessageFormatted(client, "Anticamp", "Remove volume", "Admin %L removed volume %d.", true, client, vol_index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -354,7 +361,7 @@ HurtPlayersInVolume(volume_index)
|
|||||||
SetGlobalTransTarget(client);
|
SetGlobalTransTarget(client);
|
||||||
Format(buffer, sizeof(buffer), "%T", "Unfair camper slayed", LANG_SERVER, client_name, volume_index);
|
Format(buffer, sizeof(buffer), "%T", "Unfair camper slayed", LANG_SERVER, client_name, volume_index);
|
||||||
|
|
||||||
LogAction(client, client, buffer);
|
if (LogHasFlag(LOG_CORE_EVENTS)) ZR_LogMessageFormatted(client, "Anticamp", "Kill player", "%s", true, buffer);
|
||||||
if (anticamp_echo)
|
if (anticamp_echo)
|
||||||
{
|
{
|
||||||
FormatTextString(buffer, sizeof(buffer));
|
FormatTextString(buffer, sizeof(buffer));
|
||||||
@ -371,17 +378,18 @@ bool:IsPlayerInVolume(client, volume_index)
|
|||||||
new Float:player_loc_x = player_loc[client][0];
|
new Float:player_loc_x = player_loc[client][0];
|
||||||
new Float:player_loc_y = player_loc[client][1];
|
new Float:player_loc_y = player_loc[client][1];
|
||||||
new Float:player_loc_z = player_loc[client][2];
|
new Float:player_loc_z = player_loc[client][2];
|
||||||
new debug_flags = GetConVarInt(gCvars[CVAR_DEBUG]);
|
new log;
|
||||||
|
log = LogHasFlag(LOG_DEBUG_MAX_DETAIL);
|
||||||
|
|
||||||
if ((player_loc_x >= volumes[volume_index][x_min]) && (player_loc_x <= volumes[volume_index][x_max]))
|
if ((player_loc_x >= volumes[volume_index][x_min]) && (player_loc_x <= volumes[volume_index][x_max]))
|
||||||
{
|
{
|
||||||
if (debug_flags & 4) PrintToChatAll("[ZR] Debug, Anticamp -- IsPlayerInVolume: Client %d matches X values.", client);
|
if (log) ZR_LogMessageFormatted(client, "Anticamp", "IsPlayerInVolume", "Client %d matches X values.", true, client);
|
||||||
if ((player_loc_y >= volumes[volume_index][y_min]) && (player_loc_y <= volumes[volume_index][y_max]))
|
if ((player_loc_y >= volumes[volume_index][y_min]) && (player_loc_y <= volumes[volume_index][y_max]))
|
||||||
{
|
{
|
||||||
if (debug_flags & 4) PrintToChatAll("[ZR] Debug, Anticamp -- IsPlayerInVolume: Client %d matches Y values.", client);
|
if (log) ZR_LogMessageFormatted(client, "Anticamp", "IsPlayerInVolume", "Client %d matches Y values.", true, client);
|
||||||
if ((player_loc_z >= volumes[volume_index][z_min]) && (player_loc_z <= volumes[volume_index][z_max]))
|
if ((player_loc_z >= volumes[volume_index][z_min]) && (player_loc_z <= volumes[volume_index][z_max]))
|
||||||
{
|
{
|
||||||
if (debug_flags & 4) PrintToChatAll("[ZR] Debug, Anticamp -- IsPlayerInVolume: Client %d matches Z values.", client);
|
if (log) ZR_LogMessageFormatted(client, "Anticamp", "IsPlayerInVolume", "Client %d matches X values.", true, client);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,8 @@ CreateCommands()
|
|||||||
RegAdminCmd("zr_anticamp_create_volume", Command_AnticampCreateVolume, ADMFLAG_GENERIC, "Creates a rectangular hurt volume between two points. Usage: ht_create_volume <damage> <interval> <x1> <y1> <z1> <x2> <y2> <z2>");
|
RegAdminCmd("zr_anticamp_create_volume", Command_AnticampCreateVolume, ADMFLAG_GENERIC, "Creates a rectangular hurt volume between two points. Usage: ht_create_volume <damage> <interval> <x1> <y1> <z1> <x2> <y2> <z2>");
|
||||||
RegAdminCmd("zr_anticamp_remove_volume", Command_AnticampRemoveVolume, ADMFLAG_GENERIC, "Removes a volume. Use zr_anticamp_list to list volumes. Usage: zr_anticamp_remove_volume <volume index>");
|
RegAdminCmd("zr_anticamp_remove_volume", Command_AnticampRemoveVolume, ADMFLAG_GENERIC, "Removes a volume. Use zr_anticamp_list to list volumes. Usage: zr_anticamp_remove_volume <volume index>");
|
||||||
RegAdminCmd("zr_anticamp_list", Command_AnticampList, ADMFLAG_GENERIC, "List current volumes.");
|
RegAdminCmd("zr_anticamp_list", Command_AnticampList, ADMFLAG_GENERIC, "List current volumes.");
|
||||||
|
|
||||||
|
RegConsoleCmd("zr_log_flags", Command_LogFlags, "List available logging flags.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action:Command_Infect(client, argc)
|
public Action:Command_Infect(client, argc)
|
||||||
@ -89,7 +91,7 @@ public Action:Command_Respawn(client, argc)
|
|||||||
team = GetClientTeam(targets[x]);
|
team = GetClientTeam(targets[x]);
|
||||||
if (team == CS_TEAM_T || team == CS_TEAM_CT)
|
if (team == CS_TEAM_T || team == CS_TEAM_CT)
|
||||||
{
|
{
|
||||||
if (GetConVarBool(gCvars[CVAR_DEBUG])) ZR_DebugPrintToConsole(targets[x], "ZSpawn: Spawned player");
|
if (LogHasFlag(LOG_GAME_EVENTS)) ZR_LogMessageFormatted(targets[x], "Commands", "Command_Respawn", "ZSpawn spawned player %d.", true, targets[x]);
|
||||||
RespawnPlayer(targets[x]);
|
RespawnPlayer(targets[x]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -275,3 +277,19 @@ public Action:Command_TeleMenu(client, argc)
|
|||||||
}
|
}
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Action:Command_LogFlags(client, argc)
|
||||||
|
{
|
||||||
|
decl String:message[2048];
|
||||||
|
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_CORE_EVENTS (1) - Log core events like executing files, restricting weapons, etc.\n");
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_GAME_EVENTS (2) - Log infections.\n");
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_PLAYER_COMMANDS (4) - Log zspawn, teleports, class change, etc.\n");
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_DEBUG (8) - Enable debug messages (if they exist).\n");
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_DEBUG (16) - Detailed debug messages. May cause spam.\n");
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_DEBUG_MAX_DETAIL (32) - Low level detailed debug messages. Causes spam! Only enable right before and after testing.\n");
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_LOG_TO_ADMINS (64) - Display log messages to admin chat.\n");
|
||||||
|
StrCat(message, sizeof(message), "LOG_FLAG_LOG_TO_CLIENT (128) - Display log messages to the client that executed the event/command.\n");
|
||||||
|
|
||||||
|
ReplyToCommand(client, message);
|
||||||
|
}
|
@ -9,7 +9,7 @@
|
|||||||
enum ZRSettings
|
enum ZRSettings
|
||||||
{
|
{
|
||||||
Handle:CVAR_ENABLE,
|
Handle:CVAR_ENABLE,
|
||||||
Handle:CVAR_DEBUG,
|
Handle:CVAR_LOG,
|
||||||
Handle:CVAR_ALLOW_PLAYER_TEAM,
|
Handle:CVAR_ALLOW_PLAYER_TEAM,
|
||||||
Handle:CVAR_AMBIENCE,
|
Handle:CVAR_AMBIENCE,
|
||||||
Handle:CVAR_AMBIENCE_FILE,
|
Handle:CVAR_AMBIENCE_FILE,
|
||||||
@ -92,7 +92,7 @@ new gCvars[ZRSettings];
|
|||||||
CreateCvars()
|
CreateCvars()
|
||||||
{
|
{
|
||||||
gCvars[CVAR_ENABLE] = CreateConVar("zr_enable", "1", "Enable zombie gameplay (0: Disable)");
|
gCvars[CVAR_ENABLE] = CreateConVar("zr_enable", "1", "Enable zombie gameplay (0: Disable)");
|
||||||
gCvars[CVAR_DEBUG] = CreateConVar("zr_debug", "0", "Debug switch, for developers. Usually enables logging of messages and events to a console. (0: Disable)");
|
gCvars[CVAR_LOG] = CreateConVar("zr_log", "65", "Logging flags. Log messages to sourcemod logs, server console or client console. Use zr_log_flags to see a list of flags. (0: Disable)");
|
||||||
gCvars[CVAR_ALLOW_PLAYER_TEAM] = CreateConVar("zr_allow_player_team", "0", "This will allow the player_team event to be fired on first team join, enable when using mani model menu (0: Disable)");
|
gCvars[CVAR_ALLOW_PLAYER_TEAM] = CreateConVar("zr_allow_player_team", "0", "This will allow the player_team event to be fired on first team join, enable when using mani model menu (0: Disable)");
|
||||||
gCvars[CVAR_AMBIENCE] = CreateConVar("zr_ambience", "1", "Enable creepy ambience to be played throughout the game (0: Disable)");
|
gCvars[CVAR_AMBIENCE] = CreateConVar("zr_ambience", "1", "Enable creepy ambience to be played throughout the game (0: Disable)");
|
||||||
gCvars[CVAR_AMBIENCE_FILE] = CreateConVar("zr_ambience_file", "ambient/zr/zr_ambience.mp3", "Path to ambient sound file that will be played throughout the game, when zr_ambience is 1");
|
gCvars[CVAR_AMBIENCE_FILE] = CreateConVar("zr_ambience_file", "ambient/zr/zr_ambience.mp3", "Path to ambient sound file that will be played throughout the game, when zr_ambience is 1");
|
||||||
@ -221,3 +221,15 @@ public LimitTeamsHook(Handle:convar, const String:oldValue[], const String:newVa
|
|||||||
{
|
{
|
||||||
SetConVarInt(FindConVar("mp_limitteams"), 0);
|
SetConVarInt(FindConVar("mp_limitteams"), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LogHasFlag(flag)
|
||||||
|
{
|
||||||
|
if (GetConVarInt(gCvars[CVAR_LOG]) & flag)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -181,9 +181,13 @@ public Action:Attempt_Suicide(client, argc)
|
|||||||
decl String:clientname[64];
|
decl String:clientname[64];
|
||||||
decl String:buffer[192];
|
decl String:buffer[192];
|
||||||
|
|
||||||
|
GetClientName(client, clientname, sizeof(clientname));
|
||||||
|
if (LogHasFlag(LOG_CORE_EVENTS))
|
||||||
|
{
|
||||||
|
ZR_LogMessageFormatted(client, "Damage control", "Suicide", "Player \"%s\" attempted suicide.", true, clientname);
|
||||||
|
}
|
||||||
if (GetConVarBool(gCvars[CVAR_SUICIDE_ECHO]))
|
if (GetConVarBool(gCvars[CVAR_SUICIDE_ECHO]))
|
||||||
{
|
{
|
||||||
GetClientName(client, clientname, sizeof(clientname));
|
|
||||||
Format(buffer, sizeof(buffer), "Player '%s' attempted suicide.", clientname);
|
Format(buffer, sizeof(buffer), "Player '%s' attempted suicide.", clientname);
|
||||||
ZR_PrintToAdminChat(buffer);
|
ZR_PrintToAdminChat(buffer);
|
||||||
}
|
}
|
||||||
|
@ -132,10 +132,14 @@ public Action:Event_TeleportCooldown(Handle:Timer, any:client)
|
|||||||
|
|
||||||
public Action:Command_Teleport(client, argc)
|
public Action:Command_Teleport(client, argc)
|
||||||
{
|
{
|
||||||
new String:arg1[MAX_TARGET_LENGTH];
|
decl String:arg1[MAX_TARGET_LENGTH];
|
||||||
new String:target_name[MAX_TARGET_LENGTH];
|
decl String:target_name_list[192];
|
||||||
|
decl String:target_name[192];
|
||||||
|
decl String:client_name[192];
|
||||||
new bool:tn_is_ml;
|
new bool:tn_is_ml;
|
||||||
|
|
||||||
|
GetClientName(client, client_name, sizeof(client_name));
|
||||||
|
|
||||||
if (argc >= 1)
|
if (argc >= 1)
|
||||||
{
|
{
|
||||||
GetCmdArg(1, arg1, sizeof(arg1));
|
GetCmdArg(1, arg1, sizeof(arg1));
|
||||||
@ -148,8 +152,8 @@ public Action:Command_Teleport(client, argc)
|
|||||||
target_list,
|
target_list,
|
||||||
MAXPLAYERS,
|
MAXPLAYERS,
|
||||||
COMMAND_FILTER_ALIVE,
|
COMMAND_FILTER_ALIVE,
|
||||||
target_name,
|
target_name_list,
|
||||||
sizeof(target_name),
|
sizeof(target_name_list),
|
||||||
tn_is_ml)) <= 0)
|
tn_is_ml)) <= 0)
|
||||||
{
|
{
|
||||||
ReplyToTargetError(client, target_count);
|
ReplyToTargetError(client, target_count);
|
||||||
@ -162,7 +166,8 @@ public Action:Command_Teleport(client, argc)
|
|||||||
{
|
{
|
||||||
AbortTeleport(target_list[i]);
|
AbortTeleport(target_list[i]);
|
||||||
TeleportClient(target_list[i], true, true);
|
TeleportClient(target_list[i], true, true);
|
||||||
LogAction(client, target_list[i], "\"%L\" teleported \"%L\" to spawn", client, target_list[i]);
|
GetClientName(target_list[i], target_name, sizeof(target_name));
|
||||||
|
if (LogHasFlag(LOG_GAME_EVENTS)) ZR_LogMessageFormatted(client, "Teleport", "Manual teleport", "Admin \"%s\" teleported \"%s\" to spawn.", true, client_name, target_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,14 +177,13 @@ public Action:Command_Teleport(client, argc)
|
|||||||
{
|
{
|
||||||
AbortTeleport(client);
|
AbortTeleport(client);
|
||||||
TeleportClient(client, true, true);
|
TeleportClient(client, true, true);
|
||||||
GetClientName(client, target_name, sizeof(target_name));
|
if (LogHasFlag(LOG_GAME_EVENTS)) ZR_LogMessageFormatted(client, "Teleport", "Manual teleport", "Admin \"%s\" self-teleported to spawn.", true, client_name);
|
||||||
LogAction(client, client, "[ZR] Player %s teleported %s to spawn.", target_name, target_name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tn_is_ml)
|
if (tn_is_ml)
|
||||||
{
|
{
|
||||||
ShowActivity2(client, "[ZR] ", "%t teleported to spawn.", target_name);
|
ShowActivity2(client, "[ZR] ", "%t teleported to spawn.", target_name_list);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -210,6 +214,7 @@ public Action:Command_TeleSaveLocation(client, argc)
|
|||||||
bufferLocSaved[client] = true;
|
bufferLocSaved[client] = true;
|
||||||
GetClientName(target_client, target_name, sizeof(target_name));
|
GetClientName(target_client, target_name, sizeof(target_name));
|
||||||
ReplyToCommand(client, "Saved location to %s (x:%f, y:%f, z:%f).", target_name, bufferLoc[client][0], bufferLoc[client][1], bufferLoc[client][2]);
|
ReplyToCommand(client, "Saved location to %s (x:%f, y:%f, z:%f).", target_name, bufferLoc[client][0], bufferLoc[client][1], bufferLoc[client][2]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -221,7 +226,8 @@ public Action:Command_TeleSaveLocation(client, argc)
|
|||||||
|
|
||||||
public Action:Command_TeleportToLocation(client, argc)
|
public Action:Command_TeleportToLocation(client, argc)
|
||||||
{
|
{
|
||||||
new String:target_name[MAX_TARGET_LENGTH];
|
decl String:client_name[192];
|
||||||
|
decl String:target_name[192];
|
||||||
new target_client;
|
new target_client;
|
||||||
new Float:empty_vector[3] = {0.0, 0.0, 0.0};
|
new Float:empty_vector[3] = {0.0, 0.0, 0.0};
|
||||||
|
|
||||||
@ -237,6 +243,10 @@ public Action:Command_TeleportToLocation(client, argc)
|
|||||||
{
|
{
|
||||||
target_client = client;
|
target_client = client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetClientName(client, client_name, sizeof(client_name));
|
||||||
|
GetClientName(target_client, target_name, sizeof(target_name));
|
||||||
|
|
||||||
if (target_client > 0 && target_client <= MAXPLAYERS)
|
if (target_client > 0 && target_client <= MAXPLAYERS)
|
||||||
{
|
{
|
||||||
if (IsPlayerAlive(target_client))
|
if (IsPlayerAlive(target_client))
|
||||||
@ -245,15 +255,16 @@ public Action:Command_TeleportToLocation(client, argc)
|
|||||||
TeleportEntity(target_client, bufferLoc[client], NULL_VECTOR, empty_vector);
|
TeleportEntity(target_client, bufferLoc[client], NULL_VECTOR, empty_vector);
|
||||||
ZR_PrintToChat(client, "!ztele successful");
|
ZR_PrintToChat(client, "!ztele successful");
|
||||||
if (target_client != client) ZR_PrintToChat(target_client, "!ztele successful");
|
if (target_client != client) ZR_PrintToChat(target_client, "!ztele successful");
|
||||||
|
if (LogHasFlag(LOG_GAME_EVENTS)) ZR_LogMessageFormatted(client, "Teleport", "Custom teleport", "Admin \"%s\" teleported \"%s\".", true, client_name, target_name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ReplyToCommand(client, "Player %s is dead. Only alive players can be teleported.", target_name);
|
ReplyToCommand(client, "Player \"%s\" is dead. Only alive players can be teleported.", target_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ReplyToCommand(client, "Unable to target %s", target_name);
|
ReplyToCommand(client, "Unable to target \"%s\"", target_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -293,7 +304,7 @@ public Action:Command_TeleportAbort(client, argc)
|
|||||||
for (new i = 0; i < target_count; i++)
|
for (new i = 0; i < target_count; i++)
|
||||||
{
|
{
|
||||||
AbortTeleport(target_list[i]);
|
AbortTeleport(target_list[i]);
|
||||||
LogAction(client, target_list[i], "\"%L\" aborted teleport on \"%L\".", client, target_list[i]);
|
LogAction(client, target_list[i], "%L aborted teleport on %L.", client, target_list[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -105,6 +105,34 @@ stock ZR_LogMessage(any:...)
|
|||||||
LogMessage(phrase);
|
LogMessage(phrase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stock ZR_LogMessageFormatted(client, const String:function[], const String:block[], const String:message[], bool:full = false, any:...)
|
||||||
|
{
|
||||||
|
decl String:buffer[2048];
|
||||||
|
decl String:text[2048];
|
||||||
|
|
||||||
|
if (full)
|
||||||
|
{
|
||||||
|
VFormat(buffer, sizeof(buffer), message, 6);
|
||||||
|
Format(text, sizeof(text), "Log -- Module: %s, Function/Block: %s -- %s", function, block, buffer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VFormat(buffer, sizeof(buffer), message, 6);
|
||||||
|
Format(text, sizeof(text), "Log -- %s", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LogHasFlag(LOG_TO_ADMINS))
|
||||||
|
{
|
||||||
|
ZR_PrintToAdminChat(text);
|
||||||
|
}
|
||||||
|
if (LogHasFlag(LOG_TO_CLIENT) && IsClientConnected(client) && IsClientInGame(client))
|
||||||
|
{
|
||||||
|
PrintToConsole(client, "[ZR] %s", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
LogMessage(text);
|
||||||
|
}
|
||||||
|
|
||||||
stock ZR_ReplyToCommand(client, any:...)
|
stock ZR_ReplyToCommand(client, any:...)
|
||||||
{
|
{
|
||||||
decl String:phrase[192];
|
decl String:phrase[192];
|
||||||
@ -119,7 +147,7 @@ stock ZR_ReplyToCommand(client, any:...)
|
|||||||
|
|
||||||
stock ZR_PrintToAdminChat(String:message[])
|
stock ZR_PrintToAdminChat(String:message[])
|
||||||
{
|
{
|
||||||
decl String:buffer[192];
|
decl String:buffer[256];
|
||||||
Format(buffer, sizeof(buffer), "[ZR] %s", message);
|
Format(buffer, sizeof(buffer), "[ZR] %s", message);
|
||||||
for (new client = 1; client < maxclients; client++)
|
for (new client = 1; client < maxclients; client++)
|
||||||
{
|
{
|
||||||
|
@ -118,7 +118,7 @@ RestrictWeaponGroup(const String:group[])
|
|||||||
PushArrayString(restrictedWeapons, "ak47");
|
PushArrayString(restrictedWeapons, "ak47");
|
||||||
PushArrayString(restrictedWeapons, "m4a1");
|
PushArrayString(restrictedWeapons, "m4a1");
|
||||||
PushArrayString(restrictedWeapons, "sg552");
|
PushArrayString(restrictedWeapons, "sg552");
|
||||||
PushArrayString(restrictedWeapons, "bullpup");
|
PushArrayString(restrictedWeapons, "aug");
|
||||||
}
|
}
|
||||||
else if (StrEqual(group, "snipers", false))
|
else if (StrEqual(group, "snipers", false))
|
||||||
{
|
{
|
||||||
@ -185,7 +185,7 @@ UnRestrictWeaponGroup(const String:group[])
|
|||||||
UnRestrictWeapon("ak47");
|
UnRestrictWeapon("ak47");
|
||||||
UnRestrictWeapon("m4a1");
|
UnRestrictWeapon("m4a1");
|
||||||
UnRestrictWeapon("sg552");
|
UnRestrictWeapon("sg552");
|
||||||
UnRestrictWeapon("bullpup");
|
UnRestrictWeapon("aug");
|
||||||
}
|
}
|
||||||
else if (StrEqual(group, "snipers", false))
|
else if (StrEqual(group, "snipers", false))
|
||||||
{
|
{
|
||||||
|
@ -31,11 +31,18 @@ enum ZTeam
|
|||||||
#define Game_Commencing 16 // Game Commencing!
|
#define Game_Commencing 16 // Game Commencing!
|
||||||
|
|
||||||
#define DXLEVEL_MIN 90
|
#define DXLEVEL_MIN 90
|
||||||
|
|
||||||
#define DEFAULT_FOV 90
|
#define DEFAULT_FOV 90
|
||||||
|
|
||||||
new bool:market;
|
#define LOG_CORE_EVENTS 1
|
||||||
|
#define LOG_GAME_EVENTS 2
|
||||||
|
#define LOG_PLAYER_COMMANDS 4
|
||||||
|
#define LOG_DEBUG 8
|
||||||
|
#define LOG_DEBUG_DETAIL 16
|
||||||
|
#define LOG_DEBUG_MAX_DETAIL 32
|
||||||
|
#define LOG_TO_ADMINS 64
|
||||||
|
#define LOG_TO_CLIENT 128
|
||||||
|
|
||||||
|
new bool:market;
|
||||||
new dxLevel[MAXPLAYERS+1];
|
new dxLevel[MAXPLAYERS+1];
|
||||||
|
|
||||||
new bool:zombieSpawned;
|
new bool:zombieSpawned;
|
||||||
@ -212,17 +219,3 @@ bool:IsClientPlayer(client)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ZR_DebugPrintToConsole(client, String:message[])
|
|
||||||
{
|
|
||||||
if (client)
|
|
||||||
{ /* Client console */
|
|
||||||
if (IsClientInGame(client)) PrintToConsole(client, message);
|
|
||||||
LogMessage("Debug log (client %i) -- %s", client, message);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ /* Server console */
|
|
||||||
PrintToServer(message);
|
|
||||||
LogMessage("Debug log (client %i) -- %s", client, message);
|
|
||||||
}
|
|
||||||
}
|
|
@ -23,6 +23,7 @@ ZRAdminMenu(client)
|
|||||||
decl String:ztele[] = "Teleporter commands";
|
decl String:ztele[] = "Teleporter commands";
|
||||||
decl String:zrestrict[] = "Restrict a weapon";
|
decl String:zrestrict[] = "Restrict a weapon";
|
||||||
decl String:zunrestrict[] = "Unrestrict a weapon";
|
decl String:zunrestrict[] = "Unrestrict a weapon";
|
||||||
|
decl String:zlogflags[] = "Logging flags";
|
||||||
|
|
||||||
AddMenuItem(zr_admin_menu, "zknockbackm", zknockbackm);
|
AddMenuItem(zr_admin_menu, "zknockbackm", zknockbackm);
|
||||||
AddMenuItem(zr_admin_menu, "zknockback", zknockback);
|
AddMenuItem(zr_admin_menu, "zknockback", zknockback);
|
||||||
@ -32,6 +33,7 @@ ZRAdminMenu(client)
|
|||||||
AddMenuItem(zr_admin_menu, "ztele", ztele);
|
AddMenuItem(zr_admin_menu, "ztele", ztele);
|
||||||
AddMenuItem(zr_admin_menu, "zrestrict", zrestrict, ITEMDRAW_DISABLED);
|
AddMenuItem(zr_admin_menu, "zrestrict", zrestrict, ITEMDRAW_DISABLED);
|
||||||
AddMenuItem(zr_admin_menu, "zunrestrict", zunrestrict, ITEMDRAW_DISABLED);
|
AddMenuItem(zr_admin_menu, "zunrestrict", zunrestrict, ITEMDRAW_DISABLED);
|
||||||
|
AddMenuItem(zr_admin_menu, "zlogflags", zlogflags);
|
||||||
|
|
||||||
DisplayMenu(zr_admin_menu, client, MENU_TIME_FOREVER);
|
DisplayMenu(zr_admin_menu, client, MENU_TIME_FOREVER);
|
||||||
}
|
}
|
||||||
@ -74,6 +76,10 @@ public ZRAdminMenuHandle(Handle:zr_admin_menu, MenuAction:action, client, slot)
|
|||||||
{
|
{
|
||||||
// unrestrict
|
// unrestrict
|
||||||
}
|
}
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (action == MenuAction_End)
|
if (action == MenuAction_End)
|
||||||
@ -424,6 +430,103 @@ public ZRTeleHandle(Handle:zr_tele_menu , MenuAction:action, client, slot)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZRLogFlagsMenu(client)
|
||||||
|
{
|
||||||
|
new Handle:zr_log_flags_menu = CreateMenu(ZRLogFlagsMenuHandle);
|
||||||
|
|
||||||
|
decl String:z_log_core[64];
|
||||||
|
decl String:z_log_game[64];
|
||||||
|
decl String:z_log_player[64];
|
||||||
|
decl String:z_log_debug[64];
|
||||||
|
decl String:z_log_debug_detail[64];
|
||||||
|
decl String:z_log_debug_max[64];
|
||||||
|
decl String:z_log_admins[64];
|
||||||
|
decl String:z_log_client[64];
|
||||||
|
|
||||||
|
Format(z_log_core, sizeof(z_log_core), "Log core events (%d)", LogHasFlag(LOG_CORE_EVENTS));
|
||||||
|
Format(z_log_game, sizeof(z_log_game), "Log game events (%d)", LogHasFlag(LOG_GAME_EVENTS));
|
||||||
|
Format(z_log_player, sizeof(z_log_player), "Log player commands (%d)", LogHasFlag(LOG_PLAYER_COMMANDS));
|
||||||
|
Format(z_log_debug, sizeof(z_log_debug), "Log debug messages (%d)", LogHasFlag(LOG_DEBUG));
|
||||||
|
Format(z_log_debug_detail, sizeof(z_log_debug_detail), "Log detailed debug messages (%d)", LogHasFlag(LOG_DEBUG_DETAIL));
|
||||||
|
Format(z_log_debug_max, sizeof(z_log_debug_max), "Log low level debug messages (%d)", LogHasFlag(LOG_DEBUG_MAX_DETAIL));
|
||||||
|
Format(z_log_admins, sizeof(z_log_admins), "Also log to admin chat (%d)", LogHasFlag(LOG_TO_ADMINS));
|
||||||
|
Format(z_log_client, sizeof(z_log_client), "Also log to client console (%d)", LogHasFlag(LOG_TO_CLIENT));
|
||||||
|
|
||||||
|
SetMenuTitle(zr_log_flags_menu, "Toggle logging flags");
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_core, z_log_core);
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_game, z_log_game);
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_player, z_log_player);
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_debug, z_log_debug);
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_debug_detail, z_log_debug_detail);
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_debug_max, z_log_debug_max);
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_admins, z_log_admins);
|
||||||
|
AddMenuItem(zr_log_flags_menu, z_log_client, z_log_client);
|
||||||
|
|
||||||
|
SetMenuExitBackButton(zr_log_flags_menu, true);
|
||||||
|
DisplayMenu(zr_log_flags_menu, client, MENU_TIME_FOREVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ZRLogFlagsMenuHandle(Handle:zr_log_flags_menu , MenuAction:action, client, slot)
|
||||||
|
{
|
||||||
|
if (action == MenuAction_Select)
|
||||||
|
{
|
||||||
|
switch(slot)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_CORE_EVENTS);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_GAME_EVENTS);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_PLAYER_COMMANDS);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_DEBUG);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_DEBUG_DETAIL);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_DEBUG_MAX_DETAIL);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
case 6:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_TO_ADMINS);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
case 7:
|
||||||
|
{
|
||||||
|
ToggleLogFlag(LOG_TO_CLIENT);
|
||||||
|
ZRLogFlagsMenu(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (action == MenuAction_Cancel)
|
||||||
|
{
|
||||||
|
if (slot == MenuCancel_ExitBack)
|
||||||
|
{
|
||||||
|
ZRAdminMenu(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (action == MenuAction_End)
|
||||||
|
{
|
||||||
|
CloseHandle(zr_log_flags_menu );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AddToKnockbackMultiplier(Float:value)
|
AddToKnockbackMultiplier(Float:value)
|
||||||
{
|
{
|
||||||
new Float:current_val = GetConVarFloat(gCvars[CVAR_ZOMBIE_KNOCKBACK]);
|
new Float:current_val = GetConVarFloat(gCvars[CVAR_ZOMBIE_KNOCKBACK]);
|
||||||
@ -434,3 +537,18 @@ AddToClassKnockback(classindex, Float:value)
|
|||||||
{
|
{
|
||||||
arrayClasses[classindex][data_knockback] = arrayClasses[classindex][data_knockback] + value;
|
arrayClasses[classindex][data_knockback] = arrayClasses[classindex][data_knockback] + value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ToggleLogFlag(flag)
|
||||||
|
{
|
||||||
|
new log_flags;
|
||||||
|
log_flags = GetConVarInt(gCvars[CVAR_LOG]);
|
||||||
|
if (log_flags & flag)
|
||||||
|
{
|
||||||
|
log_flags = log_flags - flag;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log_flags = log_flags + flag;
|
||||||
|
}
|
||||||
|
SetConVarInt(gCvars[CVAR_LOG], log_flags);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user