999 - 指挥官全宝物全技能 ERM脚本(改为鼠标右键激活)
看见有人求这个脚本,自己尝试做了一下,重点在于学习如何编写ERM脚本,代码是从“104 - 指挥官宠物英雄定义——宠物及指挥官自定义”来的,感谢原作者kofcao脚本直接解压到Heroes3 ERA CompleteV2.01\Mods\Custom ERM\Data\S\_OFF,然后用ERM脚本激活器加载就行
使用说明,进入游戏后,鼠标右键点击指挥官按钮
会弹出提示,点击确定
会看到指挥官技能和宝物都有了
附件下载
[ 本帖最后由 hidder 于 2013-8-7 12:10 编辑 ] lz动手写脚本,鼓励一下!希望看到更多的作品! 等我尝试之后再来反馈
回复 鼓励多发帖 1# 的帖子
谢谢楼主分享,简单给楼主提几个小建议:一是建议楼主加入触发的按钮,CO0如果我没记错是打开指挥官对话框之前调用,换句话说是每次点击都会提示超麻烦,如果改用CM2触发,然后再限制触发按键(比如说右键点击时才触发)就不会跟原来的左键点击显示指挥官状态发生任何冲突了。
二是功能太强大了,我个人还是觉得按以前用PI还是CM第一天触发全宝物比较合适,不然只你一个人或者你方英雄全宝物话说也太孤单的了 不孤独,不孤独。。。。每个喜欢的英雄都应该牛X~~~~~;orz;
回复 我回帖我光荣 4# 的帖子
嗯,确实每次弹出来比较烦,所以我的思路是按取消才执行脚本,我试试改成右键,嗯,功能是BT了些,2方面吧,1是虐虐电脑,2是练习下怎么写ERM,现在读各位大大的脚本还是比刚开始容易多了回复 我回帖我光荣 4# 的帖子
沧海大大,有个问题咨询下,我查询了API文档CM2:I$是点击界面的接收器,但是我没有找到有点击指挥官图标的,难道只能用x,y坐标来判断了?
英雄 屏幕
0 空白区域
1 名字
2 头部装备格
3 肩部装备格
4 颈部装备格
5 右手装备格
6 左手装备格
7 躯体装备格
8 右手戒指装备格
9 左手戒指装备格
10 足部装备格
11 杂物装备格1
12 杂物装备格2
13 杂物装备格3
14 杂物装备格4
15 弩车装备格
16 弹药车装备格
17 急救帐篷装备格
18 投石车装备格
19 魔法书装备格
20 杂物装备格5
40 行囊格1
41 行囊格2
42 行囊格3
43 行囊格4
44 行囊格5
45 英雄头像
46 攻击(值)
47 防御(值)
48 力量(值)
49 知识(值)
50 攻击(图标)
51 防御(图标)
52 力量(图标)
53 知识(图标)
68 部队格 1
69 部队格 2
70 部队格 3
71 部队格 4
72 部队格 5
73 部队格 6
74 部队格 7
77 行囊滚轴箭头(向左)
78 行囊滚轴箭头(向右)
79 第1个辅助技能图标
80 第2个辅助技能图标
81 第3个辅助技能图标
82 第4个辅助技能图标
83 第5个辅助技能图标
84 第6个辅助技能图标
85 第7个辅助技能图标
86 第8个辅助技能图标
87 第1个辅助技能名称
88 第2个辅助技能名称
89 第3个辅助技能名称
90 第4个辅助技能名称
91 第5个辅助技能名称
92 第6个辅助技能名称
93 第7个辅助技能名称
94 第8个辅助技能名称
95 第1个辅助技能等级
96 第2个辅助技能等级
97 第3个辅助技能等级
98 第4个辅助技能等级
99 第5个辅助技能等级
100 第6个辅助技能等级
101 第7个辅助技能等级
102 第8个辅助技能等级
103 攻击(文字)
104 防御(文字)
105 力量(文字)
106 知识(文字)
107 祝福与诅咒图标
108 经验值(文字)
109 魔法值(文字)
110 冒险日志(文字)
111 解雇英雄(文字)
112 经验值
113 魔法值
115 滚动条(暗示文本显示)
116 士气(图标)
117 幸运(图标)
118 特长(图标)
119 经验值(图标)
120 魔法值(图标)
122 将部队排列为松散阵形按钮
124 将部队排列为紧密阵形按钮
126 开启/关闭 战术阵形
127 分割堆栈
128 冒险日志按钮
129 解雇英雄按钮
130 英雄列表中的第1个英雄
131 英雄列表中的第2个英雄
132 英雄列表中的第3个英雄
133 英雄列表中的第4个英雄
134 英雄列表中的第5个英雄
135 英雄列表中的第6个英雄
136 英雄列表中的第7个英雄
137 英雄列表中的第8个英雄
138 这个英雄在英雄列表中的图标(不管位置)
139 神的奖励图标
140 等级和英雄类型(文字)
141 英雄界面的旗帜
30720 OK按钮 楼主有心了~~值得我们学习
感觉楼主进步很快,可喜可贺
原帖由 hidder 于 2013-8-6 20:26 发表 http://www.h3wog.com/images/common/back.gifCM2:I$是点击界面的接收器,但是我没有找到有点击指挥官图标的,难道只能用x,y坐标来判断了?
嗯,要合理并善于使用ERM帮助,举一反三,事半功倍。用CM:A命令可以获取或判断点击光标的绝对位置,即x和y坐标。
提示下:指挥官按扭的的位置如果我没说错,x值应该在373至496区间,y值应该在20至64区间,至于该如何判断及下一步该怎么做应该楼主应该可以按自己的想法解决吧。
我看看
我载的版本好象没有mod管理工具。权限不够,下不了回复 9# 的帖子
感谢回复,我已经改好了,现在是右键才触发事件了,遇到2个新的问题,看能否解答一下1.
!?CM2;
!!CM:F?y-1; ;获取鼠标点击的方式
!!VRy-1:&512;
;指挥官图标坐标范围 388,29 476,50
!!CM:A?y-2/?y-3; ;获取鼠标点击的坐标
**!!IF:M^坐标为%F-2,%F-3^
!!VRy1:S0; ;缓存标志位321的值,最后恢复
!!VRy1&321:S1; ;缓存标志位321的值,最后恢复
其中弹出坐标那一段,我试用**来注释代码好像没有效果,是不是ERM中就不支持把代码注释掉?都会执行?
2. 关于API文档,比如我试用!!CM:A,文档中描述如下
A$1/$2; 光标的绝对位置
$1 - x
$2 - y
但是我怎么知道$1,$2应该用什么变量来存储?其他API也有类似的疑惑,今天我试了老半天,最后才发现,这个坐标信息只能存储在y-1到y-100...把我折腾惨了
回复 11# 的帖子
游戏读取ERM是通过脚本标识符来判定的.比如 !?,!!,!# 开头的都是最常见的标识符,系统自动读取标识符下的一段语句, 语句以 分号 ; 结束.
如果你要注释掉这句的话,把 !! 换成 ** 就成了.(只要不是标识符就行,比如 *! 也行, 但!!!就不行)
第二个问题, 跟 API 没啥关系.这些属于语法问题.
ERM脚本中用到的变量就那么几种.
最常用的是 整型数值变量和字符串变量.整型数值用 v变量,y变量,y-变量 存储都没有问题.
帮助文档中, 右上有个 FLAGS AND VARIABLES 的页面楼主可以参考一下.
这里 CM:A后面接的是整型, 你用 v变量和临时y变量都行.不一定要y- 变量.
回复 12# 的帖子
感谢,第一个可以,就是把ERM能识别的!!,!#这几个特殊开头干掉就行了第2个问题,我好像是试过v和y1-y100就是不行,所以才困惑到底应该用什么变量来存储,你说的标志和变量这一个部分我看过,以为会找到一个和API可用变量的对应表,但是没有,这样,每次使用一个不熟悉的API的时候,就只能猜应该存储在什么变量里了
我再多测测试试
回复 13# 的帖子
如果真是由指定变量存储的话, 帮助里面也会标示出来的.或者你可以贴出你的代码,让大伙帮你看看.
另:楼主是06年的前辈呢.
能保持对H3的热度,这是咱们的缘份呢.
回复 14# 的帖子
哈哈哈,很久没来了,哪里谈的上前辈,一看就是伸手党啊,现在ERA推出后觉得稳定多了,有点编程基础,就学习下ERM,说不定哪天有点idea,自己还可以捣鼓捣鼓下面就是代码,主要是存储鼠标点击坐标哪个部分,我测试过使用y2,y3来存,但是每次值都0,所以感觉没有存储进去
!?CM2;
!!CM:F?y-1; ;获取鼠标点击的方式
!!VRy-1:&512;
;指挥官图标坐标范围 388,29 476,50
!!CM:A?y-2/?y-3; ;获取鼠标点击的坐标
!!VRy1:S0; ;缓存标志位321的值,最后恢复
!!VRy1&321:S1; ;缓存标志位321的值,最后恢复
!!IF:V321/0; ;初始化为0(false)
!!IF&y-1=512/y-2>388/y-2<476/y-3>29/y-3<50:Q321^混不下去了?确定要作弊?^;
!!CO-1&321:S0/1; ;宠物全技能
!!CO-1&321:S1/1;
!!CO-1&321:S2/5;
!!CO-1&321:S3/1;
!!CO-1&321:S4/1;
!!CO-1&321:S5/5;
!!CO-1&321:S6/1;
!!CO-1&321:A1/146/0; ;给予宠物宝物
!!CO-1&321:A1/147/0;
!!CO-1&321:A1/148/0;
!!CO-1&321:A1/154/0;
!!CO-1&321:A1/151/0;
!!CO-1&321:A1/153/0;
!!IF&321:M^你的指挥官已经全技能全宝物了!^;
!!IF&y1=0:V321/0;;恢复标志位321的值
!!IF&y1=1:V321/1;;恢复标志位321 以下是个人的一些改动和提议,希望对你有帮助.
ZVSE
!?CM2;
!!CM:F?y-1; ;获取鼠标点击的方式
;指挥官图标坐标范围 388,29 476,50 (这个范围还不够准确吧)
!!CM:A?y2/?y3; ;获取鼠标点击的坐标
**IF:M^Y-1=%Y-1Y2=%Y2Y3=%Y3^; 可用于运行时检测一些变量值(弹框)
**为了在不达到条件时快速退出,应在假条件下FU:E直接退出**
!!FU&y-1<>512:E; [右键只有一个 512值,所以直接判定即可,不用&512]
!!FU|y2<388/y2>476/y3<29/y3>50:E; [快速退出函数]
!!CM:R0; [屏蔽原本的右键信息]
**用y1记录标志321后恢复,其实大可不必.大部分ERM制作着者都会直接使用一个临时标志,比如1-10标志
!!IF:V10/0; ;初始化临时标志
!!IF:Q10^混不下去了?确定要作弊?^;
!!FU&-10:E; [快速退出]
!!CO-1:S0/1 S1/1 S2/5 S3/1 S4/1 S5/5 S6/1; ;宠物全技能(可以集合来写)
!!CO-1:A1/146/0; ;给予宠物宝物
!!CO-1:A1/147/0;
!!CO-1:A1/148/0;
!!CO-1:A1/154/0;
!!CO-1:A1/151/0;
!!CO-1:A1/153/0;
!!IF:M^你的指挥官已经全技能全宝物了!^;
回复 16# 的帖子
相当有帮助,原先有误解以为!!FU:E只能在函数里面退出,原来对整个脚本也有效啊,这就爽多了,我自己再多试试~;orz;回复 17# 的帖子
!?CM; 叫法是触发器, 实际上也算是一个函数.FU:E 是对当前函数(包含触发器)有效的.注意是当前段落的函数.
快速退出可以提高一下运行效率,而且后面的语句也不用带着条件那么冗长.
另外, ERA 的话, 当多个语句都使用同一个条件时,可以运用
if..else..end 的语法,具体看看帮助就知道了.
顺便问句,楼主是对那种编程有基础?
如果是C或者DELPHI的话,甚至可以直接开发插件了.
回复 18# 的帖子
嗯,理解了,thanks.都不是哈,主力还是Java,做企业应用的。不过ERM这东西像汇编,里面的一些技巧也像,有点意思 宠物变成了无敌的存在了。哈哈,支持楼主。