Updated docs. Minior fixes.

Added flag on some timers so we are sure they are killed on map change.
Added stop event on health regeneration timer when applying classes, if the class has no regeneration.
Cvar zr_classes_default_admin is now replaced by admin-only classes. Old cvar is zr_classes_default_admin_mode.
This commit is contained in:
richard 2009-10-31 03:39:00 +01:00
parent bba1f40fb3
commit 844e23b293
8 changed files with 58 additions and 25 deletions

View File

@ -168,9 +168,13 @@ zr_classes_change_timelimit "20"
// Default: "1" // Default: "1"
zr_classes_save "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] // (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" // 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] // Human class assigned to players on connect. ["random" = Random human class | "" = Class config default]
// Default: "random" // Default: "random"

View File

@ -16,7 +16,7 @@
<p class="headerinfo">Targets plugin version 3.0.0 Beta 2, (not released)<br /> <p class="headerinfo">Targets plugin version 3.0.0 Beta 2, (not released)<br />
Written by Richard Helgeby</p> Written by Richard Helgeby</p>
<p class="headerinfo">Manual last modified: 2009.10.30</p> <p class="headerinfo">Manual last modified: 2009.10.31</p>
<h2>Index</h2> <h2>Index</h2>
@ -36,6 +36,7 @@ Written by Richard Helgeby</p>
<li><a href="#2.1">Requirements</a></li> <li><a href="#2.1">Requirements</a></li>
<li><a href="#2.2">Plugin Installation</a></li> <li><a href="#2.2">Plugin Installation</a></li>
<li><a href="#2.3">Test Run</a></li> <li><a href="#2.3">Test Run</a></li>
<li><a href="#2.3">Upgrading</a></li>
</ol> </ol>
</li> </li>
@ -220,15 +221,18 @@ plugin is compatible with all existing Zombie Mod maps.</p>
<ul> <ul>
<li> <li>
<p><strong>c0ldfyr3</strong></p> <p><strong>c0ldfyr3</strong></p>
<p>The developer of Zombie Mod (<a href="http://www.zombiemod.com">www.zombiemod.com</a>).</p> <p>The developer of the popular <em>Zombie Mod</em>
(<a href="http://www.zombiemod.com">www.zombiemod.com</a>). There wouldn't be any
Zombie:Reloaded without Zombie Mod.</p>
</li> </li>
</ul> </ul>
<h6>Developers and testers</h6> <h6>Developers and testers</h6>
<ul> <ul>
<li> <li>
<p><strong>Greyscale</strong></p> <p><strong>Greyscale / sumguy14</strong></p>
<p>Author of Zombie:Reloaded. The one who started remaking Zombie Mod for the SourceMod platform.</p> <p>Author of Zombie:Reloaded. The one who started remaking Zombie Mod for the SourceMod platform.</p>
<p>Made overlays and zombie ambient sound file.</p>
<p>Related server: "#1 Pro's Playground - 24/7 Zombie Mod [ Rank / Reload / Napalm ]" <p>Related server: "#1 Pro's Playground - 24/7 Zombie Mod [ Rank / Reload / Napalm ]"
(74.201.57.54:27015) - USA, Washington</p> (74.201.57.54:27015) - USA, Washington</p>
</li> </li>
@ -241,8 +245,9 @@ plugin is compatible with all existing Zombie Mod maps.</p>
</li> </li>
<li> <li>
<p><strong>Cpt. Moore</strong></p> <p><strong>Cpt. Moore and SwissQuake</strong></p>
<p>Helped debuging issues and made some new features. Used the server for testing.</p> <p>Helped debuging issues and made some new features. Most credits go for letting us use the
SwissQuake zombie server for testing.</p>
<p>Related server: "Zombie World Domination by SwissQuake" (85.195.74.201:13010) <p>Related server: "Zombie World Domination by SwissQuake" (85.195.74.201:13010)
- Switzerland, Basel</p> - Switzerland, Basel</p>
</li> </li>
@ -290,6 +295,15 @@ bring up the zombie menu to confirm that the plugin is running.</p>
<p>Next check error logs from SourceMod and look if there are any entries from "zombiereloaded.smx". <p>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 <a href="#5">Troubleshooting (5)</a>.</p> If the plugin doesn't work at all or there are errors logged, see <a href="#5">Troubleshooting (5)</a>.</p>
<h3><a name="2.4" />2.4 Upgrading</h3>
<p>When upgrading there might be changes to configuration files. They must either be reconfigured
or merged with old settings.</p>
<p>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.</p>
<h2><a name="3" />3. Configuration</h2> <h2><a name="3" />3. Configuration</h2>
@ -822,12 +836,12 @@ download them. The paths must be relative to the "cstrike" folder.</p>
<h3><a name="3.7" />3.7 Class Configuration</h3> <h3><a name="3.7" />3.7 Class Configuration</h3>
<p>The class system makes it possible to have different zombies and humans with customized skills. <p>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.</p> each team, the class selections menus are automatically disabled.</p>
<p>The class configurations are stored in Valve's key/value format, and the file that's loaded <p>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 should be specified in the "zr_config_path_playerclasses" console variable. It's possible to change
variable with per-map configuration files to have different sets of classes on one or more maps.</p> this variable with per-map configuration files to have different sets of classes on one or more maps.</p>
<p>Default path is:</p> <p>Default path is:</p>
@ -1443,7 +1457,7 @@ Place these console variables in the main configuration file:</p>
<p>Path is relative to "sourcemod".</p> <p>Path is relative to "sourcemod".</p>
<p>If used in map configuration files this console variable must be placed in pre map <p>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 configuration files. Post configuration files won't have any effect because the class
module is done loading.</p> module is already done loading.</p>
</td> </td>
</tr> </tr>
@ -2136,17 +2150,17 @@ sub section for each weapon using short names from the list below.</p>
</tr> </tr>
<tr> <tr>
<td class="code">hegrenade</td> <td class="code">hegrenade</td>
<td>Grenade</td> <td>Projectile</td>
<td>High explosive grenade</td> <td>High explosive grenade</td>
</tr> </tr>
<tr> <tr>
<td class="code">flashbang</td> <td class="code">flashbang</td>
<td>Grenade</td> <td>Projectile</td>
<td>Flash bang</td> <td>Flash bang</td>
</tr> </tr>
<tr> <tr>
<td class="code">smokegrenade</td> <td class="code">smokegrenade</td>
<td>Grenade</td> <td>Projectile</td>
<td>Smoke grenade</td> <td>Smoke grenade</td>
</tr> </tr>
<tr> <tr>
@ -2154,6 +2168,11 @@ sub section for each weapon using short names from the list below.</p>
<td>Equipment</td> <td>Equipment</td>
<td>Night vision goggles</td> <td>Night vision goggles</td>
</tr> </tr>
<tr>
<td class="code">knife</td>
<td>Melee</td>
<td>Knife</td>
</tr>
</table></blockquote> </table></blockquote>
<h4><a name="3.8.3" />3. Weapon Commands</h4> <h4><a name="3.8.3" />3. Weapon Commands</h4>
@ -3857,6 +3876,9 @@ not required, except the type attribute.</p>
not allowed. It uses a timer to trigger actions at a specified interval. In addition warning messages 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.</p> can be displayed to player that enter the volume.</p>
<p>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.</p>
<blockquote><table> <blockquote><table>
<caption>Anti-Camp Attributes</caption> <caption>Anti-Camp Attributes</caption>
<tr> <tr>
@ -4151,8 +4173,8 @@ back to a default action.</p>
<td class="indent" colspan="3"> <td class="indent" colspan="3">
<p><strong>Description:</strong> Something wrong happened when trying to parse/open a <p><strong>Description:</strong> Something wrong happened when trying to parse/open a
configuration file.</p> configuration file.</p>
<p><strong>Cause:</strong> File permissions, or (for developers:) that invalid file <p><strong>Cause:</strong> File does not exist, file permissions, or (for developers:)
structure were specified when loading.</p> that invalid file structure were specified when loading.</p>
</td> </td>
</tr> </tr>
@ -4792,9 +4814,12 @@ back to a default action.</p>
<h3><a name="5.4" />5.4 Common Problems</h3> <h3><a name="5.4" />5.4 Common Problems</h3>
<h3><a name="5.5" />5.5 Known Issues</h3> <h3><a name="5.5" />5.5 Known Issues</h3>
<p>Conflicts with WCS Races plugin and other plugins who change player model/skin and speed.</p> <ul>
<p>Do not run es_tools, it's not compatible with SourceMod.</p> <li>Conflicts with WCS Races plugin and other plugins who change player model/skin and speed.</li>
<li>Do not run es_tools, it's not compatible with SourceMod.</li>
<li>Anti-Stick seems to work fine on some servers, but cause bouncing props on others. This may
be map dependent.</li>
</ul>
<h2><a name="6" />6. Gameplay Guidelines</h2> <h2><a name="6" />6. Gameplay Guidelines</h2>

