引用 | 編輯
弒血
2020-11-03 04:01 |
樓主
▼ |
||
x1
這邊我這用一個方法展示,以下是測試展示先創立需要的腳本(inc) #include <amxmodx> #include <engine> #define PLUGIN "插件名稱" #define VERSION "插件版本" #define AUTHOR "創作者名稱" // 創立一個廣域陣列,1-32給玩家的變數空間 new bool:g_switch[33]; public plugin_init() { // 註冊普通插件的流程 register_plugin(PLUGIN, VERSION, AUTHOR); //註冊用一個cmd呼叫 register_clcmd("test", "cmd_test"); } public cmd_test(id) { if (!g_switch[id]) //判斷如果是false~ g_switch[id] = true; //開啟 else g_switch[id] = false; //關閉 } // engine.inc 內專用的 client_PostThink (客戶端思考),警告(思考速度異常快) // 主動偷吃效能類型 public client_PostThink(id) { //第一關卡 //判斷不是活著返回,但是一值回傳給is_user_alive的native檢測,amxmodx的inc 內 is_user_alive 一直被超高速呼叫 if (!is_user_alive(id)) return; //第二關卡 //開關如果是關閉就返回,如果是is_user_alive判斷是活著才會拼命呼叫g_switch if (!g_switch[id]) return; //第三關卡 client_print(id, print_center, ":O"); } // 不主動偷吃效能類型 public client_PostThink(id) { //第一關卡 //開關如果是關閉就返回,但是一值回傳給g_switch檢測,由於是使用自訂的陣列檢測,就不用透過回傳給inc去特意判斷 if (!g_switch[id]) return; //第二關卡 //判斷不是活著返回,如果g_switch被開啟後才會拼命呼叫native~, if (!is_user_alive(id)) return; //第三關卡 client_print(id, print_center, ":D"); } 第一個是在不吃覺得情況下,被native的is_user_alive偷吃掉很多記憶體...放在思考更明顯 第二個是用自定義的g_switch檢測,唯有在開啟後才會被native的is_user_alive偷吃掉很多記憶體.. 教學完畢~ 可以去檢查 你自己的插件 有沒有一些在沒有特別注意的情況下被偷吃掉的native....尤其是放在連續使用的function(函數)的 x4
|