Skip to content

Conversation

@normalamron
Copy link
Contributor

No description provided.

add extra 2 cvar for pause
@mourningsickness
Copy link
Contributor

I don't really see the point in this change, but here's a suggestion anyway. These are worded poorly and confusing:

0 - Disabled, fully allow movement.
1 - Allow movement/noclip while paused. Need to stand on the ground.
2 - Allow to pause while moving and you can move while paused.(not recommended)
3 - Allow to pause while moving but freeze you when paused.

Better to make it something like:

0 - Disabled, no movement while paused.
1 - Allow movement/noclip while paused, must stand still to pause.
2 - Allow movement/noclip while paused, can pause while moving. (Not recommended)
3 - Disallow movement/noclip while paused, can pause while moving.

Also 2 and 3 should be switched around in the order, in my opinion.. but tbh 2 and 3 shouldn't exist anyway, so..

Also, also, this would also need to be handled in Shavit_CanPause (and probably other places i can't think of of the top of my head) if the value is >1.. since the conditions for being able to pause are being changed.

@normalamron
Copy link
Contributor Author

I did not understand conditions you mentioned but there are already lines use shavit_canpause for conditions which are >1. I thought to switch 2 and 3 but lazy :). For 2 i agree that it shouldnt be exist but if i did 3, why not 2? After all, we are not forcing anyone to use it. I already stated that it's not recommended. I'll change the description.

Copy link
Contributor

@mourningsickness mourningsickness left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestions

}

if((iFlags & CPR_Duck) > 0)
if((iFlags & CPR_Duck) && (gCV_PauseMovement.IntValue == 0 || gCV_PauseMovement.IntValue == 1))
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not that it seems completely necessary, but the > 0 could have been retained with your addition

i dont understand, it is just for 0 and 1 cuz you have to stand to pause


Shavit_PrintToChat(client, "%T", "MessageUnpause", client, gS_ChatStrings.sText, gS_ChatStrings.sVariable, gS_ChatStrings.sText);
}
else if(gA_Timers[client].bClientPaused & (gCV_PauseMovement.IntValue == 2 || gCV_PauseMovement.IntValue == 3))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

couldn't this be
else if(gA_Timers[client].bClientPaused && gCV_PauseMovement.IntValue >= 2)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

couldn't this be else if(gA_Timers[client].bClientPaused && gCV_PauseMovement.IntValue >= 2)

still same shit, i just wrote that way

public Action Shavit_OnStartPre(int client, int track)
{
if (GetTimerStatus(client) == Timer_Paused && gCV_PauseMovement.BoolValue)
if (GetTimerStatus(client) == Timer_Paused && (gCV_PauseMovement.IntValue == 1 || gCV_PauseMovement.IntValue == 2 || gCV_PauseMovement.IntValue == 3))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i believe .BoolValue will return true as long as the value is > 0 so this can remain unchanged.. or you can just check .IntValue > 0 instead of specifying each individual case

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i believe .BoolValue will return true as long as the value is > 0 so this can remain unchanged.. or you can just check .IntValue > 0 instead of specifying each individual case

not to keep that as bool but it will work

int flags = GetEntityFlags(client);

if (gA_Timers[client].bClientPaused && IsPlayerAlive(client) && !gCV_PauseMovement.BoolValue)
if (gA_Timers[client].bClientPaused && IsPlayerAlive(client) && gCV_PauseMovement.IntValue == 0)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as before on line 2471, this should be able to remain unchanged

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as before on line 2471, this should be able to remain unchanged

not necessary but i dont want to keep it bool, just remember why i put 0 in here

if (gA_Timers[client].bClientPaused && IsPlayerAlive(client) && gCV_PauseMovement.IntValue == 3)
{
buttons = 0;
TeleportEntity(client, gF_PauseOrigin[client], gF_PauseAngles[client], view_as<float>({0.0, 0.0, 0.0}));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe i'm missing something.. but why teleport the client every tick if their movement is prevented? also this whole block can be removed and handled in line 3352 by checking if (gCV_PauseMovement.IntValue == 0 || gCV_PauseMovement.IntValue == 3) right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe i'm missing something.. but why teleport the client every tick if their movement is prevented? also this whole block can be removed and handled in line 3352 by checking if (gCV_PauseMovement.IntValue == 0 || gCV_PauseMovement.IntValue == 3) right?

it doesnt work as you said, i have to teleport client to that position

}

if((iFlags & CPR_Duck) > 0)
if((iFlags & CPR_Duck) && (gCV_PauseMovement.IntValue == 0 || gCV_PauseMovement.IntValue == 1))
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not that it seems completely necessary, but the > 0 could have been retained with your addition

i dont understand, it is just for 0 and 1 cuz you have to stand to pause

@normalamron
Copy link
Contributor Author

suggestions

the whole conditions works fine, i didnt find any buggy thing. If you find any broken thing let me know

@mourningsickness
Copy link
Contributor

nobody cares about preventing/stopping cheats in 2025, but allowing pausing while moving will let players essentially get the same cheater effect as that kz noslide plugin. just spam pause when jumping onto a block with a million vel and it'll stop you in place with values >1

i'll let avo review/comment before saying anything else

@normalamron
Copy link
Contributor Author

nobody cares about preventing/stopping cheats in 2025, but allowing pausing while moving will let players essentially get the same cheater effect as that kz noslide plugin. just spam pause when jumping onto a block with a million vel and it'll stop you in place with values >1

i'll let avo review/comment before saying anything else

ofc allowing movement in pause is cheat for someone who also thinks null and other things which are based on game commands and alias are cheat in 2025. However i do not want to argue this topic. My purpose to make this pr is that i do not ruin my good run when i have to be afk during the run so i can pause my run with 3. movement cvar.

@mourningsickness
Copy link
Contributor

mourningsickness commented Jul 10, 2025

of course, i understand. i don't believe movement while paused is a cheat, for the record. i am the one who originally added this cvar and functionality. not trying to be mean or critical to your PR, i just don't think it should be a part of the core timer, given the inherent abusive nature of it (noslide). there's a reason you are not allowed to pause while moving currently.

also, nulls and things based on built in game commands are completely different to plugins modifying movement mechanics!

edit: "core timer" not meaning "shavit-core", i meant it as "part of the timer itself" as opposed to an edit in a fork or something else.

@mourningsickness
Copy link
Contributor

oops said something else ^^

@normalamron
Copy link
Contributor Author

of course, i understand. i don't believe movement while paused is a cheat, for the record. i am the one who originally added this cvar and functionality. not trying to be mean or critical to your PR, i just don't think it should be a part of the core timer, given the inherent abusive nature of it (noslide). there's a reason you are not allowed to pause while moving currently.

also, nulls and things based on built in game commands are completely different to plugins modifying movement mechanics!

i did not compare nulls and others with plugins. I just emphasized how people with ideas like yours think about cheating. Also why dont i put those cvar into shavit-core if it is in shavit-core.sp

@Nairdaa
Copy link
Contributor

Nairdaa commented Jul 14, 2025

Russian cheaters crying about stuff that people still consider cheating, even in 2025 is fucking hilarious 🤡

@normalamron normalamron force-pushed the master branch 2 times, most recently from c286c5f to f2739af Compare August 9, 2025 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants