Added option for random dissolve effect.

Added an option to the account module to give money for damaging a client.
Expanded player hull xy offset by 1 unit.
Fixed anti-stuck not solidifying clients.
Fixed weapon rendering glitches (again)
This commit is contained in:
Greyscale 2009-06-16 11:20:56 -07:00
parent 681eb0e64d
commit 129fb0e60a
8 changed files with 67 additions and 12 deletions

View File

@ -356,6 +356,10 @@ zr_account_cashfill "1"
// Amount of cash to set player's account to. [Dependency: zr_account_cashfill] // Amount of cash to set player's account to. [Dependency: zr_account_cashfill]
// Default: "12000" // Default: "12000"
zr_account_cashfill_value "12000" zr_account_cashfill_value "12000"
// Attacker receives amount of cash equivalent to the damage that was inflicted.
// Default: "0"
zr_account_cashdmg "0"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Visual Effects (module) // Visual Effects (module)
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -426,9 +430,9 @@ zr_veffects_fog_farz "2000"
// Default: "1" // Default: "1"
zr_veffects_ragdoll_remove "1" zr_veffects_ragdoll_remove "1"
// The ragdoll removal effect. [-1: Effectless removal | 0: Energy dissolve | 1: Heavy electrical dissolve | 2: Light electrical dissolve | 3: Core dissolve | Dependency: zr_veffects_ragdoll_remove] // The ragdoll removal effect. ['-2' = Effectless removal | '-1' = Random effect | '0' = Energy dissolve | '1' = Heavy electrical dissolve | '2' = Light electrical dissolve | '3' = Core dissolve | Dependency: zr_veffects_ragdoll_remove]
// Default: "1" // Default: "-1"
zr_veffects_ragdoll_dissolve "1" zr_veffects_ragdoll_dissolve "-1"
// Time to wait before removing the ragdoll. [Dependency: zr_veffects_ragdoll_remove] // Time to wait before removing the ragdoll. [Dependency: zr_veffects_ragdoll_remove]
// Default: "0.5" // Default: "0.5"

View File

