CS起源
暫停方法:sv_cheats 1 然后 bot_stop 1
游戲分辯論:4:3,1024x768
打開注意:游戲與輔助都要管理員身份打開
自定義資料型別表
.資料型別 寬度高度資料
.成員 高度, 整數型, , , 高度
.成員 寬度, 整數型, , , 寬度
.資料型別 三維坐標
.成員 x, 小數型
.成員 y, 小數型
.成員 z, 小數型
.資料型別 二維坐標
.成員 x, 小數型
.成員 y, 小數型
全域變數表
.全域變數 記憶體操作類, 類_記憶體
主程式(界面就一個按鈕)
.程式集 視窗程式集_啟動視窗
.程式集變數 hwnd, 整數型
.程式集變數 CS矩形資訊, 精易_矩形
.程式集變數 CS視窗高度寬度, 寬度高度資料
.程式集變數 行程PID, 整數型
.程式集變數 服務類模塊, 整數型
.程式集變數 引擎類模塊, 整數型
.程式集變數 客戶端類模塊, 整數型
.程式集變數 CS句柄, 整數型
.子程式 _按鈕1_被單擊
解決黑屏 ()
CS句柄 = 視窗_取句柄 (, , “Valve001”, “Counter-Strike Source”)
CS矩形資訊 = 視窗_取客戶區矩形 (CS句柄)
CS視窗高度寬度.高度 = CS矩形資訊.底邊 - CS矩形資訊.頂邊
CS視窗高度寬度.寬度 = CS矩形資訊.右邊 - CS矩形資訊.左邊
行程PID = 行程_名取ID (“hl2.exe”, )
服務類模塊 = 追風_取模塊句柄 (行程PID, “server.dll”)
引擎類模塊 = 追風_取模塊句柄 (行程PID, “engine.dll”)
客戶端類模塊 = 追風_取模塊句柄 (行程PID, “client.dll”)
' 除錯輸出 (服務類模塊)
' 除錯輸出 (CS視窗高度寬度.寬度, CS視窗高度寬度.高度)
視窗創建 (CS視窗高度寬度.寬度, CS視窗高度寬度.高度, &視窗創建回呼, hwnd)
訊息回圈 ()
' 除錯輸出 (hwnd)
.子程式 視窗創建回呼
.區域變數 本人坐標, 三維坐標
.區域變數 敵人坐標, 三維坐標
.區域變數 高度一半, 小數型
.區域變數 FOV, 小數型
.區域變數 滑鼠角度, 二維坐標
.區域變數 敵我坐標差, 三維坐標
.區域變數 敵人與x軸線角度, 小數型
.區域變數 敵人與我滑鼠之間的角度, 小數型
.區域變數 敵我二維距離, 小數型
.區域變數 鄰邊, 小數型
.區域變數 螢屏坐標x, 小數型
.區域變數 對邊, 小數型
.區域變數 滑鼠Y角度, 小數型
.區域變數 我滑鼠與敵人之間的滑鼠Y角度, 小數型
.區域變數 對邊y, 小數型
.區域變數 螢屏坐標y, 整數型
.區域變數 要減少的值, 小數型
.區域變數 方框大小比值, 雙精度小數型
.區域變數 人數, 整數型
.區域變數 i, 整數型
.區域變數 敵人血量, 整數型
.區域變數 陣營, 整數型
.區域變數 敵人陣營, 整數型
.區域變數 方框顏色, 整數型
.區域變數 zhys, 整數型
.區域變數 方框資料, 方框資料
重繪視窗 ()
高度一半 = CS視窗高度寬度.高度 ÷ 2
人數 = 記憶體.讀整數 (行程PID, 引擎類模塊 + 進制_十六到十 (“5D29BC”)) - 1
.計次回圈首 (人數, i)
本人坐標 = 獲取本人坐標 (陣營)
' 繪制文本 (“本人x:” + 到文本 (本人坐標.x), 0, 高度一半 + 0, 轉換顏色 (#紅色, ))
' 繪制文本 (“本人y:” + 到文本 (本人坐標.y), 0, 高度一半 + 15, 轉換顏色 (#紅色, ))
' 繪制文本 (“本人z:” + 到文本 (本人坐標.z), 0, 高度一半 + 30, 轉換顏色 (#紅色, ))
敵人坐標 = 獲取敵人坐標 (i, 敵人血量, 敵人陣營)
.如果 (敵人陣營 = 陣營)
方框顏色 = 轉換顏色 (#綠色, )
' ’這里是隊友
' 到回圈尾 ()
.否則
方框顏色 = 轉換顏色 (#紅色, )
.如果結束
.如果真 (敵人血量 < 2)
到回圈尾 ()
.如果真結束
' 繪制文本 (“敵人x:” + 到文本 (敵人坐標.x), 0, 高度一半 + 45, 轉換顏色 (#紅色, ))
' 繪制文本 (“敵人y:” + 到文本 (敵人坐標.y), 0, 高度一半 + 60, 轉換顏色 (#紅色, ))
' 繪制文本 (“敵人z:” + 到文本 (敵人坐標.z), 0, 高度一半 + 75, 轉換顏色 (#紅色, ))
FOV = 獲取FOV ()
' 繪制文本 (“FOV :” + 到文本 (FOV), 0, 高度一半 + 90, 轉換顏色 (#紅色, ))
滑鼠角度 = 獲取滑鼠角度 ()
' 繪制文本 (“滑鼠角度x:” + 到文本 (滑鼠角度.x), 0, 高度一半 + 105, 轉換顏色 (#紅色, ))
' 繪制文本 (“滑鼠角度y:” + 到文本 (滑鼠角度.y), 0, 高度一半 + 120, 轉換顏色 (#紅色, ))
敵我坐標差.x = 敵人坐標.x - 本人坐標.x
敵我坐標差.y = 敵人坐標.y - 本人坐標.y
敵我坐標差.z = 敵人坐標.z - 本人坐標.z
敵我二維距離 = 求平方根 (求次方 (敵我坐標差.x, 2) + 求次方 (敵我坐標差.y, 2))
' ’先破而后立 弧度/#pi*1080 角度/180*#pi
.判斷開始 (敵我坐標差.x > 0 且 敵我坐標差.y > 0)
' 繪制文本 (“第一象限” + 到文本 (滑鼠角度.y), 0, 高度一半 + 200, 轉換顏色 (#紅色, ))
敵人與x軸線角度 = 求反正切 (取絕對值 (敵我坐標差.y) ÷ 取絕對值 (敵我坐標差.x)) ÷ #pi × 180
.判斷 (敵我坐標差.x < 0 且 敵我坐標差.y > 0)
' 繪制文本 (“第二象限” + 到文本 (滑鼠角度.y), 0, 高度一半 + 200, 轉換顏色 (#紅色, ))
敵人與x軸線角度 = 求反正切 (取絕對值 (敵我坐標差.x) ÷ 取絕對值 (敵我坐標差.y)) ÷ #pi × 180 + 90
.判斷 (敵我坐標差.x < 0 且 敵我坐標差.y < 0)
' 繪制文本 (“第三象限” + 到文本 (滑鼠角度.y), 0, 高度一半 + 200, 轉換顏色 (#紅色, ))
敵人與x軸線角度 = 求反正切 (取絕對值 (敵我坐標差.y) ÷ 取絕對值 (敵我坐標差.x)) ÷ #pi × 180 + 180
.判斷 (敵我坐標差.x > 0 且 敵我坐標差.y < 0)
' 繪制文本 (“第四象限” + 到文本 (滑鼠角度.y), 0, 高度一半 + 200, 轉換顏色 (#紅色, ))
敵人與x軸線角度 = 求反正切 (取絕對值 (敵我坐標差.x) ÷ 取絕對值 (敵我坐標差.y)) ÷ #pi × 180 + 270
.默認
.判斷結束
' 繪制文本 (“敵人與x軸線角度:” + 到文本 (敵人與x軸線角度), 0, 高度一半 + 135, 轉換顏色 (#紅色, ))
敵人與我滑鼠之間的角度 = 滑鼠角度.x - 敵人與x軸線角度
.如果真 (敵人與我滑鼠之間的角度 < -180)
敵人與我滑鼠之間的角度 = 360 - 敵人與x軸線角度 + 滑鼠角度.x
.如果真結束
.如果真 (敵人與我滑鼠之間的角度 > 180)
敵人與我滑鼠之間的角度 = 360 - 滑鼠角度.x + 敵人與x軸線角度
.如果真 (敵人與我滑鼠之間的角度 > 0)
敵人與我滑鼠之間的角度 = 敵人與我滑鼠之間的角度 × -1
.如果真結束
.如果真結束
.如果真 (取絕對值 (敵人與我滑鼠之間的角度) > 45)
到回圈尾 ()
.如果真結束
' 繪制文本 (“敵人與我滑鼠之間的角度:” + 到文本 (敵人與我滑鼠之間的角度), 0, 高度一半 + 150, 轉換顏色 (#紅色, ))
對邊 = 求正弦 (敵人與我滑鼠之間的角度 ÷ 180 × #pi) × 敵我二維距離
鄰邊 = 求余弦 (敵人與我滑鼠之間的角度 ÷ 180 × #pi) × 敵我二維距離
要減少的值 = 42 ÷ (敵我二維距離 ÷ 200)
螢屏坐標x = 512 + 對邊 ÷ 鄰邊 × 512 - 要減少的值
對邊y = 求正切 (滑鼠角度.y ÷ 180 × #pi) × 敵我二維距離 + 敵我坐標差.z
螢屏坐標y = 384 - 對邊y × 512 ÷ 敵我二維距離
我滑鼠與敵人之間的滑鼠Y角度 = (取絕對值 (求反正切 ((本人坐標.z - 敵人坐標.z) ÷ 敵我二維距離) ÷ #pi × 180) + 滑鼠角度.y) × -1
滑鼠Y角度 = 取絕對值 (求反正切 ((本人坐標.z - 敵人坐標.z) ÷ 敵我二維距離) ÷ #pi × 180)
' 繪制文本 (“我滑鼠與敵人之間的滑鼠Y角度:” + 到文本 (我滑鼠與敵人之間的滑鼠Y角度), 0, 高度一半 + 175, 轉換顏色 (#紅色, ))
' 繪制文本 (“敵我二維距離:” + 到文本 (敵我二維距離), 0, 高度一半 + 220, 轉換顏色 (#紅色, ))
' 記憶體操作類.寫小數 (行程PID, 引擎類模塊 + 進制_十六到十 (“4622CC”) + 4, 敵人與x軸線角度)
' 記憶體操作類.寫小數 (行程PID, 引擎類模塊 + 進制_十六到十 (“4622CC”), 滑鼠Y角度)
方框大小比值 = 178 ÷ 敵我二維距離
繪制矩形2 (螢屏坐標x, 螢屏坐標y, 100 × 方框大小比值, 200 × 方框大小比值, 1, 方框顏色)
方框資料.左邊 = 螢屏坐標x
方框資料.頂邊 = 螢屏坐標y
方框資料.寬度 = 100 × 方框大小比值
方框資料.高度 = 200 × 方框大小比值
橫向血條 (方框資料, 敵人血量, 轉換顏色 (#紅色, ))
.計次回圈尾 ()
.子程式 獲取FOV, 小數型
回傳 (記憶體操作類.讀小數 (行程PID, 客戶端類模塊 + 進制_十六到十 (“5046F0”)))
.子程式 獲取滑鼠角度, 二維坐標
.區域變數 臨時變數, 二維坐標
臨時變數.x = 記憶體操作類.讀小數 (行程PID, 引擎類模塊 + 進制_十六到十 (“4622CC”) + 4)
.如果真 (臨時變數.x < 0)
臨時變數.x = 臨時變數.x + 360
.如果真結束
臨時變數.y = 記憶體操作類.讀小數 (行程PID, 引擎類模塊 + 進制_十六到十 (“4622CC”))
回傳 (臨時變數)
.子程式 重繪視窗
CS矩形資訊 = 視窗_取客戶區矩形 (CS句柄)
移動視窗 (hwnd, CS矩形資訊.左邊, CS矩形資訊.頂邊, CS視窗高度寬度.寬度, CS視窗高度寬度.高度, 真)
視窗_置頂 (hwnd)
.子程式 獲取本人坐標, 三維坐標
.引數 陣營, 整數型, 參考
.區域變數 臨時變數, 三維坐標
.區域變數 本人物件地址, 整數型
本人物件地址 = 記憶體操作類.讀整數 (行程PID, 服務類模塊 + 進制_十六到十 (“4F2FEC”))
臨時變數.x = 記憶體操作類.讀小數 (行程PID, 本人物件地址 + 進制_十六到十 (“280”))
臨時變數.y = 記憶體操作類.讀小數 (行程PID, 本人物件地址 + 進制_十六到十 (“284”))
臨時變數.z = 記憶體操作類.讀小數 (行程PID, 本人物件地址 + 進制_十六到十 (“288”))
陣營 = 記憶體操作類.讀整數 (行程PID, 本人物件地址 + 進制_十六到十 (“1F4”))
回傳 (臨時變數)
.子程式 獲取敵人坐標, 三維坐標
.引數 第幾個, 整數型
.引數 血量, 整數型, 參考
.引數 陣營, 整數型, 參考
.區域變數 臨時變數, 三維坐標
.區域變數 本人物件地址, 整數型
本人物件地址 = 記憶體操作類.讀整數 (行程PID, 服務類模塊 + 進制_十六到十 (“4F2FEC”) + 16 × 第幾個)
臨時變數.x = 記憶體操作類.讀小數 (行程PID, 本人物件地址 + 進制_十六到十 (“280”))
臨時變數.y = 記憶體操作類.讀小數 (行程PID, 本人物件地址 + 進制_十六到十 (“284”))
臨時變數.z = 記憶體操作類.讀小數 (行程PID, 本人物件地址 + 進制_十六到十 (“288”))
血量 = 記憶體操作類.讀整數 (行程PID, 本人物件地址 + 進制_十六到十 (“E4”))
陣營 = 記憶體操作類.讀整數 (行程PID, 本人物件地址 + 進制_十六到十 (“1F4”))
回傳 (臨時變數)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/266292.html
標籤:其他
上一篇:(干貨)掃雷游戲的實作
