hell____fire 发表于 2018-3-9 22:55:17

一个限制H/R战术思路的erm(来自兽哥哥分享的te1.03汉化版)探讨

本帖最后由 hell____fire 于 2018-3-10 01:13 编辑

TE中有一个非常好的H/R限制选项,如图所示,设定是当英雄施放了一次魔法,点击逃跑或者投降按钮便会出现该提示,无法逃跑或者投降。我在相关erm找了下,找到了相关的脚本。但该脚本和相关选项关联,我尝试了将其制作成erm脚本放入脚本文件夹,发现没有效果。想和论坛各位大神讨教如何将其变为独立的脚本使其在era中生效。同时个人有一个思路,就是可以直接设定为当英雄施放了一次魔法,逃跑和投降按钮便无法点击,不知可否实现?相关erm代码如下

; menus
!?CM4&105;
!!CM:I?y-5; index of place clicked on
!!CM:F?y-6 S?y-7; type of click
!!FU|y-5<>2005/y-6=0/y-7<>12:E;
!!CM:R0;
!!FU23206&y-6=4:P; main menu
! !IF:L^bt %V6210, att/def %V6206/%V6207^;

; antiHit&Run routine
!?CM4&105;
!!UN:P601/?y-1; check corresponding option
!!FU&y-1=0:E; exit
!!BG:Q?y-2; current side
!!CM:I?y-5; index of place clicked on
!!CM:F?y-6 S?y-7; type of click
!!FU|y-5<2001/y-5>2002:E; exit if unproper click
!!IF:V4/0;
!!IF&y-5=2001/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=1/v6105=v997:V4/1;
! !IF|y-5=2001/y-5=2002:L^turns %V6104/%V6105, curr %V997^;
!!CM&4:R0; disable standard message
!!IF&4:M1/z104500; message

ert代码如下
104500      因为你已经施放了一次魔法
本回合你不能逃跑也不能投降
      !!S      12.09.2005完整的脚本在附件








songfx 发表于 2018-3-9 23:02:21

连你也开始搞erm了,可喜可贺

贤知有您 发表于 2018-3-10 14:32:56

不管什么情况,只要放过魔法,该回合就不准逃跑?投降倒是无所谓

hell____fire 发表于 2018-3-10 15:17:08

本帖最后由 hell____fire 于 2018-3-10 15:30 编辑

贤知有您 发表于 2018-3-10 14:32
不管什么情况,只要放过魔法,该回合就不准逃跑?投降倒是无所谓
是的,te里面这个选项就是,如果英雄放过魔法,这位英雄该回合就不能逃跑或者投降。专门针对HR战术的选项。不过对于ai好像是没有用的,只有人类玩家受限制:)对战中也受这个限制。

贤知有您 发表于 2018-3-10 16:01:29

hell____fire 发表于 2018-3-10 15:17
是的,te里面这个选项就是,如果英雄放过魔法,这位英雄该回合就不能逃跑或者投降。专门针对HR战术的选项 ...

那么你想要的效果是,AI也有效?可能有点小麻烦

songfx 发表于 2018-3-10 18:36:10

这个真的很难,要改变电脑对战斗的判断规则,估计要重写游戏内核了,就像vcmi

hell____fire 发表于 2018-3-10 19:25:21

本帖最后由 hell____fire 于 2018-3-10 19:29 编辑

贤知有您 发表于 2018-3-10 16:01
那么你想要的效果是,AI也有效?可能有点小麻烦
不是的,贤知大大,我想实现的也只是te的效果,就是如果人类英雄放过魔法,这位英雄该回合就不能逃跑或者投降,限制人类玩家的hr。电脑玩家是比较无关紧要的。不过希望有下面的改进
一个是te这个功能需要和te的内部选项挂钩,因为现在玩的话肯定era内核比较多,能否做成独立脚本,扔进era版本的脚本文件夹就可以生效?这样就可以兼容其他era-mod。
另外一个,我个人觉得弹出提示太繁琐了,是否可以在人类英雄施法后,直接逃跑和投降按钮变成灰色不能按?类似下图所示,这样玩家就一目了然了。

当然,如果实在麻烦的话显示提示也是可以的,主要是实现一个防止hr的功能。




兽哥哥 发表于 2018-3-10 21:03:19

如果对战i禁止hr的话少了很多战略。不过玩单机倒是无所谓、

贤知有您 发表于 2018-3-10 21:19:45

其实,单对玩家有效,又不是对战的话,岂不是阻碍自己玩游戏。想临时退出读档都不给吗呵呵。
话说,如果写非对战脚本,应该不难吧。只要该回合施过法,就不能逃跑/投降。
只需要2个标志,记录每回合左右玩家是否施过法,施法的话,鼠标点投降逃跑时直接无效就行了。
不过如果更要限制AI不能逃跑投降,倒是还没想到好方法。

