钢铁雄心4吧 关注:442,753贴子:8,073,088

小白也能看懂的钢4MOD制作

只看楼主收藏回复

众所周知,P社代码极其简单,很多功能无非就是在原版代码内抄抄抄。鉴于我自己也是个改派,自己原版不喜欢的地方就自己做mod自己改,也就顺便写下一些简单的MOD代码制作希望能帮助某些同样这方面的玩家。鉴于我自己的代码水平也是半桶水,大部分都是根据原版和各个mod里抄的有写的不好的请见谅。


IP属地:广东1楼2024-03-25 17:15回复
    首先各种条件,和源代码文件我推荐一个网址里面有大部分钢4MOD制作的讲解只不过部分翻译不太好,或者实际组合运用的话比较难理解:https://hoi4.parawikis.com/wiki/%E6%8C%87%E4%BB%A4


    IP属地:广东2楼2024-03-25 17:18
    回复
      广告
      立即查看
      首先讲解的是国策,国策树的目录文件在钢4本地目录的Hearts of Iron IV\common\national_focus文件夹里,原版对应国家英文就是国策树的拥有者。


      IP属地:广东3楼2024-03-25 17:29
      回复
        丹麦占领奥斯陆改为克里斯蒂安桑的事件在哪


        IP属地:上海来自iPhone客户端4楼2024-03-25 17:33
        收起回复
          以KR奥地利源文件为参照打开文件后看到的代码即为国策树的定义文件用于定义初始国策树拥有国家其中###号后为标注的用途:
          focus_tree = {
          id = austrian_focus ### 你自定义的ID国策名可用于更换国策功能
          country = {
          factor = 0
          modifier = {
          add = 10
          tag = AUS ### 拥有国家的TAG
          }
          }
          default = no
          continuous_focus_position = { x = 5800 y = 3000 } ### 持续性国策位于国策树的位置
          }


          IP属地:广东5楼2024-03-25 17:34
          回复
            接着是单条国策树的讲解以原版德国国策4年计划为例子:
            focus = {
            id = GER_four_year_plan ### 国策ID可自定义
            icon = GFX_goal_generic_construction ###图标可自定义
            ###国策位置
            x = 6 ##水平方向
            y = 0 ##垂直方向
            cost = 10 # #国策完成时间每1点数值为游戏内7天时间
            ai_will_do = {
            factor = 12 ###AI点击国策比重 非百分比 而是看整体比重 例如德国另一个国策比重为1000那AI点击该国策的概率为 1012/12
            }
            search_filters = { FOCUS_FILTER_RESEARCH FOCUS_FILTER_INDUSTRY } ###国策分类栏用于快速搜索国策类型功能
            completion_reward = { ##国策完成后的效果
            add_tech_bonus = {###增加科研奖励
            name = GER_four_year_plan ###加速卡名称显示
            bonus = 1.0 ###加速效果
            uses = 2 ### 使用次数
            category = industry ###加速类型:工业
            }
            custom_effect_tooltip = available_political_advisor #### 自定义文本:无具体效果。该栏的用意为提示“启用政治顾问”。因为政治顾问的代码并不是在 completion_reward中,所以为了提醒玩家解锁了政治顾问而采取的带有颜色的自定义文本。
            show_ideas_tooltip = hjalmar_schacht #### 自定义文本:无具体效果。该栏目为解锁的政治顾问ID:hjalmar_schacht的提示链接。
            }
            }


            IP属地:广东6楼2024-03-25 17:52
            回复
              反正改红警和e社的经验告诉我,mod的入门方法就是复制粘贴改数字


              IP属地:湖南来自Android客户端7楼2024-03-25 18:06
              回复
                cy


                IP属地:安徽来自Android客户端8楼2024-03-25 18:27
                回复
                  广告
                  立即查看
                  像这样占了后自动变克里斯蒂安尼亚


                  IP属地:上海来自iPhone客户端9楼2024-03-25 18:36
                  收起回复
                    可以的,多写点,我只会改民族精神的


                    IP属地:江苏10楼2024-03-25 18:41
                    收起回复
                      一般国策决议和事件都很简单搞,但是我想知道类似千禧的导弹和经济或是冷战的联合国这些自定义界面和机制都是怎么制作的


                      IP属地:广东来自Android客户端11楼2024-03-25 18:43
                      收起回复
                        支持


                        IP属地:北京来自Android客户端12楼2024-03-25 19:27
                        回复
                          插眼


                          IP属地:吉林来自Android客户端13楼2024-03-25 19:44
                          回复
                            接下来讲解一些比较复杂一点的情况国策在路线设定中会隐藏或者变换位置,以苏联国策:中间派为例子。
                            focus = {
                            id = SOV_the_centre
                            icon = GFX_focus_fra_loyalty_stalin
                            prerequisite = { focus = SOV_the_path_of_marxism_leninism } ###要点击该国策需要前置国策,此处前提ID为MKS、LN主义道路
                            x = -8
                            y = 1
                            offset = { ### 移动国策位置 ##
                            x = 8
                            y = 1
                            trigger = { ### 扳机指令条件,即当拥有了以下条件后该国策位置会因此移动
                            has_game_rule = { ###拥有游戏规则,即开具自定义游戏规则
                            rule = obsolete_focus_branches_visibility ### 巴巴罗萨新版本制定的规则,即是否可见已经不可能点的国策树。
                            option = HIDE ### 规则设定为:隐藏
                            }
                            has_completed_focus = SOV_beaten_but_not_defeated ### 该处为扳机指令即完成国策【败而不馁】,
                            NOT = { has_completed_focus = SOV_the_hands_do } ### 该处为扳机指令,没有完成国策白军国策“...行且克难”
                            }
                            }
                            relative_position_id = SOV_the_path_of_marxism_leninism ###国策树根:此处ID为MKS、LN主义道路,如有此代码则国策树的X、Y轴的位置则以该国策树为的位置为基准点,以该国策为例子,该国策树根为MKS、LN主义道路其坐标位置为:x = 16 y = 0,那么该国策的坐标位置x = -8 y = 1,则是以
                            该国策树根为MKS、LN主义道路位置的水平距离:-8 ,垂直距离:1的位置,国策树根如果因为某种条件被隐藏则以该国策树为国策树根的所有国策都会被隐藏。
                            cost = 5
                            mutually_exclusive = { focus = SOV_the_right_opposition focus = SOV_the_left_opposition } #### 排斥国策:这里排斥的ID为托司机国策和布哈林国策树,但需要注意的一点是,这里是指点击完该国策后这两条国策不可用,并不代表点击完托司机国策和布哈林国策后该国策不可用,若是要达到互斥效果则需要,在这两条国策ID处也同样写上排斥该国策。
                            allow_branch = { #### 可见性,
                            if = { ### 假如条件
                            limit = { ###
                            has_game_rule = { ###拥有游戏规则,即开具自定义游戏规则
                            rule = obsolete_focus_branches_visibility### 巴巴罗萨新版本制定的规则,即是否可见已经不可能点的国策树。
                            option = HIDE ### 规则设定为:隐藏
                            }
                            }
                            NOT = { ### 没有完成以下国策
                            AND = {### 当以下所有条件满足 以下两条是左派线的关键国策
                            has_completed_focus = SOV_the_left_opposition
                            has_completed_focus = SOV_left_opposition_coup
                            }
                            AND = {### 当以下所有条件满足 以下两条是右派线的关键国策
                            has_completed_focus = SOV_the_right_opposition
                            has_completed_focus = SOV_coup_detat
                            }
                            AND = {### 当以下所有条件满足 以下两条是白军线的关键国策
                            has_completed_focus = SOV_beaten_but_not_defeated
                            has_completed_focus = SOV_the_hands_do
                            }
                            }
                            }
                            }
                            available = { ###满足何种条件时才可以点击
                            }
                            search_filters = {FOCUS_FILTER_POLITICAL FOCUS_FILTER_SOV_POLITICAL_PARANOIA FOCUS_FILTER_STABILITY}
                            completion_reward = {
                            hidden_effect = { ###隐藏效果
                            add_dynamic_modifier = { modifier = SOV_the_politburo_good_dynamic_modifier } ### 增加修正XXX ZZ局
                            }
                            custom_effect_tooltip = SOV_the_centre_ns_tt ### 自定义文本:提升增加修正XXX ZZ局效果,这里顺便说下因为动态修正的修正效果在国策上时无法显示的,所动态修正中的国策显示效果其实都是文本并无实际效果,如果想要修改动态的效果则需要在动态变量中定义动态修正的代码和值这点我后面会详细解说。
                            add_political_power = 25 ### 增加政治点数
                            add_stability = 0.05 ### 增加稳定度
                            set_division_template_lock = { 允许修改编制"NKVD"
                            division_template = "NKVD Pogranichnaya Diviziya"
                            is_locked = no
                            }
                            SOV_paranoia_low_decrease_effect = yes ###少量减少偏执度、该代码是关联动态变量的一条指令,关于苏联偏执度系统比较复杂牵扯到数个文件以后会详细解析偏执度系统的写法。
                            if = {### 假如
                            limit = { ###
                            has_game_rule = { ###拥有游戏规则,即开具自定义游戏规则
                            rule = obsolete_focus_branches_visibility
                            option = HIDE ### 规则设定为:隐藏
                            }
                            }
                            mark_focus_tree_layout_dirty = yes ### 刷新国策,因为在没有读档存档的情况下如果只调整可见性则国策会不移动或隐藏,该指令是为了让移动或隐藏国策树立刻生效。
                            }
                            }
                            }


                            IP属地:广东14楼2024-03-25 20:42
                            回复
                              广告
                              立即查看
                              感谢!之前一直想尝试制作mod


                              IP属地:浙江来自Android客户端15楼2024-03-26 09:10
                              回复