View File

@ -61,6 +61,7 @@ enum CvarsList
Handle:CVAR_CLASSES_DEFAULT_M_ZOMB, Handle:CVAR_CLASSES_DEFAULT_M_ZOMB,
Handle:CVAR_CLASSES_DEFAULT_HUMAN, Handle:CVAR_CLASSES_DEFAULT_HUMAN,
Handle:CVAR_CLASSES_DEFAULT_ADMIN, Handle:CVAR_CLASSES_DEFAULT_ADMIN,
Handle:CVAR_CLASSES_DEFAULT_ADMIN_MODE,
Handle:CVAR_CLASSES_MENU_AUTOCLOSE, Handle:CVAR_CLASSES_MENU_AUTOCLOSE,
Handle:CVAR_CLASSES_OVERLAY_TOGGLE, Handle:CVAR_CLASSES_OVERLAY_TOGGLE,
Handle:CVAR_CLASSES_OVERLAY_TOGGLECMDS, 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_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_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_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_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_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!)"); 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!)");

View File

@ -325,6 +325,8 @@ bool:ClassApplyHealthRegen(client, classindex, cachetype = ZR_CLASS_CACHE_PLAYER
} }
else else
{ {
// Make sure old timers are stopped.
ClassHealthRegenStop(client);
return false; return false;
} }
} }

