mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-06 18:08:26 +00:00
Compare commits
13 Commits
05d554f01b
...
a5f2054ddd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a5f2054ddd | ||
|
|
133c4e5b12 | ||
|
|
92d9bb7f71 | ||
|
|
6dfc2a9175 | ||
|
|
26b4e53946 | ||
|
|
183faae643 | ||
|
|
bcf623e588 | ||
|
|
e28e333818 | ||
|
|
d6f0e46756 | ||
|
|
02792941dc | ||
|
|
91a31ce870 | ||
|
|
428f87c523 | ||
|
|
732a807ff9 |
@ -219,6 +219,20 @@
|
||||
"width" "0.1"
|
||||
}
|
||||
|
||||
"Pause"
|
||||
{
|
||||
"visible" "1"
|
||||
|
||||
"red" "10"
|
||||
"green" "10"
|
||||
"blue" "255"
|
||||
|
||||
"alpha" "255"
|
||||
"width" "0.3"
|
||||
|
||||
"flat" "1"
|
||||
}
|
||||
|
||||
"Bonus 1 Start"
|
||||
{
|
||||
"visible" "1"
|
||||
|
||||
@ -42,6 +42,7 @@
|
||||
#define HUD_GLOCK (1 << 14) // makes you spawn with a Glock
|
||||
#define HUD_DEBUGTARGETNAME (1 << 15) // admin option to show current targetname & classname
|
||||
#define HUD_SPECTATORSDEAD (1 << 16) // for only showing spectators list when you're dead/spectating.
|
||||
#define HUD_PERFS_CENTER (1 << 17) // for the perf percentage in the center hud. e.g. "Jumps: 20 (66.6%)"
|
||||
|
||||
// HUD2 - these settings will *disable* elements for the main hud
|
||||
#define HUD2_TIME (1 << 0)
|
||||
|
||||
@ -47,6 +47,7 @@ enum
|
||||
Zone_Speedmod, // creates a player_speedmod
|
||||
Zone_NoJump, // blocks the player from jumping while inside the zone
|
||||
Zone_Autobhop, // forces autobhop for the player
|
||||
Zone_Pause, // pause the player's timer
|
||||
ZONETYPES_SIZE
|
||||
};
|
||||
|
||||
@ -140,6 +141,7 @@ stock void GetZoneName(int client, int zoneType, char[] output, int size)
|
||||
"Zone_Speedmod",
|
||||
"Zone_NoJump",
|
||||
"Zone_Autobhop",
|
||||
"Zone_Pause",
|
||||
};
|
||||
|
||||
if (zoneType < 0 || zoneType >= ZONETYPES_SIZE)
|
||||
|
||||
@ -3353,7 +3353,9 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
|
||||
int flags = GetEntityFlags(client);
|
||||
|
||||
if (gA_Timers[client].bClientPaused && IsPlayerAlive(client) && !gCV_PauseMovement.BoolValue)
|
||||
int track = Shavit_GetClientTrack(client);
|
||||
|
||||
if (gA_Timers[client].bClientPaused && IsPlayerAlive(client) && !gCV_PauseMovement.BoolValue && !Shavit_InsideZone(client, Zone_Pause, track))
|
||||
{
|
||||
buttons = 0;
|
||||
vel = view_as<float>({0.0, 0.0, 0.0});
|
||||
|
||||
@ -209,6 +209,7 @@ public void OnPluginStart()
|
||||
..."HUD_USP 8192\n"
|
||||
..."HUD_GLOCK 16384\n"
|
||||
..."HUD_SPECTATORSDEAD 65536\n"
|
||||
..."HUD_PERFS_CENTER 131072\n"
|
||||
);
|
||||
|
||||
IntToString(HUD_DEFAULT2, defaultHUD, 8);
|
||||
@ -776,6 +777,10 @@ Action ShowHUDMenu(int client, int item)
|
||||
FormatEx(sHudItem, 64, "%T", "HudPerfs", client);
|
||||
menu.AddItem(sInfo, sHudItem);
|
||||
|
||||
FormatEx(sInfo, 16, "!%d", HUD_PERFS_CENTER);
|
||||
FormatEx(sHudItem, 64, "%T", "HudPerfsCenter", client);
|
||||
menu.AddItem(sInfo, sHudItem);
|
||||
|
||||
FormatEx(sInfo, 16, "@%d", HUD2_STYLE);
|
||||
FormatEx(sHudItem, 64, "%T", "HudStyleText", client);
|
||||
menu.AddItem(sInfo, sHudItem);
|
||||
@ -1369,7 +1374,15 @@ int AddHUDToBuffer_Source2013(int client, huddata_t data, char[] buffer, int max
|
||||
|
||||
if((gI_HUD2Settings[client] & HUD2_JUMPS) == 0)
|
||||
{
|
||||
FormatEx(sLine, 128, "%T: %d", "HudJumpsText", client, data.iJumps);
|
||||
if (!Shavit_GetStyleSettingBool(data.iStyle, "autobhop") && (gI_HUDSettings[client] & HUD_PERFS_CENTER))
|
||||
{
|
||||
FormatEx(sLine, 128, "%T: %d (%.1f%)", "HudJumpsText", client, data.iJumps, Shavit_GetPerfectJumps(data.iTarget));
|
||||
}
|
||||
else
|
||||
{
|
||||
FormatEx(sLine, 128, "%T: %d", "HudJumpsText", client, data.iJumps);
|
||||
}
|
||||
|
||||
AddHUDLine(buffer, maxlen, sLine, iLines);
|
||||
}
|
||||
|
||||
|
||||
@ -2454,7 +2454,7 @@ public void Shavit_OnRestart(int client, int track)
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Send, "m_flStamina", 0.0);
|
||||
|
||||
if (gCV_RestartWithFullHP.BoolValue)
|
||||
if (gCV_RestartWithFullHP.BoolValue && GetClientHealth(client) < 100)
|
||||
{
|
||||
SetEntityHealth(client, 100);
|
||||
SetEntProp(client, Prop_Send, "m_ArmorValue", 100);
|
||||
|
||||
@ -53,7 +53,8 @@ static char gS_ZoneTypes[ZONETYPES_SIZE][18] = {
|
||||
"gravity",
|
||||
"speedmod",
|
||||
"nojump",
|
||||
"autobhop"
|
||||
"autobhop",
|
||||
"pause"
|
||||
};
|
||||
|
||||
static char gS_ZoneForms[5][26] = {
|
||||
|
||||
@ -131,6 +131,7 @@ Convar gCV_PrebuiltZones = null;
|
||||
Convar gCV_ClimbButtons = null;
|
||||
Convar gCV_Interval = null;
|
||||
Convar gCV_TeleportToStart = null;
|
||||
Convar gCV_TeleportToStartOnSpawn = null;
|
||||
Convar gCV_TeleportToEnd = null;
|
||||
Convar gCV_AllowDrawAllZones = null;
|
||||
Convar gCV_UseCustomSprite = null;
|
||||
@ -334,6 +335,7 @@ public void OnPluginStart()
|
||||
gCV_ClimbButtons = new Convar("shavit_zones_usebuttons", "1", "Whether to automatically hook climb_* buttons.", 0, true, 0.0, true, 1.0);
|
||||
gCV_Interval = new Convar("shavit_zones_interval", "1.0", "Interval between each time a mapzone is being drawn to the players.", 0, true, 0.25, true, 5.0);
|
||||
gCV_TeleportToStart = new Convar("shavit_zones_teleporttostart", "1", "Teleport players to the start zone on timer restart?\n0 - Disabled\n1 - Enabled", 0, true, 0.0, true, 1.0);
|
||||
gCV_TeleportToStartOnSpawn = new Convar("shavit_zones_teleporttostart_onspawn", "1", "Teleport players to the start zone on player spawn?\n0 - Disabled\n1 - Enabled", 0, true, 0.0, true, 1.0);
|
||||
gCV_TeleportToEnd = new Convar("shavit_zones_teleporttoend", "1", "Teleport players to the end zone on sm_end?\n0 - Disabled\n1 - Enabled", 0, true, 0.0, true, 1.0);
|
||||
gCV_AllowDrawAllZones = new Convar("shavit_zones_allowdrawallzones", "1", "Allow players to use !drawallzones to see all zones regardless of zone visibility settings.\n0 - nobody can use !drawallzones\n1 - admins (sm_zones access) can use !drawallzones\n2 - anyone can use !drawallzones", 0, true, 0.0, true, 2.0);
|
||||
gCV_UseCustomSprite = new Convar("shavit_zones_usecustomsprite", "1", "Use custom sprite for zone drawing?\nSee `configs/shavit-zones.cfg`.\n0 - Disabled\n1 - Enabled", 0, true, 0.0, true, 1.0);
|
||||
@ -1013,6 +1015,7 @@ bool JumpToZoneType(KeyValues kv, int type, int track)
|
||||
{"Speedmod", ""},
|
||||
{"No Jump", ""},
|
||||
{"Autobhop", ""},
|
||||
{"Pause", ""},
|
||||
};
|
||||
|
||||
char key[4][50];
|
||||
@ -2822,6 +2825,7 @@ public int MenuHandler_HookZone_Editor(Menu menu, MenuAction action, int param1,
|
||||
| (1 << Zone_Speedmod)
|
||||
| (1 << Zone_NoJump)
|
||||
| (1 << Zone_Autobhop)
|
||||
| (1 << Zone_Pause)
|
||||
// ZoneForm_trigger_teleport
|
||||
, (1 << Zone_End)
|
||||
| (1 << Zone_Respawn)
|
||||
@ -5071,60 +5075,7 @@ public void Shavit_OnRestart(int client, int track)
|
||||
|
||||
if(gCV_TeleportToStart.BoolValue)
|
||||
{
|
||||
bool bCustomStart = gB_HasSetStart[client][track] && !gB_StartAnglesOnly[client][track];
|
||||
bool use_CustomStart_over_CustomSpawn = (iIndex != -1) && bCustomStart;
|
||||
|
||||
// custom spawns
|
||||
if (!use_CustomStart_over_CustomSpawn && !EmptyVector(gF_CustomSpawn[track]))
|
||||
{
|
||||
float pos[3]; pos = gF_CustomSpawn[track]; pos[2] += 1.0;
|
||||
TeleportEntity(client, pos, NULL_VECTOR, ZERO_VECTOR);
|
||||
}
|
||||
// standard zoning
|
||||
else if (bCustomStart || iIndex != -1)
|
||||
{
|
||||
float fCenter[3];
|
||||
|
||||
if (bCustomStart)
|
||||
{
|
||||
fCenter = gF_StartPos[client][track];
|
||||
}
|
||||
else
|
||||
{
|
||||
fCenter[0] = gV_ZoneCenter[iIndex][0];
|
||||
fCenter[1] = gV_ZoneCenter[iIndex][1];
|
||||
fCenter[2] = gA_ZoneCache[iIndex].fCorner1[2] + gCV_ExtraSpawnHeight.FloatValue;
|
||||
}
|
||||
|
||||
fCenter[2] += 1.0;
|
||||
|
||||
TeleportEntity(client, fCenter, gB_HasSetStart[client][track] ? gF_StartAng[client][track] : NULL_VECTOR, view_as<float>({0.0, 0.0, 0.0}));
|
||||
|
||||
if (gB_ReplayRecorder && gB_HasSetStart[client][track])
|
||||
{
|
||||
Shavit_HijackAngles(client, gF_StartAng[client][track][0], gF_StartAng[client][track][1], -1, true);
|
||||
}
|
||||
|
||||
if (!gB_HasSetStart[client][track] || gB_StartAnglesOnly[client][track])
|
||||
{
|
||||
ResetClientTargetNameAndClassName(client, track);
|
||||
// normally StartTimer will happen on zone-touch BUT we have this here for zones that are in the air
|
||||
bool skipGroundCheck = true;
|
||||
Shavit_StartTimer(client, track, skipGroundCheck);
|
||||
}
|
||||
}
|
||||
// kz buttons
|
||||
else if (Shavit_IsKZMap(track))
|
||||
{
|
||||
if (EmptyVector(gF_ClimbButtonCache[client][track][0]) || EmptyVector(gF_ClimbButtonCache[client][track][1]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TeleportEntity(client, gF_ClimbButtonCache[client][track][0], gF_ClimbButtonCache[client][track][1], view_as<float>({0.0, 0.0, 0.0}));
|
||||
|
||||
return;
|
||||
}
|
||||
TeleportToStart(client, iIndex, track);
|
||||
}
|
||||
|
||||
if (iIndex != -1)
|
||||
@ -5214,7 +5165,74 @@ int GetZoneIndex(int type, int track, int start = 0)
|
||||
|
||||
public void Player_Spawn(Event event, const char[] name, bool dontBroadcast)
|
||||
{
|
||||
Reset(GetClientOfUserId(event.GetInt("userid")));
|
||||
int client = GetClientOfUserId(event.GetInt("userid"));
|
||||
int track = Shavit_GetClientTrack(client);
|
||||
int iIndex = GetZoneIndex(Zone_Start, track);
|
||||
|
||||
Reset(client);
|
||||
|
||||
if(GetConVarBool(gCV_TeleportToStartOnSpawn) && (Shavit_ZoneExists(Zone_Start, track) || Shavit_IsKZMap(track)))
|
||||
{
|
||||
TeleportToStart(client, iIndex, track);
|
||||
}
|
||||
}
|
||||
|
||||
public void TeleportToStart(int client, int iIndex, int track)
|
||||
{
|
||||
bool bCustomStart = gB_HasSetStart[client][track] && !gB_StartAnglesOnly[client][track];
|
||||
bool use_CustomStart_over_CustomSpawn = (iIndex != -1) && bCustomStart;
|
||||
|
||||
// custom spawns
|
||||
if (!use_CustomStart_over_CustomSpawn && !EmptyVector(gF_CustomSpawn[track]))
|
||||
{
|
||||
float pos[3]; pos = gF_CustomSpawn[track]; pos[2] += 1.0;
|
||||
TeleportEntity(client, pos, NULL_VECTOR, ZERO_VECTOR);
|
||||
}
|
||||
// standard zoning
|
||||
else if (bCustomStart || iIndex != -1)
|
||||
{
|
||||
float fCenter[3];
|
||||
|
||||
if (bCustomStart)
|
||||
{
|
||||
fCenter = gF_StartPos[client][track];
|
||||
}
|
||||
else
|
||||
{
|
||||
fCenter[0] = gV_ZoneCenter[iIndex][0];
|
||||
fCenter[1] = gV_ZoneCenter[iIndex][1];
|
||||
fCenter[2] = gA_ZoneCache[iIndex].fCorner1[2] + gCV_ExtraSpawnHeight.FloatValue;
|
||||
}
|
||||
|
||||
fCenter[2] += 1.0;
|
||||
|
||||
TeleportEntity(client, fCenter, gB_HasSetStart[client][track] ? gF_StartAng[client][track] : NULL_VECTOR, view_as<float>({0.0, 0.0, 0.0}));
|
||||
|
||||
if (gB_ReplayRecorder && gB_HasSetStart[client][track])
|
||||
{
|
||||
Shavit_HijackAngles(client, gF_StartAng[client][track][0], gF_StartAng[client][track][1], -1, true);
|
||||
}
|
||||
|
||||
if (!gB_HasSetStart[client][track] || gB_StartAnglesOnly[client][track])
|
||||
{
|
||||
ResetClientTargetNameAndClassName(client, track);
|
||||
// normally StartTimer will happen on zone-touch BUT we have this here for zones that are in the air
|
||||
bool skipGroundCheck = true;
|
||||
Shavit_StartTimer(client, track, skipGroundCheck);
|
||||
}
|
||||
}
|
||||
// kz buttons
|
||||
else if (Shavit_IsKZMap(track))
|
||||
{
|
||||
if (EmptyVector(gF_ClimbButtonCache[client][track][0]) || EmptyVector(gF_ClimbButtonCache[client][track][1]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TeleportEntity(client, gF_ClimbButtonCache[client][track][0], gF_ClimbButtonCache[client][track][1], view_as<float>({0.0, 0.0, 0.0}));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void Round_Start(Event event, const char[] name, bool dontBroadcast)
|
||||
@ -5409,6 +5427,15 @@ public void StartTouchPost(int entity, int other)
|
||||
SetVariantString(s);
|
||||
AcceptEntityInput(entity, "ModifySpeed", other, entity, 0);
|
||||
}
|
||||
|
||||
case Zone_Pause:
|
||||
{
|
||||
if(Shavit_GetTimerStatus(other) != Timer_Stopped)
|
||||
{
|
||||
Shavit_PauseTimer(other);
|
||||
//Should we print?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gI_InsideZone[other][track] |= (1 << type);
|
||||
@ -5464,6 +5491,11 @@ public void EndTouchPost(int entity, int other)
|
||||
AcceptEntityInput(entity, "ModifySpeed", other, entity, 0);
|
||||
}
|
||||
|
||||
if (type == Zone_Pause)
|
||||
{
|
||||
Shavit_ResumeTimer(other);
|
||||
}
|
||||
|
||||
Call_StartForward(gH_Forwards_LeaveZone);
|
||||
Call_PushCell(other);
|
||||
Call_PushCell(type);
|
||||
|
||||
@ -85,6 +85,10 @@
|
||||
{
|
||||
"en" "Perfect jumps"
|
||||
}
|
||||
"HudPerfsCenter"
|
||||
{
|
||||
"en" "Perfect jumps (center hud)"
|
||||
}
|
||||
"HudDefaultPistol"
|
||||
{
|
||||
"en" "Default Pistol: 1=USP 2=Glock"
|
||||
|
||||
@ -533,6 +533,10 @@
|
||||
{
|
||||
"en" "Autobhop Zone"
|
||||
}
|
||||
"Zone_Pause"
|
||||
{
|
||||
"en" "Pause Zone"
|
||||
}
|
||||
"Zone_Unknown"
|
||||
{
|
||||
"en" "UNKNOWN ZONE"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user