hell____fire 发表于 2017-11-6 01:13:42

脚本冲突问题

最近发现两个个人非常喜欢的脚本互相冲突,想问下论坛上高手脚本冲突的情况下如何修改另他们能够共存。
一个脚本来自贤知有您大大的修复<驱散力盾和火墙后崩溃>BUG,源码为:
ZVSE
**007修复驱散力盾和火墙崩溃BUG
!?BR&v997>-1;[回合前触发]
!!BU:T?y1;
!!FU&y1=1:E;[非布阵状态]
!!FU9999905:P;
!?FU9999905;
!!UN:C6919200/4/?y1; [战场内存]
!!VRy2:Sy1 +81244;
!!VRy3:Sy1 +81248;
!!UN:Cy2/4/?y11;
!!UN:Cy3/4/?y12;
!!VRy12:-24;
!!DO9999906/y11/y12/24:P;
!?FU9999906;
!!VRx1:Sx16 +16;
!!VRx2:Sx16;
!!UN:Cx1/4/?y1;
!!UN:Cx2/4/?y2;
!!UN&y1>0/y2=0:Cx1/4/0;另一个脚本来自XEricSin大大的XEricMods,源码为
ZVSE
**守城方每回合可以紧急征召一队城里未招募的士兵
**征召需要花钱,但是战后不保留部队
**v5242 current round summon done
**FU29423-29425

!?BR&v997>-1;
!!VRv5242:S0;

战斗时右键点击主箭塔下方,CM触发询问。
!?CM4&v5242=0;
!!CM:D?y1 S?y2;
!_!IF:L^D=%Y1 S=%Y2^;
!!FU&y2<>14:E; //按右键
!!FU&y1<>-1/y1<>118/y1<>135/y1<>152:E; //战场周边和箭塔下方位置

检测是否是攻城 防守方是否AI
如果不是攻城则退
如果是AI则退
如果是人则询问是否买部队
!!BA:S?y3 Od/?y4;
!!OW:Iy4/?y5;
!!FU&y3=0:E;
!!FU|y4=-1/y5=1:E;

//setup conversation box//
!!OW:Ry4/0/?y10;
!!OW:Ry4/1/?y11;
!!OW:Ry4/2/?y12;
!!OW:Ry4/3/?y13;
!!OW:Ry4/4/?y14;
!!OW:Ry4/5/?y15;
!!OW:Ry4/6/?y16;
!!VRz1:S^选取你要紧急征召的部队,每回合只能招一支部队,战后不保留。
你有:【%Y16黄金】,【%Y10木材】,【%Y12矿石】,
【%Y11水银】,【%Y13硫磺】,【%Y14水晶】,【%Y15宝石】^;
!!VRz2:S^招未升级生物^;
!!VRz3:S^招单个生物^;
!!DO29423/0/6/1:P; //setup creatures available
!!IF:G0/1/0/1/2/3/4/5/6/7/8/9/10;

!!VRy8:Sv1&1; //non-upgraded?
!!VRy9:Sv1&2; //single recruit
!!VRy10:Sv1&4; //check single creatures
!!VRy11:Sv1&8;
!!VRy12:Sv1&16;
!!VRy13:Sv1&32;
!!VRy14:Sv1&64;
!!VRy15:Sv1&128;
!!VRy16:Sv1&256;

//从高级到低级检测要招募的生物, 检测费用,决定招募数量,扣除资源和生物

!!CA998:T?y17;
!!if&y16>0:;
!!CA998:B3/43;
!!VRy18:S0;
!!VRy18&1:S1-y8;
!!UN:Ty17/6/y18/?y26; //monster type
!!FU29424:Py26/6/y9; //buy y26 /level 6/single recruit
!!FU:E;
!!en:;
!!if&y15>0:;
!!CA998:B3/42;
!!VRy18:S0;
!!VRy18&1:S1-y8;
!!UN:Ty17/5/y18/?y25; //monster type
!!FU29424:Py25/5/y9; //buy y25
!!FU:E;
!!en:;
!!if&y14>0:;
!!CA998:B3/41;
!!VRy18:S0;
!!VRy18&1:S1-y8;
!!UN:Ty17/4/y18/?y24; //monster type
!!FU29424:Py24/4/y9; //buy y24
!!FU:E;
!!en:;
!!if&y13>0:;
!!CA998:B3/40;
!!VRy18:S0;
!!VRy18&1:S1-y8;
!!UN:Ty17/3/y18/?y23; //monster type
!!FU29424:Py23/3/y9; //buy y23
!!FU:E;
!!en:;
!!if&y12>0:;
!!CA998:B3/39;
!!VRy18:S0;
!!VRy18&1:S1-y8;
!!UN:Ty17/2/y18/?y22; //monster type
!!FU29424:Py22/2/y9; //buy y22
!!FU:E;
!!en:;
!!if&y11>0:;
!!CA998:B3/38;
!!VRy18:S0;
!!VRy18&1:S1-y8;
!!UN:Ty17/1/y18/?y21; //monster type
!!FU29424:Py21/1/y9; //buy y21
!!FU:E;
!!en:;
!!if&y10>0:;
!!CA998:B3/37;
!!VRy18:S0;
!!VRy18&1:S1-y8;
!!UN:Ty17/0/y18/?y20; //monster type
!!FU29424:Py20/0/y9; //buy y20
!!FU:E;
!!en:;


