搜尋

絕對武力2絕對武力《絕對武力2》CS2遊戲修改器

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

[電玩遊戲] 《絕對武力2》CS2 壓槍腳本 C語言原始碼 下載 修改器使用教學

[複製連結]
1
巴利6231 ( Lv.30 大天使 ) 發表於 4 小時前 | 只看該作者 回覆獎勵 |升序瀏覽 |閱讀模式
修改器使用教學、腳本注入、數值調整

快速閱讀精華



  • 這是一款 C語言編寫的 CS2 壓槍腳本,基於 Windows API 開發,無需外部圖形庫 🎯
  • 支援 AK-47M4A1-S 兩種武器,內建固定彈道數據與物理動態補償雙模式 💪
  • 操作超簡單:選擇武器後自動運作,F9 切換物理模式F10 暫停壓槍,滑鼠側鍵快速切換武器 🔑
  • 重要提醒:物理動態壓槍功能尚未完成,建議使用固定彈道模式;使用任何第三方工具請自行承擔風險 ⚠️


什麼是 CS2 壓槍腳本?



玩 FPS 射擊遊戲最頭痛的就是後座力控制,尤其是《絕對武力2》(Counter-Strike 2)這種競技導向的遊戲,槍口上揚常常讓準心飄到不知道去哪裡。這款由 Lendan 開發的壓槍腳本,用純 C 語言配合 Windows API 撰寫,完全避開了 ImGui 等容易被偵測的外部圖形庫,透過直接控制滑鼠輸入來抵消武器後座力。

與一般外掛不同,這個工具的設計理念是「輕量、透明、可學習」——原始碼完全公開,玩家可以研究壓槍算法的實作邏輯,甚至自行調整參數來符合個人習慣。

核心功能特色



雙模式壓槍系統



  • 固定彈道模式:預設模式,使用內建的 AK-47 與 M4A1-S 彈道數據表,每發子彈的偏移量都經過精算,穩定可靠
  • 物理動態模式:根據剩餘彈量動態調整補償強度(模擬真實物理),但 此功能尚未完成,建議暫時不要使用


完整參數自訂



參數名稱調整範圍功能說明
全局強度(Power)0.1 ~ 2.0整體壓槍補償的強度倍率
垂直靈敏度0.1 ~ 3.0上下方向補償的靈敏度
水平靈敏度0.1 ~ 3.0左右方向補償的靈敏度
物理係數0.001 ~ 0.1物理動態模式的衰減參數


快捷操作設計



  • 滑鼠側鍵前(XBUTTON1):快速切換至 AK-47
  • 滑鼠側鍵後(XBUTTON2):快速切換至 M4A1-S
  • F9:開關物理動態壓槍
  • F10:暫停/恢復壓槓功能
  • 切換至 UI 介面:自動暫停壓槍(安全機制)


技術架構整理



這個專案的程式碼結構相當清晰,適合想學習 Windows 程式設計與遊戲輔助開發的玩家參考:

  • 配置管理系統:使用 `std::recursive_mutex` 實現執行緒安全的配置存取,避免多執行緒競態條件
  • 武器參數結構:`WeaponParams` 命名空間統一定義 AK-47 與 M4A1-S 的彈匣容量、射擊間隔、基礎偏移量
  • 彈道數據表:`ak_fixed` 與 `m4_fixed` 兩個 `std::vector<Node>` 陣列,記錄每發子彈的 X/Y 偏移與時間間隔
  • 人性化移動演算法:`move_human()` 函數將單次大幅移動拆分為 8 個小步驟,並加入隨機抖動(jitter),模擬真人操作軌跡
  • 物理補償公式:`physics_compensation()` 根據剩餘彈量計算動態補償因子,公式為 `factor = 1.0 + k * (總彈量/剩餘彈量 - 1.0)`


關鍵程式碼片段:壓槍執行緒



RecoilThread 主迴圈邏輯



底下是壓槍功能的核心執行緒,負責監控滑鼠左鍵並執行補償移動:

void RecoilThread() {
    while (running_press) {
        // 執行緒安全地讀取配置
        Weapon curWpn = NONE;
        bool isPaused = true, usePhys = false;
        float pwr = 1.0f, hs = 1.0f, vs = 1.0f, k = 0.025f;
        {
            std::lock_guard<std::recursive_mutex> lock(cfg_mutex);
            curWpn = active_wpn;
            isPaused = (cfg.pause <= 0.5f);
            usePhys = cfg.use_physics;
            pwr = cfg.power;
            hs = cfg.horizontal_sensitivity;
            vs = cfg.vertical_sensitivity;
            k = cfg.physics_k;
        }

        // 主要壓槍邏輯
        if (!isPaused && curWpn != NONE) {
            if (GetAsyncKeyState(VK_LBUTTON) & 0x8000) {
                if (usePhys) {
                    // 物理動態模式(未完成)
                    int mag = (curWpn == AK) ? WeaponParams::AK_MAG : WeaponParams::M4_MAG;
                    float bdy = (curWpn == AK) ? WeaponParams::AK_BASE_DY : WeaponParams::M4_BASE_DY;
                    int cyc = (curWpn == AK) ? WeaponParams::AK_CYCLE_MS : WeaponParams::M4_CYCLE_MS;
                    for (int s = 0; s < mag; ++s) {
                        if (!(GetAsyncKeyState(VK_LBUTTON) & 0x8000)) break;
                        float dy = physics_compensation(s, mag, bdy, k);
                        move_human(0.0f, dy, cyc, pwr, hs, vs);
                    }
                }
                else {
                    // 固定彈道模式(推薦使用)
                    const auto& data = (curWpn == AK) ? ak_fixed : m4_fixed;
                    for (const auto& n : data) {
                        if (!(GetAsyncKeyState(VK_LBUTTON) & 0x8000)) break;
                        move_human(n.x, n.y, n.ms, pwr, hs, vs);
                    }
                }
                // 等待放開左鍵
                while (GetAsyncKeyState(VK_LBUTTON) & 0x8000)
                    std::tdis_tdread::sleep_for(std::chrono::milliseconds(2));
            }
        }
        std::tdis_tdread::sleep_for(std::chrono::milliseconds(1));
    }
}