hell____fire 发表于 2018-3-10 22:03:52

兽哥哥 发表于 2018-3-10 21:03
如果对战i禁止hr的话少了很多战略。不过玩单机倒是无所谓、

我个人的理解是,hr本身是一个比较不公平的战术,要是谁随出了末日加上高速兵种,频频的骚扰一个不公平,一个非常无趣,也不真实。并且这是兽哥你分享的te版本中的设定,te本身就是为了对战而设,因此可见这也是对战中公认的缺陷。并且如果做成单独脚本,想加就加,不想加就不加也是比较自由的。

hell____fire 发表于 2018-3-10 22:13:10

贤知有您 发表于 2018-3-10 21:19
其实,单对玩家有效,又不是对战的话,岂不是阻碍自己玩游戏。想临时退出读档都不给吗呵呵。
话说,如果写 ...

不需要对AI,只需要对玩家。对玩家有效也就是对战有效啊。
话说贤知大大你看了te版本的脚本了吧,不能简单改下就变成era版本的独立脚本吗?还是era的整体写法和te的不同?

贤知有您 发表于 2018-3-11 10:12:43

我粗略看了下TE1.87版的,比一楼的详细,估计效果更好些吧。暂时没空提出来。看看其他大神有空没。

兽哥哥 发表于 2018-3-11 13:22:49

hell____fire 发表于 2018-3-10 22:03
我个人的理解是,hr本身是一个比较不公平的战术,要是谁随出了末日加上高速兵种,频频的骚扰一个不公平, ...

对战中末日和飞跳都是禁止的,HR选项我们对战都是允许的。而且骚扰本来也是对战的战术之一啊。不然有时候强族对弱族再加上宝物一边倒的话,翻盘都没可能了。主要还是看对战双方怎么约定吧

hell____fire 发表于 2018-3-11 14:18:30

贤知有您 发表于 2018-3-11 10:12
我粗略看了下TE1.87版的,比一楼的详细,估计效果更好些吧。暂时没空提出来。看看其他大神有空没。

TE1.87?我记得国外的te只出到1.0x版本就没了下文,这个1.87版本的te我在网上搜索了也没找到:)贤知大大可否把这个版本的te相关脚本发给我看下,让我研究下:)当然如果贤知大大有时间帮我提下更是感激不尽。之前在脚本方面已经多次向你讨教,你做的回城术限制脚本,我还用在了我的mod里面,真是非常感谢

hell____fire 发表于 2018-3-11 14:27:26

兽哥哥 发表于 2018-3-11 13:22
对战中末日和飞跳都是禁止的,HR选项我们对战都是允许的。而且骚扰本来也是对战的战术之一啊。不然有时候 ...

嗯,确实如此,因为原版毕竟比较不平衡,地狱这种弱族如果能用hr战术,也不失为一种平衡。但如果是te、wt等平衡mod版本,本身种族就没有强弱之分,用了hr那就在平衡中创造不公平了,我想这也是te做这个选项的原因。其实我就曾用hr战术赢过我的一位朋友,然后我的朋友就很受不了了,觉得好猥琐;hx;我看了国外te、wt版本的对战报告,也有约定禁hr也有不禁hr的。但我觉得h3的对战是否也可以做到像星际、dota一样,有个大家都可以接受统一的规则,不需要约定直接开打?这样是否是更好的对战方式?我的mod的一个发展方向就是这个

XEricSin 发表于 2018-3-12 17:41:51

本帖最后由 XEricSin 于 2018-3-12 19:32 编辑

触发器后面的 &105 得删了。


如果你要弄个wog选项,就需要ers文件,你可以把era自带的ers打开加一个601选项的条目

如果不要wog选项,就要删除601选项相关的两行。


hell____fire 发表于 2018-3-13 10:29:24

XEricSin 发表于 2018-3-12 17:41
触发器后面的 &105 得删了。



好的,谢谢XEricSin大大的指点:)我去研究下

hell____fire 发表于 2018-3-14 23:04:38

本帖最后由 hell____fire 于 2018-3-14 23:07 编辑

按照XEricSin大大的方法,我把脚本改为:
ZVSE
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!

; menus
!?CM4;
!!CM:I?y-5; index of place clicked on
!!CM:F?y-6 S?y-7; type of click
!!FU|y-5<>2005/y-6=0/y-7<>12:E;
!!CM:R0;
!!FU23206&y-6=4:P; main menu
! !IF:L^bt %V6210, att/def %V6206/%V6207^;

