维多利亚2吧 关注:76,418贴子:1,931,963
  • 20回复贴,共1

【大公】mod制作经验分享:./news文件夹(新闻)的触发器用法

只看楼主收藏回复

1L空


IP属地:上海1楼2019-09-20 13:29回复
    这绝对是V2本年度最爆裂的发现!
    一般改派都应该知道./common/on_actions.txt的触发器用法;具体来说,就是对于某一类情况,在发生时会以一定概率立即弹出事件,例如:on_civilize = { 100 = 90910 } 就是一般国家在开化时会100%弹出事件90910的原因。众所周知V2的新闻是会根据游戏内的各种情况即时记录,并延时发布的;但它的触发器用法却一直被忽略了。修改./news以影响新闻本身的方法,之前已有人提过,此处不赘述;单纯阐述触发器用法。
    首先,我们需要对新闻的生成方法有所了解。不论何种新闻,它的内部都有type与name两个变量,这表示了这个新闻的类型(可以通过观察./news内的txt得到);而freshness表示了新闻的新鲜度。其他可能存在的变量有tags,values,strings,dates,等等。根据之前对新闻的介绍,所有新闻对应的触发器时间点都有两个,在新闻对应的情况发生时,收集新闻会触发on_collection;而在新闻被播报给玩家时,则会触发on_printing。实验表明这两个语句在适当使用的情况下,不单会影响新闻本身,而且会产生全局影响。新闻触发器相比其他触发器的特殊性在于:①它具有独特的时机;②它在条件判定时可以比对该条新闻的数据。


    IP属地:上海2楼2019-09-20 13:30
    回复
      在开始之前,我们先介绍几个条件判定语句。
      (变量类型)_eq = { (数字1) (数字2) (相同类型的数据内容) }
      这条语句用于比对当前新闻某一变量中的某一关键字是否为指定的内容。例如strings_eq= { 0 3 “fascist” }就是在判定新闻的strings(0,3)这个元素的值是否为”fascist”;如果是就返回true,否则返回false。
      (变量类型)_match = { (数字1.1)(数字1.2)(数字2.1)(数字2.2)}
      这条语句用于比对前后两条新闻相同类型变量中的某一关键字;例如strings_match= { 0 2 0 0 },就是将第一条新闻的strings(0,2)这个元素与第二条新闻的strings(0,0)这个元素进行比对;相同就会返回true,否则返回false。
      (变量类型)_contains = {(数字1) (相同类型的数据内容) } 变量类型[数字1](可能含有多个元素)中是否有一个元素的内容与指定的内容相同。例如tags_contains = { 3 PLAYER }即为判断tags[3]中的元素,是否有一个为”PLAYER”(等价于玩家国家的tag);若是,返回true;否则返回false。
      (变量类型)_greater = { (数字1) (数字2) (数字3) } 变量类型[数字1][数字2]中的内容是否大于数字3。例如values_greater = { 0 3 0 } 即为判定values[0][3]>0是否满足;若是,返回true;否则返回false。
      length_greater = { (变量类型) (数字1) (数字2) } 变量类型[数字1]中的内容数量是否大于数字2;例如length_greater = { tags 0 2 }用于判定tags[0]>2是否满足;若是,返回true;否则返回false。


      IP属地:上海3楼2019-09-20 13:30
      回复
        4L内容


        IP属地:上海8楼2019-09-20 13:35
        收起回复
          5L内容


          IP属地:上海9楼2019-09-20 13:36
          回复
            可以做什么呢?
            以下是原版新闻类型的简单归纳:
            AI的良好关系/畏惧某国(AI外交倾向);
            某种商品的价格上涨/下跌(贸易);
            某国的新科技/新发明(科技);
            某国新建了基础设施/工厂(建设);
            新党派成立(政党);
            危机爆发、列强站边、危机解决、危机战争爆发(危机);
            战争发生、战斗结束、和约缔结(战争);
            省份控制/所属变更(省份);
            叛军胜利(叛军);
            列强升降(列强);
            决议新闻、事件新闻(决议与事件)。
            on_collection可以用来做上述情况发生时的触发器(同on_action用法);on_printing则是新闻被播报时的触发器,也许可以用来模拟很多现实中的舆论效果。而结合截取新闻内容的语句,则可以在游戏中实现很多之前无法实现的判定。
            祝各位玩的开心!


            IP属地:上海10楼2019-09-20 13:36
            收起回复
              支持,这么凉的v2吧还是有几个人在做mod的


              IP属地:湖南12楼2019-09-20 14:11
              回复
                来zici下


                IP属地:上海来自iPhone客户端13楼2019-09-20 14:33
                回复
                  effect或者news本身作用的基础范围是?(世界亦或每个国家,亦或仅限玩家国家?


                  IP属地:日本14楼2019-09-20 16:22
                  收起回复
                    特地过来支持的


                    IP属地:湖南来自Android客户端15楼2019-09-20 17:05
                    回复
                      支持支持


                      IP属地:浙江16楼2019-09-20 17:07
                      回复
                        路过帮顶


                        IP属地:山东来自Android客户端17楼2019-09-20 17:09
                        回复
                          大公无私。


                          IP属地:河北18楼2019-09-20 17:14
                          回复
                            亲测有效,已加精。。。


                            IP属地:日本19楼2019-09-20 17:35
                            回复
                              本来我以为这是最劲爆的,结果发现只是新技术时代的头一枪!


                              IP属地:河北20楼2019-09-30 19:18
                              回复