View File

@ -1120,7 +1120,7 @@ stock ClassGetDefaultSpawnClass(teamid, filter[ClassFilter] = ClassNoSpecialClas
} }
case ZR_CLASS_TEAM_ADMINS: 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: default:
{ {

View File

@ -45,7 +45,7 @@ ClassHealthRegenStart(client, Float:interval)
tHealthRegen[client] = INVALID_HANDLE; 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) ClassHealthRegenStop(client)

View File

@ -111,7 +111,7 @@ VolAnticampEnable(volumeIndex)
// Validate interval. // Validate interval.
if (interval > 0.0) 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); LogEvent(_, LogType_Normal, LOG_DEBUG, LogModule_Volfeatures, "Vol state", "Enabled anticamp volume %d.", volumeIndex);
} }
else else
@ -161,7 +161,7 @@ stock VolAnticampEnableAll()
// Validate interval. // Validate interval.
if (interval > 0.0) 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); LogEvent(_, LogType_Normal, LOG_DEBUG, LogModule_Volfeatures, "Vol state", "Enabled anticamp volume %d.", volumeIndex);
} }
else else

View File

@ -285,7 +285,7 @@ bool:VolStartUpdateTimer()
if (interval > 0.0) if (interval > 0.0)
{ {
// Create a new timer. // 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. // Also start the trigger delay timer.
VolStartTriggerTimer(); VolStartTriggerTimer();
@ -337,7 +337,7 @@ bool:VolStartTriggerTimer()
if (VolTriggerInterval > 0.0) if (VolTriggerInterval > 0.0)
{ {
// Start the timer. // Start the timer.
hVolTriggerTimer = CreateTimer(VolTriggerInterval, Event_VolTriggerTimer, _, TIMER_REPEAT); hVolTriggerTimer = CreateTimer(VolTriggerInterval, Event_VolTriggerTimer, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
// Trigger timer started. // Trigger timer started.
return true; return true;