水流行险 发表于 2021-5-3 15:28:22

【已解决】如何实现攻城战时按魔法行会的等级为守城方增加八级生物?

本帖最后由 水流行险 于 2021-5-31 19:26 编辑

由于hero3原版的守城很弱也很难,现要求实现在人类参加的攻城战时,按英雄的等级和魔法行会的等级为守城方召唤八级生物。
现脚本已经可以按英雄等级召唤,但无法与魔法行会等级挂钩。
另,希望增加ai作为守城方而无英雄时,出现100%的野兵英雄援助。

目前的脚本如下,可是没有生效。请版主和高手指点!;exp;@XEricSin @贤知有您 @Archer30 @canary
ZVSE**守城方开始战斗前自动增加预备役**战后不保留部队**EXricSin制作,2016.3.22于wog论坛编辑,独孤求败收录铭记**FU29423-29425
//从魔法行会要招募的8级生物守护神!?BF&1000;战斗开始前时设置战场   加&1000是只有人类参加时!!BA:S?y3; 检测是否是攻城!!FU&y3=0:E;如果不是攻城则退!!CA998:T?y17;获取城镇的类型! !CA998:B3/0;检查编号为0一级魔法行会 守护神建筑是否建造    最好改为1级1/3 --3/3--5/3倍数对应魔法行会! !FU&-1:E;[没有神器]   ------空白的三行是原始脚本!!VRi:S0;等级数初始化!!CA998:B3/0;检查1级!!VRi&1:+1;等级数+1!!CA998:B3/1;检查2级!!VRi&1:+1;等级数+1!!CA998:B3/2;检查3级!!VRi&1:+1;等级数+1!!CA998:B3/3;检查4级!!VRi&1:+1;等级数+1!!CA998:B3/4;检查5级!!VRi&1:+1;等级数+1    现状 i=等级数!!BH1:N?y30;检测守城英雄编号???守城英雄?如果没有守城英雄则退出。!!FU&y30<0:E;[没有英雄就退出]!!HEy30:Ed/?y29;检测守城英雄等级!!VRy28:Sy17+150;设置怪物类型为城镇类型+150! !VRy27:Sy29:1;召唤的数量跟玩家等级挂钩*或:!!VRy27:Sy29:i;召唤的数量跟玩家等级成正比同时与魔法行会等级成反比:!!BU:Sy28/y27/97/1/-1/0;在指定位置上召唤与英雄等级数量得8级怪物 97中心城门



贤知有您 发表于 2021-5-4 23:27:43

上次已经说过了,条件用标志1,你1>0完全没意义的
标志只有正负,建筑判断存在返回正,不存在返回负。
!!VRi&1:+1;等级数+1

水流行险 发表于 2021-5-5 02:42:15

贤知有您 发表于 2021-5-4 23:27
上次已经说过了,条件用标志1,你1>0完全没意义的
标志只有正负,建筑判断存在返回正,不存在返回负。
!! ...

这样也不生效啊!;sl;

//从魔法行会要招募的8级生物守护神
!?BF&1000;战斗开始前时设置战场   加&1000是只有人类参加时
!!BA:S?y3; 检测是否是攻城
!!FU&y3=0:E;如果不是攻城则退

!!CA998:T?y17;获取城镇的类型
!!VRi:S0;等级数初始化
!!CA998:B3/0;检查1级
!!VRi&1:+1;等级数+1
!!CA998:B3/1;检查2级
!!VRi&1:+1;等级数+1
!!CA998:B3/2;检查3级
!!VRi&1:+1;等级数+1
!!CA998:B3/3;检查4级
!!VRi&1:+1;等级数+1
!!CA998:B3/4;检查5级
!!VRi&1:+1;等级数+1    现状 i=等级数
!!FU&-1:E;[没有神器]
!!BH1:N?y30;检测守城英雄编号???守城英雄?如果没有守城英雄则退出。
!!FU&y30<0:E;[没有英雄]
!!HEy30:Ed/?y29;检测守城英雄等级
!!VRy28:Sy17+150;设置怪物类型为城镇类型+150
!!VRy27:Sy29*i:3;召唤的数量跟玩家等级挂钩*或:       最好改为1级1/3 --三级3/3--五级5/3倍数对应魔法行会
!!BU:Sy28/y27/97/1/-1/0;在指定位置上召唤与英雄等级数量得8级怪物 97中心城门

XEricSin 发表于 2021-5-13 03:47:45

禁掉这个
!!FU&-1:E;[没有神器]

水流行险 发表于 2021-5-13 13:11:41

