维多利亚3吧 关注:90,131贴子:1,094,358

【MOD开发研究】如何让东亚民族的名字先姓后名

只看楼主收藏回复




IP属地:日本1楼2022-07-25 23:43回复
    我们知道在十字军之王2中,汉文化的名字是先姓后名的,但是P社在后续的游戏中并没有实现这一点,蠢驴的偷懒只好由我们modder来解决了。


    IP属地:日本2楼2022-07-25 23:46
    回复
      那么如何实现这一点呢,首先我们必须要知道人物的名字是如何显示出来的。这就需要查找gui文件了。例如定义政治界面的/gui/politics_panel_overview.gui文件中有一段代码
      textbox = {
      text = "#BOLD [Character.GetFullNameNoFormatting]#!"
      layoutpolicy_horizontal = expanding
      size = { 0 20 }
      fontsize_min = 14
      elide = right
      align = left|nobaseline
      using = fontsize_large
      }
      这里的text后面的字符串就是统治者的名字了,统治者的名字就是[Character.GetFullNameNoFormatting],这是一个”名 姓“的结构


      IP属地:日本3楼2022-07-25 23:49
      回复
        我们需要把这个key替换成我们想要的,这里就要用到customizable_localization了,这个功能可以利用条件判断key显示什么样的内容。这里我们使用下面的代码


        IP属地:日本4楼2022-07-25 23:51
        回复
          culture_chara_name_loc = {
          type = character
          #random_valid = yes
          text = {
          trigger = {
          OR = {
          culture = cu:han
          culture = cu:manchu
          culture = cu:yue
          culture = cu:min
          culture = cu:hakka
          culture = cu:japanese
          culture = cu:korean
          culture = cu:vietnamese
          culture = cu:mongol
          }
          }
          localization_key = last_first_name
          }
          text = {
          trigger = {
          NOR = {
          culture = cu:han
          culture = cu:manchu
          culture = cu:yue
          culture = cu:min
          culture = cu:hakka
          culture = cu:japanese
          culture = cu:korean
          culture = cu:vietnamese
          culture = cu:mongol
          }
          }
          localization_key = first_last_name
          }
          }


          IP属地:日本5楼2022-07-25 23:51
          回复
            接下来,在localisations中定义两个localization_key 的内容是什么
            last_first_name:0 "[Character.GetLastName][Character.GetFirstName]"
            first_last_name:0 "[Character.GetFullName]"


            IP属地:日本6楼2022-07-25 23:52
            回复
              最后就是调用了,[Character.GetCustom('job_title')],这样就可以使用我们写的customizable_localization
              在gui文件把[Character.GetFullNameNoFormatting]替换成我们写的[Character.GetCustom('culture_chara_name_loc')]。
              这样就可以实现东亚人的名字先姓后名,而其他民族先名后姓了


              IP属地:日本来自Android客户端8楼2022-07-26 00:08
              回复
                欢迎大家补充还有哪些文化是先姓后名的


                IP属地:日本来自Android客户端9楼2022-07-26 00:33
                收起回复
                  资瓷


                  IP属地:广西10楼2022-07-26 15:41
                  回复
                    v3是不是发售一天mod最多的p社游戏


                    IP属地:浙江13楼2022-07-26 19:27
                    收起回复
                      说不定后面版本会对此作出修正。


                      IP属地:英国14楼2022-07-27 02:51
                      收起回复
                        可以,我不太懂,但是我在想,理论上程序语句应该就是设定一个名字范围,一个姓范围,然后在显示界面把这俩排好,所以,我们要改的话是不是直接把姓氏库里的东西和名字库里的换一下就完事儿了?


                        IP属地:北京来自iPhone客户端15楼2022-07-27 10:11
                        收起回复
                          这也是一种方法,但是我觉得不太好,感觉会奇怪,特别是如果以后我要判定君主王朝的话(虽然现在这个东西)会出问题


                          IP属地:日本来自Android客户端16楼2022-07-27 13:50
                          回复
                            很不错的mod,但建议和p社那边说一下,看看能不能让他们官方修改


                            IP属地:海南来自Android客户端17楼2022-08-05 00:06
                            回复