這段程式碼展示了幾個重要設計:
  • 使用 `std::lock_guard` 配合 `recursive_mutex` 確保配置讀取的原子性
  • 透過 `GetAsyncKeyState(VK_LBUTTON)` 即時檢測滑鼠狀態
  • 雙模式分支:物理模式使用動態計算,固定模式直接查表
  • 每發子彈間的時間控制透過 `std::tdis_tdread::sleep_for` 實現


自訂 UI 元件實作



專案沒有依賴外部 GUI 框架,而是直接用 Windows API 實作了兩個自訂控制項:

  • SliderEx 滑桿類別:支援即時拖曳調整,數值範圍可設,回呼函數即時更新配置
  • CheckBoxEx 核取方塊:自繪樣式,支援狀態切換回呼


這種設計雖然增加了程式碼量,但完全避免了 ImGui 等函式庫可能帶來的 VAC 偵測風險。

編譯與使用方式



環境需求



  • Windows 10/11 作業系統
  • Visual Studio 2019 或更新版本(需支援 C++11)
  • Windows SDK


編譯步驟



  • 建立新的 Windows 桌面應用程式專案
  • 將原始碼貼入主要 .cpp 檔案
  • 確定專案設定為「多執行緒 DLL」執行階段
  • 編譯為 Release x64 版本


執行方式



  • 執行程式後會顯示深色主題的設定視窗
  • 點選「AK」或「M4」選擇武器(「無」為關閉)
  • 調整靈敏度參數以配合個人滑鼠 DPI
  • 進入遊戲,按住滑鼠左鍵射擊即可自動壓槍
  • 需要暫停時按 F10 或點選「暫停壓槍」



👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app



檔案下載點



執行檔與原始碼



底下提供編譯完成的執行檔與完整原始碼,供學習與研究使用:



所有站內附件皆會附上安全掃描報告
請會員查看純淨度百分比後判斷使用



相關檔案須知:
取得檔案前,請先詳細閱讀文章內容
避免不必要錯誤與誤會發生。
也可多參考文章討論樓層內容
了解附件檔案相關討論資訊。





檔案資訊
  • 檔案名稱:recoil control CS2 MorenLendan
  • 檔案大小:71.5 KB
  • 格式:Windows 執行檔(.exe)
  • 原始碼:完整 C++ 原始碼已於上方提供


常見問題Q&A



Q:這個工具會被 VAC 偵測到嗎?

A:開發者刻意避免使用 ImGui 等常見外部函式庫,並採用 Windows 原生 API 實作,理論上降低了被特徵碼偵測的風險。但任何第三方工具都無法保證 100% 安全,使用請自行承擔帳號風險。

Q:為什麼物理動態壓槍不能用?

A:根據原作者說明,物理動態功能「not yet complete」(尚未完成),建議使用固定彈道模式即可。固定模式已經過充分測試,穩定性較高。

Q:如何調整參數才能壓好 AK-47?

A:建議從預設值(Power 1.0、垂直/水平靈敏度 1.0)開始,進入遊戲的練習場對著牆壁掃射觀察彈孔分佈。如果彈孔持續上飄,就提高垂直靈敏度;如果左右飄散,就調整水平靈敏度。每次只調整一個參數,逐步微調。

Q:這個工具可以用在其他武器嗎?

A:目前版本只內建 AK-47 與 M4A1-S 的彈道數據。若要支援其他武器,需要自行修改原始碼中的 `ak_fixed` 或 `m4_fixed` 陣列,加入新武器的彈道偏移數據。

Q:為什麼有時候壓槍會突然停止?

A:這是設計上的安全機制——當你切換回工具的 UI 視窗時,壓槍會自動暫停,防止在非遊戲視窗中意外觸發。回到遊戲後按 F10 或取消「暫停壓槍」即可恢復。

Q:原始碼中的「水平已反轉」是什麼意思?

A:在 `ak_fixed` 陣列的註解中提到「水平已反轉」,這表示 AK-47 的彈道數據經過修正,X 軸(水平)偏移量的正負號與原始數據相反,以符合實際遊戲中的後座力方向。





大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單