diff --git a/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg b/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg
index 21d3076..fcc1c08 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg
@@ -168,9 +168,13 @@ zr_classes_change_timelimit "20"
// Default: "1"
zr_classes_save "1"
+// (Not implemented!) Admin-only class assigned to admins on connect, if any. ["default" = Default human class | "random" = Random admin-only class]
+// Default: "random"
+zr_classes_default_admin "default"
+
// (Incomplete) Admin-mode class assigned to admins on connect. Do not confuse this with admin-only classes. ["random" = Random admin class | "" = Class config default]
// Default: "random"
-zr_classes_default_admin "random"
+zr_classes_default_admin_mode "random"
// Human class assigned to players on connect. ["random" = Random human class | "" = Class config default]
// Default: "random"
diff --git a/docs/zr_manual.htm b/docs/zr_manual.htm
index 1385a5c..3c8ea26 100644
--- a/docs/zr_manual.htm
+++ b/docs/zr_manual.htm
@@ -16,7 +16,7 @@
-
+
-
-
Greyscale
+ Greyscale / sumguy14
Author of Zombie:Reloaded. The one who started remaking Zombie Mod for the SourceMod platform.
+ Made overlays and zombie ambient sound file.
Related server: "#1 Pro's Playground - 24/7 Zombie Mod [ Rank / Reload / Napalm ]"
(74.201.57.54:27015) - USA, Washington
@@ -241,8 +245,9 @@ plugin is compatible with all existing Zombie Mod maps.
-
-
Cpt. Moore
- Helped debuging issues and made some new features. Used the server for testing.
+ Cpt. Moore and SwissQuake
+ Helped debuging issues and made some new features. Most credits go for letting us use the
+ SwissQuake zombie server for testing.
Related server: "Zombie World Domination by SwissQuake" (85.195.74.201:13010)
- Switzerland, Basel
@@ -290,6 +295,15 @@ bring up the zombie menu to confirm that the plugin is running.
Next check error logs from SourceMod and look if there are any entries from "zombiereloaded.smx".
If the plugin doesn't work at all or there are errors logged, see Troubleshooting (5).
+2.4 Upgrading
+
+When upgrading there might be changes to configuration files. They must either be reconfigured
+or merged with old settings.
+
+Reloading Zombie:Reloaded with SourceMod is not recommended. Changing the map works in most
+cases, but some console variables might not be updated. Do a server restart for a complete
+refresh of console variables.
+
3. Configuration
@@ -822,12 +836,12 @@ download them. The paths must be relative to the "cstrike" folder.
3.7 Class Configuration
The class system makes it possible to have different zombies and humans with customized skills.
-It cannot be turned off, but class selection options can be disabled. If there is only one class in
+It cannot be turned off, but class selection menus can be disabled. If there is only one class in
each team, the class selections menus are automatically disabled.
The class configurations are stored in Valve's key/value format, and the file that's loaded
-should be specified in the "zr_classes_file" console variable. It's possible to change this
-variable with per-map configuration files to have different sets of classes on one or more maps.
+should be specified in the "zr_config_path_playerclasses" console variable. It's possible to change
+this variable with per-map configuration files to have different sets of classes on one or more maps.
Default path is:
@@ -1443,7 +1457,7 @@ Place these console variables in the main configuration file:
Path is relative to "sourcemod".
If used in map configuration files this console variable must be placed in pre map
configuration files. Post configuration files won't have any effect because the class
- module is done loading.
+ module is already done loading.
@@ -2136,17 +2150,17 @@ sub section for each weapon using short names from the list below.
hegrenade |
- Grenade |
+ Projectile |
High explosive grenade |
flashbang |
- Grenade |
+ Projectile |
Flash bang |
smokegrenade |
- Grenade |
+ Projectile |
Smoke grenade |
@@ -2154,6 +2168,11 @@ sub section for each weapon using short names from the list below.
Equipment |
Night vision goggles |
+
+ knife |
+ Melee |
+ Knife |
+
3. Weapon Commands
@@ -3857,6 +3876,9 @@ not required, except the type attribute.
not allowed. It uses a timer to trigger actions at a specified interval. In addition warning messages
can be displayed to player that enter the volume.
+Do not overuse anti-camp volumes in maps, players don't like that. Instead look for alternate
+solutions like using a class editor volume to set knock back in tubes/vents.
+
Anti-Camp Attributes
@@ -4151,8 +4173,8 @@ back to a default action.
Description: Something wrong happened when trying to parse/open a
configuration file.
- Cause: File permissions, or (for developers:) that invalid file
- structure were specified when loading.
+ Cause: File does not exist, file permissions, or (for developers:)
+ that invalid file structure were specified when loading.
|
@@ -4792,9 +4814,12 @@ back to a default action.
5.4 Common Problems
5.5 Known Issues
-Conflicts with WCS Races plugin and other plugins who change player model/skin and speed.
-Do not run es_tools, it's not compatible with SourceMod.
-
+
+ - Conflicts with WCS Races plugin and other plugins who change player model/skin and speed.
+ - Do not run es_tools, it's not compatible with SourceMod.
+ - Anti-Stick seems to work fine on some servers, but cause bouncing props on others. This may
+ be map dependent.
+
6. Gameplay Guidelines
diff --git a/src/zr/cvars.inc b/src/zr/cvars.inc
index d2aff1e..69f6c90 100644
--- a/src/zr/cvars.inc
+++ b/src/zr/cvars.inc
@@ -61,6 +61,7 @@ enum CvarsList
Handle:CVAR_CLASSES_DEFAULT_M_ZOMB,
Handle:CVAR_CLASSES_DEFAULT_HUMAN,
Handle:CVAR_CLASSES_DEFAULT_ADMIN,
+ Handle:CVAR_CLASSES_DEFAULT_ADMIN_MODE,
Handle:CVAR_CLASSES_MENU_AUTOCLOSE,
Handle:CVAR_CLASSES_OVERLAY_TOGGLE,
Handle:CVAR_CLASSES_OVERLAY_TOGGLECMDS,
@@ -261,7 +262,8 @@ CvarsCreate()
g_hCvarsList[CVAR_CLASSES_DEFAULT_ZOMBIE] = CreateConVar("zr_classes_default_zombie", "random", "Zombie class assigned to players on connect. [\"random\" = Random zombie class | \"\" = Class config default]");
g_hCvarsList[CVAR_CLASSES_DEFAULT_M_ZOMB] = CreateConVar("zr_classes_default_mother_zombie", "motherzombies","Zombie class assigned to mother zombies. [\"motherzombies\" = Random mother zombie class | \"random\" = Random regular zombie class | \"disabled\" = Don't change class on mother zombies]");
g_hCvarsList[CVAR_CLASSES_DEFAULT_HUMAN] = CreateConVar("zr_classes_default_human", "random", "Human class assigned to players on connect. [\"random\" = Random human class | \"\" = Class config default]");
- g_hCvarsList[CVAR_CLASSES_DEFAULT_ADMIN] = CreateConVar("zr_classes_default_admin", "random", "(Incomplete) Admin-mode class assigned to admins on connect. Do not confuse this with admin-only classes. [\"random\" = Random admin class | \"\" = Class config default]");
+ g_hCvarsList[CVAR_CLASSES_DEFAULT_ADMIN] = CreateConVar("zr_classes_default_admin", "random", "(Not implemented!) Admin-only class assigned to admins on connect, if any. [\"default\" = Default human class | \"random\" = Random admin-only class]");
+ g_hCvarsList[CVAR_CLASSES_DEFAULT_ADMIN_MODE] = CreateConVar("zr_classes_default_admin_mode", "default", "(Incomplete) Admin-mode class assigned to admins on connect. Do not confuse this with admin-only classes. [\"random\" = Random admin class | \"\" = Class config default]");
g_hCvarsList[CVAR_CLASSES_ZOMBIE_SELECT] = CreateConVar("zr_classes_zombie_select", "1", "Allow players to select zombie classes.");
g_hCvarsList[CVAR_CLASSES_HUMAN_SELECT] = CreateConVar("zr_classes_human_select", "1", "Allow players to select human classes.");
g_hCvarsList[CVAR_CLASSES_ADMIN_SELECT] = CreateConVar("zr_classes_admin_select", "1", "Allow admins to select admin mode classes. (Not to be confused by admin-only classes!)");
diff --git a/src/zr/playerclasses/apply.inc b/src/zr/playerclasses/apply.inc
index 5c622f8..2818651 100644
--- a/src/zr/playerclasses/apply.inc
+++ b/src/zr/playerclasses/apply.inc
@@ -325,6 +325,8 @@ bool:ClassApplyHealthRegen(client, classindex, cachetype = ZR_CLASS_CACHE_PLAYER
}
else
{
+ // Make sure old timers are stopped.
+ ClassHealthRegenStop(client);
return false;
}
}
diff --git a/src/zr/playerclasses/filtertools.inc b/src/zr/playerclasses/filtertools.inc
index ec641dc..e5b3cf7 100644
--- a/src/zr/playerclasses/filtertools.inc
+++ b/src/zr/playerclasses/filtertools.inc
@@ -1120,7 +1120,7 @@ stock ClassGetDefaultSpawnClass(teamid, filter[ClassFilter] = ClassNoSpecialClas
}
case ZR_CLASS_TEAM_ADMINS:
{
- GetConVarString(g_hCvarsList[CVAR_CLASSES_DEFAULT_ADMIN], classname, sizeof(classname));
+ GetConVarString(g_hCvarsList[CVAR_CLASSES_DEFAULT_ADMIN_MODE], classname, sizeof(classname));
}
default:
{
diff --git a/src/zr/playerclasses/healthregen.inc b/src/zr/playerclasses/healthregen.inc
index 940965e..2408af1 100644
--- a/src/zr/playerclasses/healthregen.inc
+++ b/src/zr/playerclasses/healthregen.inc
@@ -45,7 +45,7 @@ ClassHealthRegenStart(client, Float:interval)
tHealthRegen[client] = INVALID_HANDLE;
}
- tHealthRegen[client] = CreateTimer(interval, ClassHealthRegenTimer, client, TIMER_REPEAT);
+ tHealthRegen[client] = CreateTimer(interval, ClassHealthRegenTimer, client, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
}
ClassHealthRegenStop(client)
diff --git a/src/zr/volfeatures/volanticamp.inc b/src/zr/volfeatures/volanticamp.inc
index 5ac18d0..eb5daef 100644
--- a/src/zr/volfeatures/volanticamp.inc
+++ b/src/zr/volfeatures/volanticamp.inc
@@ -111,7 +111,7 @@ VolAnticampEnable(volumeIndex)
// Validate interval.
if (interval > 0.0)
{
- AnticampData[dataindex][Anticamp_Timer] = CreateTimer(interval, Event_VolAnticampTrigger, volumeIndex, TIMER_REPEAT);
+ AnticampData[dataindex][Anticamp_Timer] = CreateTimer(interval, Event_VolAnticampTrigger, volumeIndex, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
LogEvent(_, LogType_Normal, LOG_DEBUG, LogModule_Volfeatures, "Vol state", "Enabled anticamp volume %d.", volumeIndex);
}
else
@@ -161,7 +161,7 @@ stock VolAnticampEnableAll()
// Validate interval.
if (interval > 0.0)
{
- AnticampData[dataindex][Anticamp_Timer] = CreateTimer(interval, Event_VolAnticampTrigger, volumeindex, TIMER_REPEAT);
+ AnticampData[dataindex][Anticamp_Timer] = CreateTimer(interval, Event_VolAnticampTrigger, volumeindex, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
LogEvent(_, LogType_Normal, LOG_DEBUG, LogModule_Volfeatures, "Vol state", "Enabled anticamp volume %d.", volumeIndex);
}
else
diff --git a/src/zr/volfeatures/volfeatures.inc b/src/zr/volfeatures/volfeatures.inc
index 7616912..c75bb41 100644
--- a/src/zr/volfeatures/volfeatures.inc
+++ b/src/zr/volfeatures/volfeatures.inc
@@ -285,7 +285,7 @@ bool:VolStartUpdateTimer()
if (interval > 0.0)
{
// Create a new timer.
- hVolUpdateTimer = CreateTimer(interval, Event_VolUpdateTimer, _, TIMER_REPEAT);
+ hVolUpdateTimer = CreateTimer(interval, Event_VolUpdateTimer, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
// Also start the trigger delay timer.
VolStartTriggerTimer();
@@ -337,7 +337,7 @@ bool:VolStartTriggerTimer()
if (VolTriggerInterval > 0.0)
{
// Start the timer.
- hVolTriggerTimer = CreateTimer(VolTriggerInterval, Event_VolTriggerTimer, _, TIMER_REPEAT);
+ hVolTriggerTimer = CreateTimer(VolTriggerInterval, Event_VolTriggerTimer, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
// Trigger timer started.
return true;