【发布时间】:2022-01-11 09:25:46
【问题描述】:
我已对此进行了更新,以显示我正在使用的整个代码。事后看来,我不应该试图让它速记。任何帮助,将不胜感激。谢谢。
--[[Checks to see if a player owns 1 of 12 buildings.]]--
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 个的任意组合,所以我试图避免发生数千个派系启动事件。
-- 下面的代码不起作用,因为它在每个单元之间用“”写入玩家值的方式。在最底部,我举了一个示例,说明应该如何布置单元以使代码正常工作。我不知道如何让播放器值匹配所需的格式。
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)
【问题讨论】:
-
这是怎么回事? Lua中没有播放器,你说的是哪个API?目前还不太清楚你想要实现什么,我看不出你如何在这里保存“数千行代码”。请不要夸大其词。
-
你还没有告诉我们你的框架/库。
events不是原版 Lua 的一部分。 -
我是一个业余爱好者,我不知道你在问什么。我收集了一系列事件、条件和效果,并且相当成功地写出了我想在游戏中发生的事情。我认为我遇到的这个问题会有一个 lua 通用解决方案。
-
Lua 是一种非常简单的语言,主要用于嵌入到其他程序中。 Here is its website. 您的代码看起来可能是为嵌入 Lua 的程序编写的,例如特定游戏或 Love2d 等游戏引擎。如果存在嵌入程序,为您的问题添加标签会很有帮助。
标签: lua