!?FU29423; //编辑对话框生物信息
!!VRy6:S-1;
!!VRy7:S-1;
!!CA998:M1/x16/?y6/?y7 T?y8;
!!UN&y6>-1:Ty8/x16/0/?y20; //monster type
!!UN&y7>-1:Ty8/x16/1/?y20; //monster type
!!UN:N3/301/y20/1; //monster name
!!VRz301:M4/?y19; //length
!!VRz300&y19=2:S^【___%Z301___】^ ;
!!VRz300&y19=4:S^【__%Z301__】^;
!!VRz300&y19=6:S^【_%Z301_】^;
!!VRz300&y19=8:S^【%Z301】^;
!!VRy21:S0; //other resource type
!!VRy22:S0; //other resource amount
!!MA&y22=0:Cy20/0/?y22;
!!VRy21&y22=0:S1;
!!MA&y22=0:Cy20/1/?y22;
!!VRy21&y22=0:S2;
!!MA&y22=0:Cy20/2/?y22;
!!VRy21&y22=0:S3;
!!MA&y22=0:Cy20/3/?y22;
!!VRy21&y22=0:S4;
!!MA&y22=0:Cy20/4/?y22;
!!VRy21&y22=0:S5;
!!MA&y22=0:Cy20/5/?y22;
!!VRy21&y22=0:S6;
!!MA:Cy20/6/?y23; //gold
!!VRy1:Sx16+1;
!!VRy2:Sx16+4;
!!if&y7=0:;
!!VRzy2&y21=0:S^招%Y1级生物%Z300,共%Y6个,未升级,单价%Y23黄金,%Y22木材^;
!!VRzy2&y21=1:S^招%Y1级生物%Z300,共%Y6个,未升级,单价%Y23黄金,%Y22水银^;
!!VRzy2&y21=2:S^招%Y1级生物%Z300,共%Y6个,未升级,单价%Y23黄金,%Y22矿石^;
!!VRzy2&y21=3:S^招%Y1级生物%Z300,共%Y6个,未升级,单价%Y23黄金,%Y22硫磺^;
!!VRzy2&y21=4:S^招%Y1级生物%Z300,共%Y6个,未升级,单价%Y23黄金,%Y22水晶^;
!!VRzy2&y21=5:S^招%Y1级生物%Z300,共%Y6个,未升级,单价%Y23黄金,%Y22宝石^;
!!VRzy2&y21=6:S^招%Y1级生物%Z300,共%Y6个,未升级,单价%Y23黄金^;
!!el:;
!!VRzy2&y21=0:S^招%Y1级生物%Z300,共%Y7个,已升级,单价%Y23黄金,%Y22木材^;
!!VRzy2&y21=1:S^招%Y1级生物%Z300,共%Y7个,已升级,单价%Y23黄金,%Y22水银^;
!!VRzy2&y21=2:S^招%Y1级生物%Z300,共%Y7个,已升级,单价%Y23黄金,%Y22矿石^;
!!VRzy2&y21=3:S^招%Y1级生物%Z300,共%Y7个,已升级,单价%Y23黄金,%Y22硫磺^;
!!VRzy2&y21=4:S^招%Y1级生物%Z300,共%Y7个,已升级,单价%Y23黄金,%Y22水晶^;
!!VRzy2&y21=5:S^招%Y1级生物%Z300,共%Y7个,已升级,单价%Y23黄金,%Y22宝石^;
!!VRzy2&y21=6:S^招%Y1级生物%Z300,共%Y7个,已升级,单价%Y23黄金^;
!!en:;

!?FU29424; //征召怪物编号 x1/等级 x2/x3=是否单招(0 or 2)
!!CA998:O?y4;
!!OW:Ry4/0/?y20; //current resources
!!OW:Ry4/1/?y21;
!!OW:Ry4/2/?y22;
!!OW:Ry4/3/?y23;
!!OW:Ry4/4/?y24;
!!OW:Ry4/5/?y25;
!!OW:Ry4/6/?y26;
!!VRy30:S-1;
!!VRy31:S-1;
!!VRy32:S-1;
!!VRy33:S-1;
!!VRy34:S-1;
!!VRy35:S-1;
!!MA:Cx1/0/?y30; //required resources
!!VRy8&y30>0:S0; //resource id
!!MA&y30=0:Cx1/1/?y31;
!!VRy8&y31>0:S1; //resource id
!!MA&y31=0:Cx1/2/?y32;
!!VRy8&y32>0:S2; //resource id
!!MA&y32=0:Cx1/3/?y33;
!!VRy8&y33>0:S3; //resource id
!!MA&y33=0:Cx1/4/?y34;
!!VRy8&y34>0:S4; //resource id
!!MA&y34=0:Cx1/5/?y35;
!!VRy8&y35>0:S5; //resource id
!!MA:Cx1/6/?y36;

