Skip to content

Commit

Permalink
QoL (#61)
Browse files Browse the repository at this point in the history
* save angles after unpause

* pause run if weapon rank is different from previous

* draw weapon name in hud
  • Loading branch information
Theggv authored Jan 22, 2025
1 parent ecc1595 commit e4e101f
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 31 deletions.
13 changes: 13 additions & 0 deletions src/scripts/kreedz/kz_core.sma
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ enum _:UserDataStruct {
// Pause data
Float:ud_PauseTime,
Float:ud_LastPos[3],
Float:ud_LastAngle[3],
Float:ud_LastVel[3],

// Start position data
Expand Down Expand Up @@ -436,6 +437,16 @@ public native_tp_last_pos() {

set_entvar(id, var_origin, g_UserData[id][ud_LastPos]);

if ((g_UserData[id][ud_AnglesMode] & (1 << 0)) &&
(g_UserData[id][ud_LastAngle][0] ||
g_UserData[id][ud_LastAngle][1] ||
g_UserData[id][ud_LastAngle][2])
) {
set_entvar(id, var_angles, g_UserData[id][ud_LastAngle]);
set_entvar(id, var_v_angle, g_UserData[id][ud_LastAngle]);
set_entvar(id, var_fixangle, 1);
}

set_entvar(id, var_velocity, Float:{0.0, 0.0, 0.0});
set_entvar(id, var_view_ofs, Float:{0.0, 0.0, 12.0});
set_entvar(id, var_flags, get_entvar(id, var_flags) | FL_DUCKING);
Expand Down Expand Up @@ -790,6 +801,7 @@ public client_putinserver(id) {

g_UserData[id][ud_TimerState] = TIMER_DISABLED;
g_UserData[id][ud_LastPos] = Float:{0.0, 0.0, 0.0};
g_UserData[id][ud_LastAngle] = Float:{0.0, 0.0, 0.0};

g_UserData[id][ud_HookProtection] = 0.0;
g_UserData[id][ud_isHookEnable] = false;
Expand Down Expand Up @@ -890,6 +902,7 @@ public ham_PostThink(id) {
return HAM_IGNORED;

get_entvar(id, var_origin, g_UserData[id][ud_LastPos]);
get_entvar(id, var_v_angle, g_UserData[id][ud_LastAngle]);

return HAM_IGNORED;
}
Expand Down
7 changes: 5 additions & 2 deletions src/scripts/kreedz/kz_hud.sma
Original file line number Diff line number Diff line change
Expand Up @@ -212,15 +212,18 @@ FormatCheckpointsHud(id, szMsg[], iLen) {
new numChecks = kz_get_cp_num(id);
new numTeleports = kz_get_tp_num(id);

new szWeaponName[32];
kz_get_weapon_name(kz_get_min_rank(id), szWeaponName, charsmax(szWeaponName));

switch (kz_get_timer_state(id)) {
case TIMER_DISABLED: {
formatex(szMsg, iLen, "^t^n^n");
}
case TIMER_ENABLED: {
formatex(szMsg, iLen, "[%d cp %d gc]^n^n", numChecks, numTeleports);
formatex(szMsg, iLen, "[%d cp %d gc] | %s^n^n", numChecks, numTeleports, szWeaponName);
}
case TIMER_PAUSED: {
formatex(szMsg, iLen, "[%d cp %d gc] | PAUSED^n^n", numChecks, numTeleports);
formatex(szMsg, iLen, "[%d cp %d gc] | %s | PAUSED^n^n", numChecks, numTeleports, szWeaponName);
}
}
}
Expand Down
55 changes: 26 additions & 29 deletions src/scripts/kreedz/kz_weapons.sma
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

enum _:UserData {
ud_MinRank,
ud_TemporaryRank,
bool:ud_ResetMaxSpeedHookDisabled,
};

new g_UserData[MAX_PLAYERS + 1][UserData];
Expand All @@ -48,8 +48,6 @@ public plugin_init() {
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_p90", "ham_Other_Shoot", 1);
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_scout", "ham_Other_Shoot", 1);

RegisterHam(Ham_Player_Jump, "player", "ham_Jump_Post", 1);

RegisterHookChain(RG_CBasePlayer_ResetMaxSpeed, "HookResetMaxSpeed", 1);

RegisterHam(Ham_Spawn, "player", "ham_Spawn_Post", 1);
Expand Down Expand Up @@ -90,7 +88,7 @@ public native_set_min_rank(pluginId, argc) {
new value = get_param(arg_value);

g_UserData[id][ud_MinRank] = value;
g_UserData[id][ud_TemporaryRank] = value;
g_UserData[id][ud_ResetMaxSpeedHookDisabled] = false;

if (is_user_alive(id)) {
ham_Spawn_Post(id);
Expand Down Expand Up @@ -169,25 +167,35 @@ public client_connect(id) {

public kz_timer_start_post(id) {
g_UserData[id][ud_MinRank] = get_min_rank(id);
g_UserData[id][ud_TemporaryRank] = g_UserData[id][ud_MinRank];
g_UserData[id][ud_ResetMaxSpeedHookDisabled] = false;
}

public kz_timer_pause_post(id) {
if (kz_get_timer_state(id) != TIMER_ENABLED)
new TimerState:timerState = kz_get_timer_state(id);

if (timerState == TIMER_PAUSED)
g_UserData[id][ud_ResetMaxSpeedHookDisabled] = true;

if (timerState != TIMER_ENABLED)
return;

// Update weapon after pause
HookResetMaxSpeed(id);
new iRank = get_min_rank(id);

if (iRank >= g_UserData[id][ud_MinRank]) {
g_UserData[id][ud_MinRank] = iRank;
}

g_UserData[id][ud_ResetMaxSpeedHookDisabled] = false;
}

public HookResetMaxSpeed(id) {
if (kz_get_timer_state(id) != TIMER_ENABLED)
if (g_UserData[id][ud_ResetMaxSpeedHookDisabled] || kz_get_timer_state(id) != TIMER_ENABLED)
return HC_CONTINUE;

new iRank = get_min_rank(id);

if (iRank > g_UserData[id][ud_MinRank])
g_UserData[id][ud_TemporaryRank] = iRank;
if (iRank > g_UserData[id][ud_MinRank])
kz_set_pause(id);

return HC_CONTINUE;
}
Expand All @@ -200,13 +208,13 @@ public ham_Spawn_Post(id) {
amxclient_cmd(id, "weapons");

switch (g_UserData[id][ud_MinRank]) {
case 0: amxclient_cmd(id, "weapon_awp");
case 1: amxclient_cmd(id, "weapon_m249");
case 2: amxclient_cmd(id, "weapon_m4a1");
case 3: amxclient_cmd(id, "weapon_sg552");
case 4: amxclient_cmd(id, "weapon_famas");
case 5: amxclient_cmd(id, "weapon_p90");
case 7: amxclient_cmd(id, "weapon_scout");
case WPN_AWP: amxclient_cmd(id, "weapon_awp");
case WPN_M249: amxclient_cmd(id, "weapon_m249");
case WPN_M4A1: amxclient_cmd(id, "weapon_m4a1");
case WPN_SG552: amxclient_cmd(id, "weapon_sg552");
case WPN_FAMAS: amxclient_cmd(id, "weapon_famas");
case WPN_P90: amxclient_cmd(id, "weapon_p90");
case WPN_SCOUT: amxclient_cmd(id, "weapon_scout");
}
}
}
Expand All @@ -227,17 +235,6 @@ public ham_Other_Shoot(iEnt) {
return HAM_IGNORED;
}

public ham_Jump_Post(id) {
if (!is_user_alive(id) ||
kz_get_timer_state(id) != TIMER_ENABLED)
return HAM_IGNORED;

if (g_UserData[id][ud_TemporaryRank] > g_UserData[id][ud_MinRank]) {
g_UserData[id][ud_MinRank] = g_UserData[id][ud_TemporaryRank];
}

return HAM_IGNORED;
}

/**
* ------------------------------------------------------------------
Expand Down

0 comments on commit e4e101f

Please sign in to comment.