Skip to content

isWalking flag is not actually walking #318

Closed

Description

@sjaanus

Also mentioned in #317

isWalking is using underlying CSGO flag m_bIsWalking, which actually means that user is holding walk button.

Also reproduced it in local machine, by standing still, holding walk key and attacking enemy. All hits were done and isWalking was true.

Activity

  1. sjaanus commented on Dec 19, 2021

    @sjaanus
    Author

    I implemented a check that checks if players is moving based on velocity. Basically checked all shots that occured when velocity was higher than 0. It seems that pro players move 60-80% of shots they take. This means there might not be a accuracy penalty while moving in very low speeds.

    I think a good thing to implement is this https://github.com/perilouswithadollarsign/cstrike15_src/blob/f82112a2388b841d72cb62ca48ab1846dfcc11c8/game/shared/cstrike15/weapon_csbase.cpp#L1208

    This allows to check how much penalty users get during shooting, which basically means how efficient they are.

  2. markus-wa commented on Dec 19, 2021

    @markus-wa
    Owner

    thanks for the detailed analysis @sjaanus - I think this may indeed be worth re-implementing.

    PRs welcome, otherwise I'll see if/when I can get to it.

  3. sjaanus commented on Dec 20, 2021

    @sjaanus
    Author

    Do you know how much velocity affects accuracy? Like, lets say velocity is on scale 0 to 250. I checked if all values are over 0, then player is moving. But maybe when velocity is like 1, then player gets no penalty.

  4. markus-wa commented on Dec 20, 2021

    @markus-wa
    Owner

    I would say this is the key bit

    float flMovementInaccuracyScale = RemapValClamped(pPlayer->GetAbsVelocity().Length2D(), 
    		fMaxSpeed * CS_PLAYER_SPEED_DUCK_MODIFIER, 
    		fMaxSpeed * 0.95f,							// max out at 95% of run speed to avoid jitter near max speed
    		0.0f, 1.0f );
    

    and then

    		float flAirSpeedInaccuracy = RemapVal( fSqrtVerticalSpeed,
    			fSqrtMaxJumpSpeed * 0.25f,	// Anything less than 6.25% of maximum speed has no additional accuracy penalty for z-motion (6.25% = .25 * .25)
    			fSqrtMaxJumpSpeed,			// Penalty at max jump speed
    			0.0f,						// No movement-related penalty when close to stopped
    			flInaccuracyJumpInitial );	// Movement-penalty at start of jump
    
  5. markus-wa commented on Dec 20, 2021

    @markus-wa
    Owner

    the code you linked seems to cover all these areas I think

  6. sjaanus commented on Dec 22, 2021

    @sjaanus
    Author

    Do you have any examples where you call methods from game/shared/cstrike15/weapon_csbase.cpp? This could help to a right path.

  7. markus-wa commented on Dec 22, 2021

    @markus-wa
    Owner

    we can't call any source-engine code from this library. it has to be re-implemented in Go.

    but I think the data is all there, e.g. m_fAccuracyPenalty := weapon.Entity.PropertyValueMust("m_fAccuracyPenalty") etc.

    let me know if you're missing any of the variables used in the calculation and I'll try to dig them up

  8. sjaanus commented on Dec 22, 2021

    @sjaanus
    Author

    Okay that is over my head. The method I linked, there are too many variables in there. Have never touched csgo source and Go language before. Not a good starter project 😄

  9. markus-wa commented on Dec 29, 2021

    @markus-wa
    Owner

    fair enough @sjaanus 😅 - yeah most new features are pretty tricky now, the easy stuff is mostly done 😞

    I'll see if I can get to this soon ™️ but I wouldn't hold my breath to be fair

  10. Repository owner deleted a comment from on May 17, 2026
  11. markus-wa commented on Aug 31, 2026

    @markus-wa
    Owner

    fixed via docs improvement

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions