The S2 Script-o-Rama - скриптописание в Total War: Shogun 2 (На основе Napoleon: Total War)
Содержание:
I. Введение и основы скриптов
I.1 Основы
I.2 Эффекты - Effects
I.3 CampaignUI
I.4 Игровой интерфейс - Game Interface
I.5 События - Events
II. Учебник написания скриптов
II.1 Как использовать события
II.2 Создание пользовательских миссий.
II.3 Как написать и использовать лог.
II.4 Как редактировать компоненты пользовательского интерфейса (основы).
Раздел I: Введение и основы скриптов
В этом разделе описывается несколько основных правил скриптописания, а также даются некоторые советы, которые помогут вам начать работу. Также здесь содержится обширная документация по использованию скриптов, выходным данным, параметрам и предостережениям.
I.1 Основы:
Язык скриптов:
NTW использует Lua. Так что же такое Lua?
Lua это мощный, быстрый, легкий, встраиваемый скриптовый язык.
Lua это язык с открытым исходным кодом, очень быстрый, широко используемый скриптовый язык. Это значит, что скриптинг в игре технически не ограничивается функциями, предоставляемыми игрой - мы можем расширять его операторами и функциями, которые не входят в скриптовый код CA. Хотя это не даст нам много для написания простых скриптов, но это может принести большую пользу тем, кто заинтересован в скриптах более сложных.
Чувствительность к регистру:
Все Lua функции и объекты вводятся с учетом регистра. То есть, CampaignUI не равно campaignui, campaignUi или что-нибудь подобное. То есть скрипт вызовет ошибку и не будет работать.
Пробелы:
Lua игнорирует пробелы, где это возможно. Так, 3 > 1, то же самое, что и 3>1, или 3> 1.
Ключевые понятия:
Строки: строками являются предложения, содержащие цифры, знаки или символы. Они начинаются и заканчиваются кавычками. Например:
"Hello World"
Булевы значения: логические значения, могут быть только истиной или ложью
Тип: тип переменной может быть логическим, функцией, ноль, числом, строкой, таблицей, потоком или пользовательскими данными. Если какая-либо функция просит переменную определенного типа, а получает переменную другого, это вполне может привести к вылету.
int: Отрицательное или положительное целое число
Комментарии: Комментарии являются частью кода скрипта, котор будет проигнорирована в игре. Нормальный комментарий начинается с "--" (без кавычек) и идет до конца строки. Длинный комментарий начинается с "--[[" (без кавычек) и заканчивается "]]--" (без кавычек). Длинный комментарий включает все, что внутри данных тегов, так что может быть использован для эффективного комментирования больших блоков кода. Примеры:
--Это короткий комментарий--[[А теперь Вывидитедлинныйкомментарий ]]--
Основные операторы и формулировки Lua:
Арифметические операторы:
Сложение:
+
Вычитание:
-
Умножение:
*
Деление:
/
Возведение в степень:
^
Операторы сравнения:
Равно:
==
Не равно:
~=
Меньше:
<
Меньше или равно:
<=
Больше:
>
Больше или равно:
>=
Логические операторы:
Примечание: Логические операторы иногда называют булевыми операторами, но они могут вернуть небулево значение.
and
and принимает два или более аргументов и возвращает истину только если они все верны
or
or возвращает ложь, только если оба его аргумента являются ложью
not
not это, проще говоря, логическое нет.
Основные операторы:
if
while
while один тип цикла.
for другой тип цикла.
Что они собой представляют легко можно найти в гугле..
Экранирование (Очень важно для логов):
Ввод в тексте специальных символов
\n - Новая строка.
\t - Tab.
\\ - Обратный слэш.
\" - Двойные кавычки.
Конкатекация (объединение строк):
Конкатекация в Lua записывается следующим образом:
Code:
..
Это две точки без пробела между ними.
Он используется для сращивания строк вместе:
Code:
print("Hello".."World")ScriptORamaVariable = "World"print("Hello "..ScriptORamaVariable)
На выходе получится:
Code:
HelloWorldHello World
Обратите внимание, что он не ставит пробела между аргументами, так что это должно быть сделано вручную (второй пример).
I.2 Эффекты - Effects
С помощью эффектов в игре вы можете делать такие вещи, как редактирование казны, трейтов, анчей и т.д.
Следующие функции описаны здесь:
adjust_treasury
ancillary
remove_ancillary
trait
remove_trait
historical_event
Documentation:
adjust_treasury(int amount, context)
effect.adjust_treasury изменяет казну определенной фракции.
Параметры: Сумма денег (int), context
Пример:
Code:
events.FactionTurnStart[#events.FactionTurnStart+1] =function (context) effect.adjust_treasury(-1000,context)end
ancillary(Ancillary name (string), Chance of ancillary being added (int), context)
effect.ancillary() добавит указанный анч выбранному персонажу.
Параметры: Название анча (string), Шанс получения анча % (int), context
Пример:
Code:
events.CharacterTurnEnd[#events.CharacterTurnEnd+1] = function (context) effect.ancillary("Anc_Balloonist", 100, context)end
remove_ancillary(Ancillary name (string), context)
effect.remove_ancillary() удалит указанный анч у выбранного персонажа.
Параметры: Название анча (string), context
Пример:
Code:
events.CharacterTurnEnd[#events.CharacterTurnEnd+1] = function (context) effect.remove_ancillary("Anc_Balloonist", context)end
trait(Trait name(string), Game entity type(string), Trait points to add(int), % Chance of trait being added(int), context)
effect.trait() добавит указанный трейт выбранному объекту игры.
Параметры: Название трейта(string), Тип объекта игры(string), Количество добавляемых очков трейта(int), Шанс получения трейта %(int), context
Пример:
Code:
events.CharacterTurnEnd[#events.CharacterTurnEnd+1] = function (context) effect.trait("C_Admiral_Attacker_Good", "agent", 2, 12, context)end
remove_trait(Trait name(string), POSSIBLY NEEDS: Game entity type(string), context)
effect.remove_trait() удалит указанный трейт у выбранного объекта игры.
Параметры: Название трейта(string), При необходимости: Тип объекта игры(string), context
Пример:
Code:
events.CharacterTurnEnd[#events.CharacterTurnEnd+1] = function (context) effect.remove_trait("C_Admiral_Attacker_Good", "agent", context)end
historical_event(Event key(string), context)
effect.historical_event() вызовет историческое событие.
Параметры: Код события(string), context
Пример:
Code:
events.HistoricalEvents[#events.HistoricalEvents+1] = function (context) effect.historical_event("luddite_movement", context)end
I.3 Campaign UI
CampaignUI имеют множество полезных функций.Главное преимущество использования CamaignUI в том, что функции часто не требует аргументов и возвращают логические значения, что делает их очень полезными. Основное применение CUI - получение данных из игры - от них очень мало пользы для фактического изменения чего-либо.
Следующие функции описаны здесь:
CurrentSeasonString
CurrentTurn
CurrentYear
DisplayingTurns
EndTurn
EntityTypeSelected
FactionDetails
IsPlayersTurn
InitialiseRegionInfoDetails
IsCharacterPlayerControlled
PlayerFactionId
PrestigeDetails
RetrieveDiplomacyDetails
RetrieveDiplomaticOpinions
RetrieveDiplomaticStanceString
RegionsOwnedByFaction
RetrieveFactionRegionList
RetrieveFactionMilitaryForceLists
Documentation:
CurrentSeasonString()
Вызов CampaignUI.CurrentSeasonString() вернет текущий сезон в виде строки.
Возвращает: Текущий сезон в виде строки. Лето или Зима.
Пример:
Code:
CampaignUI.CurrentSeasonString() == "Summer"
CurrentTurn()
Вызов CampaignUI.CurrentTurn() возвращает номер текущего хода.
Возвращает: номер хода в виде числа.
Пример:
Code:
CampaignUI.CurrentTurn() == 0
CurrentYear()
Вызов CampaignUI.CurrentYear() вернет текущий год.
Возвращает: текущий год в виде числа.
Пример:
Code:
CampaignUI.CurrentYear() >= 1700
DisplayingTurns()
Вызов CampaignUI.DisplayingTurns() укажет вам, отображается игра в годах или ходах.
Возвращает: Boolean: true если в ходах, false если в годах
Пример:
Code:
if CampaignUI.DisplayingTurns() then...end
EndTurn()
Вызов CampaignUI.EndTurn() закончит ход.
Пример:
Code:
CampaignUI.EndTurn()
EntityTypeSelected()
CampaignUI.EntityTypeSelected() даст вам информацию о выбранном в данный момент типе объекта.
Возвращает: Таблицу деталей объекта. Важно здесь CampaignUI.EntityTypeSelected().Entity, оно содержит указатель (например, указатель персонажа), который может быть использован в других функциях
Пример:
Code:
CampaignUI.EntityTypeSelected()
Вернет таблицу, содержащую эту информацию:
Code:
Character: boolean: true Unit: boolean: false Slot: boolean: false Settlement: boolean: false Entity: userdata type: string: Pointer<CHARACTER> __tostring: function __eq: function LocalPlayerOwned: boolean: true Fort: boolean: false
FactionDetails(string faction_key)
CampaignUI.FactionDetails() вернет таблицу с информацией о выбранной фракции.
Параметры: ID Фракции string
Возвращает: Таблицу деталей фракции
Пример:
Code:
CampaignUI.FactionDetails("britain")
Вернет таблицу, содержащую эту информацию:
Code:
Нажмите, чтобы прочитать VictoryConditions: table Regions: table 1: table Name: string:New France Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 2: table Name: string:Georgia Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 3: table Name: string:Leeward Islands Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 4: table Name: string:Ireland Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 5: table Name: string:Gibraltar Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 6: table Name: string:Florida Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 7: table Name: string:Hindustan Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 8: table Name: string:Scotland Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function 9: table Name: string:England Address: userdata type: string:Pointer<REGION> __tostring: function __eq: function ConquestDescription: string:Capture and hold 25 regions by the end of the year 1750, including the regions shown. TotalRegionsNeeded: number PrestigeDescription: string: WealthRanking: string:Spectacular Leader: table ActionPointsPerTurn: number Flag: string:data\ui\flags\britain/portrait_flags.tga Title: string: Traits: table 1: table ExplanationText: string:This man has invested heavily in the navy. IconFilename: string:data/ui/campaign ui/pips/effect_characters.tga Name: string:Likes Uniforms Effects: table 1: table Priority: number Description: string:-10% recruitment cost for all naval units IconFilename: string:data/ui/campaign ui/pips/effect_navy.tga ColourText: string:He has taken to wearing ceremonial uniforms at all times, which makes bathing a difficult business. AttributeEffects: table RemovalText: string:This trait can be lost by more balanced spending. 2: table ExplanationText: string:Youthful obsessions are one thing, but they are supposed to be set aside. IconFilename: string:data/ui/campaign ui/pips/effect_characters.tga Name: string:Lewd and Loose Effects: table 1: table Priority: number Description: string:-10 to diplomatic relations IconFilename: string: ColourText: string:This man's behaviour is boorish and nationally embarrassing, even if the ambassador's wife did have a fantastic arse! AttributeEffects: table RemovalText: string:This man's ways are set, unfortunately. Effects: table 1: table Icon: string: Tooltip: string:-10 to diplomatic relations 2: table Icon: string:data/ui/campaign ui/pips/effect_navy.tga Tooltip: string:-10% recruitment cost for all naval units PostEffects: table diplomacy: table Value: number Description: string:+0 to diplomatic relations prestige: table Value: number Description: string:+0 Prestige per turn FactionColour: table b: number g: number r: number ShowAsCharacter: boolean IsMilitary: boolean Attributes: table morale_sea: table Value: number AttributeName: string:Morale PipPath: string:PLACEHOLDER research: table Value: number AttributeName: string:Research Skill PipPath: string:data/ui/campaign ui/pips/skill_research.tga land_siege_engineering: table Value: number AttributeName: string:Siege engineering PipPath: string:PLACEHOLDER movement_points_land: table Value: number AttributeName: string:movement_points_land_name PipPath: string:PLACEHOLDER management: table Value: number AttributeName: string:Management Skill PipPath: string:data/ui/campaign ui/pips/skill_managing.tga PrimaryAttributePath: string:data/ui/campaign ui/pips/skill_managing.tga PrimaryAttributeName: string:Management Skill zeal: table Value: number AttributeName: string:Religious Zeal PipPath: string:data/ui/campaign ui/pips/skill_zeal.tga subterfuge: table Value: number AttributeName: string:Subterfuge Skill PipPath: string:data/ui/campaign ui/pips/skill_spying.tga duelling_swords: table Value: number AttributeName: string:Sword duelling PipPath: string:data/ui/campaign ui/pips/skill_swordfighting.tga duelling_pistols: table Value: number AttributeName: string:Pistol duelling PipPath: string:data/ui/campaign ui/pips/skill_shooting.tga morale_land: table Value: number AttributeName: string:Morale PipPath: string:PLACEHOLDER trade: table Value: number AttributeName: string:Trade PipPath: string:PLACEHOLDER PrimaryLevel: number land_defence_engineering: table Value: number AttributeName: string:Land defence engineering PipPath: string:PLACEHOLDER command_sea: table Value: number AttributeName: string:Command at Sea PipPath: string:data/ui/campaign ui/pips/skill_naval.tga command_land: table Value: number AttributeName: string:Command on Land PipPath: string:data/ui/campaign ui/pips/skill_command.tga Abilities: table can_research: boolean can_assassinate: boolean can_attack_naval: boolean can_build_religious: boolean can_attack_land: boolean can_receive_duel: boolean can_build_fort: boolean can_duel: boolean can_convert: boolean can_sabotage: boolean can_spy: boolean PostName: string:King CommanderType: number ActionPoints: number Post: string:faction_leader AgentType: string:Minister IsNaval: boolean SmallFlag: string:data\ui\flags\britain/small.tga UniformColour: table b: number g: number r: number MaskImage: string: TechImage: string: Playable: boolean CardImage: string:data/ui/portraits/european/cards/king/old/014.tga InfoImage: string:data/ui/portraits/european/Info/king/old/014.jpg Address: userdata type: string:Pointer<CHARACTER> __tostring: function __eq: function Location: string:England Name: string:William III Age: number Ancillaries: table PrestigeRanking: string:Sublime FlagPath: string:data\ui\flags\britain UniformColour: table B: number G: number R: number Address: userdata type: string:Pointer<FACTION> __tostring: function __eq: function Name: string:Great Britain PrimaryColour: table B: number G: number R: number Key: string:britain PowerRanking: string:Terrifying
IsPlayersTurn()
IsPlayersTurn возвращает правду или ложь
Возвращает: true или false в зависимости от того игрока этот ход или нет.
Пример:
Code:
CampaignUI.IsPlayersTurn()
InitialiseRegionInfoDetails(<Pointer>REGION)
InitialiseRegionInfoDetails возвращает всю информацию вы можете получить об определенном регионе. Вы должны предоставить указатель (получите его от RegionsOwnedByFaction например)
Параметры: указатель региона
Возвращает: Таблицу деталей региона
Пример:
Code:
tab = CampaignUI.RegionsOwnedByFaction("france") details = CampaignUI.InitialiseRegionInfoDetails(tab[1].Address)
Вернет таблицу, содержащую следующую информацию:
Code:
Нажмите, чтобы прочитать UpperOrder: table 1: table Total: number: 2 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Government type: 2 (Predicted)||Your government type has a positive effect on this class. Pip: string: data/ui/campaign ui/pips/government-happy.tga Tooltip: string: Government type: 2||Your government type has a positive effect on this class. EqualPipPredictedTooltip: string: Government type: 2 / 2 (Predicted)||Your government type has a positive effect on this class. 2: table Total: number: 4 Predicted: number: 0 Positive: boolean: false PredictedTooltip: string: Tax burden: 4 (Predicted)||To lessen the tax burden on your population simply lower taxes.||You can do this on the Government panel. Pip: string: data/ui/campaign ui/pips/taxes-unhappy.tga Tooltip: string: Tax burden: 4||To lessen the tax burden on your population simply lower taxes.||You can do this on the Government panel. EqualPipPredictedTooltip: string: Tax burden: 4 / 4 (Predicted)||To lessen the tax burden on your population simply lower taxes.||You can do this on the Government panel. 3: table Total: number: 5 Predicted: number: 0 Positive: boolean: false PredictedTooltip: string: People in government: 5 (Predicted) ||This is from your ministers' traits.||You can view all their traits on the Government panel. Pip: string: data/ui/campaign ui/pips/character_traits-unhappy.tga Tooltip: string: People in government: 5 ||This is from your ministers' traits.||You can view all their traits on the Government panel. EqualPipPredictedTooltip: string: People in government: 5 / 5 (Predicted) ||This is from your ministers' traits.||You can view all their traits on the Government panel. 4: table Total: number: 1 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Government buildings (Repression): 1 (Predicted)||Increase repression in your regions by upgrading government buildings. Pip: string: data/ui/campaign ui/pips/buildings-repression.tga Tooltip: string: Government buildings (Repression): 1||Increase repression in your regions by upgrading government buildings. EqualPipPredictedTooltip: string: Government buildings (Repression): 1 / 1 (Predicted)||Increase repression in your regions by upgrading government buildings. 5: table Total: number: 3 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: People in government (Repression): 3 (Predicted)||This is from your minister's traits.||You can view all their effects on the Government panel. Pip: string: data/ui/campaign ui/pips/character_traits-repression.tga Tooltip: string: People in government (Repression): 3||This is from your minister's traits.||You can view all their effects on the Government panel. EqualPipPredictedTooltip: string: People in government (Repression): 3 / 3 (Predicted)||This is from your minister's traits.||You can view all their effects on the Government panel. 6: table Total: number: 1 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Town Watch (Repression): 1 (Predicted)||This is an expensive emergency measure to suppress unrest. Pip: string: data/ui/campaign ui/pips/policing-repression.tga Tooltip: string: Town Watch (Repression): 1||This is an expensive emergency measure to suppress unrest. EqualPipPredictedTooltip: string: Town Watch (Repression): 1 / 1 (Predicted)||This is an expensive emergency measure to suppress unrest. Total: number: -2 IsPercentage: boolean: false PipValue: number: 1ReligionKey: string: rel_catholicWealthChange: number: 2Settlement: string: CayenneWealth: number: 782ActiveLowerClass: string: Lower ClassTownWealth: table 1: table Total: number: 3 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Ports: 3 (Predicted) ||Increase this by developing your trading ports and fisheries. Pip: string: data/ui/campaign ui/pips/eco-trade_harbour.tga Tooltip: string: Ports: 3 ||Increase this by developing your trading ports and fisheries. EqualPipPredictedTooltip: string: Ports: 3 / 3 (Predicted) ||Increase this by developing your trading ports and fisheries. 2: table Total: number: 8 Predicted: number: 1 Positive: boolean: false PredictedTooltip: string: Tax: 9 (Predicted) ||Tax rates are slowing economic growth.||Reduce this by lowering tax rates. Pip: string: data/ui/campaign ui/pips/taxes-unhappy.tga Tooltip: string: Tax: 8 ||Tax rates are slowing economic growth.||Reduce this by lowering tax rates. EqualPipPredictedTooltip: string: Tax: 8 / 9 (Predicted) ||Tax rates are slowing economic growth.||Reduce this by lowering tax rates. 3: table Total: number: 3 Predicted: number: 2 Positive: boolean: true PredictedTooltip: string: Enlightenment: 5 (Predicted) ||Researching certain technologies increases economic growth. Pip: string: data/ui/campaign ui/pips/town_research.tga Tooltip: string: Enlightenment: 3 ||Researching certain technologies increases economic growth. EqualPipPredictedTooltip: string: Enlightenment: 3 / 5 (Predicted) ||Researching certain technologies increases economic growth. PipValue: number: 50 Total: number: -2 IsPercentage: boolean: falseTaxed: boolean: trueReligiousBreakdown: table 1: table Change: number: 0 Name: string: Animism Key: string: rel_animist Icon: string: data/ui/campaign ui/pips/animism.tga Percentage: number: 15.000000953674 2: table Change: number: 0 Name: string: Catholicism Key: string: rel_catholic Icon: string: data/ui/campaign ui/pips/roman_catholic.tga Percentage: number: 85.000007629395RegionWealth: table 1: table Total: number: 440 LostTooltip: string: Port: 0 (Predicted) Positive: boolean: true Tooltip: string: Port: 440 EqualPipPredictedTooltip: string: Port: 440 Predicted: number: 0 Lost: number: 0 PredictedTooltip: string: Port: 440 (Predicted) Pip: string: data/ui/campaign ui/pips/trade_port.tga 2: table Total: number: 342 LostTooltip: string: Spice exports: 0 (0 Pounds) (Predicted) Positive: boolean: true Tooltip: string: Spice exports: 342 (18 Pounds) EqualPipPredictedTooltip: string: Spice exports: 342 (18 Pounds) Predicted: number: 0 Lost: number: 0 PredictedTooltip: string: Spice exports: 342 (18 Pounds) (Predicted) Pip: string: data/ui/campaign ui/pips/spices.tga PipValue: number: 50 Total: number: 782 IsPercentage: boolean: falsePopulationGrowth: table 1: table Total: number: 0.29999998211861 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Subsistence agriculture: 0.3% (Predicted)||This is the background level of food production in the region. Pip: string: data/ui/campaign ui/pips/population_subsistence.tga Tooltip: string: Subsistence agriculture: 0.3%||This is the background level of food production in the region. EqualPipPredictedTooltip: string: Subsistence agriculture: 0.3% / 0.3% (Predicted)||This is the background level of food production in the region. 2: table Total: number: 0.37000000476837 Predicted: number: 0 Positive: boolean: false PredictedTooltip: string: Tax burden: 0.37% (Predicted)||To counter this, simply lower taxes for the lower classes.||You can do this on the Government panel. Pip: string: data/ui/campaign ui/pips/taxes-unhappy.tga Tooltip: string: Tax burden: 0.37%||To counter this, simply lower taxes for the lower classes.||You can do this on the Government panel. EqualPipPredictedTooltip: string: Tax burden: 0.37% / 0.37% (Predicted)||To counter this, simply lower taxes for the lower classes.||You can do this on the Government panel. 3: table Total: number: 5.0099997520447 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Immigration from the home theatre: 5.01% (Predicted)||Unhappiness drives people to seek a better life elsewhere. Pip: string: data/ui/campaign ui/pips/migration_happy.tga Tooltip: string: Immigration from the home theatre: 5.01%||Unhappiness drives people to seek a better life elsewhere. EqualPipPredictedTooltip: string: Immigration from the home theatre: 5.01% / 5.01% (Predicted)||Unhappiness drives people to seek a better life elsewhere. PipValue: number: 0.0099999997764826 Total: number: 4.9399995803833 IsPercentage: boolean: trueUpperTax: number: 0.16489998996258Theatre: string: 1Effects: tableGovernor: table ActionPointsPerTurn: number: 0 Flag: string: data\ui\flags\france/portrait_flags.tga Title: string: Traits: table 1: table ExplanationText: string: This fellow believes that ministers should set the right example. IconFilename: string: data/ui/campaign ui/pips/effect_characters.tga Name: string: Honest Effects: table ColourText: string: This man believes in truth and honesty, something he pursues through his work. AttributeEffects: table 1: string: +1 to Management. RemovalText: string: This trait is permanent and cannot be lost. 2: table ExplanationText: string: This man has done much for his nation's cultural landscape. IconFilename: string: data/ui/campaign ui/pips/effect_characters.tga Name: string: Sybarite Effects: table 1: table Priority: number: 9019 Description: string: +1 happiness (lower classes) IconFilename: string: data/ui/campaign ui/pips/effect_public_order.tga 2: table Priority: number: 9017 Description: string: -1 happiness (nobility) IconFilename: string: data/ui/campaign ui/pips/effect_public_order.tga ColourText: string: Whereas most people can be appeased with cheap whores and gin by the bucket, some of us have more refined tastes. AttributeEffects: table RemovalText: string: This character trait cannot be lost, only improved. 3: table ExplanationText: string: The treasury has remained virtually untouched since he took charge. IconFilename: string: data/ui/campaign ui/pips/effect_characters.tga Name: string: Frugal and Thrifty Effects: table 1: table Priority: number: 4 Description: string: -2 to Management for treasury administration IconFilename: string: data/ui/campaign ui/pips/effect_economy.tga 2: table Priority: number: 9017 Description: string: -1 happiness (nobility) IconFilename: string: data/ui/campaign ui/pips/effect_public_order.tga ColourText: string: He keeps a tight rein on the privy purse strings, all expenditure must be justified in writing. In triplicate. AttributeEffects: table 1: string: +1 to Management. RemovalText: string: This character trait can be lost by more generous use of tax income. PostEffects: table tax_efficiency: table Value: number: 4 Description: string: +4% bonus to tax income across theatre repression: table Value: number: 2 Description: string: +2 to repression across the theatre land_upkeep_cost: table Value: number: -4 Description: string: -4% upkeep costs for all army units FactionColour: table b: number: 240 g: number: 255 r: number: 255 ShowAsCharacter: boolean: true Effects: table 1: table Icon: string: data/ui/campaign ui/pips/effect_public_order.tga Tooltip: string: +1 happiness (lower classes) 2: table Icon: string: data/ui/campaign ui/pips/effect_public_order.tga Tooltip: string: -2 happiness (nobility) 3: table Icon: string: data/ui/campaign ui/pips/effect_economy.tga Tooltip: string: -2 to Management for treasury administration IsMilitary: boolean: false Attributes: table morale_sea: table Value: number: -1 AttributeName: string: Morale PipPath: string: PLACEHOLDER research: table Value: number: -1 AttributeName: string: Research Skill PipPath: string: data/ui/campaign ui/pips/skill_research.tga land_siege_engineering: table Value: number: -1 AttributeName: string: Siege engineering PipPath: string: PLACEHOLDER movement_points_land: table Value: number: -1 AttributeName: string: movement_points_land_name PipPath: string: PLACEHOLDER management: table Value: number: 4 AttributeName: string: Management Skill PipPath: string: data/ui/campaign ui/pips/skill_managing.tga PrimaryAttributePath: string: data/ui/campaign ui/pips/skill_managing.tga PrimaryAttributeName: string: Management Skill zeal: table Value: number: -1 AttributeName: string: Religious Zeal PipPath: string: data/ui/campaign ui/pips/skill_zeal.tga subterfuge: table Value: number: -1 AttributeName: string: Subterfuge Skill PipPath: string: data/ui/campaign ui/pips/skill_spying.tga duelling_swords: table Value: number: -1 AttributeName: string: Sword duelling PipPath: string: data/ui/campaign ui/pips/skill_swordfighting.tga duelling_pistols: table Value: number: -1 AttributeName: string: Pistol duelling PipPath: string: data/ui/campaign ui/pips/skill_shooting.tga morale_land: table Value: number: -1 AttributeName: string: Morale PipPath: string: PLACEHOLDER trade: table Value: number: -1 AttributeName: string: Trade PipPath: string: PLACEHOLDER PrimaryLevel: number: 5 land_defence_engineering: table Value: number: -1 AttributeName: string: Land defence engineering PipPath: string: PLACEHOLDER command_sea: table Value: number: -1 AttributeName: string: Command at Sea PipPath: string: data/ui/campaign ui/pips/skill_naval.tga command_land: table Value: number: -1 AttributeName: string: Command on Land PipPath: string: data/ui/campaign ui/pips/skill_command.tga Abilities: table can_research: boolean: false can_assassinate: boolean: false can_attack_naval: boolean: false can_build_religious: boolean: false can_attack_land: boolean: false can_receive_duel: boolean: false can_build_fort: boolean: false can_duel: boolean: false can_convert: boolean: false can_sabotage: boolean: false can_spy: boolean: false CommanderType: number: 0 ActionPoints: number: 0 Post: string: governor_america AgentType: string: Minister IsNaval: boolean: false SmallFlag: string: data\ui\flags\france/small.tga UniformColour: table b: number: 240 g: number: 255 r: number: 255 MaskImage: string: TechImage: string: Playable: boolean: false CardImage: string: data/ui/portraits/european/Cards/minister/young/077.tga InfoImage: string: data/ui/portraits/european/Info/minister/young/077.jpg Address: userdata type: string: Pointer<CHARACTER> __tostring: function __eq: function Location: string: France Name: string: Gaston Rousseau Age: number: 43 Ancillaries: tableOwningFactionKey: string: franceAdministrationCostPercentage: number: -0.029999999329448GovernorPercentage: number: 0.03999999910593LowerTax: number: 0.16489998996258BuildingPercentage: number: 0UpperTaxPercentage: number: 0.1499999910593PopulationNumber: number: 4390Population: string: 4390LowerTaxPercentage: number: 0.1499999910593Name: string: French GuyanaAddress: userdata type: string: Pointer<REGION> __tostring: function __eq: functionLowerOrder: table 1: table Total: number: 4 Predicted: number: 0 Positive: boolean: false PredictedTooltip: string: Tax burden: 4 (Predicted)||To lessen the tax burden on your population simply lower taxes.||You can do this on the Government panel. Pip: string: data/ui/campaign ui/pips/taxes-unhappy.tga Tooltip: string: Tax burden: 4||To lessen the tax burden on your population simply lower taxes.||You can do this on the Government panel. EqualPipPredictedTooltip: string: Tax burden: 4 / 4 (Predicted)||To lessen the tax burden on your population simply lower taxes.||You can do this on the Government panel. 2: table Total: number: 2 Predicted: number: 0 Positive: boolean: false PredictedTooltip: string: People in government: 2 (Predicted) ||This is from your ministers' traits.||You can view all their traits on the Government panel. Pip: string: data/ui/campaign ui/pips/character_traits-unhappy.tga Tooltip: string: People in government: 2 ||This is from your ministers' traits.||You can view all their traits on the Government panel. EqualPipPredictedTooltip: string: People in government: 2 / 2 (Predicted) ||This is from your ministers' traits.||You can view all their traits on the Government panel. 3: table Total: number: 1 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Government buildings (Repression): 1 (Predicted)||Increase repression in your regions by upgrading government buildings. Pip: string: data/ui/campaign ui/pips/buildings-repression.tga Tooltip: string: Government buildings (Repression): 1||Increase repression in your regions by upgrading government buildings. EqualPipPredictedTooltip: string: Government buildings (Repression): 1 / 1 (Predicted)||Increase repression in your regions by upgrading government buildings. 4: table Total: number: 3 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: People in government (Repression): 3 (Predicted)||This is from your minister's traits.||You can view all their effects on the Government panel. Pip: string: data/ui/campaign ui/pips/character_traits-repression.tga Tooltip: string: People in government (Repression): 3||This is from your minister's traits.||You can view all their effects on the Government panel. EqualPipPredictedTooltip: string: People in government (Repression): 3 / 3 (Predicted)||This is from your minister's traits.||You can view all their effects on the Government panel. 5: table Total: number: 1 Predicted: number: 0 Positive: boolean: true PredictedTooltip: string: Town Watch (Repression): 1 (Predicted)||This is an expensive emergency measure to suppress unrest. Pip: string: data/ui/campaign ui/pips/policing-repression.tga Tooltip: string: Town Watch (Repression): 1||This is an expensive emergency measure to suppress unrest. EqualPipPredictedTooltip: string: Town Watch (Repression): 1 / 1 (Predicted)||This is an expensive emergency measure to suppress unrest. IsPercentage: boolean: false PipValue: number: 1 Total: number: -1ActiveUpperClass: string: NobilityReligionIcon: string: data/ui/campaign ui/pips/roman_catholic.tgaPopulationChange: number: 1
IsCharacterPlayerControlled(CharacterPointer pointer)
CampaignUI.IsCharacterPlayerControlled() скажет вам, является ли персонаж под контролем игрока.
Возвращает: boolean true или false
Пример:
Code:
entity = CampaignUI.EntityTypeSelected()if entity.Character then if CampaignUI.IsCharacterPlayerControlled(entity.Entity) then ... endend
PlayerFactionId()
Calling CampaignUI.PlayerFactionId() возвращает фракцию игрока.
Возвращает: Фракцию игрока как строку, например "britain"
Пример:
Code:
CampaignUI.PlayerFactionId() == "britain"
PrestigeDetails()
CampaignUI.PrestigeDetails() даст вам доступ к очкам престижа каждой фракции
Возвращает: таблицу престижа фракций
Example:
Code:
CampaignUI.PrestigeDetails()
Вернет таблицу со следующей информацией:
Code:
Нажмите, чтобы прочитать scale: number: 34 factions: table 1: table faction_colour: table b: number: 0 g: number: 0 r: number: 0.8705883026123 history: table 1: table military: number: 5 overall: number: 30 enlightenment: number: 5 naval: number: 10 economics: number: 10 2: table military: number: 5 overall: number: 30 enlightenment: number: 5 naval: number: 10 economics: number: 10 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Great Britain is_enemy: boolean: false is_neighbouring: boolean: false key: string: britain flag_path: string: data\ui\flags\britain is_ally: boolean: false 2: table faction_colour: table b: number: 0.94117653369904 g: number: 1 r: number: 1 history: table 1: table military: number: 18 overall: number: 34 enlightenment: number: 4 naval: number: 5 economics: number: 7 2: table military: number: 18 overall: number: 34 enlightenment: number: 4 naval: number: 5 economics: number: 7 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: France is_enemy: boolean: false is_neighbouring: boolean: false key: string: france flag_path: string: data\ui\flags\france is_ally: boolean: false 3: table faction_colour: table b: number: 0.33725491166115 g: number: 0.56470590829849 r: number: 0.64705884456635 history: table 1: table military: number: 17 overall: number: 24 enlightenment: number: 0 naval: number: 0 economics: number: 7 2: table military: number: 17 overall: number: 24 enlightenment: number: 0 naval: number: 0 economics: number: 7 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Austria is_enemy: boolean: false is_neighbouring: boolean: false key: string: austria flag_path: string: data\ui\flags\austria is_ally: boolean: true 4: table faction_colour: table b: number: 0.11372549831867 g: number: 0.5137255191803 r: number: 1 history: table 1: table military: number: 0 overall: number: 23 enlightenment: number: 5 naval: number: 5 economics: number: 13 2: table military: number: 0 overall: number: 23 enlightenment: number: 5 naval: number: 5 economics: number: 13 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: United Provinces is_enemy: boolean: false is_neighbouring: boolean: false key: string: netherlands flag_path: string: data\ui\flags\netherlands_republic is_ally: boolean: true 5: table faction_colour: table b: number: 0.0039215688593686 g: number: 0.85098046064377 r: number: 0.99215692281723 history: table 1: table military: number: 5 overall: number: 23 enlightenment: number: 0 naval: number: 8 economics: number: 10 2: table military: number: 5 overall: number: 23 enlightenment: number: 0 naval: number: 8 economics: number: 10 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Spain is_enemy: boolean: false is_neighbouring: boolean: false key: string: spain flag_path: string: data\ui\flags\spain is_ally: boolean: false 6: table faction_colour: table b: number: 0.32549020648003 g: number: 0.19215688109398 r: number: 0 history: table 1: table military: number: 16 overall: number: 16 enlightenment: number: 0 naval: number: 0 economics: number: 0 2: table military: number: 16 overall: number: 16 enlightenment: number: 0 naval: number: 0 economics: number: 0 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Prussia is_enemy: boolean: false is_neighbouring: boolean: false key: string: prussia flag_path: string: data\ui\flags\prussia is_ally: boolean: false 7: table faction_colour: table b: number: 0.21960785984993 g: number: 0.18823531270027 r: number: 0.62745100259781 history: table 1: table military: number: 10 overall: number: 13 enlightenment: number: 0 naval: number: 0 economics: number: 3 2: table military: number: 10 overall: number: 13 enlightenment: number: 0 naval: number: 0 economics: number: 3 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Poland-Lithuania is_enemy: boolean: false is_neighbouring: boolean: false key: string: poland_lithuania flag_path: string: data\ui\flags\poland_lithuania is_ally: boolean: false 8: table faction_colour: table b: number: 0 g: number: 0 r: number: 0.52549022436142 history: table 1: table military: number: 6 overall: number: 16 enlightenment: number: 0 naval: number: 0 economics: number: 10 2: table military: number: 6 overall: number: 16 enlightenment: number: 0 naval: number: 0 economics: number: 10 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Ottoman Empire is_enemy: boolean: false is_neighbouring: boolean: false key: string: ottomans flag_path: string: data\ui\flags\ottomans is_ally: boolean: false 9: table faction_colour: table b: number: 0.13333334028721 g: number: 0.41568630933762 r: number: 0.13333334028721 history: table 1: table military: number: 16 overall: number: 16 enlightenment: number: 0 naval: number: 0 economics: number: 0 2: table military: number: 16 overall: number: 16 enlightenment: number: 0 naval: number: 0 economics: number: 0 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Russia is_enemy: boolean: false is_neighbouring: boolean: false key: string: russia flag_path: string: data\ui\flags\russia is_ally: boolean: false 10: table faction_colour: table b: number: 0.60000002384186 g: number: 0.35686275362968 r: number: 0.05882353335619 history: table 1: table military: number: 11 overall: number: 12 enlightenment: number: 0 naval: number: 1 economics: number: 0 2: table military: number: 11 overall: number: 12 enlightenment: number: 0 naval: number: 1 economics: number: 0 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Sweden is_enemy: boolean: false is_neighbouring: boolean: false key: string: sweden flag_path: string: data\ui\flags\sweden is_ally: boolean: false 11: table faction_colour: table b: number: 0.10980392992496 g: number: 0.41960787773132 r: number: 0.70980393886566 history: table 1: table military: number: 7 overall: number: 7 enlightenment: number: 0 naval: number: 0 economics: number: 0 2: table military: number: 7 overall: number: 7 enlightenment: number: 0 naval: number: 0 economics: number: 0 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Maratha Confederacy is_enemy: boolean: false is_neighbouring: boolean: false key: string: maratha flag_path: string: data\ui\flags\maratha is_ally: boolean: false 12: table faction_colour: table b: number: 0.10588236153126 g: number: 0.41960787773132 r: number: 0.37647062540054 history: table 1: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 2: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 3: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 4: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 5: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 6: table military: number: 0 overall: number: 0 enlightenment: number: 0 naval: number: 0 economics: number: 0 name: string: Mughal Empire is_enemy: boolean: false is_neighbouring: boolean: false key: string: mughal flag_path: string: data\ui\flags\mughal is_ally: boolean: false
RetrieveDiplomacyDetails(Faction Key (string))
RetrieveDiplomacyDetails возвращает таблицу с деталями дипломатии данной фракции.
Возвращает: таблицу с деталями дипломатии фракции.
Пример:
Code:
RetrieveDiplomacyDetails("france")
Пример вывода:
Code:
Нажмите, чтобы прочитать TradeRights table: 1AD793B8 wurttemberg table: 1AD79518 Flag data\ui\flags\wurttemberg/small.tga Name Baden-Wurttemberg Label wurttemberg italy_kingdom table: 1AD79458 Flag data\ui\flags\italy_kingdom/small.tga Name Kingdom of Italy Label italy_kingdom netherlands table: 1AD7FF58 Flag data\ui\flags\united_netherlands/small.tga Name Batavian Republic Label netherlands swiss_confederation table: 1AD79478 Flag data\ui\flags\swiss_confederation/small.tga Name Swiss Confederation Label swiss_confederation spain table: 1AD7FDD8 Flag data\ui\flags\spain/small.tga Name Spain Label spainAtWar table: 1AD79378 austria table: 1AD794B8 Flag data\ui\flags\austria/small.tga Name Austria Label austria sicily table: 1AD795B8 Flag data\ui\flags\naples_sicily/small.tga Name Kingdom of Sicily Label sicily naples table: 1AD79558 Flag data\ui\flags\naples/small.tga Name Kingdom of Naples Label naples britain table: 1AD794D8 Flag data\ui\flags\britain/small.tga Name Great Britain Label britain sweden table: 1AD7FDF8 Flag data\ui\flags\sweden/small.tga Name Sweden Label sweden russia table: 1AD79498 Flag data\ui\flags\russia/small.tga Name Russia Label russiaProtectorates table: 1AD793F8ProtectorOf table: 1AD79418Allies table: 1AD79398 wurttemberg table: 1AD794F8 Flag data\ui\flags\wurttemberg/small.tga Name Baden-Wurttemberg Label wurttemberg bavaria table: 1AD79578 Flag data\ui\flags\bavaria/small.tga Name Bavaria Label bavaria italy_kingdom table: 1AD79438 Flag data\ui\flags\italy_kingdom/small.tga Name Kingdom of Italy Label italy_kingdom netherlands table: 1AD799B8 Flag data\ui\flags\united_netherlands/small.tga Name Batavian Republic Label netherlands swiss_confederation table: 1AD79538 Flag data\ui\flags\swiss_confederation/small.tga Name Swiss Confederation Label swiss_confederation spain table: 1AD799D8 Flag data\ui\flags\spain/small.tga Name Spain Label spain
RetrieveDiplomaticOpinions(Faction Key 1 (string), Faction Key 2(string))
RetrieveDiplomaticOpinions возвращает дипломатическое отношение двух фракций.
Возвращает: строка с указанием дипломатического отношения данных фракций
Пример:
Code:
CampaignUI.RetrieveDiplomaticOpinions("france", "britain")
Пример результата:
Code:
Hostile --(враждебные)
RetrieveDiplomaticStanceString(Faction Key 1 (string), Faction Key 2(string))
RetrieveDiplomaticStanceString возвращает дипломатическое состояние двух фракций.
Возвращает: строка с указанием дипломатического состояния данных фракций (война, союз и т.п.)
Пример:
Code:
CampaignUI.RetrieveDiplomaticStanceString("france", "britain")
Пример результата:
Code:
at war
RegionsOwnedByFaction(<faction_key>)
CampaignUI.RegionsOwnedByFaction() даст вам список всех регионов фракции
Параметры: фракция
Возвращает: Таблицу со списком указателей регионов и локализованными названиями регионов
Пример:
Code:
CampaignUI.RegionsOwnedByFaction("britain")
Вернет таблицу со следующей информацией:
Code:
Нажмите, чтобы прочитать 1: table Name: string: Ireland Address: userdata type: string: Pointer<REGION> __tostring: function __eq: function2: table Name: string: England Address: userdata type: string: Pointer<REGION> __tostring: function __eq: function3: table Name: string: Jamaica Address: userdata type: string: Pointer<REGION> __tostring: function __eq: function4: table Name: string: Bahamas Address: userdata type: string: Pointer<REGION> __tostring: function __eq: function5: table Name: string: Rupert's Land Address: userdata type: string: Pointer<REGION> __tostring: function __eq: function6: table Name: string: Scotland Address: userdata type: string: Pointer<REGION> __tostring: function __eq: function
RetrieveFactionRegionList(<faction_key>)
CampaignUI.RetrieveFactionRegionList() даст вам список всех населенных пунктов фракции. Подобно RegionsOwnedByFaction, но возвращает указатели поселений вместо указателей регионов
Параметры: фракция
Возвращает: таблицу со списком указателей поселений
Пример:
Code:
CampaignUI.RetrieveFactionRegionList("britain")
Вернет таблицу со следующей инфо:
Code:
Нажмите, чтобы прочитать 1: table SettlementAddress: userdata type: string: Pointer<SETTLEMENT> __tostring: function __eq: function2: table SettlementAddress: userdata type: string: Pointer<SETTLEMENT> __tostring: function __eq: function3: table SettlementAddress: userdata type: string: Pointer<SETTLEMENT> __tostring: function __eq: function4: table SettlementAddress: userdata type: string: Pointer<SETTLEMENT> __tostring: function __eq: function5: table SettlementAddress: userdata type: string: Pointer<SETTLEMENT> __tostring: function __eq: function6: table SettlementAddress: userdata type: string: Pointer<SETTLEMENT> __tostring: function __eq: function
RetrieveFactionMilitaryForceLists(<faction_key>,armies/navies)
CampaignUI.RetrieveFactionMilitaryForceLists() даст вам список всех армий или флотов фракции
Параметры: название фракции, армия или флот как правда или ложь (армия = true)
Возвращает: таблицу с огромным списком деталей армий или флота
Пример:
Code:
CampaignUI.RetrieveFactionMilitaryForceLists("france",true)
Вернет таблицу со следующей информацией:
Code:
Нажмите, чтобы прочитать 1: table ActionPointsPerTurn: number: 22 Transitioning: boolean: false Ancillaries: table Traits: table Flag: string: data\ui\flags\france/portrait_flags.tga Effects: table Abilities: table can_research: boolean: false can_assassinate: boolean: false can_attack_naval: boolean: false can_build_religious: boolean: false can_attack_land: boolean: true can_receive_duel: boolean: false can_build_fort: boolean: false can_duel: boolean: false can_convert: boolean: false can_sabotage: boolean: false can_spy: boolean: false Attributes: table morale_sea: table Value: number: -1 AttributeName: string: Morale PipPath: string: PLACEHOLDER research: table Value: number: -1 AttributeName: string: Research Skill PipPath: string: data/ui/campaign ui/pips/skill_research.tga land_siege_engineering: table Value: number: -1 AttributeName: string: Siege engineering PipPath: string: PLACEHOLDER movement_points_land: table Value: number: -1 AttributeName: string: movement_points_land_name PipPath: string: PLACEHOLDER management: table Value: number: -1 AttributeName: string: Management Skill PipPath: string: data/ui/campaign ui/pips/skill_managing.tga PrimaryAttributePath: string: data/ui/campaign ui/pips/skill_command.tga PrimaryAttributeName: string: Command on Land zeal: table Value: number: -1 AttributeName: string: Religious Zeal PipPath: string: data/ui/campaign ui/pips/skill_zeal.tga subterfuge: table Value: number: -1 AttributeName: string: Subterfuge Skill PipPath: string: data/ui/campaign ui/pips/skill_spying.tga duelling_swords: table Value: number: -1 AttributeName: string: Sword duelling PipPath: string: data/ui/campaign ui/pips/skill_swordfighting.tga duelling_pistols: table Value: number: -1 AttributeName: string: Pistol duelling PipPath: string: data/ui/campaign ui/pips/skill_shooting.tga morale_land: table Value: number: -1 AttributeName: string: Morale PipPath: string: PLACEHOLDER trade: table Value: number: -1 AttributeName: string: Trade PipPath: string: PLACEHOLDER PrimaryLevel: number: 1 land_defence_engineering: table Value: number: -1 AttributeName: string: Land defence engineering PipPath: string: PLACEHOLDER command_sea: table Value: number: -1 AttributeName: string: Command at Sea PipPath: string: data/ui/campaign ui/pips/skill_naval.tga command_land: table Value: number: 0 AttributeName: string: Command on Land PipPath: string: data/ui/campaign ui/pips/skill_command.tga IsMilitary: boolean: true FactionColour: table b: number: 240 g: number: 255 r: number: 255 ShowAsCharacter: boolean: false PosX: number: 16.522933959961 Soldiers: number: 122 Units: number: 3 PosY: number: 347.06695556641 CommanderType: number: 5 ActionPoints: number: 22 Title: string: AgentType: string: Brigadier IsNaval: boolean: false SmallFlag: string: data\ui\flags\france/small.tga UniformColour: table b: number: 240 g: number: 255 r: number: 255 MaskImage: string: data/ui/units/icons/Euro_Provincial_Cavalry_icon_cavs_mask.tga TechImage: string: Playable: boolean: true CardImage: string: data/ui/units/icons/Euro_Provincial_Cavalry_icon_cavs.tga InfoImage: string: Address: userdata type: string: Pointer<CHARACTER> __tostring: function __eq: function Location: string: Paris Name: string: Charles Lagrange Age: number: 18 CommandedUnit: table Charge: number: 7 DisplayAsUnit: boolean: true Reloading: number: 0 FactionColour: table b: number: 240 g: number: 255 r: number: 255 Firepower: number: 0 Manoeuvrability: string: manoeuverability_medium InTransit: boolean: false RecruitCost: number: 975 CommanderType: number: 5 Accuracy: number: 0 Id: string: unit35 Defence: number: 5 knowledge_mask: number: 15 PromotionCost: number: 1950 IsArtillery: boolean: false Replenished: boolean: false Men: number: 30 Ammunition: number: 0 Description: string: These locally recruited cavalry are a valuable aid in keeping order. InfoPic: string: data/ui/units/info/euro_provincial_cavalry Replenishable: boolean: false UnitRecord: table Ammunition: number: 0 RecruitTime: number: 1 UpkeepCost: number: 310 InfoPic: string: data/ui/units/info/euro_provincial_cavalry Class: string: Cavalry Range: number: 0 MPCost: number: 650 Key: string: euro_provincial_cavalry_gendarmerie IsArtillery: boolean: false IsNaval: boolean: false Experience: number: 0 RecruitCost: number: 975 Men: number: 60 Defence: number: 5 Reloading: number: 0 Melee: number: 10 Accuracy: number: 0 Firepower: number: 0 DisplayNumber: number: 60 ClassID: number: 9 Charge: number: 7 Guns: number: 0 Description: string: These locally recruited cavalry are a valuable aid in keeping order. Name: string: Gendarmerie Morale: number: 7 SiegeUnit: boolean: false Icon: string: data/ui/units/icons/Euro_Provincial_Cavalry_icon_cavs LongDescription: string: These light horsemen are often little more than mounted militia, but with a greater social standing. Cavalry always see themselves as better than footsoldiers, but in this case, it may be true. It is, after all, not cheap to purchase and maintain a decent horse, and this means that men with financial standing make up the majority of recruits.They are, however, not as disciplined as regular cavalry, simply because they do not have the time or available resources to learn the craft of war as thoroughly. They are, however, extremely useful in policing the rougher, lower orders and keeping the existing social structure intact.Historically, there are many examples of yeomanry or gendarmes turning on their own citizenry with surprising and horrific violence. They were widely used against the anti-factory Luddites in northern England and, most infamously, were responsible for the Peterloo Massacre in 1819, when the Manchester and Salford Yeomanry charged a mostly peaceful, but excited crowd, and cut down many unarmed protestors. MPCategory: number: 1 RegimentName: string: 1st Regiment of Horse LongDescription: string: These light horsemen are often little more than mounted militia, but with a greater social standing. Cavalry always see themselves as better than footsoldiers, but in this case, it may be true. It is, after all, not cheap to purchase and maintain a decent horse, and this means that men with financial standing make up the majority of recruits.They are, however, not as disciplined as regular cavalry, simply because they do not have the time or available resources to learn the craft of war as thoroughly. They are, however, extremely useful in policing the rougher, lower orders and keeping the existing social structure intact.Historically, there are many examples of yeomanry or gendarmes turning on their own citizenry with surprising and horrific violence. They were widely used against the anti-factory Luddites in northern England and, most infamously, were responsible for the Peterloo Massacre in 1819, when the Manchester and Salford Yeomanry charged a mostly peaceful, but excited crowd, and cut down many unarmed protestors. ExistingUnit: boolean: true Speed: number: 0 UniformColour: table b: number: 240 g: number: 255 r: number: 255 Icon: string: data/ui/units/icons/Euro_Provincial_Cavalry_icon_cavs NeedsRepair: boolean: false ActionPoints: number: 28 RepairCost: number: 0 Melee: number: 10 IsNaval: boolean: false ShowAsCharacter: boolean: false UpkeepCost: number: 298 Portrait: string: Range: number: 0 HullStrength: number: 0 Morale: number: 7 Experience: number: 0 Address: userdata type: string: Pointer<UNIT> __tostring: function __eq: function Traits: table Guns: number: 0 Name: string: Gendarmerie CommandersName: string: Charles Lagrange2: table ActionPointsPerTurn: number: 23 Transitioning: boolean: false ...
I.4 Игровой интерфейс - Game Interface
Вызывается с помощью scripting.game_interface (после требуемого пакета EpisodicScripting) это основной пакет, позволяющий нам изменять положение вещей в игре. К сожалению, пока нет слишком много информации.
Следующие функции описаны здесь:
add_exclusion_zone
add_restricted_unit_record
add_restricted_building_level_record
disable_movement_for_faction
enable_movement_for_faction
episodic_attack
episodic_defend
force_diplomacy
grant_faction_handover
grant_unit
remove_restricted_building_level_record
remove_restricted_unit_record
show_shroud
spawn_town_level
trigger_custom_mission
Documentation:
add_exclusion_zone(left(int), top(int), right(int), bottom(int), exclude_armies(bool), exclude_navies(bool), exclude_agents(bool), faction key(string))
add_exclusion_zone добавляет непроходимую зону для AI.
Параметры: left(int), top(int), right(int), bottom(int), exclude_armies(bool), exclude_navies(bool), exclude_agents(bool), faction key(string)
Пример:
Code:
scripting.game_interface:add_exclusion_zone(-100, 100, 100, -100, true, true, true, "britain")
add_restricted_unit_record(<unit_key>)
add_restricted_unit_record позволяет удалить юнита из найма во всем мире (по аналогии с SF юнитами)
Параметры: Unit key как строка (как указано в таблице юнитов)
Пример:
Code:
scripting.game_interface:add_restricted_unit_record("euro_expat_infantry_regiments_etrangeres")
add_restricted_building_level_record(building key(string))
add_restricted_building_level_record позволяет сделать недоступными здания во всем мире.
Параметры: Building key как строка (как указано в db)
Пример:
Code:
scripting.game_interface:add_restricted_building_level_record("tFactory1_manufactory")
disable_movement_for_faction(Faction Key(String))
disable_movement_for_faction замораживает движение указанной фракции
Параметры: фракция как строка (как указано в db)
Пример:
Code:
scripting.game_interface:disable_movement_for_faction("france")
enable_movement_for_faction(Faction Key(String))
enable_movement_for_faction размораживает фракцию
Параметры: фракция как строка (как указано в db)
Пример:
Code:
scripting.game_interface:enable_movement_for_faction("france")
episodic_attack(faction key (string), target faction(string))
episodic_attack советует AI атаковать фракцию. Это в значительной степени непроверено, результаты могут отличаться
Параметры: фракция (string), целевая фракция(string)
Пример:
Code:
scripting.game_interface:episodic_attack("france", "britain")
episodic_defend(faction key (string), region(string))
episodic_defend советует AI защищать регион. Это в значительной степени непроверено, результаты могут отличаться
Параметры: фракция (string), регион(string)
Пример:
Code:
scripting.game_interface:episodic_defend("france", "eur_norway")
force_diplomacy(faction_key(string), target_faction(string), diplomatic option(string), can offer (bool), will accept(bool))
force_diplomacy заставляет принять определенную позицию одной фракции по отношению к другой
Параметры: фракция(string), целевая фракция(string), дипломатические отношения(string), может предложить (bool), будет принимать(bool)
Пример:
Code:
scripting.game_interface:force_diplomacy("france", "britain", "war" true, true)
grant_faction_handover(recipient faction key(string), handed over faction key(string), first possible turn(int), last possible turn(int), context)
grant_faction_handover передает фракцию другой фракции.
Параметры: recipient faction key(string), handed over faction key(string), first possible turn(int), last possible turn(int), context
Пример:
Code:
scripting.game_interface:grant_faction_handover("britain", "france", 1, 2, context)
grant_unit(location(string), unit to grant(string))
Порождает данного юнита в заданном месте. Место должно быть поселением.
Параметры: location(string), unit to grant(string)
Пример:
Code:
scripting.game_interface:grant_unit("settlement:ita_milano:milan", "Inf_Light_Lombardy-Cisalpine_Legion")
remove_restricted_building_level_record(building key(string))
remove_restricted_building_level_record снимает ограничение на здания, которое было установлено ранее add_restricted_building_level_record
Параметры: Building key as string (as it appears in the db)
Пример:
Code:
scripting.game_interface:remove_restricted_building_level_record("tFactory1_manufactory")
remove_restricted_unit_record(<unit_key>)
remove_restricted_unit_record снимает ограничение на юнитов, которое было установлено ранее add_restricted_unit_record
Параметры: Unit key as string (as it appears in the units table)
Пример:
Code:
scripting.game_interface:remove_restricted_unit_record("euro_expat_infantry_regiments_etrangeres")
show_shroud(true/false)
show_shroud включает или отключает туман войны
Параметры: true/ false
Пример:
Code:
scripting.game_interface:show_shroud(false)
spawn_town_level(region key (string), level(int), notification(bool))
spawn_town_level повышает города до указанного уровня.
Параметры: region key (string), level(int), trigger notification(bool)
Пример:
Code:
scripting.game_interface:spawn_town_level("virginia", 1, true)
trigger_custom_mission(mission id (string), faction key(string), mission type(string), turn limit(int), Параметры(string), heading key(string), description key(string), reward key(string), reward money(int), reward faction key(string), context)
trigger_custom_mission запускает пользовательские миссии.
Параметры: mission id (string), faction key(string), mission type(string), turn limit(int), parameters(string), heading key(string), description key(string), reward key(string), reward money(int), reward faction key(string), context
Пример:
Code:
sscripting.game_interface:trigger_custom_mission("eur_prussia_alliance_austria","prussia","forge_alliance", 0, "austria", "mission_text_text_eur_prussia_alliance_austria_heading", "mission_text_text_eur_prussia_alliance_austria_text","", 0, "", context
I.5 События - Events
Список событий, в основном названия говорят сами за себя
Нажмите, чтобы прочитать AdviceDismissed
AdviceFinishedTrigger
AdviceIssued
AdviceSuperseded
ArmySabotageAttemptSuccess
AssassinationAttemptSuccess
BattleBoardingActionCommenced
BattleCommandingShipRouts
BattleCommandingUnitRouts
BattleCompleted
BattleConflictPhaseCommenced
BattleDeploymentPhaseCommenced
BattleFortPlazaCaptureCommenced
BattleShipAttacksEnemyShip
BattleShipCaughtFire
BattleShipMagazineExplosion
BattleShipRouts
BattleShipRunAground
BattleShipSailingIntoWind
BattleShipSurrendered
BattleUnitAttacksBuilding
BattleUnitAttacksEnemyUnit
BattleUnitAttacksWalls
BattleUnitCapturesBuilding
BattleUnitDestroysBuilding
BattleUnitRouts
BattleUnitUsingBuilding
BattleUnitUsingWall
BuildingCardSelected
BuildingCompleted
BuildingConstructionIssuedByPlayer
BuildingInfoPanelOpenedCampaign
CameraMoverCancelled
CameraMoverFinished
CampaignArmiesMerge
CampaignBuildingDamaged
CampaignSettlementAttacked
CampaignSlotAttacked
CharacterAttacksAlly
CharacterBlockedPort
CharacterBrokePortBlocke
CharacterBuildsSpyNetwork
CharacterCandidateBecomesMinister
CharacterCanLiberate
CharacterCompletedBattle
CharacterCreated
CharacterCriticallyFailsAssassination
CharacterDamagedByDisaster
CharacterDisembarksNavy
CharacterEmbarksNavy
CharacterEntersAttritionalArea
CharacterEntersGarrison
CharacterFactionCompletesResearch
CharacterFactionSpyAttemptSuccessful
CharacterFactionSuffersSuccessfulSpyAttempt
CharacterInfoPanelOpened
CharacterLootedSettlement
CharacterPromoted
CharacterSelected
CharacterTurnEnd
CharacterTurnStart
ComponentLClickUp
DuelDemanded
DuelFought
DummyEvent
EspionageAgentApprehended
evaluate_mission
EventMessageOpenedBattle
EventMessageOpenedCampaign
FactionGovernmentTypeChanged
FactionRoundStart
FactionTurnEnd
FactionTurnStart
FortSelected
GarrisonResidenceCaptured
GovernorshipTaxRateChanged
HarassmentAttemptSuccess
HistoricalCharacters
HistoricalEvents
historical_events
HudRefresh
IncomingMessage
LandTradeRouteRaided
LoadingGame
LocationEntered
LocationUnveiled
MissionCancelled
MissionCheckAssassination
MissionCheckBlockePort
MissionCheckBuild
MissionCheckCaptureCity
MissionCheckDuel
MissionCheckEngageCharacter
MissionCheckEngageFaction
MissionCheckGainMilitaryAccess
MissionCheckMakeAlliance
MissionCheckMakeTradeAgreement
MissionCheckRecruit
MissionCheckResearch
MissionCheckSpyOnCity
MissionEvaluateAssassination
MissionEvaluateBlockadePort
MissionEvaluateBuild
MissionEvaluateCaptureCity
MissionEvaluateDuel
MissionEvaluateEngageCharacter
MissionEvaluateEngageFaction
MissionEvaluateGainMilitaryAccess
MissionEvaluateMakeAlliance
MissionEvaluateMakeTradeAgreement
MissionEvaluateRecruit
MissionEvaluateResearch
MissionEvaluateSpyOnCity
MissionFailed
MissionIssued
MissionNearingExpiry
MissionSucceeded
ModelCreated
MovementPointsExhausted
MultiTurnMove
NewCampaignStarted
NewSession
PanelviceRequestedBattle
PanelviceRequestedCampaign
PanelClosedBattle
PanelClosedCampaign
PanelOpenedBattle
PanelOpenedCampaign
PendingBankruptcy
PreBattle
RecruitmentItemIssuedByPlayer
RegionIssuesDemands
RegionRebels
RegionRiots
RegionStrikes
RegionTurnEnd
RegionTurnStart
ResearchCompleted
SabotageAttemptSuccess
SavingGame
SeaTradeRouteRaided
SettlementOccupied
SettlementSelected
SiegeLifted
SlotOccupied
SlotOpens
SlotRoundStart
SlotSelected
SlotTurnStart
SpyingAttemptSuccess
SufferAssassinationAttempt
SufferSpyingAttempt
TechnologyInfoPanelOpenedCampaign
TestEvent
TimeTrigger
Tooltipvice
TradeLinkEstablished
TradeRouteEstablished
UICreated
UIDestroyed
UngarrisonedFort
UnitCompletedBattle
UnitCreated
UnitSelectedCampaign
UnitTrained
UnitTurnEnd
VictoryConditionFailed
VictoryConditionMet
WorldCreated
Раздел II: Учебник написания скриптов
В этом разделе объясняется, как написать свой собственный скрипт и он будет содержать более продвинутые примеры.
II.1 Как использовать события.
Чтобы связать некоторый код с событием вам нужно добавить функцию в конец необходимой таблицы событий следующим образом::
Code:
events.EventName[#events.EventName+1] = function(context) codeend
Таким образом, следующий код добавляет немного денег фракции в начале ее хода.
Code:
events.FactionTurnStart[#events.FactionTurnStart+1] = function(context) effect.adjust_treasury(100000, context)end
Этот метод подключения событий сохраняет заполнение функций, таких как OnFactionTurnStart () с вашим собственным кодом и является более надежным для людей, не слишком хорошо знакомым со скриптами.
Только помните, не размещайте кусок кода внутри другой функции. Код, который опирается начала хода поселения никогда не сработает, если его поместить внутри функции OnFactionTurnStart, так как фракция и поселение начинают свой ход в разное время.
II.2 Создание пользовательских миссий.
Функции
Функция используемая для создания пользовательских миссий это scripting.game_interface:trigger_custom_mission(). Эта функция создает "пользовательские миссии" и не нуждается в db - все это управляется с помощью скриптов.
Она содержит 13 аргументов, а именно:
1.
Name
Тип: String
Описание: Это название миссии. Оно должно быть уникальным, и используется для ссылки на миссию в других местах.
2.
Faction key
Тип: String
Описание: Это фракции, которой миссия будет даваться. Запомните -миссии не даются А.И.
3.
Mission Activity
Тип: String
Описание: Это одно из 15 действий, которые миссия может включать в себя, как это определено в missions_activities_tables. К ним относятся:
assassination
blockade_port
build_building
capture_city
capture_fort
duel
engage_character
engage_faction
gain_military_access
forge_alliance
make_trade_agreement
recruit
research
spy_on_city
4.
Turn Limit
Тип: Integer
Описание: Это используется для определения количества времени, прежде чем миссия провалится. Установка в 0 дает неограниченное время.
5.
Target Item
Тип: String
Описание: Это «мишень» миссии. Это может быть фракция, юнит, персонаж, технологии и т.д.
6.
Heading key
Тип :String
Описание: Это должно соответствовать вводу текста в Loc. Это текст, который озаглавит всплывающую миссию. Чтобы оставить пустым, используйте пустые кавычки.
7.
Description Key
Тип: String
Описание: То же самое, толькоо главное тело сообщения. Чтобы оставить пустым, используйте пустые кавычки.
8.
unused Key
Тип: String
Описание: Это некоторые формы неиспользуемых наград. Всегда оставляйте пустым. Чтобы оставить пустым, используйте пустые кавычки.
9.
Reward Key (Cash)
Тип: Integer
Описание: Используйте это, для суммы вознаграждения
10.
Reward Key (Faction)
Тип: String
Описание: Это используется, чтобы вознаградить всю фракцию. Это запись должна быть действительным ключом фракции. Чтобы оставить пустым, используйте пустые кавычки.
11.
Context
Тип: Userdata
Описание: Всегда устанавливается "context", без кавычек. Передача других аргументов является ненужным и приведет к возникновению ошибок.
12.
Unknown argument
Тип:Boolean
Описание: Цель неизвестна. Почти всегда ложно.
13.
Reward Key (Misc)
Тип:String
Описание: Используется как альтернативный способ, чтобы дать некоторые награды, а также награды которые обычно не доступны. Это должна быть строка, и может иметь несколько значений. Внутренние значения должны быть разделены запятой (,). Типы (с примерами):
money:1000
grant_experience_army:1
grant_unit:Inf_Line_Austrian_German_Fusiliers#settlement:eur_baden_wurttemberg:stuttgart
Есть, возможно, больше вариантов для этого.
Примеры использования
Следующий пример выдает миссию Австрии, вступить в союз с Пруссией. Дает в качестве награды 100 денег и фракцию Францию (немного чрезмерно, я знаю). Он имеет неограниченное время и называется "TutorialTestMission". Он не имеет заголовка или текста тела и вызывается внутри функции OnFactionTurnStart() scripting.lua
Code:
scripting.game_interface:trigger_custom_mission( "TutorialTestMission", "austria", "forge_alliance", 0, "prussia", "", "", "", 100, "france", context, false, "" )
Как вы можете видеть здесь, игра загружает соответствующий текст описания миссии для вас. Вы также заметите, что не правильно информирует игрока о всех вознаграждениях, неприятный инцидент, по меньшей мере...
Нажмите, чтобы прочитать Тут нет всплывающего окна что миссия завершена - они должны быть сделаны скриптами вручную.
II.3 Как написать лог журнал.
Лог журнал, безусловно, самый простой способ поиска ошибки, он говорит вам, что и как работает в скриптах. Следующие куски кода это функции (I) Создание журнала и (II) запись в журнал. Чтобы понять какие операторы мы использовали, я бы посоветовал вам посмотреть раздел Основы (I.1), который объясняет их подробно.
Code:
function TCS_Create_Log () local DateAndTime = os.date() local TCSLog = io.open("data/Logs/log.txt","w") TCSLog:write("[Log Created] "..DateAndTime.."\n\n") TCSLog:close()end
Code:
function TCS_Log_Update(update_arg) local DateAndTime1 = os.date("%H:%M.%S") local TCSLogU = io.open("data/Logs/log.txt","a") TCSLogU:write("\n["..DateAndTime1.."]\t\t"..tostring(update_arg)) TCSLogU:close()end
Эти функции могут не иметь смысла для тех, кто не знаком с Lua, поэтому я включил некоторые комментарии ниже.
Code:
-- создаем функцию, которая не принимает никаких аргументовfunction TCS_Create_Log () --устанавливает переменную времени и даты local DateAndTime = os.date() --открывает текстовый файл в каталоге. Установите режим записи ("W"), так что если текстовый файл --существует, он будет перезаписан, если нет - он будет создан. local TCSLog = io.open("data/Logs/log.txt","w") --написать в заголовке дату в журнал, чтобы вы знали, когда это было обновлено. TCSLog:write("[Log Created] "..DateAndTime.."\n\n") --закрыть лог TCSLog:close()end
Code:
--создать функцию, которая принимает только один аргументfunction TCS_Log_Update(update_arg) --установить дату в формате HMS переменной local DateAndTime1 = os.date("%H:%M.%S") --открыть журнал по указанному пути. Открыть в режиме добавления ("A"), который будет добавлять в --файл, а не перезаписывать его local TCSLogU = io.open("data/Logs/log.txt","a") --написать дату в формате HMS перед каждой записью журнала TCSLogU:write("\n["..DateAndTime1.."]\t\t"..tostring(update_arg)) --закрыть лог TCSLogU:close()end
Использование функции:
Функции должны быть определены, так что я бы посоветовал вам сделать это в начале вашего скрипта. Помните, что скрипты читаются логически (в основном), поэтому вы должны определить функцию до ее вызова. Сейчас я напишу как вы вызовете функцию, чтобы создать журнал только один раз, чтобы он переписывал все журналы, которые уже существуют. Это делается следующим образом:
Code:
TCS_Create_Log ()
Затем вы можете использовать обновления журнала так часто, как вы хотите. Вот пример основного использования:
Code:
TCS_Log_Update("hello World!")
Будет выводить следующее в файл журнала:
Code:
[12:46.13] Hello World!
Если вы укажете аргумент функции, который не существует, он будет, скорее всего, пойман им, так как он использует ToString() преобразователь.
Так что код:
Code:
TCS_Log_Update(hello World!)
Выведет
Code:
[12:46.13] nil
II.4 Как редактировать компоненты пользовательского интерфейса (основы).
Для редактирования компонентов UI наиболее эффективен такой способ - получить декомпилированный файл, исправить, отредактировать его и перекомпилировать. Это, очевидно, не вариант для большинства людей, так что далее следует простой пример того, как это сделать с помощью scripting.lua и episodicscripting.
Перво-наперво, вам нужно знать имя вашего компонента для редактирования. Нет простого способа сделать это, вы просто должны пролезть в файлы игры и найти где-то в другом месте, где он ссылается на глобальном уровне (то есть не на месте). Когда вы знаете название компонента для редактирования, необходимо добавить запись в таблицу m_features из таблицы episodicscripting. Это делается путем добавления кода в конец таблицы:
Code:
["disable_end_turn"] = { ["Enable"] = function() out.ting("End turn disabled") UIComponent(m_root:Find("button_end_turn")):SetVisible(false) UIComponent(m_root:Find("button_end_turn")):SetDisabled(true) end, ["Disable"] = function() out.ting("End turn re-enabled") UIComponent(m_root:Find("button_end_turn")):SetVisible(true) UIComponent(m_root:Find("button_end_turn")):SetDisabled(false) end },
И вот он с некоторыми комментариями, чтобы сделать его проще для понимания:
Code:
--установить функции название ["disable_end_turn"] = { --определить функции включение ["Enable"] = function() --код, который будет выполняться, когда включенная функция вызывается out.ting("End turn disabled") UIComponent(m_root:Find("button_end_turn")):SetVisible(false) UIComponent(m_root:Find("button_end_turn")):SetDisabled(true) end, --определить функции отключение ["Disable"] = function() --код, который будет выполняться, когда отключение функции вызывается out.ting("End turn re-enabled") UIComponent(m_root:Find("button_end_turn")):SetVisible(true) UIComponent(m_root:Find("button_end_turn")):SetDisabled(false) end },
Чтобы действительно изменить компоненты пользовательского интерфейса, вам нужно использовать UIComponent() функцию. Это описано следующим образом:
Code:
UIComponent(m_root:Find(<<Name of component>>)):<<function to call on component>>
И например, здесь:
Code:
UIComponent(m_root:Find("button_end_turn")):SetDisabled(false)
Я видел только как SetDisabled или SetVisible используются в episodicscripting, но вот другие команды, используемые в luacs:
SetStateText(<<string>>)
SetState(<<string>>) (Only useable if you can compare to UI xmls)
SetTooltipText(<<string>>)
Есть много больше, но эти являются наиболее актуальными.
Так что теперь вы добавили функцию к таблице, вам необходимо ее назвать. Это довольно просто сделать - в scripting.lua (или в другом месте, где episodicscripting модуль загружается) просто использовать следующий код:
Code:
scripting.EnableFeature(<<feature name>>)scripting.DisableFeature(<<Feature name>>)
EnableFeature будет выполнять любой код определяемый по "Enable" таблице и Функция отключения сделает то же самое по "Disable" таблице.
Пример использования:
Code:
scripting.EnableFeature("Hide_prestige_tab") scripting.DisableFeature("hide_campaign_hud")