示例#1
0
 private static void DoBhop(ref CUserCmd cmd, C_CSPlayer pLocal)
 {
     if (!lastJumped && shouldFake)
     {
         shouldFake   = false;
         cmd.buttons |= defs.IN_JUMP;
     }
     else if (HasFlag(cmd.buttons, defs.IN_JUMP))
     {
         if (HasFlag(pLocal, defs.EntityFlags.FL_ONGROUND))
         {
             lastJumped = true;
             shouldFake = true;
         }
         else
         {
             cmd.buttons &= ~defs.IN_JUMP;
             lastJumped   = false;
         }
     }
     else
     {
         lastJumped = false;
         shouldFake = false;
     }
 }
示例#2
0
 private static void CreateMove_AfterCreateMove(ref CUserCmd pCmd)
 {
     if ((menu.Children[0] as GUIManager.ToggleMenu).IsToggled())
     {
         var pLocal = C_CSPlayer.GetLocalPlayer();
         if (!pLocal.IsAlive())
         {
             return;
         }
         var punchAngles = pLocal.AimPunch() * 2;
         pCmd.viewangles -= punchAngles;
     }
 }
示例#3
0
        private static void CreateMove_BeforeCreateMove(ref CUserCmd cmd)
        {
            var pLocal = C_CSPlayer.GetLocalPlayer();

            if (((GUIManager.ToggleMenu)menu.Children[1]).IsToggled())
            {
                DoStrafe(ref cmd, pLocal);
            }

            if (((GUIManager.ToggleMenu)menu.Children[0]).IsToggled())
            {
                DoBhop(ref cmd, pLocal);
            }
        }
示例#4
0
        private static void DoStrafe(ref CUserCmd cmd, C_CSPlayer pLocal)
        {
            if (cmd.mousedx <= 1 && cmd.mousedx >= -1)
            {
                return;
            }

            if (HasFlag(pLocal, defs.EntityFlags.FL_ONGROUND))
            {
                return;
            }

            if (HasFlag(cmd.buttons, defs.IN_JUMP))
            {
                cmd.sidemove = cmd.mousedx < 0 ? -450.0f : 450.0f;
            }
        }
示例#5
0
        public static void ChangeViewAngles(Vector3 Angles, bool CanShoot)
        {
            //read pointers to commands buffer and clientstate
            CInput Input       = CylMem.CRead2 <CInput>(Modules.ClientDLLAdress + dwInput);
            int    ClientState = CylMem.ReadInt(Modules.EngineDLLAdress + dwClientState);

            //stop sending packets
            EngineClient.SendPackets = false;

            int DesiredCmd = CylMem.ReadInt(ClientState + clientstate_last_outgoing_command); //read the last outgoing command

            DesiredCmd += 2;                                                                  //+1 current one +2 incomming one

            //calculate addresses of Icomming cmd and current cmd + verified, 150 is the size of the commands buffer
            int IncommingUserCmd       = Input.Commands + (DesiredCmd % 150) * Marshal.SizeOf(typeof(CUserCmd));
            int CurrentUserCmd         = Input.Commands + ((DesiredCmd - 1) % 150) * Marshal.SizeOf(typeof(CUserCmd));
            int VerifiedCurrentUserCmd = Input.VerifiedCommands + ((DesiredCmd - 1) % 150) * Marshal.SizeOf(typeof(CVerifiedUserCmd));

            int CmdNumber = 0;

            while (CmdNumber < DesiredCmd) //now we wait until is the right time to hit, dont sleep! the wait time is really short, in fact it doesnt consume cpu, +0x04 skips vft and reads the cmd number
            {
                CmdNumber = CylMem.ReadInt(IncommingUserCmd + 0x04);
            }

            CUserCmd CMD = CylMem.CRead2 <CUserCmd>(CurrentUserCmd); //we hack this one, read it

            CMD.ViewAngles.X = Angles.X;                             //set new view angles
            CMD.ViewAngles.Y = Angles.Y;

            if (CanShoot) //trigger shoot button if we set CanShoot to true
            {
                CMD.Buttons |= 1 << 0;
            }

            //when you are done write em back
            CylMem.CWrite <CUserCmd>(CurrentUserCmd, CMD);
            CylMem.CWrite <CUserCmd>(VerifiedCurrentUserCmd, CMD); //dont bother calculating crc (accualy you can do it to make vac happy and not get banned easilly lol)

            EngineClient.SendPackets = true;                       //restore sending packets
        }
示例#6
0
        private static void CreateMove_BeforeCreateMove(ref CUserCmd pCmd)
        {
            if (!(menu.Children[0] as GUIManager.ToggleMenu).IsToggled())
            {
                return;
            }

            if (!hotkey.IsToggled())
            {
                return;
            }

            var pLocal = C_CSPlayer.GetLocalPlayer();

            if (pLocal.IsValid() && pLocal.IsAlive())
            {
                var weapon = pLocal.GetActiveWeapon();

                if (!weapon.IsValid() || weapon.IsC4() || weapon.IsKnife() || weapon.IsGrenade())
                {
                    return;
                }

                var vTraceForward = new Vector3();
                var vTraceAngles  = pCmd.viewangles;

                global::HepajSharp.Utils.Utils.AngleVectors(vTraceAngles, ref vTraceForward);

                var vTraceStart = C_CSPlayer.GetLocalPlayer().GetEyePos();
                var vTraceEnd   = vTraceStart + vTraceForward * 8192.0f;
                var trace       = Helper.TraceRay(vTraceStart, vTraceEnd, pLocal.m_BaseAddress,
                                                  (int)(Definitions.MASKS.MASK_SHOT_HULL | Definitions.MASKS.CONTENTS_HITBOX));

                if (trace.fraction != 1.0f && trace.m_pEnt != IntPtr.Zero)
                {
                    if (!throughSmoke.IsToggled() && global::HepajSharp.Utils.Utils.LineThroughSmoke(vTraceStart, vTraceEnd))
                    {
                        return;
                    }

                    var target = new C_CSPlayer(trace.m_pEnt);
                    if (target.IsValid() && target.GetClassID() == Definitions.EClassIds.CCSPlayer &&
                        target.IsAlive() /* && target.GetHealth() > 0*/ &&
                        target.IsEnemy()) //GetHealth kell ha nem ellenőrzünk ClassID-t
                    {
                        if (autopistol.IsToggled())
                        {
                            if (weapon.IsPistol())
                            {
                                if (!weapon.CanFire())
                                {
                                    pCmd.buttons &= ~Definitions.IN_ATTACK;
                                }
                                else
                                {
                                    pCmd.buttons |= Definitions.IN_ATTACK;
                                }
                            }
                            else
                            {
                                pCmd.buttons |= Definitions.IN_ATTACK;
                            }
                        }
                        else
                        {
                            pCmd.buttons |= Definitions.IN_ATTACK;
                        }
                    }
                }
            }
        }
示例#7
0
 public void SetUserCmd(int iIndex, CUserCmd cmd)
 {
     MemoryAPI.WriteToProcess <CUserCmd>(Globals._csgo.ProcessHandle, IntPtr.Add(pThis, ((iIndex) * 0x64) + 0x4), cmd);
 }
示例#8
0
 public void SetUserCmdBySequence(int sequence_number, CUserCmd cmd)
 {
     SetUserCmd(sequence_number % 150, cmd);
 }