XEricSin 发表于 2021-5-13 03:47
禁掉这个
!!FU&-1:E;[没有神器]

对,解决了
祝老板好运连连!;hi;

水流行险 发表于 2021-5-18 17:08:11

XEricSin 发表于 2021-5-13 03:47
禁掉这个
!!FU&-1:E;[没有神器]

如果电脑守城而无英雄,就参照野兵英雄援助。这怎么实现呢?@Archer30 @canary @XEricSin @贤知有您

XEricSin 发表于 2021-5-19 10:55:59

水流行险 发表于 2021-5-18 17:08
如果电脑守城而无英雄,就参照野兵英雄援助。这怎么实现呢?@Archer30 @canary @XEricSin @贤知有您

那你就把野兵英雄脚本里的判断改成电脑守城无英雄也触发啊

水流行险 发表于 2021-5-19 15:41:58

本帖最后由 水流行险 于 2021-5-31 16:37 编辑

XEricSin 发表于 2021-5-19 10:55
那你就把野兵英雄脚本里的判断改成电脑守城无英雄也触发啊
6 wog - random hero ???@贤知有您 @Archer30

ZVSE

** Random Hero by Bonizag
** Wogify Name: script72.erm
** Updated: April 14, 2004(Fnord Update: May 1, 2004)

** variables used:      v846, v849, v851, v855-v856, v867 for long term

** string variables used: z1-z3, z78-z90 temporarily

** flags used:            781, 783, 786 for long term

** functions used:      7797-7798, 7825-7827

** hero variables used:   w81-w83

!#UN:P72/?v846; //check if option is enabled

!#TM41&v846=1:S1/999/1/255; //init timer 41
!#VRv855:S-2;

!#IF&v846=1:V781/0; //init flag 781
!#IF&v846=1:V786/0; //786 set false for the first battle

!?TM41&v846=1;
!!VRh:S0; //see whether there is an unused color
!!OW:I0/?f/?g;
!!VRh&g=1:S1;
!!OW:I1/?f/?g;
!!VRh&g=1:S1;
!!OW:I2/?f/?g;
!!VRh&g=1:S1;
!!OW:I3/?f/?g;
!!VRh&g=1:S1;
!!OW:I4/?f/?g;
!!VRh&g=1:S1;
!!OW:I5/?f/?g;
!!VRh&g=1:S1;
!!OW:I6/?f/?g;
!!VRh&g=1:S1;
!!OW:I7/?f/?g;
!!VRh&g=1:S1;
!!VRv846&h=0:S0;

!?OB54&v846=1/1000; //monster trigger
!!IF:V786/1;
!!SN:W^Disable_Battle_Replay^/0;

!?OB16&1000;16 Creature Bank
!!SN:W^Disable_Battle_Replay^/1;

!?OB24&1000;24 Derelict Ship
!!SN:W^Disable_Battle_Replay^/1;

!?OB25&1000;25 Dragon Utopia
!!SN:W^Disable_Battle_Replay^/1;

!?OB84&1000;84 Crypt
!!SN:W^Disable_Battle_Replay^/1;

!?OB85&1000;85 Shipwreck
!!SN:W^Disable_Battle_Replay^/1;

!?OB26&1000;26 Event
!!SN:W^Disable_Battle_Replay^/1;

!?OB63&1000;New WoG objects eg Deathchamber or Adventure Cave
!!SN:W^Disable_Battle_Replay^/1;

!?BA0&v846=1/1000; //before battle begins

!!IF:V781/0; //assume there is no random hero for battle actions
!!IF:V783/0; //assume no army camp fight

!?BA0&786/v846=1/1000; //continue if hero fights army camps (wandering monsters excluded)
//section: hero fights a monster stack

!!BA:H0/?f; //attacker in vf
!!BA:H1/?g; //defender in vg

!!IF:V783/1; //save flag 786 into 783
!!VRh&g<0:S1 R99; //make a random value from 1 to 100
!!VRh&g<0:%4; //25% chance to fight against a hero
*!VRh&g<0:S0; TEST Random Hero appears always
!!VRv855&g<0/h=0:S-2; //init v855
!!VRi&g<0/h=0:S0 T154; //get a time based random hero number 0-154, 155 excluded because it is reserved for Asmodeus script
*!VRi:S95;--JHV test a Prisoner
*!UN:P77/1; enable cheat menu for test--JHV
!!VRv856&g<0/h=0:S0; //init v856, counts number of searched heroes
!!VRv849&g<0/h=0:Si;
!!DO7798/1/1000/1&g<0/h=0:P; //get the hero who fights the battle, v855 will contain the number of the hero
!!BA&g<0/h=0:H1/v855; //give the hero to fight for monsters

