全面战争模组LUA脚本create_force函数单位参数格式问题求助
我已更新内容,附上我正在使用的完整代码,现在看来我之前不应该简写代码,恳请各位提供帮助,谢谢。
--[[检查玩家是否拥有12座建筑中的任意一座]]-- events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Smithing_1_Blacksmith_Iwate", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Smithing_2_Weaponsmith_Iwate", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Smithing_3_Master_Weaponsmith_Iwate", context)) then Player_Iwate = "" else Player_Iwate = "Inf_Four_Iwate_Nodachi" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Ninja_1_Hideout_Iga", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Ninja_2_Ninjutsu_School_Iga", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Ninja_3_Clan_Fortress_Iga", context)) then Player_Iga = "" else Player_Iga = "Inf_Four_Iga_Kisho_Ninja" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Horses_1_Pastures_Mikawa", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Horses_2_Breeders_Mikawa", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Horses_3_Warhorse_Breeders_Mikawa", context)) then Player_Mikawa = "" else Player_Mikawa = "Inf_Four_Mikawa_Mounted_Ninja" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Horses_1_Pastures_Kai", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Horses_2_Breeders_Kai", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Horses_3_Warhorse_Breeders_Kai", context)) then Player_Kai = "" else Player_Kai = "Inf_Four_Kai_Light_Cavalry" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Smithing_1_Blacksmith_Satsuma", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Smithing_2_Armourer_Satsuma", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Smithing_3_Master_Armourer_Satsuma", context)) then Player_Satsuma = "" else Player_Satsuma = "Inf_Four_Satsuma_Katana_Samurai" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Naval_1_Merchant_Colony_Bungo", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Naval_2_Warehouses_Bungo", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Naval_3_Red_Seal_Company_Bungo", context)) then Player_Bungo = "" else Player_Bungo = "Inf_Four_Bungo_Matchlock" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Holy_Site_1_Holy_Site_Aki", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Holy_Site_2_Pilgrim_Hostel_Aki", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Holy_Site_3_Great_Soja_Shrine_Aki", context)) then Player_Aki = "" else Player_Aki = "Inf_Four_Aki_Wako_Raiders" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Timber_1_Lumbercamp_Tosa", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Timber_2_Lumberyards_Tosa", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Timber_3_Sawmills_Tosa", context)) then Player_Tosa = "" else Player_Tosa = "Inf_Four_Tosa_Yumi_Samurai" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Craftwork_1_Artisans_Echizen", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Craftwork_2_Fletchers_Echizen", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Craftwork_3_Master_Bowmaker_Echizen", context)) then Player_Echizen = "" else Player_Echizen = "Inf_Four_Echizen_Katana_Ronin" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Farming_1_Rice_Paddies_Owari", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Farming_2_Irrigation_Owari", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Farming_3_Terraces_Owari", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Farming_4_Consolidation_Owari", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Farming_5_Specialization_Owari", context)) then Player_Owari = "" else Player_Owari = "Inf_Four_Owari_Long" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Gold_Mining_1_Surface_Mining_Izu", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Gold_Mining_2_Open_Pit_Izu", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Gold_Mining_3_Mining_Complex_Izu", context)) then Player_Izu = "" else Player_Izu = "Inf_Four_Izu_Mortar_Team" end end events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) if (conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Naval_1_Merchant_Colony_Echigo", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Naval_2_Warehouses_Echigo", context) or conditions.FactionBuildingExists(Player_Faction, "SHO_Region_Specialty_Naval_3_Red_Seal_Company_Echigo", context)) then Player_Echigo = "" else Player_Echigo = "Inf_Four_Echigo_Marathon_Monks" end end
上述代码可按预期运行,单独在CampaignSettlementAttack事件中调用单条逻辑均可正常生效。由于玩家可能持有12组建筑的任意组合,我希望避免编写数千个factionturnstart事件来覆盖所有情况。
下方代码无法正常运行,原因是兵种单位之间被插入了空字符串,我在最下方附上了单位参数的正确格式示例,我之前一直不知道如何让生成的兵种参数符合要求格式。
events.CampaignSettlementAttacked[#events.CampaignSettlementAttacked+1] = function(context) if conditions.IsPlayerTurn(context) and not conditions.IsBesieging(context) and conditions.SettlementName("settlement:jap_yamashiro:kyoto", context) and not kill_switch_kyoto then kill_switch_kyoto = true scripting.game_interface:create_force("ashikaga", Player_Iwate,Player_Iga,Player_Mikawa,Player_Kai,Player_Satsuma,Player_Bungo,Player_Aki,Player_Tosa,Player_Echizen,Player_Owari,Player_Izu,Player_Echigo, -42.0, -123.0, "Kyoto Nightmare", true) return false end return false end
按如下格式编写时效果可正常触发:
scripting.game_interface:create_force("ashikaga", "Inf_Four_Iwate_Nodachi,Inf_Four_Iga_Kisho_Ninja,Inf_Four_Mikawa_Mounted_Ninja,Inf_Four_Satsuma_Katana_Samurai", -42.0, -123.0, "Kyoto Nightmare", true)
我最后通过调整参数写法解决了该问题,感谢各位的回复,解决后的代码如下:
scripting.game_interface:create_force("ashikaga", ('"' .. ',' .. Player_Izu .. ',' .. Player_Echigo .. ',' .. Player_Iga .. ',' .. Player_Echizen .. ',' .. Player_Owari .. ',' .. Player_Tosa .. ',' .. Player_Aki .. ',' .. Player_Bungo .. ',' .. Player_Iwate .. ',' .. Player_Satsuma .. ',' .. Player_Kai .. ',' .. Player_Mikawa .. ',' .. '"'), -42.0, -123.0, "Kyoto Nightmare", true)
内容的提问来源于stack exchange,提问作者Stephen Ray
相关产品推荐
相关产品推荐