@ -69,6 +69,31 @@ AccountOnClientSpawn(client)
AccountSetClientCash(client, cash); AccountSetClientCash(client, cash);
} }
/** Client has been hurt.
*
* @param attacker The attacker index.
* @param dmg The amount of damage inflicted.
*/
AccountOnClientHurt(attacker, dmg_health)
{
// If attacker isn't valid, then stop.
if (!ZRIsClientValid(attacker))
{
return;
}
// If cashdmg cvar is disabled, then stop.
new bool:accountcashdmg = GetConVarBool(g_hCvarsList[CVAR_ACCOUNT_CASHDMG]);
if (!accountcashdmg)
{
return;
}
// Get current cash, add the damage done to it, then set new value.
new cash = AccountGetClientCash(attacker);
AccountSetClientCash(attacker, cash + dmg_health);
}
/** /**
* Get's a client's account value (cash) * Get's a client's account value (cash)
* *

View File

@ -37,7 +37,7 @@
/** /**
* @section Offsets relating to player hull dimensions. * @section Offsets relating to player hull dimensions.
*/ */
#define ANTISTICK_PLAYER_HULL_XY_OFFSET 32 #define ANTISTICK_PLAYER_HULL_XY_OFFSET 33
#define ANTISTICK_PLAYER_HULL_Z_OFFSET 12 #define ANTISTICK_PLAYER_HULL_Z_OFFSET 12
#define ANTISTICK_PLAYER_HULL_STACK_OFFSET 14 #define ANTISTICK_PLAYER_HULL_STACK_OFFSET 14
/** /**
@ -168,13 +168,13 @@ public Action:AntiStickTimer(Handle:timer)
continue; continue;
} }
if (AntiStickClientCollisionGroup(x, false)) if (AntiStickClientCollisionGroup(x, false) == ANTISTICK_COLLISIONS_ON)
{ {
AntiStickClientCollisionGroup(x, true, ANTISTICK_COLLISIONS_OFF); AntiStickClientCollisionGroup(x, true, ANTISTICK_COLLISIONS_OFF);
CreateTimer(0.5, AntiStickSolidify, x, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); CreateTimer(0.5, AntiStickSolidify, x, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
} }
if (AntiStickClientCollisionGroup(stuckindex, false)) if (AntiStickClientCollisionGroup(stuckindex, false) == ANTISTICK_COLLISIONS_ON)
{ {
AntiStickClientCollisionGroup(stuckindex, true, ANTISTICK_COLLISIONS_OFF); AntiStickClientCollisionGroup(stuckindex, true, ANTISTICK_COLLISIONS_OFF);
CreateTimer(0.5, AntiStickSolidify, stuckindex, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); CreateTimer(0.5, AntiStickSolidify, stuckindex, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);

View File

@ -98,6 +98,7 @@ enum CvarsList
Handle:CVAR_INFECT_SHAKE_DURATION, Handle:CVAR_INFECT_SHAKE_DURATION,
Handle:CVAR_ACCOUNT_CASHFILL, Handle:CVAR_ACCOUNT_CASHFILL,
Handle:CVAR_ACCOUNT_CASHFILL_VALUE, Handle:CVAR_ACCOUNT_CASHFILL_VALUE,
Handle:CVAR_ACCOUNT_CASHDMG,
Handle:CVAR_VEFFECTS_LIGHTSTYLE, Handle:CVAR_VEFFECTS_LIGHTSTYLE,
Handle:CVAR_VEFFECTS_LIGHTSTYLE_VALUE, Handle:CVAR_VEFFECTS_LIGHTSTYLE_VALUE,
Handle:CVAR_VEFFECTS_SKY, Handle:CVAR_VEFFECTS_SKY,
@ -333,6 +334,7 @@ CvarsCreate()
// =========================== // ===========================
g_hCvarsList[CVAR_ACCOUNT_CASHFILL] = CreateConVar("zr_account_cashfill", "1", "Reset player's cash each spawn."); g_hCvarsList[CVAR_ACCOUNT_CASHFILL] = CreateConVar("zr_account_cashfill", "1", "Reset player's cash each spawn.");
g_hCvarsList[CVAR_ACCOUNT_CASHFILL_VALUE] = CreateConVar("zr_account_cashfill_value", "12000", "Amount of cash to set player's account to. [Dependency: zr_account_cashfill]"); g_hCvarsList[CVAR_ACCOUNT_CASHFILL_VALUE] = CreateConVar("zr_account_cashfill_value", "12000", "Amount of cash to set player's account to. [Dependency: zr_account_cashfill]");
g_hCvarsList[CVAR_ACCOUNT_CASHDMG] = CreateConVar("zr_account_cashdmg", "0", "Attacker receives amount of cash equivalent to the damage that was inflicted.");
// =========================== // ===========================
@ -363,7 +365,7 @@ CvarsCreate()
// Ragdoll // Ragdoll
g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_REMOVE] = CreateConVar("zr_veffects_ragdoll_remove", "1", "Remove players' ragdolls from the game after a delay."); g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_REMOVE] = CreateConVar("zr_veffects_ragdoll_remove", "1", "Remove players' ragdolls from the game after a delay.");
g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_DISSOLVE] = CreateConVar("zr_veffects_ragdoll_dissolve", "1", "The ragdoll removal effect. [-1: Effectless removal | 0: Energy dissolve | 1: Heavy electrical dissolve | 2: Light electrical dissolve | 3: Core dissolve | Dependency: zr_veffects_ragdoll_remove]"); g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_DISSOLVE] = CreateConVar("zr_veffects_ragdoll_dissolve", "-1", "The ragdoll removal effect. ['-2' = Effectless removal | '-1' = Random effect | '0' = Energy dissolve | '1' = Heavy electrical dissolve | '2' = Light electrical dissolve | '3' = Core dissolve | Dependency: zr_veffects_ragdoll_remove]");
g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_DELAY] = CreateConVar("zr_veffects_ragdoll_delay", "0.5", "Time to wait before removing the ragdoll. [Dependency: zr_veffects_ragdoll_remove]"); g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_DELAY] = CreateConVar("zr_veffects_ragdoll_delay", "0.5", "Time to wait before removing the ragdoll. [Dependency: zr_veffects_ragdoll_remove]");
// =========================== // ===========================

View File

@ -86,7 +86,6 @@ public Action:EventRoundStart(Handle:event, const String:name[], bool:dontBroadc
// Forward event to sub-modules. // Forward event to sub-modules.
OverlaysOnRoundStart(); OverlaysOnRoundStart();
WeaponsOnRoundStart();
RoundStartOnRoundStart(); RoundStartOnRoundStart();
RoundEndOnRoundStart(); RoundEndOnRoundStart();
InfectOnRoundStart(); InfectOnRoundStart();
@ -94,6 +93,23 @@ public Action:EventRoundStart(Handle:event, const String:name[], bool:dontBroadc
AntiStickOnRoundStart(); AntiStickOnRoundStart();
ZSpawnOnRoundStart(); ZSpawnOnRoundStart();
VolOnRoundStart(); VolOnRoundStart();
// Fire post round_start event.
CreateTimer(0.0, EventRoundStartPost);
}
/**
* Event callback (round_start)
* The round is starting. *Post
*
* @param event The event handle.
* @param name Name of the event.
* @dontBroadcast If true, event is broadcasted to all clients, false if not.
*/
public Action:EventRoundStartPost(Handle:timer, any:index)
{
// Forward event to modules.
WeaponsOnRoundStartPost();
} }
/** /**
@ -228,6 +244,7 @@ public Action:EventPlayerHurt(Handle:event, const String:name[], bool:dontBroadc
// Forward event to modules. // Forward event to modules.
ClassAlphaUpdate(index); ClassAlphaUpdate(index);
InfectOnClientHurt(index, attacker, weapon); InfectOnClientHurt(index, attacker, weapon);
AccountOnClientHurt(attacker, dmg_health);
SEffectsOnClientHurt(index); SEffectsOnClientHurt(index);
KnockbackOnClientHurt(index, attacker, weapon, hitgroup, dmg_health); KnockbackOnClientHurt(index, attacker, weapon, hitgroup, dmg_health);
NapalmOnClientHurt(index, attacker, weapon); NapalmOnClientHurt(index, attacker, weapon);

View File

@ -28,7 +28,8 @@
/** /**
* @section Different dissolve types. * @section Different dissolve types.
*/ */
#define VEFFECTS_RAGDOLL_DISSOLVE_EFFECTLESS -1 #define VEFFECTS_RAGDOLL_DISSOLVE_EFFECTLESS -2
#define VEFFECTS_RAGDOLL_DISSOLVE_RANDOM -1
#define VEFFECTS_RAGDOLL_DISSOLVE_ENERGY 0 #define VEFFECTS_RAGDOLL_DISSOLVE_ENERGY 0
#define VEFFECTS_RAGDOLL_DISSOLVE_ELECTRICALH 1 #define VEFFECTS_RAGDOLL_DISSOLVE_ELECTRICALH 1
#define VEFFECTS_RAGDOLL_DISSOLVE_ELECTRICALL 2 #define VEFFECTS_RAGDOLL_DISSOLVE_ELECTRICALL 2
@ -101,6 +102,12 @@ RagdollRemove(ragdoll)
return; return;
} }
// If random, set value to any between "energy" effect and "core" effect.
if (dissolve == VEFFECTS_RAGDOLL_DISSOLVE_RANDOM)
{
dissolve = GetRandomInt(VEFFECTS_RAGDOLL_DISSOLVE_ENERGY, VEFFECTS_RAGDOLL_DISSOLVE_CORE);
}
// Prep the ragdoll for dissolving. // Prep the ragdoll for dissolving.
decl String:targetname[64]; decl String:targetname[64];
Format(targetname, sizeof(targetname), "zr_dissolve_%d", ragdoll); Format(targetname, sizeof(targetname), "zr_dissolve_%d", ragdoll);

View File

@ -69,7 +69,7 @@ WeaponAlphaOnClientDisconnect(client)
/** /**
* The round is starting. * The round is starting.
*/ */
WeaponAlphaOnRoundStart() WeaponAlphaOnRoundStartPost()
{ {
// Allow weapon render mode to be modified. // Allow weapon render mode to be modified.
g_bWeaponAlpha = true; g_bWeaponAlpha = true;

View File

@ -308,10 +308,10 @@ WeaponsOnClientSpawn(client)
/** /**
* The round is starting. * The round is starting.
*/ */
WeaponsOnRoundStart() WeaponsOnRoundStartPost()
{ {
// Forward event to sub-modules // Forward event to sub-modules
WeaponAlphaOnRoundStart(); WeaponAlphaOnRoundStartPost();
} }
/** /**