钢铁雄心4模组教程日志2.12
路过的Tlong
2021年02月12日 22:00
收录于文集
共10篇

祝大家新年快乐!

今天来给大家介绍一下scripted_guis。


scripted_guis文件夹。scripted_guis是一项非常强大的功能,它允许修改程序实现自定义GUI界面和逻辑,给了模组制作者一个给游戏加入新系统、新ui的机会。它可以把你新创建的,不属于游戏本体的gui文件(interface文件夹中的后缀为gui文件)接入游戏中,让玩家可以与原版游戏不同的ui界面进行交互。以著名模组TNO为例,其开始游戏时弹出的国家介绍是用scripted_guis接入游戏中的

GER的军事gui也是靠scripted_guis接入

新增的两个GDP显示框也是靠scripted_guis接入

人民革命委员会的红军决议ui也是靠scripted_guis接入

scripted_guis的应用范围十分广泛,它支持游戏中的大部分接口。今天将以我自己模组的一个修仙ui为例向大家介绍一下scripted_guis的基本原理。

修仙ui

scripted_guis通常需要与gui文件配合使用,即我们在gui文件中设置好ui中各个部件的位置、类型(以图标类型、文本类型、按钮类型为主),再通过scripted_guis接入游戏,并在scripted_guis中设置ui交互的条件与效果。

修仙ui的部分gui代码

看过我关于gui修改的那期视频的朋友应该知道,以上代码是创建了一个新窗口和一些按钮,那我们怎么把他们放进游戏中呢?这个时候就需要scripted_guis了

修仙scripted_gui的部分代码

接下来我们来逐句解析代码


context_type 是gui的作用范围,它支持4种类型

1、player_context,即常规的玩家界面

2、selected_country_context,即在地图上单击一个符合条件的国家时出现ui(似乎不常用)

3、selected_state_context,即在地图上单击一个符合条件的state时出现ui

4、Decision category,即把gui接入到决议组中,如前面人民革命委员会那种。这种还需要对决议组添加代码。如

dao_container是我设置的一个Decision category类型的scripted_gui

我们可以通过修改common/decison/category中的文件使此script_gui接入决议


window_name是需要接入的窗口名,需要与gui文件中设置的窗口名一样。


可供接入的窗口有:

top_bar

decision_tab

technology_tab

trade_tab

construction_tab

production_tab

deployment_tab

logistics_tab

diplomacy_tab (only when no country is selected)

politics_tab

tech_infantry_folder

tech_support_folder

tech_armor_folder

tech_artillery_folder

tech_land_doctrine_folder

tech_naval_folder

tech_naval_doctrine_folder

tech_air_techs_folder

tech_air_doctrine_folder

tech_electronics_folder

tech_industry_folder

national_focus

不设置此项的话,新加的窗口默认出现在地图画面中。


visible,此窗口的可见条件。满足条件时新接入的ui才可见,可通过这里设置窗口开关。


effects,新建ui的交互效果。

1、部件名_click = {xxx},如CTM_focus_boost_rate_click的意思是左键点击CTM_focus_boost_rate按钮(在gui文件中预设的按钮型部件)时会发生xxx的效果。

2、部件名_修正名_click = {xxx},

修正名有right、alt、control、shift

部件名_right_click = {xxx}即鼠标右键点击的效果

部件名_alt_click = {xxx}即先按住alt键再点击的效果

部件名_control_click = {xxx}即先按住control键再点击的效果

部件名_shift_click = {xxx}即先按住shift键再点击的效果

事实上不是只有按钮型部件才能点击,图标型、文本型等类型的部件也可以使用此语句设置点击效果,但是不会像按钮型那样有按下的特效。


triggers,可以设置部件是否可点击和是否可见的条件。

是否可见条件:部件名_visible = {xxx}满足条件xxx部件可见,不满足则不可见;默认皆为可见。

是否可点击条件:

部件名_click_enabled = {xxx} 满足xxx条件时可点击或者说点击后有效果,不满足条件,点击时设置的效果不生效。

部件名_修正名_click_enabled = {xxx} 与effects语句类似。

注意,部件名_click_enabled = {xxx}可覆盖 部件名_修正名_click_enabled = {xxx} 。


properties

使用properties可以改变gui中指定、部件的属性

properties = {            

部件名 = {              

 image = 图片名  #更改部件的图片,需要在interface的gfx文件中设置路径。            

 frame = 数值 #更改部件图片的帧数,需要该部件的图片在设置路径时划分帧数。          

 x = 数值              

 y = 数值      #更改部件的x或y坐标大小,可达到移动效果。     }        }


还有一些关于ai的内容,在此暂且不说。

放入一个来自钢丝wiki的scripted_gui例子以作参考。


今日到此为止。