You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

全面战争模组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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:24:03