12th吧 关注:5,356贴子:33,929
  • 14回复贴,共1

如何让魔球新添加的武器可以破甲

只看楼主收藏回复

本改版基于东方1135的1.2.6版本,其余版本或者12th可能不适用。2楼说说破甲脚本的原理,后面的楼层给出修改方法。
同时,由于本人才疏学浅,希望各位大佬多多斧正。


IP属地:黑龙江1楼2024-07-27 19:58回复
    在1135中,破甲的判定由script文件中的s_missile_anti_armor_calculate_new给出。Script no.为813。

    如图所示,破甲判定与远程有关,初始变量V0为攻击的人,V1为使用武器的箭/弩箭,V2为受到伤害的人,V3为使用的弓、弩,V4不知道,猜测是受击部位,V5与破甲之后的额外伤害有关系。
    在破甲判定中,会检测V0的ID,V1的ID(V0的ID为V10,V1的ID为V11)判断是否为特种兵或者英雄,特种兵和英雄会获得额外的破甲值(15点),同时根据本身的角色等级(普通士兵也有,不过更少)对该单位射击时,破甲值额外降低。(顺便一提,普通士兵根据等级减少的破甲值为 等级/10,特种兵为等级/5,英雄则为等级/3,也就是说,使用远程武器打52级的英雄(如岳飞),你会直接减少52/3=17的破甲率)
    特种兵的检索通过script no.629 即cf_is_special_soldier的这一个脚本给出,这一脚本的特点是检索单位ID的slot.no 162的值是否为1(为1说明是特种兵)。
    对于特种兵属性的赠与,是通过llqs_init_special_soldier 这一脚本完成的,如果想要让自己导入的部队拥有特种兵属性,可以在后面添加。具体方法3楼给出。
    除了角色ID对破甲有影响之外,角色使用的弩、箭这些都会影响破甲值,同时,某些特殊的箭会获得额外破甲

    例如这一段,
    V16代表破甲率,当使用的箭为火矢(967),破甲率额外提升20,使用的箭为克敌弩箭(940)、点钢弩箭(941)、大宋火箭(235),破甲率额外提升15点。
    对于神器而言必定破甲,因为在V16计算完毕后,会有代码判断是否为神器,比如

    958,959,980,965均为破甲100的神器,在这里,作者直接赋予了它们100的破甲值(赋予reg80为100),等于必然破甲。这里你可以在后面新添加自己想要100破甲的武器。
    Script. no657就是取随机值判断有无破甲的环节,由rate -1给出。就不用做修改了。
    但仅仅修改这个脚本是不够的,自创远程武器无法触发破甲判定中,这是因为作者定死了可以触发这些脚本的序列上限。单就在本脚本中,便有

    V21为受到攻击者的主武器no,判断其1060>no>-1,在这里自己便需要将1060改成导入物品后的最后一个序列号,比如说下面这个图中最后一个物品的序列no.为1133,则需要把1060改为1133

    然后,我们便需要追根溯源,找到是谁使用了这个脚本(813)
    在mission template中,26处代码引用了这个脚本,虽然看不过来这些代码,但它们大体雷同,同时,(neg|ge, ":var_5", 1060)这个代码正好有26处,那我们只需要将1060改成最后一个物品序列(我的是1133)便可以了。
    另外,额外伤害是不需要自己修改的,我把上限改了后这个额外伤害就有了,就不用去看那一坨代码了。
    至于破甲值的话,就完全在s_missile_anti_armor_calculate_new这个脚本中了,值得注意的是,弓箭的破甲值还与强弓有关系,箭/弩矢的thrust damage有关,与是否骑马有关(骑术会弥补一些因为骑马而减少的破甲值)。


    IP属地:黑龙江2楼2024-07-27 20:02
    回复
      第三楼
      这一楼我们来谈谈如何修改,修改的部分会分为几块。
      首先对(neg|ge, ":var_5", 1060)这个代码进行修改
      第一步,
      复制一个scripts.txt和mission_template.txt的副本,防止自己把游戏改崩后打不开
      打开mission_template.txt
      按ctrl+h替换,将26处的2147483678 2 1224979098644774917 1060替换为2147483678 2 1224979098644774917 XXXX,其中XXXX为魔球物品栏最后一个物品的序列。如图情况就是改为1133。

      第二步,打开scripts.txt
      同样将2147483678 2 1224979098644774917 1060这一部分进行替换。
      修改完成后,理论上,你魔球的远程武器就会受1135破甲系统影响了。
      然后,对自创物品箭的附加破甲值进行修改(获得和大宋火箭、克敌弩箭一样的额外破甲)。
      在scripts.txt中,搜索s_missile_anti_armor_calculate_new -1
      注意,第一个数字203代表代码总数,如果你添加了一个代码,则203应该改为204(就是203+1),添加了两个代码,则是205(203+2).
      然后,搜索1073741855 2 1224979098644774913 235 1073741855 2 1224979098644774913 940
      在代码后面添加1073741855 2 1224979098644774913 XXX,XXX代表箭/弩矢的序列No,例如,魔球中,235序列对应的是大宋火箭。记得每添加一次代码,就需要让203+1。
      然后我们需要修改自创箭/弩矢的thrust damage
      在scripts.exe中,搜索init_thrust_damage
      如同前面一样,对于第一个数字,在添加代码后需要+1
      在init_thrust_damage下面代码的最后
      ①对于弓箭,添加
      507 3 A 64 4 A为弓箭的序列No
      ②对于弩矢,添加
      507 3 A 64 266 A为弩矢的序列No
      接下来,我们可以指定某种远程武器如同神器一般,永远破甲,
      在s_missile_anti_armor_calculate_new -1中,搜索
      4 0 1073741855 2 958 1224979098644774915 1073741855 2 959 1224979098644774915 1073741855 2 980 1224979098644774915
      在后面添加1073741855 2 XXX 1224979098644774915 ,XXX为修改武器的序列。(记得前面203要+1)
      最后,让我们指定某些兵种享受特种兵的福利(额外穿甲等)
      搜索llqs_init_special_soldier
      记得第一个数字添加一次代码后要+1,在最后面添加如下代码500 3 XXX 162 1,XXX为兵种序列no


      IP属地:黑龙江3楼2024-07-27 20:03
      收起回复
        淡季贴吧?


        IP属地:黑龙江来自Android客户端4楼2024-07-27 21:08
        回复
          看不懂


          IP属地:新疆来自Android客户端5楼2024-07-28 08:53
          收起回复
            学习了!


            IP属地:重庆来自Android客户端6楼2024-11-10 10:47
            回复
              楼主知道它神器那个暴击、增伤、免伤这些是哪部分代码吗?昨天按照你这个已经改了破甲了


              IP属地:重庆来自Android客户端7楼2024-11-10 10:49
              收起回复