diff --git a/src/zombiereloaded.sp b/src/zombiereloaded.sp index 6a1876b..cf63f6c 100644 --- a/src/zombiereloaded.sp +++ b/src/zombiereloaded.sp @@ -26,6 +26,9 @@ // Cvars (core) #include "zr/cvars" +// Log (TODO) +// #include "zr/log" + // Translations (core) #include "zr/translation" @@ -35,37 +38,31 @@ // Models (core) #include "zr/models" -// Round end (core) +// Class System (core) +#include "zr/playerclasses/playerclasses" + +// Round End (core) #include "zr/roundend" // Damage (core) #include "zr/damage" -// Class system (module) -#include "zr/playerclasses/playerclasses" - -#include "zr/anticamp" -#include "zr/teleport" -#include "zr/zombie" -#include "zr/menu" -#include "zr/sayhooks" - -// Weapons (module) +// Weapons (core) #include "zr/weapons/weapons" -// Sound effects (module) +// Hitgroups (core) +#include "zr/hitgroups" + +// Sound Effects (module) #include "zr/soundeffects/soundeffects" // Antistick (module) #include "zr/antistick" -// Hitgroups (module) -#include "zr/hitgroups" - // Knockback (module) #include "zr/knockback" -// Spawn protect (module) +// Spawn Protect (module) #include "zr/spawnprotect" // Respawn (module) @@ -77,6 +74,11 @@ // ZHP (module) #include "zr/zhp" +#include "zr/anticamp" +#include "zr/teleport" +#include "zr/zombie" +#include "zr/menu" +#include "zr/sayhooks" #include "zr/zadmin" #include "zr/commands" #include "zr/event" @@ -109,10 +111,13 @@ public OnPluginStart() // ====================================================================== + // Cvars + CvarsInit(); + CvarsHook(); + + // TODO: Be modulized/recoded. HookEvents(); HookChatCmds(); - CreateCvars(); - HookCvars(); CreateCommands(); HookCommands(); FindOffsets(); @@ -163,11 +168,11 @@ public OnMapStart() LoadDownloadData(); // Forward event to modules. - RoundEndOnMapStart(); ClassLoad(); + RoundEndOnMapStart(); WeaponsLoad(); - SEffectsOnMapStart(); HitgroupsLoad(); + SEffectsOnMapStart(); Anticamp_Startup(); } @@ -208,9 +213,9 @@ public OnClientPutInServer(client) bMotherInfectImmune[client] = false; // Forward event to modules. + ClassClientInit(client); RoundEndClientInit(client); DamageClientInit(client); - ClassClientInit(client); SEffectsClientInit(client); WeaponsClientInit(client); SpawnProtectClientInit(client); @@ -228,8 +233,8 @@ public OnClientDisconnect(client) PlayerLeft(client); // Forward event to modules. - DamageOnClientDisconnect(client); ClassOnClientDisconnect(client); + DamageOnClientDisconnect(client); WeaponsOnClientDisconnect(client); ZTeleResetClient(client); @@ -265,8 +270,8 @@ MapChangeCleanup() { TerminateRound(3.0, Game_Commencing); - UnhookCvars(); - UnhookEvents(); + CvarsHook(); + CvarsUnhook(); // TODO: Disable all modules! Teleport, ambience, overlays, antistick, etc. diff --git a/src/zr/anticamp.inc b/src/zr/anticamp.inc index d79431a..a4dd637 100644 --- a/src/zr/anticamp.inc +++ b/src/zr/anticamp.inc @@ -31,7 +31,7 @@ new Handle:hUpdateTimer; Anticamp_Startup(bool:no_reset = false) { - new Float:interval = GetConVarFloat(gCvars[CVAR_ANTICAMP_UPDATE_INTERVAL]); + new Float:interval = GetConVarFloat(g_hCvarsList[CVAR_ANTICAMP_UPDATE_INTERVAL]); // Create timer for updating player locations. if (hUpdateTimer != INVALID_HANDLE) @@ -342,7 +342,7 @@ HurtPlayersInVolume(volume_index) new client_health; decl String:client_name[64]; decl String:buffer[192]; - new anticamp_echo = GetConVarBool(gCvars[CVAR_ANTICAMP_ECHO]); + new anticamp_echo = GetConVarBool(g_hCvarsList[CVAR_ANTICAMP_ECHO]); // x = client index. for (new x = 1; x <= MaxClients; x++) diff --git a/src/zr/antistick.inc b/src/zr/antistick.inc index ee0b154..9b2807b 100644 --- a/src/zr/antistick.inc +++ b/src/zr/antistick.inc @@ -40,10 +40,10 @@ AntiStickRestart() KillTimer(tAntiStick); } - new bool:antistick = GetConVarBool(gCvars[CVAR_ANTISTICK]); + new bool:antistick = GetConVarBool(g_hCvarsList[CVAR_ANTISTICK]); if (antistick) { - new Float:interval = GetConVarFloat(gCvars[CVAR_ANTISTICK_INTERVAL]); + new Float:interval = GetConVarFloat(g_hCvarsList[CVAR_ANTISTICK_INTERVAL]); tAntiStick = CreateTimer(interval, AntiStickTimer, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); } } diff --git a/src/zr/commands.inc b/src/zr/commands.inc index 5be84e0..4df4492 100644 --- a/src/zr/commands.inc +++ b/src/zr/commands.inc @@ -37,7 +37,7 @@ CreateCommands() public Action:Command_Infect(client, argc) { - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (argc < 1 || !enabled) { return Plugin_Handled; @@ -84,7 +84,7 @@ public Action:Command_Infect(client, argc) public Action:Command_Respawn(client, argc) { - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (argc < 1 || !enabled) { return Plugin_Handled; @@ -136,17 +136,38 @@ public Action:Command_Respawn(client, argc) } /** - * Command callback for client command "zr_restrict" + * Command callback (zr_restrict) + * Restricts a weapon or group + * * @param client The client index. * @param argc Argument count. -*/ +*/ public Action:Command_Restrict(client, argc) { + // Disabled. // If plugin is disabled then stop - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + /**new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (argc < 1 || !enabled) { return Plugin_Handled; + }*/ + + // If weapons module is disabled, then stop. + new bool:weapons = GetConVarBool(g_hCvarsList[CVAR_WEAPONS]); + if (!weapons) + { + // Tell client command is disabled. + ZR_ReplyToCommand(client, "Feature is disabled"); + return Plugin_Handled; + } + + // If restrict module is disabled, then stop. + new bool:restrict = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_RESTRICT]); + if (!restrict) + { + // Tell client command is disabled. + ZR_ReplyToCommand(client, "Feature is disabled"); + return Plugin_Handled; } // arg1 = weapon being restricted @@ -165,17 +186,38 @@ public Action:Command_Restrict(client, argc) } /** - * Command callback for client command "zr_unrestrict" + * Command callback (zr_unrestrict) + * Unrestricts a weapon or group + * * @param client The client index. * @param argc Argument count. -*/ +*/ public Action:Command_Unrestrict(client, argc) { + // Disabled. // If plugin is disabled then stop - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + /**new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (argc < 1 || !enabled) { return Plugin_Handled; + }*/ + + // If weapons module is disabled, then stop. + new bool:weapons = GetConVarBool(g_hCvarsList[CVAR_WEAPONS]); + if (!weapons) + { + // Tell client command is disabled. + ZR_ReplyToCommand(client, "Feature is disabled"); + return Plugin_Handled; + } + + // If restrict module is disabled, then stop. + new bool:restrict = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_RESTRICT]); + if (!restrict) + { + // Tell client command is disabled. + ZR_ReplyToCommand(client, "Feature is disabled"); + return Plugin_Handled; } // arg1 = weapon being restricted diff --git a/src/zr/cvars.inc b/src/zr/cvars.inc index 5c95dd2..e1c3db3 100644 --- a/src/zr/cvars.inc +++ b/src/zr/cvars.inc @@ -1,49 +1,55 @@ -/** - * ==================== +/* + * ============================================================================ + * * Zombie:Reloaded - * File: cvars.inc - * Author: Greyscale - * ==================== + * + * File: cvars.inc + * Description: Config creation and cvar control. + * + * ============================================================================ */ -enum ZRSettings +/** + * List of cvars used by the plugin. + */ +enum CvarsList { Handle:CVAR_ENABLE, Handle:CVAR_LOG, - Handle:CVAR_ALLOW_PLAYER_TEAM, - Handle:CVAR_AMBIENTSOUNDS, - Handle:CVAR_AMBIENTSOUNDS_FILE, - Handle:CVAR_AMBIENTSOUNDS_LENGTH, - Handle:CVAR_AMBIENTSOUNDS_VOLUME, - Handle:CVAR_SOUNDEFFECTS_MOAN, - Handle:CVAR_SOUNDEFFECTS_GROAN, - Handle:CVAR_SOUNDEFFECTS_DEATH, - Handle:CVAR_NAPALM_IGNITEGRENADE, - Handle:CVAR_CLASSES, + Handle:CVAR_ROUNDEND_OVERLAY, + Handle:CVAR_ROUNDEND_OVERLAY_ZOMBIE, + Handle:CVAR_ROUNDEND_OVERLAY_HUMAN, Handle:CVAR_CLASSES_SPAWN, Handle:CVAR_CLASSES_RANDOM, Handle:CVAR_CLASSES_DEFAULT_ZOMBIE, Handle:CVAR_CLASSES_DEFAULT_HUMAN, Handle:CVAR_CLASSES_DEFAULT_ADMIN, Handle:CVAR_CLASSES_FILE, - Handle:CVAR_ZOMBIE_HEALTH, - Handle:CVAR_ZOMBIE_SPEED, - Handle:CVAR_ZOMBIE_JUMP_DISTANCE, - Handle:CVAR_ZOMBIE_JUMP_HEIGHT, - Handle:CVAR_ZOMBIE_NVGS, - Handle:CVAR_ZOMBIE_FOV, - Handle:CVAR_ZOMBIE_REGEN, - Handle:CVAR_ZOMBIE_REGEN_HEALTH, - Handle:CVAR_ZOMBIE_REGEN_INTERVAL, - Handle:CVAR_ZOMBIE_NAPALM, - Handle:CVAR_ZOMBIE_NAPALM_TIME, - Handle:CVAR_ZOMBIE_NOFALLDAMAGE, - Handle:CVAR_ZOMBIE_KILL_BONUS, - Handle:CVAR_ZOMBIE_INFECT_HEALTH, - Handle:CVAR_ZOMBIE_ZVISION, - Handle:CVAR_ZOMBIE_ALPHA_SPAWN, - Handle:CVAR_ZOMBIE_ALPHA_DAMAGED, - Handle:CVAR_ZOMBIE_ALPHA_DAMAGE, + Handle:CVAR_DAMAGE_SUICIDE_ZOMBIE, + Handle:CVAR_DAMAGE_SUICIDE_HUMAN, + Handle:CVAR_DAMAGE_SUICIDE_CMDS, + Handle:CVAR_WEAPONS, + Handle:CVAR_WEAPONS_RESTRICT, + Handle:CVAR_HITGROUPS, + Handle:CVAR_SOUNDEFFECTS_MOAN, + Handle:CVAR_SOUNDEFFECTS_GROAN, + Handle:CVAR_SOUNDEFFECTS_DEATH, + Handle:CVAR_AMBIENTSOUNDS, + Handle:CVAR_AMBIENTSOUNDS_FILE, + Handle:CVAR_AMBIENTSOUNDS_LENGTH, + Handle:CVAR_AMBIENTSOUNDS_VOLUME, + Handle:CVAR_ANTISTICK, + Handle:CVAR_ANTISTICK_INTERVAL, + Handle:CVAR_SPAWNPROTECT, + Handle:CVAR_SPAWNPROTECT_TIME, + Handle:CVAR_RESPAWN, + Handle:CVAR_RESPAWN_DELAY, + Handle:CVAR_RESPAWN_ZOMBIE, + Handle:CVAR_RESPAWN_ZOMBIE_WORLD, + Handle:CVAR_ZHP, + Handle:CVAR_ZHP_DEFAULT, + + // To be modulized/recoded. Handle:CVAR_OVERLAY_REDISPLAY, Handle:CVAR_ZVISION_ALLOW_DISABLE, Handle:CVAR_MENU_AUTOCLOSE, @@ -52,22 +58,10 @@ enum ZRSettings Handle:CVAR_DARK_SKY, Handle:CVAR_MOTHER_ZOMBIE_RATIO, Handle:CVAR_MOTHER_ZOMBIE_RESPAWN, - Handle:CVAR_RESPAWN, - Handle:CVAR_RESPAWN_ZOMBIE, - Handle:CVAR_RESPAWN_DELAY, - Handle:CVAR_SUICIDE_ZOMBIE, - Handle:CVAR_SUICIDE_HUMAN, - Handle:CVAR_SUICIDE_CMDS, Handle:CVAR_SUICIDE_WORLD_DAMAGE, Handle:CVAR_SPAWN_MIN, Handle:CVAR_SPAWN_MAX, - Handle:CVAR_ANTISTICK, - Handle:CVAR_ANTISTICK_INTERVAL, - Handle:CVAR_PROTECT, Handle:CVAR_CONSECUTIVE_INFECT, - Handle:CVAR_ROUNDEND_OVERLAY, - Handle:CVAR_ROUNDEND_OVERLAY_ZOMBIE, - Handle:CVAR_ROUNDEND_OVERLAY_HUMAN, Handle:CVAR_ZMARKET_BUYZONE, Handle:CVAR_ZSPAWN, Handle:CVAR_ZTELE, @@ -78,8 +72,6 @@ enum ZRSettings Handle:CVAR_ZTELE_ZOMBIE_DELAY, Handle:CVAR_ZTELE_ZOMBIE_LIMIT, Handle:CVAR_ZTELE_RESET_BUFFERS, - Handle:CVAR_ZHP, - Handle:CVAR_ZHP_DEFAULT, Handle:CVAR_CASHFILL, Handle:CVAR_CASHAMOUNT, Handle:CVAR_INFECT_FIREBALL, @@ -93,119 +85,292 @@ enum ZRSettings Handle:CVAR_INFECT_SHAKE_DURATION, Handle:CVAR_ANTICAMP, Handle:CVAR_ANTICAMP_UPDATE_INTERVAL, - Handle:CVAR_ANTICAMP_ECHO + Handle:CVAR_ANTICAMP_ECHO, } -new gCvars[ZRSettings]; +/** + * Array to store cvar data in. + */ +new g_hCvarsList[CvarsList]; -CreateCvars() +/** + * Cvars module init function. + */ +CvarsInit() { - gCvars[CVAR_ENABLE] = CreateConVar("zr_enable", "1", "Enable zombie gameplay (0: Disable)"); - gCvars[CVAR_LOG] = CreateConVar("zr_log", "331", "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_AMBIENTSOUNDS] = CreateConVar("zr_ambientsounds", "1", "Enable creepy ambience to be played throughout the game (0: Disable)"); - gCvars[CVAR_AMBIENTSOUNDS_FILE] = CreateConVar("zr_ambientsounds_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_AMBIENTSOUNDS_LENGTH] = CreateConVar("zr_ambientsounds_length", "60.0", "The length, in seconds, of the ambient sound file"); - gCvars[CVAR_AMBIENTSOUNDS_VOLUME] = CreateConVar("zr_ambientsounds_volume", "1.0", "Volume of ambient sounds when zr_ambience is 1 (0.0: Unhearable, 1.0: Max volume)"); - gCvars[CVAR_SOUNDEFFECTS_MOAN] = CreateConVar("zr_soundeffects_moan", "50", "How often, in seconds, a zombie moans (0: Disable)"); - gCvars[CVAR_SOUNDEFFECTS_GROAN] = CreateConVar("zr_soundeffects_groan", "5", "Chance factor a zombie will groan when shot (Lower: More often, 0: Disable)"); - gCvars[CVAR_SOUNDEFFECTS_DEATH] = CreateConVar("zr_soundeffects_death", "1", "Zombie will emit a death sound when killed (0: Disable)"); - gCvars[CVAR_NAPALM_IGNITEGRENADE] = CreateConVar("zr_napalm_ignitegrenade", "1", "Ignites all thrown grenades. (0: Disable)"); - gCvars[CVAR_CLASSES] = CreateConVar("zr_classes", "1", "Enable zombie classes"); - gCvars[CVAR_CLASSES_SPAWN] = CreateConVar("zr_classes_spawn", "0", "Classmenu is re-displayed every spawn (0: Disable)"); - gCvars[CVAR_CLASSES_RANDOM] = CreateConVar("zr_classes_random", "0", "A random class is assigned to each player every round. Overrides zr_classes_spawn and default classes. (0: Disable)"); - gCvars[CVAR_CLASSES_DEFAULT_ZOMBIE] = CreateConVar("zr_classes_default_zombie", "random", "Default zombie class selected for all players when they connect. Use \"random\" to select a random class, or blank to use class config defaults."); - gCvars[CVAR_CLASSES_DEFAULT_HUMAN] = CreateConVar("zr_classes_default_human", "random", "Default human class selected for all players when they connect. Use \"random\" to select a random class, or blank to use class config defaults."); - gCvars[CVAR_CLASSES_DEFAULT_ADMIN] = CreateConVar("zr_classes_default_admin", "random", "Default admin-only class selected for admins when they connect. Use \"random\" to select a random class, or blank to use class config defaults."); - gCvars[CVAR_CLASSES_FILE] = CreateConVar("zr_classes_file", "configs/zr/playerclasses.txt", "Class data file to read from, in Valves key/values format. The path is relative to the \"sourcemod\" folder."); - gCvars[CVAR_ZOMBIE_HEALTH] = CreateConVar("zr_zombie_health", "5000", "The default health of a zombie"); - gCvars[CVAR_ZOMBIE_SPEED] = CreateConVar("zr_zombie_speed", "350", "How fast zombies travel (300: Default speed, 600: Double speed)"); - gCvars[CVAR_ZOMBIE_JUMP_DISTANCE] = CreateConVar("zr_zombie_jump_distance", "0.1", "How far the zombie jumps, (0: Regular jump distance)"); - gCvars[CVAR_ZOMBIE_JUMP_HEIGHT] = CreateConVar("zr_zombie_jump_height", "10.0", "How high a zombie jumps (0: Regular jump height)"); - gCvars[CVAR_ZOMBIE_NVGS] = CreateConVar("zr_zombie_nvgs", "-1", "Zombies will be equipped with nightvision. Also used to override class nvgs if non-negative. (-1: No override, uses class setting, 0: No nvgs, 1: Nvgs on)"); - gCvars[CVAR_ZOMBIE_FOV] = CreateConVar("zr_zombie_fov", "110", "The field of vision of zombies (90: Default vision)"); - gCvars[CVAR_ZOMBIE_REGEN] = CreateConVar("zr_zombie_regen", "0", "Zombies will regenerate health"); - gCvars[CVAR_ZOMBIE_REGEN_HEALTH] = CreateConVar("zr_zombie_regen_health", "1", "How much health is regenerated when zr_zombie_regen is 1"); - gCvars[CVAR_ZOMBIE_REGEN_INTERVAL] = CreateConVar("zr_zombie_regen_interval", "5", "How often, in seconds, a zombie regenerates health when zr_zombie_regen is 1"); - gCvars[CVAR_ZOMBIE_NAPALM] = CreateConVar("zr_zombie_napalm", "1", "Turns grenades into napalm grenades that light zombies on fire (0: Disable)"); - gCvars[CVAR_ZOMBIE_NAPALM_TIME] = CreateConVar("zr_zombie_napalm_time", "20", "How long the zombie burns when zr_napalm is 1"); - gCvars[CVAR_ZOMBIE_NOFALLDAMAGE] = CreateConVar("zr_zombie_nofalldamage", "0", "Zombies wont be hurt from falling (0: Disable)"); - gCvars[CVAR_ZOMBIE_KILL_BONUS] = CreateConVar("zr_zombie_kill_bonus", "2", "How many additional kills are rewarded to the killer of the zombie"); - gCvars[CVAR_ZOMBIE_INFECT_HEALTH] = CreateConVar("zr_zombie_infect_health", "100", "How much health a zombie gains when infecting a human (0: Disable)"); - gCvars[CVAR_ZOMBIE_ZVISION] = CreateConVar("zr_zombie_zvision", "overlays/zr/zvision", "Overlay to be shown on all zombies' screen on infection (Leave empty to disable)"); - gCvars[CVAR_ZOMBIE_ALPHA_SPAWN] = CreateConVar("zr_zombie_alpha_spawn", "255", "Initial transparency (0: Invisible. 255: Fully visible)"); - gCvars[CVAR_ZOMBIE_ALPHA_DAMAGED] = CreateConVar("zr_zombie_alpha_damaged", "255", "Transparency when damaged (0: Invisible. 255: Fully visible)"); - gCvars[CVAR_ZOMBIE_ALPHA_DAMAGE] = CreateConVar("zr_zombie_alpha_damage", "0", "How much damage to do before changing transparency."); - gCvars[CVAR_OVERLAY_REDISPLAY] = CreateConVar("zr_overlay_redisplay", "3", "Frequency, in seconds, to display overlay on the client's screen (Never go below 0.1, 0.2 seems safe)"); - gCvars[CVAR_ZVISION_ALLOW_DISABLE] = CreateConVar("zr_zvision_allow_disable", "1", "Allow users to disable ZVision with their nightvision key (0: Disable)"); - gCvars[CVAR_MENU_AUTOCLOSE] = CreateConVar("zr_menu_autoclose", "0", "Automatically close menus on selection. If disabled the menu will remain open."); - gCvars[CVAR_DARK] = CreateConVar("zr_dark", "0", "Default value for darkening maps, most dislike this feature (0: Disable)"); - gCvars[CVAR_DARK_LEVEL] = CreateConVar("zr_dark_level", "a", "The darkness of the map, a being the darkest, z being extremely bright when zr_dark is 1 (n: Default)"); - gCvars[CVAR_DARK_SKY] = CreateConVar("zr_dark_sky", "sky_borealis01", "The sky the map will have when zr_dark is 1"); - gCvars[CVAR_MOTHER_ZOMBIE_RATIO] = CreateConVar("zr_mother_zombie_ratio", "5", "For every 'x' number of humans, there will be 1 zombie (0: Always only 1 mother zombie)"); - gCvars[CVAR_MOTHER_ZOMBIE_RESPAWN] = CreateConVar("zr_mother_zombie_respawn", "0", "First zombie(s) will be teleported back to spawn when infected (0: Disable)"); - gCvars[CVAR_RESPAWN] = CreateConVar("zr_respawn", "0", "When player is killed, player will respawn"); - gCvars[CVAR_RESPAWN_ZOMBIE] = CreateConVar("zr_respawn_zombie", "1", "Respawn player as zombie (0: Respawn as human)"); - gCvars[CVAR_RESPAWN_DELAY] = CreateConVar("zr_respawn_delay", "1", "How long to wait after death to respawn, in seconds"); - gCvars[CVAR_SUICIDE_ZOMBIE] = CreateConVar("zr_suicide_zombie", "1", "Intercept human suicide attempts."); - gCvars[CVAR_SUICIDE_HUMAN] = CreateConVar("zr_suicide_human", "1", "Intercept zombie suicide attempts."); - gCvars[CVAR_SUICIDE_CMDS] = CreateConVar("zr_suicide_cmds", "kill, spectate, jointeam", "List of suicide commands to intercept. (Delimited by \", \""); - /** Note: CVAR_SUICIDE_WORLD_DAMAGE should be renamed as it is not part of the suicide intercept function*/ - gCvars[CVAR_SUICIDE_WORLD_DAMAGE] = CreateConVar("zr_suicide_world_damage", "1", "Respawn zombies as zombies if they were killed by the world, like elevators, doors and lasers. (0: Disable)"); - gCvars[CVAR_SPAWN_MIN] = CreateConVar("zr_spawn_min", "30", "Minimum time a player is picked to be zombie after the round starts, in seconds"); - gCvars[CVAR_SPAWN_MAX] = CreateConVar("zr_spawn_max", "50", "Maximum time a player is picked to be zombie after the round starts, in seconds"); - gCvars[CVAR_ANTISTICK] = CreateConVar("zr_antistick", "1", "Enable the anti-stick module, which will automatically unstick players stuck within each other. (0:Disable)"); - gCvars[CVAR_ANTISTICK_INTERVAL] = CreateConVar("zr_antistick_interval", "1.0", "How often, in seconds, the anti-stick module checks each player for being stuck. (1.0: Default)"); - gCvars[CVAR_PROTECT] = CreateConVar("zr_protect", "10", "Players that join late will be protected for this long, in seconds (0: Disable)"); - gCvars[CVAR_CONSECUTIVE_INFECT] = CreateConVar("zr_consecutive_infect", "0", "Allow player to be randomly chosen twice in a row to be a mother zombie (0: Disable)"); - gCvars[CVAR_ROUNDEND_OVERLAY] = CreateConVar("zr_roundend_overlay", "1", "Shows an overlay to all clients when a team wins. (0: Disable)"); - gCvars[CVAR_ROUNDEND_OVERLAY_HUMAN] = CreateConVar("zr_roundend_overlays_human", "overlays/zr/humans_win", "Path to \"humans win\" overlay"); - gCvars[CVAR_ROUNDEND_OVERLAY_ZOMBIE] = CreateConVar("zr_roundend_overlays_zombie", "overlays/zr/zombies_win", "Path to \"zombies win\" overlay"); - gCvars[CVAR_ZMARKET_BUYZONE] = CreateConVar("zr_zmarket_buyzone", "1", "Must be in buyzone to access !zmarket, if Market is installed (0: Can be used anywhere)"); - gCvars[CVAR_ZSPAWN] = CreateConVar("zr_zspawn", "1", "Allow players to spawn if they just joined the game (0: Disable)"); - gCvars[CVAR_ZTELE] = CreateConVar("zr_tele", "1", "Allow players to use the teleporter to get to spawn. (0: Disable)"); - gCvars[CVAR_ZTELE_STARTUP_DELAY] = CreateConVar("zr_tele_startup_delay", "30", "Number of seconds to wait before the teleporter is enabled (0: Always enabled)"); - gCvars[CVAR_ZTELE_COOLDOWN] = CreateConVar("zr_tele_cooldown", "20", "Number of seconds to wait before the teleporter can be used again, after a teleport. (0: Disable)"); - gCvars[CVAR_ZTELE_HUMAN_DELAY] = CreateConVar("zr_tele_human_delay", "10", "Teleport delay for humans. (0: No delay)"); - gCvars[CVAR_ZTELE_HUMAN_LIMIT] = CreateConVar("zr_tele_human_limit", "3", "Maximum number of teleports humans can do. (0: Humans can't use the teleporter. -1: Unlimited)"); - gCvars[CVAR_ZTELE_ZOMBIE_DELAY] = CreateConVar("zr_tele_zombie_delay", "0", "Teleport delay for zombies. (0: No delay)"); - gCvars[CVAR_ZTELE_ZOMBIE_LIMIT] = CreateConVar("zr_tele_zombie_limit", "8", "Maximum number of teleports zombies can do. (0: Zombies can't use the teleporter. -1: Unlimited)"); - gCvars[CVAR_ZTELE_RESET_BUFFERS] = CreateConVar("zr_tele_reset_buffers", "1", "Reset custom saved teleport locations on each round start. (0: Disable)"); - gCvars[CVAR_ZHP] = CreateConVar("zr_zhp", "1", "Allows clients to enable/disable zombie health display (1: On, 0: Off)"); - gCvars[CVAR_ZHP_DEFAULT] = CreateConVar("zr_zhp_default", "1", "The default value of zombie health display to new clients (1: On, 0: Off)"); - gCvars[CVAR_CASHFILL] = CreateConVar("zr_cashfill", "1", "Enable the mod to set the players cash to zr_cashamount (0: Disabled)"); - gCvars[CVAR_CASHAMOUNT] = CreateConVar("zr_cashamount", "12000", "How much money players will have when they spawn when zr_cashfill is 1"); - gCvars[CVAR_INFECT_FIREBALL] = CreateConVar("zr_infect_fireball", "1", "A fireball is created when a player is infected (0: Disable)"); - gCvars[CVAR_INFECT_SMOKE] = CreateConVar("zr_infect_smoke", "1", "A puff of smoke is created when a player is infected (0: Disable)"); - gCvars[CVAR_INFECT_SPARKS] = CreateConVar("zr_infect_sparks", "1", "Sparks are emitted when a player is infected (0: Disable)"); - gCvars[CVAR_INFECT_SOUND] = CreateConVar("zr_infect_sound", "npc/fast_zombie/fz_scream1.wav", "Sound played from from player on infection (Leave blank to disable)"); - gCvars[CVAR_INFECT_ESPLASH] = CreateConVar("zr_infect_esplash", "1", "An energy splash is emitted when player is infected (0: Disable)"); - gCvars[CVAR_INFECT_SHAKE] = CreateConVar("zr_infect_shake", "1", "Player's screen is shaken on infection (0: Disable)"); - gCvars[CVAR_INFECT_SHAKE_AMP] = CreateConVar("zr_infect_shake_amp", "15.0", "Amplitude of the shake, when zr_infect_shake is 1"); - gCvars[CVAR_INFECT_SHAKE_FREQUENCY] = CreateConVar("zr_infect_shake_frequency", "1.0", "Frequency of the shake, when zr_infect_shake is 1"); - gCvars[CVAR_INFECT_SHAKE_DURATION] = CreateConVar("zr_infect_shake_duration", "5.0", "Duration of the shake, when zr_infect_shake is 1"); - gCvars[CVAR_ANTICAMP] = CreateConVar("zr_anticamp", "1", "Enables or disables hurt volumes for preventing unfair camping. (0: Disable)"); - gCvars[CVAR_ANTICAMP_UPDATE_INTERVAL] = CreateConVar("zr_anticamp_update_interval", "1", "How often to update player locations (in seconds)."); - gCvars[CVAR_ANTICAMP_ECHO] = CreateConVar("zr_anticamp_echo", "1", "Log kills done by anticamp to admin chat."); + // Cvar naming guidelines: + // 1. Prefix: "zr_" + // 2. Module name next. "zr_modulename_" + // 3. (If applys) Submodule name next. "zr_modulename_submodulename_" Ex "zr_weapons_restrict_" + // 4. Name last part to be defaulted to "1" (if boolean cvar) Ex "zr_damage_suicide_zombie", + // because it will be defaulted to "1". "zr_damage_suicide_zombie_disable" = bad. Because we want + // to try to default everything to "1" and let hosts disable what they don't want. + // + // Cvar description guidelines + // Assume cvar is enabled. + // Ex. "zr_roundend_overlay" "1" "Display round win overlays to all clients." + // Explain (additional) options in brackets. + // Ex. "zr_classes_default_zombie" "" "Default zombie class. ['""' = Class config defaults. 'random' = Give client random class on connect.]" + // Any thing else? + + // =========================== + // General (Core) + // =========================== + + g_hCvarsList[CVAR_ENABLE] = CreateConVar("zr_enable", "1", ""); + + // =========================== + // Log (core) + // =========================== + + g_hCvarsList[CVAR_LOG] = CreateConVar("zr_log", "331", ""); + // Old Desc: Logging flags. Log messages to sourcemod logs, server console or client console. Use zr_log_flags to see a list of flags. (0: Disable) + + // =========================== + // Translations (core) + // =========================== + + // (None) + + // =========================== + // Round End (core) + // =========================== + + g_hCvarsList[CVAR_ROUNDEND_OVERLAY] = CreateConVar("zr_roundend_overlay", "1", ""); + // Old Desc: Shows an overlay to all clients when a team wins. (0: Disable) + g_hCvarsList[CVAR_ROUNDEND_OVERLAY_HUMAN] = CreateConVar("zr_roundend_overlays_human", ""); + // Old Desc: overlays/zr/humans_win", "Path to \"humans win\" overlay + g_hCvarsList[CVAR_ROUNDEND_OVERLAY_ZOMBIE] = CreateConVar("zr_roundend_overlays_zombie", "overlays/zr/zombies_win", ""); + // Old Desc: Path to \"zombies win\" overlay + + // =========================== + // Offsets (core) + // =========================== + + // (None) + + // =========================== + // Models (core) + // =========================== + + // TODO: config file path. + + // =========================== + // Classes (core) + // =========================== + + g_hCvarsList[CVAR_CLASSES_SPAWN] = CreateConVar("zr_classes_spawn", "0", ""); + // Old Desc: Classmenu is re-displayed every spawn (0: Disable) + g_hCvarsList[CVAR_CLASSES_RANDOM] = CreateConVar("zr_classes_random", "0", ""); + // Old Desc: A random class is assigned to each player every round. Overrides zr_classes_spawn and default classes. (0: Disable) + g_hCvarsList[CVAR_CLASSES_DEFAULT_ZOMBIE] = CreateConVar("zr_classes_default_zombie", "random", ""); + // Old Desc: Default zombie class selected for all players when they connect. Use \"random\" to select a random class, or blank to use class config defaults. + g_hCvarsList[CVAR_CLASSES_DEFAULT_HUMAN] = CreateConVar("zr_classes_default_human", "random", ""); + // Old Desc: + g_hCvarsList[CVAR_CLASSES_DEFAULT_ADMIN] = CreateConVar("zr_classes_default_admin", "random", ""); + // Old Desc: Default admin-only class selected for admins when they connect. Use \"random\" to select a random class, or blank to use class config defaults. + g_hCvarsList[CVAR_CLASSES_FILE] = CreateConVar("zr_classes_file", "configs/zr/playerclasses.txt", ""); + // Old Desc: Class data file to read from, in Valves key/values format. The path is relative to the \"sourcemod\" folder. + + // =========================== + // Damage (core) + // =========================== + + g_hCvarsList[CVAR_DAMAGE_SUICIDE_ZOMBIE] = CreateConVar("zr_damage_suicide_zombie", "1", ""); + // Old Desc: Intercept human suicide attempts. + g_hCvarsList[CVAR_DAMAGE_SUICIDE_HUMAN] = CreateConVar("zr_damage_suicide_human", "1", ""); + // Old Desc: Intercept zombie suicide attempts. + g_hCvarsList[CVAR_DAMAGE_SUICIDE_CMDS] = CreateConVar("zr_damage_suicide_cmds", "kill, spectate, jointeam", ""); + // Old Desc: List of suicide commands to intercept. (Delimited by \", \" + + // =========================== + // Weapons (core) + // =========================== + + // General + + g_hCvarsList[CVAR_WEAPONS] = CreateConVar("zr_weapons", "1", ""); + // Note make config file cvar. + // Note this disables restrict submodule. + + // Restrict + + g_hCvarsList[CVAR_WEAPONS_RESTRICT] = CreateConVar("zr_weapons_restrict", "1", ""); + // Note make config file cvar. + + // =========================== + // Hitgroups (core) + // =========================== + + g_hCvarsList[CVAR_HITGROUPS] = CreateConVar("zr_hitgroups", "1", ""); + // Note make config file cvar. + + // =========================== + // Sound Effects (module) + // =========================== + + // Zombie Sounds + + g_hCvarsList[CVAR_SOUNDEFFECTS_MOAN] = CreateConVar("zr_soundeffects_moan", "30", ""); + // Old Desc: How often, in seconds, a zombie moans (0: Disable) + g_hCvarsList[CVAR_SOUNDEFFECTS_GROAN] = CreateConVar("zr_soundeffects_groan", "5", ""); + // Old Desc: Chance factor a zombie will groan when shot (Lower: More often, 0: Disable) + g_hCvarsList[CVAR_SOUNDEFFECTS_DEATH] = CreateConVar("zr_soundeffects_death", "1", ""); + // Old Desc: Zombie will emit a death sound when killed (0: Disable) + + // Ambient Sounds + + g_hCvarsList[CVAR_AMBIENTSOUNDS] = CreateConVar("zr_ambientsounds", "1", ""); + // Old Desc: Enable creepy ambience to be played throughout the game (0: Disable) + g_hCvarsList[CVAR_AMBIENTSOUNDS_FILE] = CreateConVar("zr_ambientsounds_file", "ambient/zr/zr_ambience.mp3", ""); + // Old Desc: Path to ambient sound file that will be played throughout the game, when zr_ambience is 1 + g_hCvarsList[CVAR_AMBIENTSOUNDS_LENGTH] = CreateConVar("zr_ambientsounds_length", "60.0", ""); + // Old Desc: The length, in seconds, of the ambient sound file + g_hCvarsList[CVAR_AMBIENTSOUNDS_VOLUME] = CreateConVar("zr_ambientsounds_volume", "1.0", ""); + // Old Desc: Volume of ambient sounds when zr_ambience is 1 (0.0: Unhearable, 1.0: Max volume) + + // =========================== + // Antistick (module) + // =========================== + + g_hCvarsList[CVAR_ANTISTICK] = CreateConVar("zr_antistick", "1", ""); + // Old Desc: Enable the anti-stick module, which will automatically unstick players stuck within each other. (0:Disable) + g_hCvarsList[CVAR_ANTISTICK_INTERVAL] = CreateConVar("zr_antistick_interval", "0.5", ""); + // Old Desc: How often, in seconds, the anti-stick module checks each player for being stuck. (1.0: Default) + + // =========================== + // Knockback (module) + // =========================== + + // (None) + + // =========================== + // Spawn Protect (module) + // =========================== + + g_hCvarsList[CVAR_SPAWNPROTECT] = CreateConVar("zr_spawnprotect", "1", ""); + g_hCvarsList[CVAR_SPAWNPROTECT_TIME] = CreateConVar("zr_spawnprotect_time", "10", ""); + + // =========================== + // Respawn (module) + // =========================== + + g_hCvarsList[CVAR_RESPAWN] = CreateConVar("zr_respawn", "0", ""); + // Old Desc: When player is killed, player will respawn + g_hCvarsList[CVAR_RESPAWN_DELAY] = CreateConVar("zr_respawn_delay", "1", ""); + // Old Desc: How long to wait after death to respawn, in seconds + g_hCvarsList[CVAR_RESPAWN_ZOMBIE] = CreateConVar("zr_respawn_zombie", "1", ""); + // Old Desc: Respawn player as zombie (0: Respawn as human) + g_hCvarsList[CVAR_RESPAWN_ZOMBIE_WORLD] = CreateConVar("zr_respawn_zombie_world", "1", ""); + // Old Desc: Respawn zombies as zombies if they were killed by the world, like elevators, doors and lasers. (0: Disable) + + // =========================== + // Napalm (module) + // =========================== + + // (None) + + // =========================== + // ZHP (module) + // =========================== + + g_hCvarsList[CVAR_ZHP] = CreateConVar("zr_zhp", "1", ""); + // Old Desc: Allows clients to enable/disable zombie health display (1: On, 0: Off) + g_hCvarsList[CVAR_ZHP_DEFAULT] = CreateConVar("zr_zhp_default", "1", ""); + // Old Desc: The default value of zombie health display to new clients (1: On, 0: Off) + + + // TO BE MODULIZED/RECODED. + g_hCvarsList[CVAR_OVERLAY_REDISPLAY] = CreateConVar("zr_overlay_redisplay", "3", ""); + // Old Desc: Frequency, in seconds, to display overlay on the client's screen (Never go below 0.1, 0.2 seems safe) + g_hCvarsList[CVAR_ZVISION_ALLOW_DISABLE] = CreateConVar("zr_zvision_allow_disable", "1", ""); + // Old Desc: Allow users to disable ZVision with their nightvision key (0: Disable) + g_hCvarsList[CVAR_MENU_AUTOCLOSE] = CreateConVar("zr_menu_autoclose", "0", ""); + // Old Desc: Automatically close menus on selection. If disabled the menu will remain open. + g_hCvarsList[CVAR_DARK] = CreateConVar("zr_dark", "0", ""); + // Old Desc: Default value for darkening maps, most dislike this feature (0: Disable) + g_hCvarsList[CVAR_DARK_LEVEL] = CreateConVar("zr_dark_level", "a", ""); + // Old Desc: The darkness of the map, a being the darkest, z being extremely bright when zr_dark is 1 (n: Default) + g_hCvarsList[CVAR_DARK_SKY] = CreateConVar("zr_dark_sky", "sky_borealis01", ""); + // Old Desc: The sky the map will have when zr_dark is 1 + g_hCvarsList[CVAR_MOTHER_ZOMBIE_RATIO] = CreateConVar("zr_mother_zombie_ratio", "5", ""); + // Old Desc: For every 'x' number of humans, there will be 1 zombie (0: Always only 1 mother zombie) + g_hCvarsList[CVAR_MOTHER_ZOMBIE_RESPAWN] = CreateConVar("zr_mother_zombie_respawn", "0", ""); + // Old Desc: First zombie(s) will be teleported back to spawn when infected (0: Disable) + g_hCvarsList[CVAR_SPAWN_MIN] = CreateConVar("zr_spawn_min", "30", ""); + // Old Desc: Minimum time a player is picked to be zombie after the round starts, in seconds + g_hCvarsList[CVAR_SPAWN_MAX] = CreateConVar("zr_spawn_max", "50", ""); + // Old Desc: Maximum time a player is picked to be zombie after the round starts, in seconds + g_hCvarsList[CVAR_CONSECUTIVE_INFECT] = CreateConVar("zr_consecutive_infect", "0", ""); + // Old Desc: Allow player to be randomly chosen twice in a row to be a mother zombie (0: Disable) + g_hCvarsList[CVAR_ZMARKET_BUYZONE] = CreateConVar("zr_zmarket_buyzone", "1", ""); + // Old Desc: Must be in buyzone to access !zmarket, if Market is installed (0: Can be used anywhere) + g_hCvarsList[CVAR_ZSPAWN] = CreateConVar("zr_zspawn", "1", ""); + // Old Desc: Allow players to spawn if they just joined the game (0: Disable) + g_hCvarsList[CVAR_ZTELE] = CreateConVar("zr_tele", "1", ""); + // Old Desc: Allow players to use the teleporter to get to spawn. (0: Disable) + g_hCvarsList[CVAR_ZTELE_STARTUP_DELAY] = CreateConVar("zr_tele_startup_delay", "30", ""); + // Old Desc: Number of seconds to wait before the teleporter is enabled (0: Always enabled) + g_hCvarsList[CVAR_ZTELE_COOLDOWN] = CreateConVar("zr_tele_cooldown", "20", ""); + // Old Desc: Number of seconds to wait before the teleporter can be used again, after a teleport. (0: Disable) + g_hCvarsList[CVAR_ZTELE_HUMAN_DELAY] = CreateConVar("zr_tele_human_delay", "10", ""); + // Old Desc: Teleport delay for humans. (0: No delay) + g_hCvarsList[CVAR_ZTELE_HUMAN_LIMIT] = CreateConVar("zr_tele_human_limit", "3", ""); + // Old Desc: Maximum number of teleports humans can do. (0: Humans can't use the teleporter. -1: Unlimited) + g_hCvarsList[CVAR_ZTELE_ZOMBIE_DELAY] = CreateConVar("zr_tele_zombie_delay", "0", ""); + // Old Desc: Teleport delay for zombies. (0: No delay) + g_hCvarsList[CVAR_ZTELE_ZOMBIE_LIMIT] = CreateConVar("zr_tele_zombie_limit", "8", ""); + // Old Desc: Maximum number of teleports zombies can do. (0: Zombies can't use the teleporter. -1: Unlimited) + g_hCvarsList[CVAR_ZTELE_RESET_BUFFERS] = CreateConVar("zr_tele_reset_buffers", "1", ""); + // Old Desc: Reset custom saved teleport locations on each round start. (0: Disable) + g_hCvarsList[CVAR_CASHFILL] = CreateConVar("zr_cashfill", "1", ""); + // Old Desc: Enable the mod to set the players cash to zr_cashamount (0: Disabled) + g_hCvarsList[CVAR_CASHAMOUNT] = CreateConVar("zr_cashamount", "12000", ""); + // Old Desc: How much money players will have when they spawn when zr_cashfill is 1 + g_hCvarsList[CVAR_INFECT_FIREBALL] = CreateConVar("zr_infect_fireball", "1", ""); + // Old Desc: A fireball is created when a player is infected (0: Disable) + g_hCvarsList[CVAR_INFECT_SMOKE] = CreateConVar("zr_infect_smoke", "1", ""); + // Old Desc: A puff of smoke is created when a player is infected (0: Disable) + g_hCvarsList[CVAR_INFECT_SPARKS] = CreateConVar("zr_infect_sparks", "1", ""); + // Old Desc: Sparks are emitted when a player is infected (0: Disable) + g_hCvarsList[CVAR_INFECT_SOUND] = CreateConVar("zr_infect_sound", ""); + // Old Desc: npc/fast_zombie/fz_scream1.wav", "Sound played from from player on infection (Leave blank to disable) + g_hCvarsList[CVAR_INFECT_ESPLASH] = CreateConVar("zr_infect_esplash", "1", ""); + // Old Desc: An energy splash is emitted when player is infected (0: Disable) + g_hCvarsList[CVAR_INFECT_SHAKE] = CreateConVar("zr_infect_shake", "1", ""); + // Old Desc: Player's screen is shaken on infection (0: Disable) + g_hCvarsList[CVAR_INFECT_SHAKE_AMP] = CreateConVar("zr_infect_shake_amp", "15.0", ""); + // Old Desc: Amplitude of the shake, when zr_infect_shake is 1 + g_hCvarsList[CVAR_INFECT_SHAKE_FREQUENCY] = CreateConVar("zr_infect_shake_frequency", "1.0", ""); + // Old Desc: Frequency of the shake, when zr_infect_shake is 1 + g_hCvarsList[CVAR_INFECT_SHAKE_DURATION] = CreateConVar("zr_infect_shake_duration", "5.0", ""); + // Old Desc: Duration of the shake, when zr_infect_shake is 1 + g_hCvarsList[CVAR_ANTICAMP] = CreateConVar("zr_anticamp", "1", ""); + // Old Desc: Enables or disables hurt volumes for preventing unfair camping. (0: Disable) + g_hCvarsList[CVAR_ANTICAMP_UPDATE_INTERVAL] = CreateConVar("zr_anticamp_update_interval", "1", ""); + // Old Desc: How often to update player locations (in seconds). + g_hCvarsList[CVAR_ANTICAMP_ECHO] = CreateConVar("zr_anticamp_echo", "1", ""); + // Old Desc: Log kills done by anticamp to admin chat. // TODO: Recode. - //HookConVarChange(gCvars[CVAR_ENABLE], EnableHook); - - HookConVarChange(gCvars[CVAR_ANTICAMP], AnticampHook); - HookConVarChange(gCvars[CVAR_ANTICAMP_UPDATE_INTERVAL], UpdateIntervalHook); + //HookConVarChange(g_hCvarsList[CVAR_ENABLE], EnableHook); AutoExecConfig(true, "zombiereloaded", "sourcemod/zombiereloaded"); } -HookCvars() +CvarsHook() { SetConVarBool(FindConVar("mp_autoteambalance"), false); SetConVarInt(FindConVar("mp_limitteams"), 0); HookConVarChange(FindConVar("mp_autoteambalance"), AutoTeamBalanceHook); HookConVarChange(FindConVar("mp_limitteams"), LimitTeamsHook); + + HookConVarChange(g_hCvarsList[CVAR_ANTICAMP], AnticampHook); + HookConVarChange(g_hCvarsList[CVAR_ANTICAMP_UPDATE_INTERVAL], UpdateIntervalHook); } -UnhookCvars() +CvarsUnhook() { UnhookConVarChange(FindConVar("mp_autoteambalance"), AutoTeamBalanceHook); UnhookConVarChange(FindConVar("mp_limitteams"), LimitTeamsHook); @@ -240,7 +405,7 @@ public LimitTeamsHook(Handle:convar, const String:oldValue[], const String:newVa LogHasFlag(flag) { - if (GetConVarInt(gCvars[CVAR_LOG]) & flag) + if (GetConVarInt(g_hCvarsList[CVAR_LOG]) & flag) { return 1; } diff --git a/src/zr/damage.inc b/src/zr/damage.inc index dfd3314..7937ffc 100644 --- a/src/zr/damage.inc +++ b/src/zr/damage.inc @@ -50,7 +50,7 @@ DamageInit() { // Create command callbacks (intercepts) for listed suicide commands. decl String:suicidecmds[64]; - GetConVarString(gCvars[CVAR_SUICIDE_CMDS], suicidecmds, sizeof(suicidecmds)); + GetConVarString(g_hCvarsList[CVAR_DAMAGE_SUICIDE_CMDS], suicidecmds, sizeof(suicidecmds)); // Create array to store cmds new String:arrayCmds[DAMAGE_SUICIDE_MAX_CMDS][DAMAGE_SUICIDE_MAX_LENGTH]; @@ -105,7 +105,7 @@ DamageOnClientDisconnect(client) public DamageTraceAttack(client, inflictor, attacker, damage, hitbox, hitgroup) { // Disabled - // new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + // new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); // If attacker isn't valid, then stop. if (!ZRIsValidClient(attacker)) @@ -144,7 +144,7 @@ public DamageOnTakeDamage(client, inflictor, attacker, damage, damagetype, ammot { // Disabled. /** - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (!enabled) { return Hacks_Continue; @@ -250,7 +250,7 @@ public Action:DamageSuicideIntercept(client, argc) { // Disabled. /** - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (!enabled) { return Plugin_Continue; @@ -278,8 +278,8 @@ public Action:DamageSuicideIntercept(client, argc) new bool:clientzombie = IsPlayerZombie(client); // Get cvar values for suicide interception. - new bool:suicidezombie = GetConVarBool(gCvars[CVAR_SUICIDE_ZOMBIE]); - new bool:suicidehuman = GetConVarBool(gCvars[CVAR_SUICIDE_HUMAN]); + new bool:suicidezombie = GetConVarBool(g_hCvarsList[CVAR_DAMAGE_SUICIDE_ZOMBIE]); + new bool:suicidehuman = GetConVarBool(g_hCvarsList[CVAR_DAMAGE_SUICIDE_HUMAN]); // Determine whether to block suicide based off of the client's zombie flag and cvar values. new bool:blocksuicide = clientzombie ? suicidezombie : suicidehuman; diff --git a/src/zr/event.inc b/src/zr/event.inc index 4d0455e..3f5bf76 100644 --- a/src/zr/event.inc +++ b/src/zr/event.inc @@ -71,8 +71,8 @@ public Action:RoundFreezeEnd(Handle:event, const String:name[], bool:dontBroadca KillTimer(tInfect); } - new Float:min = GetConVarFloat(gCvars[CVAR_SPAWN_MIN]); - new Float:max = GetConVarFloat(gCvars[CVAR_SPAWN_MAX]); + new Float:min = GetConVarFloat(g_hCvarsList[CVAR_SPAWN_MIN]); + new Float:max = GetConVarFloat(g_hCvarsList[CVAR_SPAWN_MAX]); new Float:randlen = GetRandomFloat(min, max); tInfect = CreateTimer(randlen, MotherZombie, _, TIMER_FLAG_NO_MAPCHANGE); @@ -144,10 +144,10 @@ public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) // Check if client is on a team. if (ZRIsClientOnTeam(index)) { - new bool:cashfill = GetConVarBool(gCvars[CVAR_CASHFILL]); + new bool:cashfill = GetConVarBool(g_hCvarsList[CVAR_CASHFILL]); if (cashfill) { - new cash = GetConVarInt(gCvars[CVAR_CASHAMOUNT]); + new cash = GetConVarInt(g_hCvarsList[CVAR_CASHAMOUNT]); SetPlayerMoney(index, cash); } diff --git a/src/zr/hitgroups.inc b/src/zr/hitgroups.inc index 7efce45..123c438 100644 --- a/src/zr/hitgroups.inc +++ b/src/zr/hitgroups.inc @@ -52,6 +52,13 @@ HitgroupsLoad() // Clear hitgroup data HitgroupsClearData(); + // If module is disabled, then stop. + new bool:hitgroups = GetConVarBool(g_hCvarsList[CVAR_HITGROUPS]); + if (!hitgroups) + { + return; + } + decl String:path[PLATFORM_MAX_PATH]; BuildPath(Path_SM, path, sizeof(path), "configs/zr/hitgroups.txt"); diff --git a/src/zr/napalm.inc b/src/zr/napalm.inc index eb91502..76187d3 100644 --- a/src/zr/napalm.inc +++ b/src/zr/napalm.inc @@ -53,12 +53,11 @@ NapalmOnClientHurt(client, const String:weapon[]) */ NapalmOnWeaponFire(const String:weapon[]) { - // If ignite grenade is disabled, then stop. - new bool:ignitegrenade = GetConVarBool(gCvars[CVAR_NAPALM_IGNITEGRENADE]); - if (!ignitegrenade) + // If human class can't throw napalm grenades, then stop. (TODO) + /*if () { return; - } + }*/ // If weapon isn't a grenade, then stop. if (!StrEqual(weapon, "hegrenade", false)) diff --git a/src/zr/playerclasses/apply.inc b/src/zr/playerclasses/apply.inc index 8e91a8d..42540a6 100644 --- a/src/zr/playerclasses/apply.inc +++ b/src/zr/playerclasses/apply.inc @@ -139,9 +139,9 @@ bool:ClassApplyOverlay(client, classindex, cachetype = ZR_CLASS_CACHE_PLAYER) } // If client doesn't meet minimum requirement, then print unsupported text. - if (dxLevel[client] < ROUNDEND_MIN_DXLEVEL) + if (dxLevel[client] < GENERAL_MIN_DXLEVEL) { - ZR_PrintCenterText(client, "DX90 not supported", dxLevel[client], ROUNDEND_MIN_DXLEVEL); + ZR_PrintCenterText(client, "DX90 not supported", dxLevel[client], GENERAL_MIN_DXLEVEL); return false; } diff --git a/src/zr/playerclasses/classevents.inc b/src/zr/playerclasses/classevents.inc index 6e18e5f..c262365 100644 --- a/src/zr/playerclasses/classevents.inc +++ b/src/zr/playerclasses/classevents.inc @@ -37,8 +37,8 @@ ClassOnClientDisconnect(client) ClassOnClientSpawn(client) { - new bool:randomclass = GetConVarBool(gCvars[CVAR_CLASSES_RANDOM]); - new bool:showmenu = GetConVarBool(gCvars[CVAR_CLASSES_SPAWN]); + new bool:randomclass = GetConVarBool(g_hCvarsList[CVAR_CLASSES_RANDOM]); + new bool:showmenu = GetConVarBool(g_hCvarsList[CVAR_CLASSES_SPAWN]); decl String:steamid[16]; decl String:classname[64]; diff --git a/src/zr/playerclasses/classmenus.inc b/src/zr/playerclasses/classmenus.inc index 573ea35..810b741 100644 --- a/src/zr/playerclasses/classmenus.inc +++ b/src/zr/playerclasses/classmenus.inc @@ -228,7 +228,7 @@ public ClassMenuSelectHandle(Handle:menu, MenuAction:action, client, slot) decl String:classname[64]; new classindex; new teamid; - new bool:autoclose = GetConVarBool(gCvars[CVAR_MENU_AUTOCLOSE]); + new bool:autoclose = GetConVarBool(g_hCvarsList[CVAR_MENU_AUTOCLOSE]); switch (action) { diff --git a/src/zr/playerclasses/clientoverlays.inc b/src/zr/playerclasses/clientoverlays.inc index 65e8166..c02cf9c 100644 --- a/src/zr/playerclasses/clientoverlays.inc +++ b/src/zr/playerclasses/clientoverlays.inc @@ -66,7 +66,7 @@ ClassOverlayStart(client) ClientCommand(client, "r_screenoverlay \"%s\"", ActiveOverlay[client]); bClientOverlayOn[client] = true; - new Float:redisplay = GetConVarFloat(gCvars[CVAR_OVERLAY_REDISPLAY]); + new Float:redisplay = GetConVarFloat(g_hCvarsList[CVAR_OVERLAY_REDISPLAY]); tOverlay[client] = CreateTimer(redisplay, ClassOverlayTimer, client, TIMER_REPEAT); } diff --git a/src/zr/playerclasses/filtertools.inc b/src/zr/playerclasses/filtertools.inc index 521431c..f0cb476 100644 --- a/src/zr/playerclasses/filtertools.inc +++ b/src/zr/playerclasses/filtertools.inc @@ -637,15 +637,15 @@ ClassGetDefaultSpawnClass(teamid, cachetype = ZR_CLASS_CACHE_MODIFIED) { case ZR_CLASS_TEAM_ZOMBIES: { - GetConVarString(gCvars[CVAR_CLASSES_DEFAULT_ZOMBIE], classname, sizeof(classname)); + GetConVarString(g_hCvarsList[CVAR_CLASSES_DEFAULT_ZOMBIE], classname, sizeof(classname)); } case ZR_CLASS_TEAM_HUMANS: { - GetConVarString(gCvars[CVAR_CLASSES_DEFAULT_HUMAN], classname, sizeof(classname)); + GetConVarString(g_hCvarsList[CVAR_CLASSES_DEFAULT_HUMAN], classname, sizeof(classname)); } case ZR_CLASS_TEAM_ADMINS: { - GetConVarString(gCvars[CVAR_CLASSES_DEFAULT_ADMIN], classname, sizeof(classname)); + GetConVarString(g_hCvarsList[CVAR_CLASSES_DEFAULT_ADMIN], classname, sizeof(classname)); } default: { diff --git a/src/zr/playerclasses/playerclasses.inc b/src/zr/playerclasses/playerclasses.inc index 955f417..40ac461 100644 --- a/src/zr/playerclasses/playerclasses.inc +++ b/src/zr/playerclasses/playerclasses.inc @@ -259,7 +259,7 @@ ClassLoad() kvClassData = CreateKeyValues("classes"); decl String:classfile[256]; - GetConVarString(gCvars[CVAR_CLASSES_FILE], classfile, sizeof(classfile)); + GetConVarString(g_hCvarsList[CVAR_CLASSES_FILE], classfile, sizeof(classfile)); // Try to load the class configuration file. decl String:path[PLATFORM_MAX_PATH]; diff --git a/src/zr/respawn.inc b/src/zr/respawn.inc index 5ef2c77..030ce1e 100644 --- a/src/zr/respawn.inc +++ b/src/zr/respawn.inc @@ -75,14 +75,14 @@ RespawnOnClientDeath(client, attacker, const String:weapon[]) } // If respawn is disabled, stop here. - new bool:respawn = GetConVarBool(gCvars[CVAR_RESPAWN]); + new bool:respawn = GetConVarBool(g_hCvarsList[CVAR_RESPAWN]); if (!respawn) { return; } // Start respawn timer. - new Float:delay = GetConVarFloat(gCvars[CVAR_RESPAWN_DELAY]); + new Float:delay = GetConVarFloat(g_hCvarsList[CVAR_RESPAWN_DELAY]); tRespawn[client] = CreateTimer(delay, RespawnTimer, client, TIMER_FLAG_NO_MAPCHANGE); } @@ -95,7 +95,7 @@ RespawnOnClientDeath(client, attacker, const String:weapon[]) RespawnKilledByWorld(client) { // Return true if both the cvar is enabled and the player was killed by world. - return (GetConVarBool(gCvars[CVAR_SUICIDE_WORLD_DAMAGE]) && pKilledByWorld[client]); + return (GetConVarBool(g_hCvarsList[CVAR_RESPAWN_ZOMBIE_WORLD]) && pKilledByWorld[client]); } /** @@ -121,7 +121,7 @@ RespawnSpawnClient(client) } // Get respawn team. - new bool:respawn_zombie = GetConVarBool(gCvars[CVAR_RESPAWN_ZOMBIE]); + new bool:respawn_zombie = GetConVarBool(g_hCvarsList[CVAR_RESPAWN_ZOMBIE]); // Get suicide respawn cvar if (respawn_zombie) @@ -130,7 +130,7 @@ RespawnSpawnClient(client) return; } - if (GetConVarBool(gCvars[CVAR_SUICIDE_WORLD_DAMAGE]) && pKilledByWorld[client]) + if (GetConVarBool(g_hCvarsList[CVAR_RESPAWN_ZOMBIE_WORLD]) && pKilledByWorld[client]) { InfectPlayer(client); pKilledByWorld[client] = false; diff --git a/src/zr/roundend.inc b/src/zr/roundend.inc index 57f9c43..feb66ce 100644 --- a/src/zr/roundend.inc +++ b/src/zr/roundend.inc @@ -41,11 +41,6 @@ * Delay between round ending and new round starting. (Short, for ROUNDEND_GAME_COMMENCING) */ #define ROUNDEND_DELAY_SHORT 3.0 - -/** - * Minimum dx level required to see overlays. - */ -#define ROUNDEND_MIN_DXLEVEL 90 /** * Possible round end outcomes. @@ -401,14 +396,14 @@ RoundEndDisplayClientOverlay(client, const String:overlay[]) } // If dxLevel is above or equal to minimum requirement, then display overlay. - if (dxLevel[client] >= ROUNDEND_MIN_DXLEVEL) + if (dxLevel[client] >= GENERAL_MIN_DXLEVEL) { ClientCommand(client, "r_screenoverlay \"%s\"", overlay); } // If client doesn't meet minimum requirement, then print unsupported text. else { - ZR_PrintCenterText(client, "DX90 not supported", dxLevel[client], ROUNDEND_MIN_DXLEVEL); + ZR_PrintCenterText(client, "DX90 not supported", dxLevel[client], GENERAL_MIN_DXLEVEL); } } @@ -421,7 +416,7 @@ RoundEndDisplayClientOverlay(client, const String:overlay[]) RoundEndOverlayStart(Float:time, RoundEndOutcome:outcome) { // If round end overlays are disabled, then stop. - new bool:overlay = GetConVarBool(gCvars[CVAR_ROUNDEND_OVERLAY]); + new bool:overlay = GetConVarBool(g_hCvarsList[CVAR_ROUNDEND_OVERLAY]); if (!overlay) { return; @@ -434,12 +429,12 @@ RoundEndOverlayStart(Float:time, RoundEndOutcome:outcome) // Show "zombies win" overlay. case ZombiesWin: { - GetConVarString(gCvars[CVAR_ROUNDEND_OVERLAY_ZOMBIE], overlaypath, sizeof(overlaypath)); + GetConVarString(g_hCvarsList[CVAR_ROUNDEND_OVERLAY_ZOMBIE], overlaypath, sizeof(overlaypath)); } // Show "humans win" overlay. case HumansWin: { - GetConVarString(gCvars[CVAR_ROUNDEND_OVERLAY_HUMAN], overlaypath, sizeof(overlaypath)); + GetConVarString(g_hCvarsList[CVAR_ROUNDEND_OVERLAY_HUMAN], overlaypath, sizeof(overlaypath)); } // Show no overlay. default: diff --git a/src/zr/sayhooks.inc b/src/zr/sayhooks.inc index f315405..a4fbced 100644 --- a/src/zr/sayhooks.inc +++ b/src/zr/sayhooks.inc @@ -14,7 +14,7 @@ HookChatCmds() public Action:SayCommand(client, argc) { - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (!client || !enabled) { return Plugin_Continue; @@ -81,7 +81,7 @@ public Action:SayCommand(client, argc) ZSpawn(client) { - new bool:spawn = GetConVarBool(gCvars[CVAR_ZSPAWN]); + new bool:spawn = GetConVarBool(g_hCvarsList[CVAR_ZSPAWN]); if (!spawn) { ZR_PrintToChat(client, "Feature is disabled"); diff --git a/src/zr/soundeffects/ambientsounds.inc b/src/zr/soundeffects/ambientsounds.inc index c4de221..a5cd77b 100644 --- a/src/zr/soundeffects/ambientsounds.inc +++ b/src/zr/soundeffects/ambientsounds.inc @@ -50,7 +50,7 @@ AmbientSoundsClientInit(client) bool:AmbientSoundsValidateConfig() { // If ambience is disabled, then stop. - new bool:ambience = GetConVarBool(gCvars[CVAR_AMBIENTSOUNDS]); + new bool:ambience = GetConVarBool(g_hCvarsList[CVAR_AMBIENTSOUNDS]); if (!ambience) { return false; @@ -64,7 +64,7 @@ bool:AmbientSoundsValidateConfig() // Get ambient sound file. decl String:sound[SOUND_MAX_PATH]; - GetConVarString(gCvars[CVAR_AMBIENTSOUNDS_FILE], sound, sizeof(sound)); + GetConVarString(g_hCvarsList[CVAR_AMBIENTSOUNDS_FILE], sound, sizeof(sound)); Format(sound, sizeof(sound), "sound/%s", sound); // If file doesn't exist, then log error and stop. @@ -76,7 +76,7 @@ bool:AmbientSoundsValidateConfig() } // If volume is muted or invalid, then log error and stop. - new Float:ambientvolume = GetConVarFloat(gCvars[CVAR_AMBIENTSOUNDS_VOLUME]); + new Float:ambientvolume = GetConVarFloat(g_hCvarsList[CVAR_AMBIENTSOUNDS_VOLUME]); if (ambientvolume <= 0.0) { // Log invalid ambient sound volume error. @@ -85,7 +85,7 @@ bool:AmbientSoundsValidateConfig() } // If length is invalid, then log error and stop. - new Float:ambientlength = GetConVarFloat(gCvars[CVAR_AMBIENTSOUNDS_LENGTH]); + new Float:ambientlength = GetConVarFloat(g_hCvarsList[CVAR_AMBIENTSOUNDS_LENGTH]); if (ambientlength <= 0.0) { // Log invalid ambient sound length error. @@ -138,10 +138,10 @@ AmbientSoundsOnClientSpawn(client) // Get ambient sound file. decl String:sound[SOUND_MAX_PATH]; - GetConVarString(gCvars[CVAR_AMBIENTSOUNDS_FILE], sound, sizeof(sound)); + GetConVarString(g_hCvarsList[CVAR_AMBIENTSOUNDS_FILE], sound, sizeof(sound)); // Get ambient sound volume. - new Float:ambientvolume = GetConVarFloat(gCvars[CVAR_AMBIENTSOUNDS_VOLUME]); + new Float:ambientvolume = GetConVarFloat(g_hCvarsList[CVAR_AMBIENTSOUNDS_VOLUME]); // Emit ambient sound. SEffectsEmitAmbientSound(sound, ambientvolume, client); @@ -177,7 +177,7 @@ AmbientSoundsRestart() } // Get ambient sound length. - new Float:ambientlength = GetConVarFloat(gCvars[CVAR_AMBIENTSOUNDS_LENGTH]); + new Float:ambientlength = GetConVarFloat(g_hCvarsList[CVAR_AMBIENTSOUNDS_LENGTH]); // Start ambient sounds timer. tAmbientSounds = CreateTimer(ambientlength, AmbientSoundsTimer, _, TIMER_FLAG_NO_MAPCHANGE); @@ -198,16 +198,16 @@ public Action:AmbientSoundsTimer(Handle:timer) // Get ambient sound file. decl String:sound[SOUND_MAX_PATH]; - GetConVarString(gCvars[CVAR_AMBIENTSOUNDS_FILE], sound, sizeof(sound)); + GetConVarString(g_hCvarsList[CVAR_AMBIENTSOUNDS_FILE], sound, sizeof(sound)); // Get ambient sound volume. - new Float:ambientvolume = GetConVarFloat(gCvars[CVAR_AMBIENTSOUNDS_VOLUME]); + new Float:ambientvolume = GetConVarFloat(g_hCvarsList[CVAR_AMBIENTSOUNDS_VOLUME]); // Emit ambient sound. SEffectsEmitAmbientSound(sound, ambientvolume); // Get ambient sound length. - new Float:ambientlength = GetConVarFloat(gCvars[CVAR_AMBIENTSOUNDS_LENGTH]); + new Float:ambientlength = GetConVarFloat(g_hCvarsList[CVAR_AMBIENTSOUNDS_LENGTH]); // Start new timer with sound length as delay. tAmbientSounds = CreateTimer(ambientlength, AmbientSoundsTimer, _, TIMER_FLAG_NO_MAPCHANGE); diff --git a/src/zr/soundeffects/zombiesounds.inc b/src/zr/soundeffects/zombiesounds.inc index 8594c16..c14b1c0 100644 --- a/src/zr/soundeffects/zombiesounds.inc +++ b/src/zr/soundeffects/zombiesounds.inc @@ -105,7 +105,7 @@ ZombieSoundsOnClientDeath(client) } // If death sound cvar is disabled, then stop. - new bool:death = GetConVarBool(gCvars[CVAR_SOUNDEFFECTS_DEATH]); + new bool:death = GetConVarBool(g_hCvarsList[CVAR_SOUNDEFFECTS_DEATH]); if (!death) { return; @@ -132,7 +132,7 @@ ZombieSoundsOnClientHurt(client) } // Get groan factor, if 0, then stop. - new groan = GetConVarInt(gCvars[CVAR_SOUNDEFFECTS_GROAN]); + new groan = GetConVarInt(g_hCvarsList[CVAR_SOUNDEFFECTS_GROAN]); if (!groan) { return; @@ -157,7 +157,7 @@ ZombieSoundsOnClientHurt(client) ZombieSoundsOnClientInfected(client) { // If interval is set to 0, then stop. - new Float:interval = GetConVarFloat(gCvars[CVAR_SOUNDEFFECTS_MOAN]); + new Float:interval = GetConVarFloat(g_hCvarsList[CVAR_SOUNDEFFECTS_MOAN]); if (!interval) { return; diff --git a/src/zr/spawnprotect.inc b/src/zr/spawnprotect.inc index 074a0fd..8b47480 100644 --- a/src/zr/spawnprotect.inc +++ b/src/zr/spawnprotect.inc @@ -67,16 +67,16 @@ SpawnProtectOnClientSpawn(client) return; } - // If protect cvar is invalid or 0, then stop. - new protect = GetConVarInt(gCvars[CVAR_PROTECT]); - if (protect <= 0) + // If protect cvar is disabled, then stop. + new bool:protect = GetConVarBool(g_hCvarsList[CVAR_SPAWNPROTECT]); + if (!protect) { return; } // If player respawns as human, and either cvar zr_suicide_world_damage or the client // wasn't killed by world is false, then continue on to protect client. - new bool:respawn_zombie = GetConVarBool(gCvars[CVAR_RESPAWN_ZOMBIE]); + new bool:respawn_zombie = GetConVarBool(g_hCvarsList[CVAR_RESPAWN_ZOMBIE]); if (!respawn_zombie && !RespawnKilledByWorld(client)) { // Set spawn protect flag on client. @@ -87,11 +87,12 @@ SpawnProtectOnClientSpawn(client) SetPlayerAlpha(client, 0); SetPlayerSpeed(client, 600.0); - // Set time left to zr_protect's value. - pSpawnProtectTime[client] = protect; + // Set time left to zr_protect_time's value. + new protect_time = GetConVarInt(g_hCvarsList[CVAR_SPAWNPROTECT_TIME]); + pSpawnProtectTime[client] = protect_time; // Tell client they are being protected. - ZR_PrintToChat(client, "Spawn protection begin", protect); + ZR_PrintToChat(client, "Spawn protection begin", protect_time); // Send time left in a hud message. ZR_HudHint(client, "Spawn Protect", pSpawnProtectTime[client]); diff --git a/src/zr/teleport.inc b/src/zr/teleport.inc index a2f312c..bd1a73f 100644 --- a/src/zr/teleport.inc +++ b/src/zr/teleport.inc @@ -13,7 +13,7 @@ ZTeleEnable() { KillTimer(ztele_startup_timer); } - new Float:startup_delay = GetConVarFloat(gCvars[CVAR_ZTELE_STARTUP_DELAY]); + new Float:startup_delay = GetConVarFloat(g_hCvarsList[CVAR_ZTELE_STARTUP_DELAY]); if (startup_delay > 0) { ztele_startup_timer = CreateTimer(startup_delay, Event_TeleporterStartup); @@ -336,7 +336,7 @@ public Action:Command_TeleportAbort(client, argc) bool:ZTele(client) { // Check if the teleporter is disabled. - new bool:tele = GetConVarBool(gCvars[CVAR_ZTELE]); + new bool:tele = GetConVarBool(g_hCvarsList[CVAR_ZTELE]); if (!tele) { ZR_PrintToChat(client, "Feature is disabled"); @@ -375,7 +375,7 @@ bool:ZTele(client) // Check limits. if (IsPlayerHuman(client)) { - new human_limit = GetConVarInt(gCvars[CVAR_ZTELE_HUMAN_LIMIT]); + new human_limit = GetConVarInt(g_hCvarsList[CVAR_ZTELE_HUMAN_LIMIT]); new bool:tele_humans; if (human_limit == 0) { @@ -400,7 +400,7 @@ bool:ZTele(client) } else { - new zombie_limit = GetConVarInt(gCvars[CVAR_ZTELE_ZOMBIE_LIMIT]); + new zombie_limit = GetConVarInt(g_hCvarsList[CVAR_ZTELE_ZOMBIE_LIMIT]); new bool:tele_zombies; if (zombie_limit == 0) { @@ -439,8 +439,8 @@ TeleportClient(client, bool:no_delay = false, bool:free_tele = false, bool:no_co if (IsPlayerHuman(client)) { - new human_delay = GetConVarInt(gCvars[CVAR_ZTELE_HUMAN_DELAY]); - new human_limit = GetConVarInt(gCvars[CVAR_ZTELE_HUMAN_LIMIT]); + new human_delay = GetConVarInt(g_hCvarsList[CVAR_ZTELE_HUMAN_DELAY]); + new human_limit = GetConVarInt(g_hCvarsList[CVAR_ZTELE_HUMAN_LIMIT]); if (human_delay > 0) { ztele_countdown[client] = human_delay; @@ -461,8 +461,8 @@ TeleportClient(client, bool:no_delay = false, bool:free_tele = false, bool:no_co } else { - new zombie_delay = GetConVarInt(gCvars[CVAR_ZTELE_ZOMBIE_DELAY]); - new zombie_limit = GetConVarInt(gCvars[CVAR_ZTELE_ZOMBIE_LIMIT]); + new zombie_delay = GetConVarInt(g_hCvarsList[CVAR_ZTELE_ZOMBIE_DELAY]); + new zombie_limit = GetConVarInt(g_hCvarsList[CVAR_ZTELE_ZOMBIE_LIMIT]); if (zombie_delay > 0) { ztele_countdown[client] = zombie_delay; @@ -490,7 +490,7 @@ TeleportClient(client, bool:no_delay = false, bool:free_tele = false, bool:no_co TeleportEntity(client, spawnLoc[client], NULL_VECTOR, empty_vector); // Create cooldown timer if enabled. - new cooldown = GetConVarInt(gCvars[CVAR_ZTELE_COOLDOWN]); + new cooldown = GetConVarInt(g_hCvarsList[CVAR_ZTELE_COOLDOWN]); if (!no_cooldown && cooldown) { ztele_countdown[client] = cooldown; diff --git a/src/zr/weapons/markethandler.inc b/src/zr/weapons/markethandler.inc index c92884b..6d0d01d 100644 --- a/src/zr/weapons/markethandler.inc +++ b/src/zr/weapons/markethandler.inc @@ -30,7 +30,7 @@ bool:ZMarketSend(client) } // Check buyzone cvar to see if client has to be in a buyzone to use. - new bool:buyzone = GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE]); + new bool:buyzone = GetConVarBool(g_hCvarsList[CVAR_ZMARKET_BUYZONE]); if (!IsClientInBuyZone(client) && buyzone) { // Tell client they must be in a buyzone. @@ -106,7 +106,7 @@ public bool:Market_OnWeaponSelected(client, String:weaponid[]) } // Check if buyzone cvar is enabled, and if the client is in a buyzone. - new bool:buyzone = GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE]); + new bool:buyzone = GetConVarBool(g_hCvarsList[CVAR_ZMARKET_BUYZONE]); if (!IsClientInBuyZone(client) && buyzone) { ZR_PrintCenterText(client, "Market out of buyzone"); diff --git a/src/zr/weapons/menu_weapons.inc b/src/zr/weapons/menu_weapons.inc index bf99c3e..ae77249 100644 --- a/src/zr/weapons/menu_weapons.inc +++ b/src/zr/weapons/menu_weapons.inc @@ -422,7 +422,7 @@ WeaponsMenuMarket(client) decl String:togglebuyzone[64]; decl String:curSetting[8]; - ZRBoolToConfigSetting(GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE]), curSetting, sizeof(curSetting)); + ZRBoolToConfigSetting(GetConVarBool(g_hCvarsList[CVAR_ZMARKET_BUYZONE]), curSetting, sizeof(curSetting)); Format(togglebuyzone, sizeof(togglebuyzone), "%t", "Weapons menu market toggle buyzone", curSetting); @@ -451,13 +451,13 @@ public WeaponsMenuMarketHandle(Handle:menu_weapons_market, MenuAction:action, cl { case 0: { - if (GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE])) + if (GetConVarBool(g_hCvarsList[CVAR_ZMARKET_BUYZONE])) { - SetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE], false); + SetConVarBool(g_hCvarsList[CVAR_ZMARKET_BUYZONE], false); } else { - SetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE], true); + SetConVarBool(g_hCvarsList[CVAR_ZMARKET_BUYZONE], true); } } } diff --git a/src/zr/weapons/restrict.inc b/src/zr/weapons/restrict.inc index 832f1df..732b62b 100644 --- a/src/zr/weapons/restrict.inc +++ b/src/zr/weapons/restrict.inc @@ -67,6 +67,16 @@ RestrictClearData() */ RestrictOnMapStart() { + // Clear weapon restrict data. + RestrictClearData(); + + // If module is disabled, then stop. + new bool:restrict = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_RESTRICT]); + if (!restrict) + { + return; + } + // Restrict default restrictions. (set in weapons.txt) RestrictDefaultRestrictions(); @@ -78,7 +88,7 @@ RestrictOnMapStart() { if (LogFlagCheck(LOG_CORE_EVENTS, LOG_MODULE_WEAPONS)) { - ZR_LogMessageFormatted(-1, "Weapons", "Config Validation", "Missing file weapongroups.txt.", LOG_FORMAT_TYPE_FULL); + ZR_LogMessageFormatted(-1, "Weapons", "Config Validation", "Missing file weapongroups.txt.", LOG_FORMAT_TYPE_ERROR); } return; @@ -208,7 +218,7 @@ RestrictOnClientDisconnect(client) public Action:RestrictBuyHook(client, argc) { // If plugin is disabled then stop. - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (!enabled) { // Allow command. @@ -835,7 +845,7 @@ RestrictGetGroupWeapons(const String:groupname[], String:weaponlist[], maxlen, c public RestrictCanUse(client, weapon, dummy1, dummy2, dummy3, dummy4) { // If plugin is disabled then stop. - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (!enabled) { return Hacks_Continue; diff --git a/src/zr/weapons/weapons.inc b/src/zr/weapons/weapons.inc index e311e90..2798c3a 100644 --- a/src/zr/weapons/weapons.inc +++ b/src/zr/weapons/weapons.inc @@ -1,9 +1,12 @@ -/** - * ==================== +/* + * ============================================================================ + * * Zombie:Reloaded - * File: weapons.inc - * Author: Greyscale - * ==================== + * + * File: weapons.inc + * Description: API for all weapon-related functions. + * + * ============================================================================ */ /** @@ -55,8 +58,12 @@ WeaponsLoad() // Clear weapon data. WeaponsClearData(); - // Clear weapon restrict data. - RestrictClearData(); + // If module is disabled, then stop. + new bool:weapons = GetConVarBool(g_hCvarsList[CVAR_WEAPONS]); + if (!weapons) + { + return; + } decl String:path[PLATFORM_MAX_PATH]; BuildPath(Path_SM, path, sizeof(path), "configs/zr/weapons/weapons.txt"); @@ -66,7 +73,7 @@ WeaponsLoad() { if (LogFlagCheck(LOG_CORE_EVENTS, LOG_MODULE_WEAPONS)) { - ZR_LogMessageFormatted(-1, "Weapons", "Config Validation", "Missing file weapons.txt, disabling weapons-based modules.", LOG_FORMAT_TYPE_FULL); + ZR_LogMessageFormatted(-1, "Weapons", "Config Validation", "Missing file weapons.txt, disabling weapons-based modules.", LOG_FORMAT_TYPE_ERROR); } return; @@ -93,7 +100,7 @@ WeaponsValidateConfig() KvRewind(kvWeapons); if (!KvGotoFirstSubKey(kvWeapons)) { - ZR_LogMessageFormatted(-1, "Weapons", "Config Validation", "No weapons listed in weapons.txt, disabling weapons-based modules.", LOG_FORMAT_TYPE_FULL); + ZR_LogMessageFormatted(-1, "Weapons", "Config Validation", "No weapons listed in weapons.txt, disabling weapons-based modules.", LOG_FORMAT_TYPE_ERROR); } } diff --git a/src/zr/zadmin.inc b/src/zr/zadmin.inc index e8a3ab6..8dce921 100644 --- a/src/zr/zadmin.inc +++ b/src/zr/zadmin.inc @@ -117,7 +117,7 @@ public ZRAdminMenuHandle(Handle:menu_admin, MenuAction:action, client, slot) /*ZRKnockbackMMenu(client) { new Handle:menu_knockbackm = CreateMenu(ZRKnockbackMHandle); - new Float:curknockback = GetConVarFloat(gCvars[CVAR_ZOMBIE_KNOCKBACK]); + new Float:curknockback = GetConVarFloat(g_hCvarsList[CVAR_ZOMBIE_KNOCKBACK]); SetGlobalTransTarget(client); @@ -297,7 +297,7 @@ public ZRClassKnockbackHandle(Handle:menu_knockback, MenuAction:action, client, ZRNVGSMenu(client) { new Handle:menu_nvgs = CreateMenu(ZRNVGSHandle); - new curnvgs = GetConVarInt(gCvars[CVAR_ZOMBIE_NVGS]); + new curnvgs = GetConVarInt(g_hCvarsList[CVAR_ZOMBIE_NVGS]); SetGlobalTransTarget(client); @@ -328,17 +328,17 @@ public ZRNVGSHandle(Handle:menu_nvgs, MenuAction:action, client, slot) { case 0: { - SetConVarInt(gCvars[CVAR_ZOMBIE_NVGS], -1); + SetConVarInt(g_hCvarsList[CVAR_ZOMBIE_NVGS], -1); ZRNVGSMenu(client); } case 1: { - SetConVarInt(gCvars[CVAR_ZOMBIE_NVGS], 0); + SetConVarInt(g_hCvarsList[CVAR_ZOMBIE_NVGS], 0); ZRNVGSMenu(client); } case 2: { - SetConVarInt(gCvars[CVAR_ZOMBIE_NVGS], 1); + SetConVarInt(g_hCvarsList[CVAR_ZOMBIE_NVGS], 1); ZRNVGSMenu(client); } } @@ -708,8 +708,8 @@ public ZRLogFlagsMenuHandle(Handle:menu_log_flags, MenuAction:action, client, sl AddToKnockbackMultiplier(Float:value) { - new Float:current_val = GetConVarFloat(gCvars[CVAR_ZOMBIE_KNOCKBACK]); - SetConVarFloat(gCvars[CVAR_ZOMBIE_KNOCKBACK], current_val + value); + new Float:current_val = GetConVarFloat(g_hCvarsList[CVAR_ZOMBIE_KNOCKBACK]); + SetConVarFloat(g_hCvarsList[CVAR_ZOMBIE_KNOCKBACK], current_val + value); } AddToClassKnockback(classindex, Float:value) @@ -720,7 +720,7 @@ AddToClassKnockback(classindex, Float:value) ToggleLogFlag(flag) { new log_flags; - log_flags = GetConVarInt(gCvars[CVAR_LOG]); + log_flags = GetConVarInt(g_hCvarsList[CVAR_LOG]); if (log_flags & flag) { @@ -731,5 +731,5 @@ ToggleLogFlag(flag) log_flags = log_flags + flag; } - SetConVarInt(gCvars[CVAR_LOG], log_flags); + SetConVarInt(g_hCvarsList[CVAR_LOG], log_flags); } \ No newline at end of file diff --git a/src/zr/zhp.inc b/src/zr/zhp.inc index ac0c11d..12fbfb8 100644 --- a/src/zr/zhp.inc +++ b/src/zr/zhp.inc @@ -28,7 +28,7 @@ new bool:pZHP[MAXPLAYERS + 1]; ZHPClientInit(client) { // Get default client setting from cvar. - new bool:zhp = GetConVarBool(gCvars[CVAR_ZHP_DEFAULT]); + new bool:zhp = GetConVarBool(g_hCvarsList[CVAR_ZHP_DEFAULT]); // Set flag to default value. pZHP[client] = zhp; @@ -79,7 +79,7 @@ ZHPOnClientDeath(client) ZHPOnClientInfected(client) { // If ZHP is disabled, then stop. - new bool:zhp = GetConVarBool(gCvars[CVAR_ZHP]); + new bool:zhp = GetConVarBool(g_hCvarsList[CVAR_ZHP]); if (!zhp) { return; @@ -128,7 +128,7 @@ ZHPOnHealthInfectGain(client) ZHPToggle(client) { // If ZHP is disabled, then stop. - new bool:zhp = GetConVarBool(gCvars[CVAR_ZHP]); + new bool:zhp = GetConVarBool(g_hCvarsList[CVAR_ZHP]); if (!zhp) { // Tell client feature is disabled. @@ -164,7 +164,7 @@ ZHPToggle(client) ZHPUpdateHUD(client) { // If ZHP is disabled, then stop. - new bool:zhp = GetConVarBool(gCvars[CVAR_ZHP]); + new bool:zhp = GetConVarBool(g_hCvarsList[CVAR_ZHP]); if (!zhp) { return; diff --git a/src/zr/zombie.inc b/src/zr/zombie.inc index 2f4f2f6..58ef595 100644 --- a/src/zr/zombie.inc +++ b/src/zr/zombie.inc @@ -29,13 +29,13 @@ HookCommands() public Action:Command_NightVision(client, argc) { - new bool:allow_disable = GetConVarBool(gCvars[CVAR_ZVISION_ALLOW_DISABLE]); + new bool:allow_disable = GetConVarBool(g_hCvarsList[CVAR_ZVISION_ALLOW_DISABLE]); if (!allow_disable) { return; } - new bool:enabled = GetConVarBool(gCvars[CVAR_ENABLE]); + new bool:enabled = GetConVarBool(g_hCvarsList[CVAR_ENABLE]); if (!enabled) { return; @@ -71,14 +71,14 @@ FindMapSky() ChangeLightStyle() { - new bool:dark = GetConVarBool(gCvars[CVAR_DARK]); + new bool:dark = GetConVarBool(g_hCvarsList[CVAR_DARK]); if (dark) { decl String:darkness[2]; decl String:sky[32]; - GetConVarString(gCvars[CVAR_DARK_LEVEL], darkness, sizeof(darkness)); - GetConVarString(gCvars[CVAR_DARK_SKY], sky, sizeof(sky)); + GetConVarString(g_hCvarsList[CVAR_DARK_LEVEL], darkness, sizeof(darkness)); + GetConVarString(g_hCvarsList[CVAR_DARK_SKY], sky, sizeof(sky)); SetLightStyle(0, darkness); SetConVarString(FindConVar("sv_skyname"), sky, true, false); @@ -192,7 +192,7 @@ public Action:MotherZombie(Handle:timer) new client; // Ratio of mother zombies to humans. - new ratio = GetConVarInt(gCvars[CVAR_MOTHER_ZOMBIE_RATIO]); + new ratio = GetConVarInt(g_hCvarsList[CVAR_MOTHER_ZOMBIE_RATIO]); // If ratio is 0 or lower, then pick 1 zombie. if (ratio <= 0) @@ -288,7 +288,7 @@ InfectPlayer(client, attacker = -1, bool:motherinfect = false) // Check if consecutive infection protection is enabled. - new bool:consecutive_infect = GetConVarBool(gCvars[CVAR_CONSECUTIVE_INFECT]); + new bool:consecutive_infect = GetConVarBool(g_hCvarsList[CVAR_CONSECUTIVE_INFECT]); // Flag player to be immune from being mother zombie twice, if consecutive infect protection is enabled. bMotherInfectImmune[client] = consecutive_infect ? motherinfect : false; @@ -312,13 +312,13 @@ InfectionEffects(client) clientloc[2] += 30; decl String:sound[128]; - GetConVarString(gCvars[CVAR_INFECT_SOUND], sound, sizeof(sound)); + GetConVarString(g_hCvarsList[CVAR_INFECT_SOUND], sound, sizeof(sound)); if (sound[0]) { SEffectsEmitSoundFromClient(client, sound, SNDLEVEL_SCREAMING); } - new bool:esplash = GetConVarBool(gCvars[CVAR_INFECT_ESPLASH]); + new bool:esplash = GetConVarBool(g_hCvarsList[CVAR_INFECT_ESPLASH]); if (esplash) { TE_SetupEnergySplash(clientloc, direction, true); @@ -332,19 +332,19 @@ InfectionEffects(client) new flags = GetEntProp(explosion, Prop_Data, "m_spawnflags"); flags = flags | EXP_NODAMAGE | EXP_NODECAL; - new bool:fireball = GetConVarBool(gCvars[CVAR_INFECT_FIREBALL]); + new bool:fireball = GetConVarBool(g_hCvarsList[CVAR_INFECT_FIREBALL]); if (!fireball) { flags = flags | EXP_NOFIREBALL; } - new bool:smoke = GetConVarBool(gCvars[CVAR_INFECT_SMOKE]); + new bool:smoke = GetConVarBool(g_hCvarsList[CVAR_INFECT_SMOKE]); if (!smoke) { flags = flags | EXP_NOSMOKE; } - new bool:sparks = GetConVarBool(gCvars[CVAR_INFECT_SPARKS]); + new bool:sparks = GetConVarBool(g_hCvarsList[CVAR_INFECT_SPARKS]); if (!sparks) { flags = flags | EXP_NOSPARKS; @@ -362,16 +362,16 @@ InfectionEffects(client) AcceptEntityInput(explosion, "Explode"); } - new bool:shake = GetConVarBool(gCvars[CVAR_INFECT_SHAKE]); + new bool:shake = GetConVarBool(g_hCvarsList[CVAR_INFECT_SHAKE]); if (shake) { new Handle:hShake = StartMessageOne("Shake", client); if (hShake != INVALID_HANDLE) { BfWriteByte(hShake, 0); - BfWriteFloat(hShake, GetConVarFloat(gCvars[CVAR_INFECT_SHAKE_AMP])); - BfWriteFloat(hShake, GetConVarFloat(gCvars[CVAR_INFECT_SHAKE_FREQUENCY])); - BfWriteFloat(hShake, GetConVarFloat(gCvars[CVAR_INFECT_SHAKE_DURATION])); + BfWriteFloat(hShake, GetConVarFloat(g_hCvarsList[CVAR_INFECT_SHAKE_AMP])); + BfWriteFloat(hShake, GetConVarFloat(g_hCvarsList[CVAR_INFECT_SHAKE_FREQUENCY])); + BfWriteFloat(hShake, GetConVarFloat(g_hCvarsList[CVAR_INFECT_SHAKE_DURATION])); EndMessage(); } diff --git a/src/zr/zombiereloaded.inc b/src/zr/zombiereloaded.inc index eecf981..09fa001 100644 --- a/src/zr/zombiereloaded.inc +++ b/src/zr/zombiereloaded.inc @@ -8,6 +8,11 @@ #define DEFAULT_FOV 90 +/** + * Minimum dx level required to see overlays. + */ +#define GENERAL_MIN_DXLEVEL 90 + /** * @section Logging flags. */