; antiHit&Run routine
!?CM4;
!!BG:Q?y-2; current side
!!CM:I?y-5; index of place clicked on
!!CM:F?y-6 S?y-7; type of click
!!FU|y-5<2001/y-5>2002:E; exit if unproper click
!!IF:V4/0;
!!IF&y-5=2001/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=1/v6105=v997:V4/1;
! !IF|y-5=2001/y-5=2002:L^turns %V6104/%V6105, curr %V997^;
!!CM&4:R0; disable standard message
!!IF&4:M1/z104500; message

ert文件不变。结果奇怪的是,进入战场后,未释放魔法,点击逃跑按钮便显示不能逃跑和投降。然后我释放魔法后,确实当回合是无法逃跑和投降的。但下一回合施法后逃跑和投降都可以了,也就是这个脚本作用变成了禁止第一回合逃跑和投降。
然后我将上面menus部分代码删除,即改为
ZVSE
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!

; antiHit&Run routine
!?CM4;
!!BG:Q?y-2; current side
!!CM:I?y-5; index of place clicked on
!!CM:F?y-6 S?y-7; type of click
!!FU|y-5<2001/y-5>2002:E; exit if unproper click
!!IF:V4/0;
!!IF&y-5=2001/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=1/v6105=v997:V4/1;
! !IF|y-5=2001/y-5=2002:L^turns %V6104/%V6105, curr %V997^;
!!CM&4:R0; disable standard message
!!IF&4:M1/z104500; message发现问题依然如此,脚本只能禁止第一回合不能逃跑和投降(而且不管施法前后),下一回合便不起作用了。
@贤知有您 @XEricSin 两位大大怎么看?应该如何才能达到te的效果?

XEricSin 发表于 2018-3-15 01:05:40

你这个脚本根本就不完整

hell____fire 发表于 2018-3-15 14:04:04

XEricSin 发表于 2018-3-15 01:05
你这个脚本根本就不完整

谢谢@XEricSin 大大的提醒,我看了确实不完整,因为源文件中有不少和脚本设定相关的,但都混在和其他功能一起了。
包括------- Battle Actions ------------
!?BA0&1000; Battle begins
!!BA:P?y-1/?y-2/?y-3;
!!OBy-1/y-2/y-3:T?v6204 U?v6205;
!!TRy-1/y-2/y-3:T?v6203/?y-99/?y-99/?y-99/?y-99/?y-99/?y-99/?y-99; v6203 = terrain type
! !IF:L^obj %V6204/%V6205, terrain %V6203^;
;left hero
!!BA:H0/?y-1; y-1 = number
!!FU23221:Py-1; w51 = owner
!!VRv6106:Sy-1;
!!HEv6106:E?y-2/?y-99/1 S21/?y-3 S11/?y-4 A2/63/?y-99/?y-6 A2/64/?y-99/?y-7 A2/65/?y-99/?y-8 A2/0/?y-99/?y-9;
!!VRv6126:Sy-2; left hero experience
!!VRv6008:Sy-3; left hero Learning
!!VRv6211:Sy-4; left hero Eagle Eye
!!VRv6213:S0;
!!VRv6213&y-6>0:+1;
!!VRv6213&y-7>0:+1;
!!VRv6213&y-8>0:+1; calculate Eagle Eye artifacts
;right hero
!!BA:H1/?y-1; y-1 = number
!!FU23221&y-1>-1:Py-1; w51 = owner
!!VRv6107:S-1;
!!VRv6209:S-1;
!!VRv6107&y-1>-1:Sy-1;
!!VRv6127:S-1;
!!HEv6107&v6107>-1:E?y-2/?y-99/1 S21/?y-3 S11/?y-4 A2/63/?y-99/?y-6 A2/64/?y-99/?y-7 A2/65/?y-99/?y-8 A2/0/?y-99/?y-10;
!!VRv6127&v6107>-1:Sy-2; right hero experience
!!VRv6009:S-1;
!!VRv6009&v6107>-1:Sy-3; right hero Learning
!!VRv6212&v6107>-1:Sy-4; right hero Eagle Eye
!!VRv6214:S0;
!!VRv6214&y-6>0/v6107>-1:+1;
!!VRv6214&y-7>0/v6107>-1:+1;
!!VRv6214&y-8>0/v6107>-1:+1; calculate Eagle Eye artifacts
;battle parameters setting
!!IF:V105/1; set 'real battle' flag
!!IF:V104/1; set flag for BR-trigger
! !IF:V107/1; reset 'main PC' flag
!!IF:V109/0; reset Eagle Eye flag
!!IF&v6107>-1/v6211>0/y-9>0:V109/1;
!!IF&v6107>-1/v6212>0/y-10>0:V109/1; set Eagle Eye flag
!!if&109:; set additional Eagle Eye vars
!!VRv6215:C0/0/0/0/0/0/0/0;
!!VRv6215&v6211>0:Sv6211+v6213; left hero number of spells
!!VRv6216&v6212>0:Sv6212+v6214; right hero number of spells
!!VRv6217&v6211>0:S4-v6211*2-v6213; left hero number of casts
!!VRv6217&v6217<1:S1;
!!VRv6218&v6212>0:S4-v6212*2-v6214; right hero number of casts
!!VRv6218&v6218<1:S1;
!!en:;
!!BA:O?v6206/?v6207; battling players
!!OW:Iv6206/?v6208; AI or not
!!OW&v6207>-1:Iv6207/?v6209;
! !IF:L^bt %V6210, left %V6106/%V6206/%V6208, right %V6107/%V6207/%V6209^;
!!VRv6104:S-999; resetting antiHit&Run variables
!!VRv6105:S-999;
!!FU23039:P;
!!if&v6207>-1/997:; send v6210 to another PC
!!IP:Dv6207;
!!VRv6210:Sv6100;
!!VRv6210&v6100=5:S6;
!!IP:V6210/6210;
!!en:;
!!VRv6210:Sv6100; battle state
! !FU23143:Pv6106; left hero Marshal bonus
! !FU23143&v6107>-1:Pv6107; right hero Marshal bonus
!!if&v6107>-1/v6210>2:; for warmachines bug fixing
!!HEv6107:A2/0/?y-99/?y-6 A2/4/?y-99/?y-7 A2/5/?y-99/?y-8 A2/6/?y-99/?y-9;
!!IF:Wv6107;
!!VRw55:S0;
!!VRw55&y-6=1:+1;
!!VRw55&y-7=1:+2;
!!VRw55&y-8=1:+4;
!!VRw55&y-9=1:+8;
!!en:;
;set variables and call functions on other computer
!!FU&-997:E; exit if one PC game
!!IP:Dv6207;
!!IP:F104/105 F109/109; set CF104,105,109 on other computer
!!IP:V6008/6017 V6104/6107 V6126/6127 V6203/6209 V6211/6222;
!!IF:Wv6106;
!!FU23223:Dv6106/w100; update w100 var of attacking hero on defender's PC
! !FU23143&v6107>-1/v6210>4:Dv6107; remote right hero Marshal bonus
! !FU23143&v6107>-1/v6210=3:Dv6107; the same when AI attacks remote player