!!DO(Replay_Battle_Monster0)/0/6/1:P;

//this flag state needed for placing machines
!!IF:V786/0; //hero don't fight against monsters' hero by default
!!IF&g<0/h=0/v855>=0:V786/1; //hero fights against monsters' hero

//this flag state needed after battle
!!IF:V781/0; //hero doesn't fight against monsters' hero by default
!!IF&g<0/h=0/v855>=0:V781/1; //hero fights against monsters' hero
!!SN&g<0/h=0/v855>=0:W^Random_Hero_Active^/1;

!?BF&v846=1/1000;
!!DO(Replay_Battle_Monster0)/0/6/1:P;

!?FU(Replay_Battle_Monster0);
!!BA:M1/x16/?y1/?y2; //give the hero to fight for monsters
!!SN:W^Replay_Slot_Monster_%X16^/y1; !!SN:W^Replay_Slot_Number_%X16^/y2;

!?FU(Replay_Battle_Monster1);
!!SN:W^Replay_Slot_Monster_%X16^/?y1; !!SN:W^Replay_Slot_Number_%X16^/?y2;
!!BA:M1/x16/y1/y2; //give the hero to fight for monsters

********************************************************************************
!?FU(OnBattleReplay)&786/v846=1;
!!SN:W^Disable_Battle_Replay^/?y1;
!!FU&y1=1:E;
!!SN:W^Random_Hero_Active^/?y1;
!!DO(Replay_Battle_Monster1)/0/6/1&y1=1:P;
!!IF:V786/0;

!?FU(OnBeforeBattleReplay)&v846=1;
!!SN:W^Disable_Battle_Replay^/?y1;
!!FU&y1=1:E;
!!SN:W^Random_Hero_Active^/?y1;
!!IF&y1=1:V786/1;Activate Random Hero Again
********************************************************************************

!?BR&v846=1/1000; //battle round trigger for placing war machines when battle begins

!!IF&v997=0:V786/0; //if asmodeus sends devils there will be no random hero

!?BG0&781/v846=1/1000; //random hero

!!BH1:N?f; //get random hero's number
!!BG&f>=0:Q?v851 A?g; //get attacking side index and action
!!BG&v851=1/f>=0/g=4:A0; //if random hero tries to retreat force him/her to perform an other action

!?BA1&v846=1/1000;

!!IF:V786/0; //set flag 786 false for the next battle
!!HEv855&781:O-1/1; //set random hero's owner back to -1 after battle
!!SN:W^Random_Hero_Active^/0;

!$OB54&v846=1; //monster trigger
!!IF:V786/0;

!?FU7797;
//sees if hero is in prison
//x1: greatest object number
//x16: object number (from back)
//x2: object type
//x3: hero number

!!VRy1:Sx1 +1 -x16; //run backward
!!UN:Ux2/-1/y1/1; //v1 v2 v3 coordinates

!!UN:P904/1 P905/0; disable error messages
!!HEv1/v2/v3:N?y2; //get hero number at prison's position
!!UN:P905/?y3;
!!UN:P904/0; re-enable error messages
!!FU&y3>0:E; leave if error
!!IF&y2=x3:V786/1; //set flag if the hero is in prison

!?FU7798;
//gets the hero who fights the battle on the monsters' side

!!IF:V786/0; //init

!!VRy19:Sv849 %155; //to ensure cycling
!!HEy19:O?y1; //get the owner

!!OW:V0/?y2/?y3; //get the heroes who can be hired in taverns
!!OW:V1/?y4/?y5;
!!OW:V2/?y6/?y7;
!!OW:V3/?y8/?y9;
!!OW:V4/?y10/?y11;
!!OW:V5/?y12/?y13;
!!OW:V6/?y14/?y15;
!!OW:V7/?y16/?y17;

!!OW:Iy1/?y20/?y21; //get owner info
!!IF&y1<>-1/y21<>1:V786/1; //if owner of the hero is active call again

!!IF&y19=y2/y2<>-1:V786/1; //if hero can be hired in any tavern call again
!!IF&y19=y3/y3<>-1:V786/1;
!!IF&y19=y4/y4<>-1:V786/1;
!!IF&y19=y5/y5<>-1:V786/1;
!!IF&y19=y6/y6<>-1:V786/1;
!!IF&y19=y7/y7<>-1:V786/1;
!!IF&y19=y8/y8<>-1:V786/1;
!!IF&y19=y9/y9<>-1:V786/1;
!!IF&y19=y10/y10<>-1:V786/1;
!!IF&y19=y11/y11<>-1:V786/1;
!!IF&y19=y12/y12<>-1:V786/1;
!!IF&y19=y13/y13<>-1:V786/1;
!!IF&y19=y14/y14<>-1:V786/1;
!!IF&y19=y15/y15<>-1:V786/1;
!!IF&y19=y16/y16<>-1:V786/1;
!!IF&y19=y17/y17<>-1:V786/1;

