本帖最后由 2bman 于 2021-12-8 03:13 编辑
因为没在 cgmsv 的文档中发现组队选择框功能,想添加某些特殊功能的药水或者道具,就必须要自己写选择框。
然而 cgmsv 的选择框也有许多限制,比如自定义的数据只能通过 NLG.ShowWindowTalked 中的 SeqNo 参数传递,不是很直观也很不好用。
所以我费了一点脑细胞,直接写了一个封装库,将个人选择、团队选择功能集合起来,通过全局变量和自定义回调函数来实现了对于选择框的扩展。
具体用法很简单:
使用 playerSelect(player,npc,luaFile,funcName,pars) 这个函数即可打开个人选择框,可以选择自己与宠物。
使用 teamSelect(player,npc,luaFile,funcName,pars) 这个函数即可打开组队选择框,可以选择队伍中的所有玩家,也可以选择具体的角色或者宠物。
最后,你还可以设定回调函数与自定义参数,当激活你的回调函数时,自定义参数 pars 也会被传递给你的回调函数。
一个调用代码,
- local player = 当前角色索引
- teamSelect(player,0,nil,"testcallback", {player=player,solt=5} )
复制代码
回调函数示例
- function testcallback(player,target,ispet,pars)
- NLG.SystemMessage(player, "player = "..player.." target = "..target.." ispet = ".. ispet)
- if pars then
- NLG.SystemMessage(player, "pars.player = ".. pars.player .." pars.solt = ".. pars.solt)
- end
- end
复制代码
使用效果
补充内容 (2021-12-8 05:54):
发现BUG,请将 local function selectTarget(player,target,isPet) 前面的 local 删除。 |