本帖最后由 altf4 于 2019-8-28 23:08 编辑
那就奇怪了, 偶的机器环境问题吗?Win10、i3/8G 老机器了
排列问题我没改表,就添加一些数字;-
- local teleteportList = {
- ["16_出生地"]={
- --Alliance 联盟
- {"人类出生地", 0, -8949.95, -132.493, 83.5312, 0,TEAM_ALLIANCE},
- {"矮人出生地", 0, -6240.32, 331.033, 382.758, 6.1,TEAM_ALLIANCE},
- {"侏儒出生地", 0, -6240, 331, 383, 0,TEAM_ALLIANCE},
-
- {"暗夜精灵出生地", 1, 10311.3, 832.463, 1326.41, 5.6,TEAM_ALLIANCE},
- {"德莱尼出生地", 530, -3961.64, -13931.2, 100.615, 2,TEAM_ALLIANCE},
- --Horde 部落
- {"牛头人出生地", 1, -2917.58, -257.98, 52.9968, 0,TEAM_HORDE},
- {"亡灵出生地", 0, 1676.71, 1678.31, 121.67, 2.70526,TEAM_HORDE},
- {"兽人出生地", 1, -618.518, -4251.67, 38.718, 0,TEAM_HORDE},
- {"巨魔出生地", 1, -618.518, -4251.67, 38.7, 4.747,TEAM_HORDE},
- {"血精灵出生地", 530,10349.6, -6357.29, 33.4026, 5.31605,TEAM_HORDE},
- --Alliance/Horde 联盟/部落共有
- {"死亡骑士出生地", 609, 2355.84, -5664.77, 426.028, 3.65997},
- },
- }
-
复制代码
加了几句,先提取表teleteportList的key为keytable表的value,之后实现排序的;(感觉绕了一个大圈)
-
- local function GenerateTeleteportList() -- 定义传送菜单的表
- local keytable = {}
- for key in pairs(teleteportList) do
- if key ~= nil then
- table.insert(keytable ,key) -- 取表teleteportList的key为keytable表的value
- end
- end
- table.sort(keytable) -- 表keytable排序(按表的value排序)
-
- local T = {}
- for n,l in pairs(keytable ) do -- 遍历经排序的表keytable(即teleteportList的key)
- local i = {}
- for _,t in pairs(teleteportList[l]) do -- 遍历表teleteportList的value表
- -- 用t[7]==UnitFactionGroup("Player")判断阵营
- if (t[7] == nil or t[7] == UnitFactionGroup("Player")) then
- -- 子表插入;子菜单文字t[1],功能:发送传送的 .go命令
- table.insert(i, {text = t[1], func = function() SendChatMessage(string.format(".go %s %s %s %s",t[3],t[4],t[5],t[2])) end})
- end
- end
- -- 主表插入;主菜单文字=keytable[n],箭头,子菜单表
- table.insert(T, {text = keytable[n], hasArrow = true, menuList = i})
- end
- teleteportList = T
- end
复制代码
不过,还是像你那样 直接修改 teleteportList 更方便,之前一直被表中的key不能进行排序 困扰着
|