hardnick Posted September 2, 2018 Share Posted September 2, 2018 (edited) 我嘗試使用lua來編寫F10選單的分層目錄 然後分別使用不同的Flag來觸發AI單位 但是想要在相對應的AI單位被觸發之後順便就把選單裡面的那個選項給移除 例如我選了F-18然後AI F-18被觸發之後F10選單裡面的F-18選項就一起刪除掉 於是找到了removeItemForCoalition 這個語法來嘗試 但不知怎麼做才是對的....它總是會把整的F10選單給清除掉 剛剛嘗試接觸lua還不是很了解 麻煩各位大大幫小弟解惑一下 以下是選單語法的例子 我是想在setFlags的function裡面一起解決掉就好了 local function setFlags(v) trigger.action.setUserFlag(v.flag, v.val) missionCommands.removeItemForCoalition(coalition.side.BLUE, v.AI, FIGHT_SPAWNMENU) end local FIGHT_SPAWNMENU = missionCommands.addSubMenuForCoalition(coalition.side.BLUE, "戰機") missionCommands.addCommandForCoalition(coalition.side.BLUE, "F-18", FIGHT_SPAWNMENU, setFlags, {flag=101, val=true, AI="F-18"}) missionCommands.addCommandForCoalition(coalition.side.BLUE, "Su-27", FIGHT_SPAWNMENU, setFlags, {flag=102, val=true, AI="Su-27"}) local TANK_SPAWNMENU = missionCommands.addSubMenuForCoalition(coalition.side.BLUE, "裝甲車") missionCommands.addCommandForCoalition(coalition.side.BLUE, "T-90", TANK_SPAWNMENU, setFlags, {flag=201, val=true, AI="T-90"}) missionCommands.addCommandForCoalition(coalition.side.BLUE, "T-72", TANK_SPAWNMENU, setFlags, {flag=202, val=true, AI="T-72"}) 感謝 function 裡面判斷 TANK_SPAWNMENU 的部分我會再修改 請問lua能用 if()之類的判斷式嗎? Edited September 2, 2018 by hardnick Link to comment Share on other sites More sharing options...
hardnick Posted September 2, 2018 Author Share Posted September 2, 2018 目前發現應該是路徑的問題造成無法單獨刪除最內層的選單 底下function裡面的v.Path已經可以成功地將F10選中的最外層給刪除掉 而現在的問題是更內層的路徑有點搞不懂 像是 missionCommands.removeItemForCoalition(coalition.side.BLUE, v.Path{v.AI}) 結果這樣也不對.....不知到最內層的Path該怎麼寫呢? local function setFlags(v) trigger.action.setUserFlag(v.flag, v.val) trigger.action.outText(v.AI, 5) missionCommands.removeItemForCoalition(coalition.side.BLUE, v.Path) end local FIGHT_SPAWNMENU = missionCommands.addSubMenuForCoalition(coalition.side.BLUE, "AI Fighter") missionCommands.addCommandForCoalition(coalition.side.BLUE, "F-18", FIGHT_SPAWNMENU, setFlags, {flag=101, val=true, Path=FIGHT_SPAWNMENU, AI="F-18"}) missionCommands.addCommandForCoalition(coalition.side.BLUE, "Su-27", FIGHT_SPAWNMENU, setFlags, {flag=102, val=true, Path=FIGHT_SPAWNMENU, AI="Su-27"}) local TANK_SPAWNMENU = missionCommands.addSubMenuForCoalition(coalition.side.BLUE, "AI Tank") missionCommands.addCommandForCoalition(coalition.side.BLUE, "T-90", TANK_SPAWNMENU, setFlags, {flag=201, val=true, Path=TANK_SPAWNMENU, AI="T-90"}) missionCommands.addCommandForCoalition(coalition.side.BLUE, "T-72", TANK_SPAWNMENU, setFlags, {flag=202, val=true, Path=TANK_SPAWNMENU, AI="T-72"}) Link to comment Share on other sites More sharing options...
hardnick Posted September 10, 2018 Author Share Posted September 10, 2018 我找到答案了~謝謝 removeItem的使用方式路徑非常重要 以下是例子: missionCommands.removeItemForCoalition(coalition.side.BLUE, {[1] = "外層選項名稱", [2] = "內層選項名稱"}) Link to comment Share on other sites More sharing options...
Recommended Posts