引用 | 编辑
弑血
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
|