YimMenu Lua 命令系统指南:command.call 调用与全部 210 个命令详解
YimMenu Lua 命令系统指南command.call 调用与全部 210 个命令详解【免费下载链接】YimMenuYimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience.项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu本文档系统讲解 YimMenu 的 Lua 命令Commands系统如何通过 Lua 脚本调用菜单内置命令、command.call与command.call_player的参数规则、命令名与参数数量的对应关系并完整列出当前菜单注册的全部 210 个命令及其用途。读完本文后你可以在自己的 Lua 脚本中直接驱动 YimMenu 的踢人、传送、刷车、武器、载具操控、世界特效等各类功能并理解这些调用在 C 后端是如何被解析与执行的。一、命令系统总览YimMenu 内置了一套统一的命令Command机制菜单里几乎每一个功能从给予武器到生成载具都对应一条命名命令。这套机制不仅驱动菜单 UI 与聊天框命令解析也被完整暴露给了 Lua 脚本环境形成command表。docs/lua/commands.md是当前命令的权威清单它统计了210 条命令每条命令都记录了命令名command name、功能描述description和参数个数Arg Count。文档中大量描述以XXX_DESC这样的键名呈现例如BREAKUP_KICK_DESC、CLEAR_WANTED_LEVEL_DESC这些是本地化翻译键真正展示给用户的文本由翻译服务在运行时解析源码中注册命令时也直接使用这些键。从源码看命令注册发生在 command.cpp 的构造函数中每条命令通过g_commands[rage::joaat(name)] this;以JOAAT 哈希为键注册进全局命令表g_commands。也就是说Lua 侧传入的命令名字符串会先被哈希再在表中查找对应命令对象因此命令名是大小写不敏感、且必须与注册名完全一致例如spawn、kill、bring。命令的两个大类普通命令command作用于本地玩家或全局例如heal自愈、spawn生成载具、waypointtp传送到路标点。玩家命令player_command以某个玩家为作用对象例如kill击杀、explode爆炸。玩家命令在注册时会自动生成一个xxxall的全体版本见 player_command.cpp把命令施加到会话中所有玩家身上这就是为什么文档中大量出现kill / killall、explode / explodeall这种成对命令。参数个数Arg Count的含义Arg Count表示该命令执行时需要的参数数量Arg Count: 0—— 无参数命令调用时不需要传参数表或传空表Arg Count: 1—— 需要一个参数玩家命令通常传玩家索引普通命令传具体数值/模型名Arg Count: 2—— 需要两个参数例如wanted需要玩家索引 通缉等级。对于玩家命令第一个参数始终是玩家索引player indexxxxall变体因为目标已隐含为全体玩家参数个数通常比原命令少 1例如apartmenttp为 2apartmenttpall为 1。这一点在 player_command.hpp 的player_all_component与 player_command.cpp 中体现all版本不占用玩家的那个参数位。二、Lua 调用方式command.call 与 command.call_playerdocs/lua/commands.md给出的两个最核心用法示例command.call(spawn, {joaat(adder)}) command.call_player(somePlayerIndex, spawn, {joaat(adder)})对应到 Lua API详见 command 表文档command表共暴露 3 个函数1.command.call(command_name, _args)调用一条普通命令作用于本地玩家/全局。参数类型说明command_namestring要调用的命令名如spawn、heal_argstable可选命令参数列表无参数命令可省略Lua 绑定实现见 command.cppLua 绑定参数表会通过convert_sequenceuint64_t定义于 network.hpp将 Lua 序列逐项转为 C 的uint64_t向量转成command_arguments然后以rage::joaat(command_name)为键查表并执行。参数必须能无损转换为 64 位整数——模型哈希、玩家索引这类数值型参数直接传即可字符串参数如载具名通常要先用joaat()转成哈希。2.command.call_player(player_idx, command_name, _args)在指定玩家身上执行一条命令本质上是调用player_command。参数类型说明player_idxinteger目标玩家的索引游戏会话中的 player indexcommand_namestring玩家命令名如kill、bring_argstable可选除玩家外的其余参数实现见 command.cppLua 绑定它通过big::player_command::get(rage::joaat(command_name))查玩家命令表g_player_commands再经g_player_service-get_by_id(player_idx)解析玩家对象最后调用command-call(player, args)。注意call_player传入的_args不包含玩家索引——玩家索引是单独作为第一个参数传入的。3.command.get_all_player_command_names()返回当前全部玩家命令名的列表tableinteger, string可用于运行时枚举、调试或构建自己的脚本菜单实现见 command.cppLua 绑定。三、命令调用的底层执行链路理解底层执行链路有助于写出正确的调用代码参数组装Lua 表 →convert_sequenceuint64_t→command_arguments内部以std::vectoruint64_t存储见 command_arguments.hpp。command_arguments有ArgumentLimit约束每个参数占用不超过 8 字节。命令查找command::get(rage::joaat(command_name))在g_commands全局表中按哈希查找command.cpp。参数个数校验command::call首先检查args.size() ! m_num_args不一致时报错 Command xxx called with the wrong number of arguments. Expected N, got Mcommand.cpp。这正是文档中Arg Count字段的意义——传错参数个数调用会直接失败。权限校验调用方的command_context访问级别必须不低于命令要求的CommandAccessLevel否则报 You do not have sufficient permissionscommand.cpp。Fiber 池执行绝大多数命令通过g_fiber_pool-queue_job(...)放入游戏 fiber 池异步执行这是 GTA V 脚本环境要求fiber_pool false的命令则同步执行command.cpp。对于玩家命令还有一层特殊逻辑player_command::execute会把第一个参数当作玩家索引先在自身玩家self::id中匹配再在g_player_service-players()中查找对应玩家找不到时报 Tried to execute command xxx, but a player with index N was not foundplayer_command.cpp。同时parse_args支持当前选中玩家、!最近玩家、#最近好友、me/self自己等玩家代理语法command.hpp不过这些代理主要用于文本命令解析Lua 侧通过call_player直接传索引即可。注意Lua 绑定中call与call_player走的是command_arguments直接调用路径command-call(args)/command-call(player, args)会执行上述参数个数与权限校验但不会走parse_args的字符串解析流程——因此 Lua 侧必须自行完成参数的类型转换如joaat()。四、命令类别速览docs/lua/commands.md的 210 条命令可以归纳为以下几大类。理解分类有助于快速定位你需要的命令名。1. 玩家攻击 / 踢出类Player Kicks命令描述Arg Countbreakup/breakupcheating发送 breakup 踢出可附加作弊理由1 / 0desync/desyncall使用投诉踢出Desync1 / 0endkickEnd kick1hostkick仅房主可用的 Host kick1oomkick内存耗尽式踢出1shkick脚本房主踢出Script Host kick12. 玩家对敌 / 恶作剧类Toxic Troll命令描述Arg Countkill/killall击杀玩家1 / 0explode/explodeall让玩家爆炸1 / 0ragdoll/ragdollall让玩家倒地1 / 0bring/bringall把玩家传送到你面前1 / 0mission/missionall强制进入任务1 / 0fakeban/fakebanall伪造封禁消息1 / 0sext/sextall发送骚扰短信1 / 0ceokick/ceokickallCEO 踢出1 / 0ceoraid/ceoraidall触发 CEO 袭击1 / 0bounty/bountyall悬赏1 / 0anonbounty匿名悬赏0beast/beastall变成野兽1 / 0playertp传送到玩家位置1playervehtp传送到玩家载具内1copymodel复制玩家外观模型1copyoutfit复制玩家套装13. 玩家载具操控类Player Vehicle命令描述Arg Countboostveh/boostvehall让玩家载具高速前冲1 / 0burstwheels/burstwheelsall扎破轮胎1 / 0closedoors/opendoors及 all 版关闭 / 打开全部车门1 / 0lockveh/unlockveh及 all 版锁定 / 解锁车门1 / 0downgradeveh/upgradeveh及 all 版移除 / 加满升级1 / 0flip180/flip180all把载具翻转 180°1 / 0flyingveh/flyingvehall把载具抛向天空1 / 0killengine/killengineall打坏引擎1 / 0rcplayer远程接管玩家载具建议先观战目标1smashwindows/smashwindowsall击碎全部车窗1 / 0stopveh/stopvehall停下玩家载具1 / 0blacktint/blacktintall车窗贴黑膜1 / 04. 帮助玩家类Self / Player Help命令描述Arg Countclearwanted/clearwantedall清除通缉等级1 / 0giveammo/giveammoall给予弹药1 / 0givearmor/givearmorall给予护甲1 / 0givehealth/givehealthall给予生命1 / 0giveweaps/giveweapsall给予全部武器1 / 0remweaps/remweapsall移除全部武器1 / 0joinceo加入 CEO1enterint进入室内1intkick/intkickall从室内踢出1 / 05. 传送类Teleport普通命令命令描述Arg Countapartmenttp/apartmenttpall传送到公寓2 参数玩家 公寓索引2 / 1interiortp/interiortpall传送到室内2 / 1warehousetp/warehousetpall传送到仓库2 / 1wanted设置通缉等级玩家 等级2waypointtp传送到路标点0pvtp/bringpv/lastvehtp/objectivetp传入个人载具 / 把 PV 拉到身边 / 传入最后驾驶的载具 / 传到任务目标06. 刷车与个人载具类Spawning Personal Vehicle命令描述Arg Countspawn按指定模型生成载具参数为模型哈希如joaat(adder)1spawnmaxed生成的载具是否满配0spawnin生成后是否把玩家放入车内0repairpv修复当前个人载具0boatpickup请求船只接送0ballisticarmor请求防弹装备含防弹衣与迷你机枪07. 自我增强 / 循环功能类Self Looped Misc无参数Arg Count: 0的典型命令fillammo补满弹药、fillsnacks补满零食与护甲、heal自愈、clean清除湿身与贴花、clearwantedlvl清除自身通缉、beastjump野兽跳、superjump超级跳跃、skipcutscene跳过过场、suicide自杀、fastquit秒退游戏、hudcolor覆盖 HUD 颜色、vcaudio通过语音聊天播放项目目录下 mono 16bit 16kHz PCM 格式的audio.wav。循环类开关命令包括cleanloop保持清洁、fastrespawn快速重生、freecam自由视角、godmode无敌、healthregen生命回复、invis/localvis隐身、mobileradio手机电台、nocollision无碰撞、noragdoll不倒地、walkunder水下行走、noclip穿墙飞行、otr雷达隐形、ptfx粒子特效、fastrun超级奔跑、superman超人模式、infoxy无限氧气、autotptowp设置路标点即自动传送、nophone屏蔽手机来电、noidlekick防挂机踢出。8. 载具功能类Vehicle普通命令命令描述Arg Countblockhoming阻止导弹锁定你的载具0mutesiren静音警笛0driveonwater/driveunder水上行驶 / 水下行驶0vehiclefly陆地载具飞行0hornboost鸣笛加速0instantbrake急刹即停0invisveh/localinvisveh载具隐身 / 仅对自己可见0keepengine离开载具后引擎保持运转0keeponground载具始终保持四轮着地0keepfixed载具免于磨损0vehnocollision载具无碰撞全局同时影响 Ped0rainbowpri/rainbowsec/rainbowneons/rainbowsmoke主色 / 副色 / 霓虹 / 胎烟彩虹特效0rainbowspeed彩虹特效速度1seatbelt安全带防止甩出车外0speedometer/speedometergears/speedometerleftside速度表开关 / 显示档位 / 左对齐0turnsignals转向灯0vehallweapons车内使用全部武器0vehgodmode载具无敌0vehjump拉手刹跳车09. 武器与瞄准类Weapons Aimbot无参数命令aimbot自动锁定击杀、smoothing锁定平滑度、aimatplayer/aimatnpc/aimatpolice/aimatenemy分别瞄准玩家 / NPC / 警察 / 敌人、alwaysfullammo每帧补弹、incrdamage自定义伤害倍率、infammo无限弹药、infclip无需换弹、infrange无限射程、norecoil无后坐力、nospread无散布、rapidfire快速连发、triggerbot扳机机器人、resetweaps重置武器配装。10. 世界与环境类World命令描述Arg Countblackhole生成吸收周围 Ped 与载具的黑洞0blackholeincpeds/blackholeincvehs黑洞是否包含 Ped / 载具0autodisarm缴械周围行人0riotmode周围 Ped 互相攻击0highalert周围 Ped 高度警戒0pedsignore周围 Ped 无视你0pedrush周围 Ped 匆忙行动0pedrain天降 Ped0vehiclerain天降载具小心被砸中0timeoverride/weatheroverride本地时间 / 天气覆盖011. 小游戏与活动类Minigames Activities无参数命令tutorial强制播放教学过场、golf高尔夫、flightschool飞行学校、darts飞镖、badlands街机《Badlands Revenge II》、spacemonkey《Space Monkey 3》、wizard《The Wizards Ruin》、qub3d《Qub3D》、camhedz《Camhedz》。这些命令都有对应的xxxall全体版本。12. 系统 / 菜单功能类System命令描述Arg Countorbitaldrone开关轨道无人机0player_db_auto_update_states每 5 分钟自动更新玩家数据库在线状态0vehiclecontrol开关载具控制器0cmdexecutor开关命令执行器窗口0五、Lua 实战示例结合上述命令分类下面给出几个可直接运行的 Lua 脚本片段。示例 1给自己刷一辆满配阿迪尔command.call(spawn, {joaat(adder)}) command.call(spawnmaxed) -- 生成的载具自动满配 command.call(spawnin) -- 生成后自动坐进驾驶座spawn命令会先通过g_gta_data_service校验模型哈希是否存在于游戏数据再异步请求模型并生成见 spawn_vehicle.cpp。需要注意spawnmaxed与spawnin是布尔开关命令执行一次即翻转状态。示例 2对指定玩家执行操作-- 对 3 号玩家击杀 爆炸 传送到身边 command.call_player(3, kill, {}) command.call_player(3, explode, {}) command.call_player(3, bring, {})call_player的第一个参数是玩家索引可在游戏内玩家列表查看对应索引。_args在无额外参数时可传{}或直接省略。示例 3向全体玩家广播恶作剧command.call(explodeall) -- 全房间爆炸 command.call(ragdollall) -- 全房间倒地 command.call(fakebanall) -- 全房间伪造封禁提示示例 4多参数命令的正确用法-- 把 2 号玩家的通缉等级设为 5 command.call_player(2, wanted, {5}) -- 把 1 号玩家传送到阿彻之家风格公寓第二参数为公寓索引 command.call_player(1, apartmenttp, {0}) -- 枚举当前所有玩家命令名 local names command.get_all_player_command_names() for _, name in ipairs(names) do log.info(name) end注意参数个数必须与文档中的Arg Count一致wanted的 Arg Count 是 2玩家索引由call_player提供Lua 侧只需再传通缉等级这一参数。若参数个数不匹配命令会直接报错而不执行。六、常见问题与注意事项参数个数必须精确匹配command.call走command::call(command_arguments, ctx)路径会在执行前校验参数个数command.cpp。call_player走 player_command.cpp 的call(player, args)校验的是args.size() ! m_num_args - 1因为玩家索引单独传入。玩家命令与普通命令分开存储call查g_commandscall_player查g_player_commandsplayer_command.hpp。若用call调用一个玩家命令查表结果可能为空而静默失败——务必按命令类型选用正确的 API。字符串参数先转哈希Lua 绑定内部把参数转为uint64_t字符串类参数如载具模型应先用joaat()转换。描述为翻译键文档中XXX_DESC形式的描述在游戏内会被翻译服务替换为本地化文本command.hpp不必把它们当作字面描述。毒性与攻击类命令有权限门槛get_access_level()返回CommandAccessLevel如spawn命令为FRIENDLY见 spawn_vehicle.cppLua 脚本以当前菜单上下文调用时会受访问级别约束。七、延伸阅读Lua 命令表 API 完整说明call、call_player、get_all_player_command_names的签名与返回值。Lua 绑定实现命令表在 Lua 环境中的注册与参数转换细节。命令基础类 与 玩家命令类命令注册、参数解析、玩家代理语法的完整定义。命令参数容器command_arguments的类型安全存取实现。命令注册示例以spawn命令为例演示如何定义、注册一条真实命令。本文所有命令名、参数个数均以docs/lua/commands.md与当前仓库源码为准不同版本命令数量与参数可能变化使用前可再次核对文档。【免费下载链接】YimMenuYimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience.项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考