群星
ParaWikis
最新百科
都市天际线2百科
英雄无敌3百科
维多利亚3百科
奇妙探险队2百科
罪恶帝国百科
英白拉多:罗马百科
热门百科
群星百科
欧陆风云4百科
十字军之王2百科
十字军之王3百科
钢铁雄心4百科
维多利亚2百科
ParaWikis
申请建站
ParaWikis
ParaCommons
最近更改
随机页面
加入QQ群
工具
链入页面
相关更改
特殊页面
页面信息
页面值
阅读
编辑
编辑源代码
查看历史
讨论
编辑“
Event modding
”
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
{{version|3.2}} == Event types == There are several types of events: # <code>event</code> – for an entire game (global event) # <code>country_event</code> – for an entire [[Empire_modding|empire]] # <code>planet_event</code> – for a [[Planet_modding|planet]] # <code>fleet_event</code> – for a [[Fleet_modding|fleet]] # <code>ship_event</code> – for a [[Ship_modding|ship]] # <code>pop_faction_event</code> – for a [[faction]] # <code>pop_event</code> – for a [[population]] unit # <code>observer_event</code> – for the observer (development usage only; use console command "observe" to enter observer mode) # <code>system_event</code> – for a [[System_modding|system]], [[Scopes#Scope_Types|galactic_object]] (since 3.0) # <code>starbase_event</code> – for a [[Starbase_modding|starbase]] (since 3.0) # <code>leader_event</code> – for a [[Leader_modding|leader]] (since 3.0) # <code>espionage_operation_event</code> – for use inside [[espionage |espionage operations]] (since 3.0) # <code>first_contact_event</code> – for [[first contact]]s (since 3.0) == Basic Behavior == === Namespace and Event ID === The top of every event file must contain a namespace line.<ref>Technically, you can place the namespace anywhere as long as the file is loaded before the namespace is used, but it's absolutely not good practise.</ref> The namespace is used as the basis for identifying all events in the file. If you open the <code>on_action_events.txt</code> file near the top of the file you will find <code>namespace = action</code>. Then every event in this file has an ID that starts with <code>action</code> followed by a period then a unique number as shown here for the <code>actions.8</code> event: country_event = { <b style="color:#900">id = action.8</b> hide_window = yes is_triggered_only = yes trigger = { is_country_type = default from = { is_country_type = default } NOT = { has_communications = from } is_hostile = from } immediate = { establish_communications = from fromfrom = { conquer = root set_controller = root } } } Anywhere in the game that needs to call this event will use the ID property. An event file can have any number of namespace. Event ID can't have letters, or it will be recognized as "namespace.0". Leading zeros in IDs are truncated (namespace.003 is the same as namespace.3). === Execution === By default every event has all its triggers checked against every game object at least once per game day, possibly once per game tick. For the objects where the triggers are all met, the code of the event is executed with the [[scope]] of said object. However, events should usually not be run in this fashion, as it is very expensive on performance. Instead, an event should either use <code>is_triggered_only = yes</code>, which will exempt the event from this persistent polling, and trigger the event from elsewhere; or it should use <code>mean_time_to_happen</code>, which increases the intervals at which the event is checked. <ref name=MTTH>See ''[[#Mean Time To Happen]]'' for more details on both of these processes.</ref> Similarly works <code>fire_only_once = yes</code>. However unlike <code>is_triggered_only</code> the code will still be polled, only to be removed after it was executed at least once. Also, as of 2.1.2, the conditions for a <code>fire_only_once</code> event should exclude the event firing a second time or error log entries are created. === Condition === Events can have conditions represented with <code>trigger</code> section of [[Conditions|Condition]] statements . If the condition is evaluated false, this event doesn't trigger. Here is an example from the event "apoc.1". <syntaxhighlight lang="tcl"> trigger = { owner = { NOT = { has_country_flag = encountered_first_gateway } } from = { has_star_flag = abandoned_gateway any_system_megastructure = { is_megastructure_type = gateway_ruined } } } </syntaxhighlight> ==== Pre triggers ==== <code>pre_triggers</code> are fast triggers that are tested before full triggers, they are meant to be fast and quickly exclude target scopes from events, they take the form of "yes/no" question. Use this to improve performance related to events.<ref>(ingame pre_triggers docu "000_added_pre_triggers_to_planet_events.txt").</ref> If an entry is not included it will be ignored. They work for planet, pop, system, starbase and leader scopes. Possible '''planet''' values: <syntaxhighlight lang="py"> pre_triggers = { has_owner = yes # whether the planet has an owner is_homeworld = no # whether the planet is its owner's homeworld original_owner = yes # whether the planet still belong to its original owner is_ai = no # whether the planet owner is controlled by the computer (vs controlled by a human) has_ground_combat = no # whether ground combat is going on the planet is_capital = no # whether the planet is the capital world of the empire it belongs too is_occupied_flag = no # whether the planet is occupied } </syntaxhighlight> Possible '''pop''' from jobs values:<ref>"possible_pre_triggers" to jobs, see "common/pop_jobs/000_pretriggers.txt"</ref> <syntaxhighlight lang="py"> possible_pre_triggers = { has_owner = yes # whether the pop planet has an owner is_enslaved = no # whether the pop is enslaved is_being_purged = no # whether the pop is being purged is_being_assimilated = no # whether the pop is being assimilated has_planet = yes # whether the pop is on a planet or not is_sapient = yes # whether the pop is sapient } </syntaxhighlight> <code>can_join_pre_triggers</code> in <code>pop_factions</code> accepts the same parameters. ;system:<syntaxhighlight lang="py"> has_owner # whether the system has an owned starbase is_capital # whether the system has its owner's capital in it is_occupied_flag # whether the system is fully occupied by someone other than its owner, including all of its planets </syntaxhighlight> ;starbase:<syntaxhighlight lang="py"> has_owner # whether it has an owner is_occupied_flag # whether the controller is not the owner </syntaxhighlight> ;leader:<syntaxhighlight lang="py"> has_owner is_idle # whether the leader is assigned to a task </syntaxhighlight> === Visibility === By default every Event will display a window and thus needs at least one option and a number of textfields to display. In order to suppress that window (and the need to set all the necessary text fields) <code>hide_window = yes</code> can be used. This is mainly used to trigger events that are used for achievements or events that the player should not know are happening. === Code execution === The primary place for code is the <code>immediate</code> section of [[Effects|Effect]] statements. Most events have all their code contained inside this block. You can use if statement in <code>immediate</code> section, like the following, as seen in colony.events.txt. <syntaxhighlight lang="py"> immediate = { if = { limit = { event_target:subterranean_nation = { NOT = { has_country_flag = tech_request_approved } } } create_army = { name = "NAME_Invading_Horde" owner = event_target:subterranean_nation species = event_target:subterranean_species type = "industrial_army" leader = last_created_leader } } }</syntaxhighlight> However visible events need at least one option (the OK Button of a message box). Every option can carry its own code.<ref name=opt>See ''[[#Options]]'' for details.</ref> [[Scope]] is a very important consideration for any code executed in any event and it is heavily based on how the event was called. === Mean Time To Happen === A additional condition very often used on event that triggered by regular polling, is the '''mean_time_to_happen''' (MTTH). This will delay the execution of the event by a random amount of ingame days. On '''average''' the activation will be delayed as given, but the exact number can vary considerably. Counting starts the moment all other trigger conditions are met and it is not clear how exact the internal implementation of this delay works, however it seems likely the MTTH is regularly polled just like all other triggers. * <code>mean_time_to_happen = { months = 5 }</code> or <code>mean_time_to_happen = { days = 15 }</code> Available time units : days , months , years. The MTTH can be modified with any number of conditional modifiers and it seems such things can take effect after the MTTH counting has begun. Testing has shown that a simple MTTH will be called with a 50% chance during the period of time specified for each item in that scope e.g. each country for a country event. It will then check the triggers, and if they are true, the event will be triggered. However, if modifiers to the MTTH are introduced, the game will check the conditions every day for each scope – meaning that these are '''considerably''' more expensive in terms of performance. == Calling events from other events == It is possible to manually call an event onto any game object from a running event. Doing so will put the event into the game objects [[scope]]. There might be a slight delay of at least one or more game ticks until the event is actually called. For example: <syntaxhighlight lang="ruby"> random_galaxy_planet = { planet_event = { id = my_planet_event.1 } }</syntaxhighlight> While doing this the triggering can be delayed by any fixed or semi-fixed timeframe (with optional DAYS and RANDOM delay).<br> For example: <code>country_event = { id = crisis.2000 days = 200 random = 100 }</code> delays it by 200–300 days. As the event attempts to execute, if its conditions are not met, it doesn't execute. If the event is delayed, the conditions are checked only before execute, but not before queuing up. Since 3.0 there is also an optional '''<code>scope</code>''' parameter, where you can override the calling scope: <code>scopes = { from = fromfrom }</code>. For more see section ''On Actions'' below. == On Actions == Aside from the default polling another very common way to get an event triggered is <code>on_action</code>. The vanilla game itself has a number of events registered this way in <code>Stellaris\common\on_actions\00_on_actions.txt</code> Mods can provide their own, uniquely named, on_action file whose events are called in addition the vanilla events. The file should be put into <code>Stellaris\common\on_actions\</code>, but the [[Modding#Guidelines|Modding Guidelines]] should be observed The situations of triggering range from polling less aggressive (monthly or yearly) to numerous developments of the galaxy like ending of a planetary invasion, survey, entering of a system and so forth. This is later part is comparable to registering an Event in a GUI Environment of many higher programming languages. Registered events should be marked with "triggered only" modifier. As easily dozens of events can be registered to any one development (often belonging to the same chain) the triggers decide which events are actually called. A special case is random events which have a specific chance to trigger anytime that development happens. However, the triggers can make this a lot rarer than even chance might indicates. Aside from "on_actions", events can be triggered from any file with an effects field. Most notable are anomalies, but one can similarly trigger an event from e.g. within an edict (it will then trigger every time the edict is activated), policy, diplomatic action, etc. Since 3.0 you can define your own "on_actions" in script by [[Effects|effect]] <code>fire_on_action = { on_action = <string> scopes = { from = X fromfrom = Y } }</code>. Do note that when defining scopes, fire_on_action appears to be considered a scope and all non-event_target scopes require a prev added before them (<code>from = prev</code> will scope to the scope firing the on_action, and to scope to the previous scope <code>from = prevprev</code> must be used instead). In addition, event_targets will not be properly scoped to in events firing from the on_action if used for any scope above from (fromfrom, fromfromfrom, etc.). This only applies if the event target is not global. == Conditional Description == The description of an event may change based on conditions. It uses the following syntax as seen in <code>colony_events.txt</code>. <syntaxhighlight lang="py"> planet_event = { id = colony.182 title = "colony.182.name" desc = { trigger = { owner = { NOT = { has_authority = auth_machine_intelligence } } } text = colony.182.desc } desc = { trigger = { owner = { has_authority = auth_machine_intelligence } } text = colony.182.desc.mach } … }</syntaxhighlight> If multiple triggers match, only one of them will be shown at random. If none of the triggers match, the system will show the first description anyway. If more than one desc entry is provided, only one of them will be shown at random (since 3.0). So conditional description and static description can be used together. For instance: <syntaxhighlight lang="py"> planet_event = { id = colony.182 title = "colony.182.name" desc = { trigger = { owner = { NOT = { has_authority = auth_machine_intelligence } } } text = colony.182.desc } desc = colony.182.desc.mach … }</syntaxhighlight> == Options == All visible events need at least one Option (comparable to the "OK" button of a message box). Options themself have numerous variables that can be set. The '''after''' block has to be written as a peer of the options, it is executed after an option is chosen, regardless which option was chosen. That makes it comparable to a finally block in many error handling systems of a language like Java. '''name''' defines the display name of the option. It is the only value somewhat mandatory. Often a localizable string is used here. There are numerous default strings that can be used here which are already localised. : ''name'' can also take a triggered block with multiple ''name'' blocks per ''option' <syntaxhighlight lang="ruby"> option = { name = { trigger = { <display_triggers> } text = <localization_string> } name = { trigger = { <display_triggers> } text = <localization_string> } ... }</syntaxhighlight> '''trigger''' defines if the option is shown at all. If it's not shown, so is it unchoosable. '''default_hide_option''' <code>default_hide_option = yes</code> will hide the option, unless it is the only option available. '''icon''' defines an optional icon sprite. '''sound''' defines an optional sound-effect file played when the option is chosen. '''allow''' defines if the option is choosable. A option can be both shown and not choosable, often to show which options will become available with specific play. This subblock is comparable to the "Enabled" value or property in many GUI environments. The check is done only when the Event window is first shown and not updated with game progress. '''[[Effects|Effect]] statements''' can be put into the body of the option. No special block must be put around it. The game tries to generate a tooltip for this option based on all the effects. <code>custom_tooltip = xxx</code> can be used to show the player a tooltip in addition to the generated tooltips. Also, <code>hidden_effect = { … }</code> can be used to contain other effects to prevent the game from generating tooltips based on them. <syntaxhighlight lang="ruby"> option = { name = "xxx" custom_tooltip = "yyy" hidden_effect = { (Effect statements to be executed when this event is chosen) } }</syntaxhighlight> '''ai_chance''' use this subblock to allow an AI to do a semi-random decision between all available options, to make some choices more likely to be picked by the AI. Here is an example from a War in Heaven event. <syntaxhighlight lang="ruby"> ai_chance = { factor = 100 modifier = { factor = 0 OR = { has_valid_civic = civic_hive_devouring_swarm has_valid_civic = civic_fanatic_purifiers has_valid_civic = civic_machine_terminator } # Instead you can also use the corresponding scripted trigger: is_homicidal = yes } }</syntaxhighlight> The following options are available for diplomatic events (if <code>diplomatic = yes</code>): : '''response_text''': optional setting for an localisation key. : '''is_dialog_only''': optional boolean setting that opens a text response only. : '''custom_gui''': optional setting that changes the looking of this field. == Best Practices == === Triggering === Hide Window and Triggered Only are the two most common settings for events, with the bulk of vanilla events having either or even both of them. The MTTH is also a very common setting on any event that is using polling to add some randomness to the game where it seems useful. Due to a possible massive CPU load load regular polling should be avoided unless absolutely necessary. The preferred way to get a series of events started initially is either via a gatekeeper event that does use regular polling with early failing triggers, or by having it triggered by a on_action development. A combination of on_action developments that lead to gatekeeper events may also be useful. === Chaining Events, Scope, Execution Order === The vanilla code often has long chains of events calling one another indicating that this chaining might be necessary for proper execution and scope setting. In particular a pattern where there is a hidden Event is calling a visible event is extremely common. The hidden event often doing actually (setup) work. This indicates that even "Immediate" code needs a least until the next event is called to take effect past any internal caching. === Example Events === Visible Events (Robot Rebellion, 1.6.2 version; ''actually removed''): <syntaxhighlight lang="py"> # Servant AI Perfected country_event = { id = crisis.2192 title = crisis.2192.name desc = crisis.2192.desc picture = GFX_evt_robot_assembly_plant show_sound = event_laboratory_sound location = root is_triggered_only = yes immediate = { set_country_flag = robots_pacified } option = { name = crisis.2192.a custom_tooltip = crisis.2192.a.tooltip hidden_effect = { set_country_flag = ai_perfect_servants } } option = { name = crisis.2192.b hidden_effect = { country_event = { id = crisis.2000 days = 400 random = 400 } } } } </syntaxhighlight> Invisible Events (test Prethoryn crisis – from version 1.8.3): <div class="mw-code"><i class=effect-green># '''WARNING:''' May cause galactic mass extinction and/or loss of appetite</i> country_event = { '''id''' = crisis.199 <i class=effect-green># Event ID</i> '''hide_window''' = yes <i class=effect-green># Makes the event run without the player knowing, essential because this is a trigger event</i> '''trigger''' = { always = no } <i class=effect-green># Makes event only trigger when called on (I think)</i> '''immediate''' = { set_global_flag = prethoryn_invasion_happened <i class=effect-green># Global Flags are created to tell the game that the crisis is happening</i> set_global_flag = prethoryn_transmission begin_event_chain = { event_chain = "coming_storm_chain" target = ROOT } random_rim_system = { set_star_flag = swarm_invasion_target_1 save_event_target_as = prethoryn_invasion_system } create_point_of_interest = { id = coming_storm_poi.1 name = "coming_storm_poi_1_poi" desc = "coming_storm_poi_1_poi_desc" event_chain = "coming_storm_chain" location = event_target:prethoryn_invasion_system } country_event = { id = crisis.17 days = 10 } } }</div> == Example event with all parameters == <div class="mw-code thumb"><i class=autocomment># Specifies the type of the event.</i> '''country_event''' = { <i class=autocomment># Unique ID for your event. Must match namespace parameter</i> '''id''' = example.1 <i class=autocomment># Specifies localization string for the title (Header) of the event</i> '''title''' = example.1.name <i class=autocomment># Specifies localization string for event text that describes what's happening.</i> <i class=autocomment># Multiple is allowed; random one will be shown.</i> '''desc''' = example.1.desc <i class=autocomment># Descriptions can be conditional</i> '''desc''' = { '''text''' = example.1.desc.conditional <i class=effect-green># Localization string</i> '''trigger''' = { <i class=autocomment># Conditions for this to be available.</i> <i class=autocomment># For example: has_authory = auth_machine_intelligence</i> } <i class=autocomment># If valid, disables all other desc (added with 2.1).</i> '''exclusive_trigger''' = { <i class=autocomment># Condition statement(s)</i> } } <i class=autocomment># A name of a picture to display. Pictures are defined at "interface/xxx.gfx".</i><ref>See ''[[Event pictures]]'' for more.</ref> '''picture''' = GFX_evt_exploding_ship <i class=autocomment># Pictures can also be conditional</i> '''picture''' = { '''picture''' = <i class=autocomment># The name of a picture</i> '''trigger''' = { <i class=autocomment># Condition statement(s)</i> } '''exclusive_trigger''' = { <i class=autocomment># Condition statement(s) - if you have more than one</i> } } <i class=autocomment># A scope to the object that is relevant to the event that player can move to. For example, the planet where event is happening.</i> '''location''' = from <i class=autocomment># Name of the sound clip to be played when event is shown. Sounds are defined in "sound/xxx.asset".</i> '''show_sound''' = event_ship_explosion <i class=autocomment># If event is not meant to be seen or there's no person to see. Makes title and desc unnecessary.</i> <i class=autocomment># Service event that runs some sort of routine or prepares grounds for other events should have this.</i> '''hide_window''' = yes <i class=autocomment># Makes event look like diplomatic communications. First contact events use this.</i> '''diplomatic''' = yes <i class=autocomment># An optional setting that changes the looking of this event window, if "diplomatic = yes".</i> '''custom_gui''' = "enclave_curator_option" <i class=autocomment># Specifies picture for diplomatic event. Most options are optional here</i> '''picture_event_data''' = { <i class=autocomment># Animated portrait. Accepts country, leader or species scope as an input</i> '''portrait''' = event_target:contact_empire <i class=autocomment># Planet background, if your picture has a window</i> '''planet_background''' = event_target:contact_empire <i class=autocomment># City graphic type on the planet in the window</i> '''graphical_culture''' = event_target:contact_empire <i class=autocomment># The size of the city. Usable to make planet behind look like capital</i> '''city_level''' = event_target:contact_empire <i class=autocomment># Static background. Can use static pictures or scopes as the input</i> '''room''' = event_target:contact_empire.ruler } <i class=autocomment># Event will show for other countries if this is set to yes. Those countries can be narrowed down with major_trigger.</i> '''major''' = yes '''auto_select''' = yes <i class=autocomment># Force a diplomatic event to be viewed.</i> '''force_open''' = yes <i class=autocomment># Forces the event to pop-up even if player has supressed pop-ups.</i> '''auto_opens''' = yes <i class=autocomment># Makes the event happen only once per game</i> '''fire_only_once''' = yes '''trackable''' = yes <i class=autocomment># This event will not fire itself. It must be called by another event or an on_action.</i> <i class=autocomment># Most events will use this.</i> '''is_triggered_only''' = yes <i class=autocomment># The event be considered for starting with daily probability calculated so on average it would happen in time specified.</i><ref name=MTTH/> '''mean_time_to_happen''' = { <i class=autocomment># To specify average time for the event to fire. "months" or "days" are also acceptable input.</i> years = 100 <i class=autocomment># Mean time to happen can be conditionally modified</i> '''modifier''' = { <i class=autocomment># Multiply MTTH by number specify. Here it will make this event trigger in a mean time of 10 years.</i> factor = 0.1 <i class=autocomment># Condition statement(s)</i> } } <i class=autocomment># If neither is_triggered_only or MTTH is set, the event will trigger every day the conditions are met.</i> <i class=autocomment># So don't forget them, lest you might affect the entire galaxy or see event trigger again and again forever.</i> <i class=autocomment># Trigger block contains conditions. The event will not start if conditions inside aren't met.</i> <i class=autocomment># Used for events on mean_time_to_happen or for events that called from situation where</i> <i class=autocomment># you can't or want specify conditions for it to happen, before calling</i> <i class=autocomment># (For example an event in on_action block or a delayed event that might be blocked by other events)</i> '''trigger''' = { <i class=autocomment># Condition statement(s)</i> } <i class=autocomment># Effects that are applied the moment event fires. Can be effects that can't wait like</i> <i class=autocomment># setting a flag to prevent other events, or the undesirable effects you don't want player to be able to delay</i> <i class=autocomment># (For example, killing science ship's captain.) This is also the only block you'll need on hidden events</i> '''immediate''' = { <i class=autocomment># Effect statement(s)</i> } <i class=autocomment># The button under the event, allowing player to pick a reaction.</i> <i class=autocomment># Any event that is not hidden, needs at least one. Multiple can be specified.</i><ref name=opt/> '''option''' = { <i class=autocomment># Reference to localization string with option text</i> '''name''' = example.1.a <i class=autocomment># If not met, this option will be disabled and hidden.</i> '''trigger''' = { <i class=autocomment># Condition statement(s)</i> } <i class=autocomment># If valid, disables all other event options (added with 2.0).</i> '''exclusive_trigger''' = { <i class=autocomment># Condition statement(s)</i> } <i class=autocomment># If not met, this option will be disabled, but still shown.</i> '''allow''' = { <i class=autocomment># Condition statement(s)</i> } <i class=autocomment># Effects of the event can be described here. They will generate tooltips shown when hovering over option.</i> <i class=autocomment># This is a special Effect that it does nothing more than a customizable tooltip.</i> <i class=autocomment># Static strings can be used here, but using localisation keys is recommended.</i> '''custom_tooltip''' = example.1.a.tooltip <i class=autocomment># This is a special Effect that it makes the game to generate tooltips based on the Effects inside.</i> <i class=autocomment># These statements have NO actual effects, just tooltips.</i> '''tooltip''' = { <i class=autocomment># effect statement(s)</i> } <i class=autocomment># This is a special Effect that it prevents the game from generating tooltips based on the Effects inside.</i> '''hidden_effect''' = { <i class=autocomment># effect statement(s)</i> } } <i class=autocomment># Triggers for other countries on whether a major event should show for them. I.e. if it reads has_ethic = ethic_materialist, then all materialist countries will see the event.</i> '''major_trigger''' = { <i class=autocomment># Condition statement(s)</i> } <i class=autocomment># Event will cancel (disappear without executing any of the effects in the options) if these triggers return true.</i> '''abort_trigger''' = { <i class=autocomment># Condition statement(s)</i> } <i class=autocomment># Effects executed when abort_trigger returns true.</i> '''abort_effect''' = { <i class=autocomment># effect statement(s)</i> } '''after''' = { <i class=autocomment># Effects that are applied after option is chosen.</i> <i class=autocomment># Will generate a tooltip in addition the tooltip of every option, unless hidden_effect is used.</i> } }</div> == Empty Event Box Bug == Sometimes the game fills the screen with empty event boxes. They have no title, no text, no picture and a single button that says "OK". New events like that pop up every day rendering game unplayable. Normally this happens in a modded game. === What is happening? === This bug is caused by a corrupted event file being loaded into the game. When game encounters a pair of '''curly braces''' in the wrong places, or doesn't find curly braces where they should be, the file becomes corrupted. The events after the syntax error still exist, however their code gets essentially hollowed out – parameters such as title, description and whatever is supposed to keep the event from firing daily on every single object in the game are not read. Usually this is a result of a mod that hasn't been '''updated to accommodate syntax''' changes between versions – either by modders themselves or new file simply haven't made it to your machine. === How to deal with it === First you need to find out what events are causing it. By using <code>debugtooltip</code> [[console command]] and hovering over "OK" button, you can find out the event's id. With luck, the modder who made this event would add some kind of identification to help you, such as adding an acronym of their mod's name, or their own. You would need then to investigate if the mod is up to date. If it is not, you'd have to disable it and wait. If the problem is on your local machine, you'd need to force a re-download of the mod files – starting with unsubscribing and subscribing again. '''Note:''' There is also a ([[wikipedia:Python_(programming_language)|Python]]) [//github.com/F1r3Pr1nc3/StellarisModpackUtility tool on GitHub], which can easy fix outdated syntax of a whole mod folder for you <small>(>2.8 – created by FirePrince)</small>. == References == <references /> {{ModdingNavbox}} [[Category:事件]] [[Category:模组制作]]
摘要:
请注意您对群星百科的所有贡献都被认为是在知识共享署名-非商业性使用-相同方式共享下发布,请查看在
群星百科:版权
的细节。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源。
未经许可,请勿提交受版权保护的作品!
为防止机器编辑,请完成下方验证
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
Template:Clear
(
编辑
)
Template:ModdingNavbox
(
编辑
)
Template:Navbox
(
编辑
)
Template:Navboxgroup
(
编辑
)
Template:Version
(
编辑
)
×
登录
密码
记住登录
加入群星百科
忘记密码?
其他方式登录