hardnick Posted September 2, 2018 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
hardnick Posted September 2, 2018 Author 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"})
hardnick Posted September 10, 2018 Author Posted September 10, 2018 我找到答案了~謝謝 removeItem的使用方式路徑非常重要 以下是例子: missionCommands.removeItemForCoalition(coalition.side.BLUE, {[1] = "外層選項名稱", [2] = "內層選項名稱"})
Recommended Posts