! ?BA50&1000;
! !VRv6210:S0;
! !IF:M^ba50^;还有
!?BG0&105; Sniper bonus and antiHit&Run setting
!!BG:A?y-1 Q?y-2 S?y-3;
!!VRv6104&y-1=1/y-2=0/v6208=0:Sv997;
!!VRv6105&y-1=1/y-2=1/v6209=0:Sv997;
!!FU|y-1<>7/v6109>0:E; exit if it's not a shoot or v6109 already set
; Sniper bonus percentage setting
!!FU&y-2=1/v6107<0:E; exit if it's a stack w/o a hero attacks
!!VRy-8:Sy-2+6106; y-8 = index of v-var which contains hero number
!!FU23080:Pvy-8/4; get Sniper level
!!FU&v6100=0:E; exit if hero is not a Sniper
!!VRy-9:Sv6100; copy Sniper level value
!!FU23037:Pvy-8; get hero's full Archery percentage
!!VRv6109:Sv6100*10+y-9; v6109 = 10*Archery% + Sniper_level (two values in one var:))脚本主体; menus
!?CM4&105;
!!CM:I?y-5; index of place clicked on
!!CM:F?y-6 S?y-7; type of click
!!FU|y-5<>2005/y-6=0/y-7<>12:E;
!!CM:R0;
!!FU23206&y-6=4:P; main menu
! !IF:L^bt %V6210, att/def %V6206/%V6207^;

; antiHit&Run routine
!?CM4&105;
!!UN:P601/?y-1; check corresponding option
!!FU&y-1=0:E; exit
!!BG:Q?y-2; current side
!!CM:I?y-5; index of place clicked on
!!CM:F?y-6 S?y-7; type of click
!!FU|y-5<2001/y-5>2002:E; exit if unproper click
!!IF:V4/0;
!!IF&y-5=2001/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2001/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2001/y-7=13/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=0/v6104=v997:V4/1;
!!IF&y-5=2002/y-7=12/y-2=1/v6105=v997:V4/1;
!!IF&y-5=2002/y-7=13/y-2=1/v6105=v997:V4/1;
! !IF|y-5=2001/y-5=2002:L^turns %V6104/%V6105, curr %V997^;
!!CM&4:R0; disable standard message
!!IF&4:M1/z104500; message我试着把他们整合一起试试看

页: [1] 2
查看完整版本: 一个限制H/R战术思路的erm(来自兽哥哥分享的te1.03汉化版)探讨

捐赠