!!UN&-786:U62/-1/?y18; //get the number of prisons on the map
!!DO7797/1/y18/1&-786:Py18/62/y19; //iterate through prison's and see if this hero is in any of them

!!VRv855&-786:Sy19; //save hero number only if we found a valid hero

!?FU7798&-786;
!!DO7827/0/7/1:P; //get an owner for the random hero - returned in v849
!!HEv855:Ov849/1;

!?FU7798;

!!VRv849&786:+1;
!!VRv856:+1;

!!VRx16:S1000;
!!VRx16&786/v856<154:S1; //continue search if the hero is owned, can be hired in taverns or is prisoned

!?FU7825;
//dismisses war machines that could be bought originally in heroes3 and gives back gold spent on them
//x1 hero number

!!HEx1:A2/6/?y1/?y2 A2/4/?y1/?y3 A2/5/?y1/?y4 ; //y2 y3 y4 number of equipped machines
!!IF:Wx1; //use hero's w vars
!!HEx1:O?y1; //vf hero owner
!!HEx1&w81=0/y2=1:A3/6/1/1; //remove first aid tent that was bought right now
!!OW&w81=0/y2=1:Ry1/6/d750; //give back gold spent on first aid tent
!!HEx1&w82=0/y3=1:A3/4/1/1; //remove ballista that was bought right now
!!OW&w82=0/y3=1:Ry1/6/d750; //give back gold spent on ballista
!!HEx1&w83=0/y4=1:A3/5/1/1; //remove ammo cart that was bought right now
!!OW&w83=0/y4=1:Ry1/6/d750; //give back gold spent on ammo cart

!?FU7826;
//corrects hero's w vars according to war machine equipment
//x1: hero number

!!IF:Wx1; // use hero's w variables
!!HEx1:A2/6/?y1/?y2; //y2: nr of equipped first aid tents
!!VRw81&y2=0/w81<>0:S0;
!!VRw81&y2=1/w81=0:S1;

!!HEx1:A2/4/?y1/?y2; //y2: nr of equipped ballistas
!!VRw82&y2=0/w82<>0:S0;
!!VRw82&y2=1/w82=0:S1;

!!HEx1:A2/5/?y1/?y2; //y2: nr of equipped ammo carts
!!VRw83&y2=0/w83<>0:S0;
!!VRw83&y2=1/w83=0:S1;

!?FU7827;
//x16: color for random hero that needs to be tested

!!OW:Ix16/?y1/?y2; //check color status
!!VRv849&y2=1:Sx16; //v849 gets the color number if the color is unused
!!VRx16&y2=1:S7; //jump out from do receiver if color is found


水流行险 发表于 2021-5-24 13:40:02

XEricSin 发表于 2021-5-19 10:55
那你就把野兵英雄脚本里的判断改成电脑守城无英雄也触发啊

这里在哪里加上触发条件呢?快来帮助加两行码吧!!@Archer30 @XEricSin

水流行险 发表于 2021-5-31 16:46:50

本帖最后由 水流行险 于 2021-5-31 17:03 编辑

XEricSin 发表于 2021-5-19 10:55
那你就把野兵英雄脚本里的判断改成电脑守城无英雄也触发啊
这里怎么换成攻城战发生呢? 这样示可以,只是援军弱了一点。@Archer30 @XEricSin @贤知有您
!?BF&1000;战斗开始前时设置战场   加&1000是只有人类参加时
!!BA:S?y3; 检测是否是攻城
!!FU&y3=0:E;如果不是攻城则退
!!SN:W^Disable_Battle_Replay^/1;


!?OB54&v846=1/1000; //monster trigger
!!IF:V786/1;
!!SN:W^Disable_Battle_Replay^/0;

!?OB16&1000;16 Creature Bank
!!SN:W^Disable_Battle_Replay^/1;

!?OB24&1000;24 Derelict Ship
!!SN:W^Disable_Battle_Replay^/1;

!?OB25&1000;25 Dragon Utopia
!!SN:W^Disable_Battle_Replay^/1;

!?OB84&1000;84 Crypt
!!SN:W^Disable_Battle_Replay^/1;