!!VRy9:S30+y8; //index of y variable holding monster resource cost
!!VRy10:S20+y8; //index of y variable holding the resource stock
!!VRy11&yy9>0:Syy10:yy9;//quantity of recruits by resource
!!VRy11&yy9<=0:S10000000;
!!VRy1&y36>0:Sy26:y36; //quantity of recruits by gold
!!VRy1&y36<=0:S10000000;
!!CA998:M1/x2/?y12/?y13; //current reserve
! !IF:M^%Y1 %Y11 %Y12 %Y13^;

!!VRy1&y1>y11:Sy11; //min recruites by resources
!!VRy1&y13<=y12/y1>y12:Sy12; //min recruites by reserve
!!VRy1&y13>y12/y1>y13:Sy13; //min recruites by reserve UP
!!VRy1&x3>0/y1>1:S1; //min recruites by single recruit
!!FU&y1=0:E; //end if no available

!!VRy2:Sy36*y1*-1;//gold cost of recruits
!!VRy3:Syy9*y1*-1; //resources cost
! !IF:M^no=%Y1 g=%Y2 r=%Y3^;

!!OW:Ry4/6/dy2; //deduct resources
!!OW:Ry4/y8/dy3;
!!VRy-1:S0-y1;
!!CA998&y13<=y12:M1/x2/dy-1/d; //reduce reserve
!!CA998&y13>y12:M1/x2/d/dy-1; //reduce reserve UP
!!DO29425/0/8/1:Px1/y1;//place on field


!?FU29425; //召唤怪物 x1=type x2=quantity
!!VRy10&x16=0:S31;
!!VRy10&x16=1:S167;
!!VRy10&x16=2:S65;
!!VRy10&x16=3:S133;
!!VRy10&x16=4:S99;
!!VRy10&x16=5:S47;
!!VRy10&x16=6:S149;
!!VRy10&x16=7:S81;
!!VRy10&x16=8:S115;
!!VRy11:Sy10-1;

!!MA:Xx1/?y1;
!!VRy1:&1;//double wide?
!!BU:Oy10/?y2 Ey10/?y3; //this grid occupied?
!!VRy6:Sy2 &4; //quick sand
!!VRy7:Sy2 &8; //mine
!!BU:Oy11/?y4 Ey11/?y5; //prev grid
!!VRy8:Sy4 &4;
!!VRy9:Sy4 &8;

!!if|y2=0/y6=4/y7=8:; //no obstacle
!!FU&y3>-1:E; //end if occupied
!!if&y1=0:; //single wide
    !!BU:Sx1/x2/y10/1/-1/1;
    !!VRv5242:S1;
    !!VRx16:S10000;
!!el:; //double wide
    !!if|y4=0/y8=4/y9=8:;
      !!FU&y5>-1:E; //end if occupied
      !!BU:Sx1/x2/y10/1/-1/1;summon
      !!VRv5242:S1;
      !!VRx16:S10000;
    !!en:;
!!en:;
!!en:;

这两个脚本一个为修正了一个非常重要的bug,一个为添加了非常有趣的新机制,在我看来都是非常棒的脚本,所以想问下各位高手如何修改才能使他们共存



贤知有您 发表于 2017-11-6 13:41:11

看起来不会冲突啊,显示哪里冲突?

hell____fire 发表于 2017-11-6 14:03:11

贤知有您 发表于 2017-11-6 13:41
看起来不会冲突啊,显示哪里冲突?

不好意思,在家里的电脑出现了冲突,因为之前是正常的加了两个脚本就冲突了,我在单位上的电脑上运行又似乎没有冲突,我找找看是否是其他脚本互相冲突了。话说贤知大大怎么看两个脚本是不是互相冲突另外怎么去解决互相冲突呢?

贤知有您 发表于 2017-11-6 15:56:12

冲突有很多种哦,比如脚本运行的先后问题,变量或函数的冲突等等。具体需要测试比较实在,有问题就有bug或者弹框错误。

XEricSin 发表于 2017-11-6 16:32:49

一般函数FU和变量v有没有重复,比如两个脚本都用了FU1111或者v123,这种情况就很可能冲突。
然后看触发器!?XX,如果一个是!?MA,一个是!?CM,那么冲突可能性不大。再比如!?MF触发时,一个脚本把伤害值加100倍,另一个脚本把伤害值乘以2,顺序不同最后的结果就会不同。(x+100)*2不等于x*2+100
另外就是看脚本是一般的erm修改还是内存修改UN:C之类,这个需要更专业的知识了,想我这种等级的,一般就假设不影响,除非内存脚本中明确说明冲突的情况。
最后就是看错误弹框,我就看看哪句脚本出问题,看不懂那些内存信息。

hell____fire 发表于 2017-11-23 11:58:34

谢谢两位大大的指导!:)
页: [1]
查看完整版本: 脚本冲突问题

捐赠