!?OB85&1000;85 Shipwreck
!!SN:W^Disable_Battle_Replay^/1;

!?OB26&1000;26 Event
!!SN:W^Disable_Battle_Replay^/1;

!?OB63&1000;New WoG objects eg Deathchamber or Adventure Cave
!!SN:W^Disable_Battle_Replay^/1;

XEricSin 发表于 2021-6-1 20:25:48

水流行险 发表于 2021-5-31 16:46
这里怎么换成攻城战发生呢? 这样示可以,只是援军弱了一点。@Archer30 @XEricSin @贤知有您
!?BF&1000; ...

不知道你想改成什么样。你在BA里面检查了攻城战,再检查BH英雄啊

水流行险 发表于 2021-6-1 20:29:29

XEricSin 发表于 2021-6-1 20:25
不知道你想改成什么样。你在BA里面检查了攻城战,再检查BH英雄啊
哈哈,Archer30和贤知帮我改成以下了,还差一点;cn;

ZVSE
**守城方开始战斗前自动增加预备役
**战后不保留部队
**EXricSin制作,2016.3.22于wog论坛编辑,独孤求败收录铭记
**FU29423-29425
===================================================

//从魔法行会要招募的8级生物守护神
!?BF&1000;战斗开始前时设置战场   加&1000是只有人类参加时
!!BA:S?y3; 检测是否是攻城
!!FU&y3=0:E;如果不是攻城则退

!!CA998:T?y17;获取城镇的类型

!!VRy11:S0;等级数初始化
!!CA998:B3/0;检查1级
!!VRy11&1:+1;等级数+1
!!CA998:B3/1;检查2级
!!VRy11&1:+1;等级数+1
!!CA998:B3/2;检查3级
!!VRy11&1:+1;等级数+1
!!CA998:B3/3;检查4级
!!VRy11&1:+1;等级数+1
!!CA998:B3/4;检查5级
!!VRy11&1:+1;等级数+1    现状y11=等级数
!!VRy11&y11<1:S1;没有魔法行会则将y11设置为1     这里应该是没有魔法行会就退出

!!BH1:N?y30;检测守城英雄编号

!!if&y30<0;检测英雄是否存在
!!VRy29:S0;没有英雄则将y29为0
!!el;
!!HEy30:Ed/?y29;有英雄则获取守城英雄等级
!!en;

!!BA:O?y31/?y32;检测守城方势力
!!VRy10:S0;获得最高英雄等级

!!re y1/0/155/1:;
!!HEy1:O?y2 Ed/?y3/1;
!!if&y2=y32/y3>y10:;
      !!VRy10:Sy3;记录最高等级
!!en:;
!!en:;

!!VRy28:Sy17 +150;设置怪物类型为城镇类型+150
!!VRy27:Sy29 +y10 :y11;召唤的数量跟(守城英雄等级+最高英雄等级)成正比同时与魔法行会等级成反比:
!!BU:Sy28/y27/97/1/-1/0;在指定位置上召唤与英雄等级数量得8级怪物 97中心城门

Archer30 发表于 2021-6-1 21:21:33

水流行险 发表于 2021-6-1 20:29
哈哈,Archer30和贤知帮我改成以下了,还差一点

ZVSE


为啥退出?y11的值没有生成的话,后边!!VRy27:Sy29 +y10 :y11;除以y11,怎么计算?

水流行险 发表于 2021-6-1 21:45:44

Archer30 发表于 2021-6-1 21:21
为啥退出?y11的值没有生成的话,后边!!VRy27:Sy29 +y10 :y11;除以y11,怎么计算?

没有魔法行会就不召唤啊!

Archer30 发表于 2021-6-1 22:08:37

水流行险 发表于 2021-6-1 21:45
没有魔法行会就不召唤啊!

那直接!!FU&y11<1:E;不就完了

水流行险 发表于 2021-6-1 22:19:33

Archer30 发表于 2021-6-1 22:08
那直接!!FU&y11

对呀。我就是这样的。回复在另一个帖子里面了的。耶!

战后裸城检查怎么办呢?最后一点小问题了。我的预备役脚本就完美无缺了!

Archer30 发表于 2021-6-1 22:27:08

水流行险 发表于 2021-6-1 22:19
对呀。我就是这样的。回复在另一个帖子里面了的。耶!

战后裸城检查怎么办呢?最后一点小问题了。我的 ...

自己尝试一下。。战后禁止英雄裸奔的脚本有了,每天禁止裸城的脚本有了,组合组合?
页: [1]
查看完整版本: 【已解决】如何实现攻城战时按魔法行会的等级为守城方增加八级生物?

捐赠