副标题:常见的符号
这次的内容都比较重要
随便讲讲关于变量常见的符号:
1、?
?在变量中的意思是获取数据并储存为变量,比如说:
!#MA:A140/?y1;这句话的意思是y1=140号怪物(野猪)的攻击力。
2、%
%在变量中有两种意思,一是我们前面讲到的变量取余符号。
二是如果我们要使变量的值在对话框中显示的话,就可以用%加大写字母表示的变量(形如%V1)
当我们无法检测我们的变量运算是否按照你的意愿进行,就可以将变量用对话框的形式表现出来,
这样我们就知道了当前变量的值。
举例说明:
!#VRy1:S1;
!#VRy2:S1 +5;
!#VRy1:+2;
!#VRy3:S2;
那么经过上面的运算:y1=3,y2=6,y3=2
如果我们想知道这个到底是不正确答案,我们就可以设置这样一条命令:
!#IF:M^%Y3 * %Y1 = %Y2^;
注意:我们在对话框中使用的变量必须用大写字母。
如果显示的是2*3=6的话,那么这些运算就正确了。
值得注意的一点是(在任何情况下,包括没有变量):
如果你想在对话框中显示百分号,必须输入两个%(即%%)
因为%在对话框中有别的用途。
(当然如果使用的是中文输入法输入的%,就不用输入两个了,因为英文的%和中文的%是不同的)
3、&
&的用途是条件部分的格式,当我们输入完命令类型\对象类型和标识符的时候
如果我们想让这个命令有条件运行,那么请输入&然后接条件。
4、关于变量条件的表示符号
我们讲讲最简单的条件表示方法:用变量表示
比如说我们想让某个对话框当且仅当y1不等于1的时候显示出来,那么:
!!IF&y1<>1:M^当y1不等于1的时候显示。^;
嗯,没错,<>表示的含义就是不等于号。
那么相应地:<表示小于,>表示大于,=表示等于。
关于为什么要这么做,我们后面会讲到。
6、!$
!$的含义和!?是一样的,它们的区别仅仅是:
当我们触发!?时,则马上执行,如果我们触发!$的时候,则检查并运行你触发的那个点的非ERM信息,之后再执行ERM命令。
比如说:一个地面事件(1/1/0)显示对话框为“一”。
那么我们设置以下命令:
!?LE1/1/0;
!!IF:M^二^;
那么显示对话框的顺序为二-一。
如果我们设置以下命令:
!$LE1/1/0;
!!IF:M^二^;
那么显示对话框的顺序为一-二。 越来越复杂了,我的大脑容量不够了.... 复杂?说真的,这个还是比较基础的..... 老湿,今天的课? 我觉得,还是整理一下,弄在第一页的好。这样翻太麻烦了。
可以让版主使用下权限,把第一页不相干的页面弄掉几个。 今天的下午发,现在没时间。 超棒的讲课,绝对要顶。请楼主继续。:good_job: :good_job: :good_job: 都第十二课,是个好老师 呵呵支持。 居然还有人来顶帖,都快沉了。
非常抱歉!等我有时间了我会继续写下去的。:lianhong: :shangxin: 没布置家庭作业
第十三课:变量的运用
非常抱歉!将近半个月没讲课了。。。。但是我想想,总不能半途而废吧,即使没有人看,那么我也要坚持讲完,为大家负责,当然也为我的斑竹身份负责。。。。。
所以希望新老同学继续来捧场。
鞠躬!谢谢!
——————————————————————————————————
废话不多说,今天我们来讲讲变量的应用,这是一个沉重的话题!
如果你还记得我前面讲过的,那么就继续看,如果你已经忘记了,那么请再回去看看。。。。
我们今天要做一个掷色子的游戏的ERM,这个游戏的规则是——每个英雄只能访问一次——
当英雄访问的时候,需要付出3格力量——然后丢色子(0~6)——丢出的点数就增加为英雄的攻击
那么我们开始吧。
首先是开头
ZVSE
这个很重要,接着,要设置一个触发器,我们可以用一个事件来表示。
但是这样做的缺点是没有人专门跑到你那个事件中,去玩色子游戏,所以我们用建筑来表示。
我们可以在城堡界面中找到很多未被使用的建筑物,随便选一个你喜欢的放到地图上吧。
然后我们假设这个建筑物位于15/15/0。
那么触发器就是:
!?OB15/15/0;
很简单,其实就是把事件的LE改成了OB,OB的意思是(OBJECTS 物件)
触发后,首先我们要给玩家一个提示信息:
!!IF:M^{地精赌场}
你来到一处地精赌场,这里正在玩一个叫做掷色子的游戏,地精们邀请你参加,但是你并没有钱。
“不用紧张,你只要付出3力量,对于你丢出的点数,我们将会增加你的等量攻击力。”
你毫不犹豫地参加了。^;
然后,我们需要虚拟出一个色子,怎么虚拟呢?我们可以尝试用变量来虚拟。
由于这个色子游戏只存在一次并且色子点数在每次玩的时候都是不一样的。
所以这个变量我们不用永久保存,那么就使用y变量吧。
!!VRy1:S1 R5;
还记得R命令吗?上面这句话的命令是:将Y1设置为1并且与0~5之间的随机数相加。
这样的话,y1=1~6,这样的话,不就是一个色子吗?
那么我们要将点数表示出来:
!!IF:M^色子在轮盘中飞快地转动,突然停了下来。
你的点数:%Y1。^;
还记得%的用处吗?如果你在地图中运行的话,实际上显示的是1~6,而非%Y1。
然后将点数应用到英雄的四围中,我们需要用到HE命令:
!!HE-1:Fdy1/d0/d-3/d0;
这句话的意思是:访问建筑的英雄攻击+Y1,力量-3。
这是用来改变英雄四围,格式为:
!!HE英雄编号:F攻击/防御/力量/知识;
我们刚刚使用到了d这个字母,是否还记得我们在生物特技的时候也使用了d呢?
d的意思大概是add(增加),也就是该对数据不彻底改变的情况下做增加,如果增加的值为负数的话,即是减少,如果为0则不改变。
英雄编号可以在ERM帮助中找到,-1表示所有英雄(在这里是访问的英雄)。
然后ERM的主要部分就完成了,但是我们可以在这个时候将英雄的四围显示出来。
首先我们要获取英雄的四围:
!!HE-1:F?y2/?y3/?y4/?y5;
!!IF:M^你的英雄:
攻击:%Y2,防御:%Y3,力量:%Y4,知识:%Y5。^;
然后但是我们前面说过我们只能让英雄访问一次,否则有人就会迷念赌博,无心向上。
我们可以在ZVSE的下面加一句:
!#VRv1:S0;
然后在触发器的下面加一句:
!!VRv1:+1;
这样的话,V1就表示为访问的次数。
我们可以在每句话都加上&v1=1,但是没有这个必要,只要在关键的地方就可以了。
这是全部:
ZVSE
!#VRv1:S0;
!?OB15/15/0;
!!VRv1:+1;
!!IF&v1=1:M^{地精赌场}
你来到一处地精赌场,这里正在玩一个叫做掷色子的游戏,地精们邀请你参加,但是你并没有钱。
“不用紧张,你只要付出3力量,对于你丢出的点数,我们将会增加你的等量攻击力。”
你毫不犹豫地参加了。^;
!!VRy1:S1 R5;
!!IF&v1=1:M^色子在轮盘中飞快地转动,突然停了下来。
你的点数:%Y1。^;
!!HE-1&v1=1:Fdy1/d0/d-3/d0;
!!HE-1:F?y2/?y3/?y4/?y5;
!!IF&v1=1:M^你的英雄:
攻击:%Y2,防御:%Y3,力量:%Y4,知识:%Y5。^;
!!IF&v1>1:M^你已经访问过了,不要沉迷赌博。^;
**end**
(请勿将此段直接复制到地图事件中)
这还是一段很别扭、低水平的ERM,我们下几节会继续完善。
暑假已经结束,可能以后不能每天一课,但是一个星期会有两三节的。
[ 本帖最后由 da3338280 于 2009-8-30 15:22 编辑 ] 帮顶~~撒花~~鼓掌~~ 很悲哀,该沉的还是要沉,如果有时间的话我会每天多写点。
第十四课:HE接收器
上节课我们讲掷色子游戏的时候讲了!!HE命令,现在我们具体看看这个命令是怎么用的吧。!!HE命令的格式是:
!!HE英雄指定&条件:动作;
英雄指定有三种方式:
1、英雄编号(编号-1为当前英雄,也就是触发事件的那个英雄)
2、英雄坐标
3、用变量表示的英雄坐标(这个不管它,暂时没有用)
条件就是y1=1啊,v1<>0啊之类的(当然还有标志条件,我们暂时没有学到)。
动作,这个是最重要的,以下是从ERM帮助中整理出来的英雄命令动作列表:
A1/$1/$2;
A2/$1/$2/$3;
A3/$1/$2/$3; 此命令设置一个或多个英雄身上的宝物
以下是特殊编号
1000 魔法书
1001 魔法卷轴,魔法卷轴的种类为1001+魔法编号。(1001=0, 1002=1,...)
A1/$1/$2 - 装备宝物
$1 - 宝物编号
$2 - 英雄身上安放宝物的位置
注意事项:。(这个不管他)
如果已经装备宝物 ERM 标志Flag1 将置0,否则置1。
A2/$1/$2/$3 - 统计宝物的编号 (获得或检查用)
$1 - 宝物编号
$2 - 获取一个英雄所有的宝物数量(注意是获取)
$3 - 获取一个英雄装备的宝物的数量(注意是获取)
A3/$1/$2/$3 - 移去某些宝物的副本
$1 - 宝物编号
$2 - 需要删除的数量
$3 - 如果宝物在装备中,则$3=1,如果宝物在背包中,$3=0。
A#;设置一个宝物.
此命令与上一条类似。
#为宝物编号
如果想把这个宝物给英雄,则直接输入编号#就可以了。
如果想把这个宝物从英雄中删去,输入编号#的负数就可以了。(如-35)
注意事项:
给予英雄宝物的时候,该宝物只会出现在英雄的背包中,不会自动装备。
HE英雄编号:A-1 此命令将删除英雄身上所有的卷轴
举例:
!!HE106:A-1; [将106号英雄的所有卷轴删除 ]
B0/$; 设置/获得英雄的名字.
如果我们要设置英雄名字的话要使用变量Z。
B1/$; 设置/获得英雄的传记.
注意事项:
如果我们要设置英雄传记的话要使用变量Z。
举例:
!!VRz15:S^这是一个新的传记。^;
!!HE-1:B1/?z3; 获得当前英雄原来的传记并放置到Z3中。
!!HE-1:B1/z15; 将英雄的传记设定为Z15的内容
B2/$; 设置/获得一个英雄的等级
$ 表示英雄等级C0/#1/$2/$3;改变英雄的怪物:方法1(注意,是改变)
#1 = 英雄带兵位置编号(0..6)
$2 = 新的怪物编号
$3 = 怪物数量
C1/#1/$2/$3;改变英雄的怪物:格式2 (注意,是改变)
所有类型 #1 的怪物都将变成
$2新的怪物编号
$3 数量
举例:
!!HE-1:C1/0/1/d; (所有枪兵变成弓箭手)
C2/#1/#2/#3;给英雄增加一组新的怪物
#1 = 怪物编号
#2 = 怪物数量
当#3 = 1 - 没有空格时询问玩家
当#3 = 2 - 电脑自动添加,并把最垃圾的兵踢出去
(一般我们都用1)
C#1/#2/..../#14; 改变怪物,允许玩家选择怪物设定.
使用命令C 有14个参数:
#1 = 怪物1编号 (-1 = 无)
#2 =怪物1数量
#3 = 怪物2编号 (-1 = 无)
#4 =怪物2数量
#5 = 怪物3编号 (-1 = 无)
#6 =怪物3数量
#7 = 怪物4编号 (-1 = 无)
#8 =怪物4数量
#9 = 怪物5编号 (-1 = 无)
#10 =怪物5数量
#11 =怪物6编号(-1 = 无)
#12 =怪物6数量
#13 =怪物7编号 (-1 = 无)
#14 =怪物7数量
(注意一定要填满)
D; 调用部队的升级对话框(无参数)
(不用管他)E$; 设置/获得当前英雄的经验值E$1/$2;设置/获得英雄的经验值(增加的语法结构)
$1 - 经验值
$2 - 英雄等级数
(使用这条命令的时候,注意用d+数字)
E$1/?$/1; 附加语法(新语法结构)
这一条不用管他。F$1/$2/$3/$4; 设置/获得英雄主要技能(我们昨天讲的就是这条)
$1=攻击
$2=防御
$3=力量
$4=知识
(注意分清到底要不要使用d)
F$1/$2/$3/$4/1; 获得英雄的非宝物附加的基本技能。(和上条一样,但是只能获取)
当我们使用这一条的时候,获取的英雄四围是拆除宝物后的。
$1=攻击 $2=防御
$3=力量
$4=知识
注意事项:
只能用于获得技能,也可以设置,但不会起到任何作用。
即, !!HE-1:F?v100/?v101/?v102/?v103/1;
H$1/$2/$3/$4; 对雇佣英雄的初始部队进行设置。
$1=位置编号
$2=怪物种类编号 (-1 代表无)
$3=怪物数量的最小值
$4=怪物数量的最大值(可以等于最小值以表示固定值)
注意事项:
这一条命令的作用在于改变他们的部队,但是并不会马上从酒馆雇佣到他们,只是当你雇佣到他们的时候,他们会变成这个样子。
但是如果你雇佣这个英雄后,他投降回家后,如果在这之间你没有使用这条命令来改变他的部队的话,他在酒馆中雇佣到的部队仍然是他投降的时候所带的部队。(也就是说这条命令是一次性的,不是永久的。)
I$; 设置/获得魔法值。
注意看是否需要使用d。
举例:
!!HE-1:Id-1; 将当前英雄的当前魔法值减少1
K; 立即杀死英雄 (如果把这个放在well里 -~~掉到里面摔死了?... :-) L#^file.pcx^; 设置英雄的头像,使用外部的图片.
# = 1 - 设置小图片为 file.pcx
# = 2 - 设置大图片为 file.pcx
# = 3 - 将所有图片置为默认头像(后面的^^不要了)
注意事项:
程序将在DATA子目录里搜索文件file.pcx ,但是可新建子目录。
例如 ^c\name.pcx^ - 表示在DATA目录下名为 "c"的子目录中。或 ^..\maps\1.1^ - 表示在安装目录下的MAPS 目录中
重要注意:文件名全长(包括子目录的路径)不能超过12个字符。
L0/$;设定英雄头像为头像编号 $。L4/$;设置大小两个头像都为 $。
L5/$1/$2;设置一个英雄的头像.
$1 -大头像的编号或^^目录。(当$1=0-不变)
$2 -大头像的编号或^^目录。(当$2=0-不变) M#1/$2; 设置/获得魔法 仅对有魔法书的英雄
魔法编号 #1
动作 $2 (0 = 删去魔法, 1 = 获得魔法)
注意:关于获取魔法(?+变量)这里暂时不说。
N$; 获得英雄的编号.
注意事项:
不要试图设置英雄的编号,将不起作用且造成不稳定
举例: !!HE-1:N?v100; O$; 设置/获得英雄的归属颜色
$ -控制英雄的玩家编号,如果英雄不在地图上或处于无主状态,获得的值为为-1。
注意事项:
此命令可以用于改变英雄所属的玩家。
注意:如果试图将一个英雄改变给一个已经有8个在外英雄的玩家(英雄无敌中只能有8个英雄在野外),此命令将自动取消。注意检测英雄所属的玩家以确保能够正常改变。 P$1/$2/$3; 设置/获得使英雄移动到坐标为 X = $1, Y = $2, level = $3的地方. (传送)
注意事项:
如果要将一个在英雄池的英雄传送到某的坐标,要先用HE:O命令为这个英雄设置颜色。P$1/$2/$3/S; 移动一个对方英雄(非本方颜色)。重画且发声:
如 $<>0 - 移动英雄发声且重画 (相当于teleport)
如 $=0 - 旧方式 (英雄直接跳到新方位)
旧方式 (无 $) 设定 $=0 (不理解就不用管他)R0/$; 设置/获得英雄的士气(到下一场战斗前) R1/$; 设置/获得英雄的幸运(到下一场战斗前) R2/$;设置/获得英雄的性别 R3/$;对所有的玩家设置英雄的可雇佣性。
$ - 1为可以雇佣,0为不能雇佣
如果设置为0,英雄会被杀死
R3/$1/$2;对单一玩家设置英雄的可雇佣性。
$1 - 1为可以雇佣,0为不能雇佣
$2 - 设置对应玩家的颜色编号
注意事项:
如果用了R3/$命令使该英雄无法被所有人雇佣,那么无法用这条命令来改变上一条命令的效果
如果对所有玩家禁用此英雄,英雄将被杀死
R4/$;设置/获得英雄的战术控制(我也不明白是指什么。。。)
-1 = 可用
0 = 禁用
R#1/$/#2; 命令R控制重画画面(对所有HE:R 命令)
#1 - R 命令编号
$- 值
#2 - 重画标志(1=重画, 0=不重画)
注意:
大地图在使用HE:R命令后不会自动重画。如果你希望对其进行重画,使用该命令并设置标志为1
(略过,不用理解)
S#1/$2; 设置/获得第二技能
#1- 技能编号
$2 (0=无, 1=初级,2 =中级, 3 =高级)。
注意事项:
可以设置所有第二技能(28个)但只有前8个会显示出来 T$1/$2/$3/$4/$5; 每当遇到一个种类的怪物就进行战斗
$1 = x 战斗位置
$2 = y 战斗位置
$3 = level 战斗位置
$4 = 怪物种类
$5 = 怪物数量
注意事项:
x,y 和 level 仅作为选择战场种类以及设置相应的奖励。
(不理解的话先不管)
U$1/$2/$3; 设置/获得英雄巡逻的位置和半径
巡逻位置设置位($1), Y($2) ( 地面或者是地下是固定的,不用设置)
巡逻半径为 $3 ( 如果 $3 = -1为"任意")。V#1/$2;
V#1/#2/$3; V#1/$2 - 设置/获得英雄是否访问过($2=1)还是未访问($2=0)类型为#1的所有建筑
V#1/#2/$3
#1 = 物体类型 (这些都可以在ERM帮助中找到)
#2 = 物体编号(每个物体都有固定的编号)
$3 = 英雄是否访问过(1=是) 或 (0=否)
物体类型举例(#1):
(括号中的数字为物体的编号)
0 -智慧石(100)
1 -马力诺塔(23)
2 - 真理花园(32)
3 - 还童泉(51)
4 - 星轴(61)
5 - 智慧树(102)
6 - 智者图书馆(41)
7 - 竞技场 (4)
8 - 魔法学校(47)
9 - 战争学校(107)
例如:
V0/0/0 - 设置0号智慧石未访问
W$; 改变英雄移动点数
$ - 要改变的点数 (W0,Wd-10,W?v5>=100...)
这里面的数字不代表英雄一个回合可以移动的步数,而是一个比较大的数字(通常在1500 到 2000 之间取决于最快的生物部队),在游戏内部已经设置好。它的作用可能是nwc工作人员不愿意在计算地形对移动力影响时有小数存在在草地地形上,混编部队的一格移动约相当于100移动力。(也就是说一格差不多就是60~100移动力)W$/1; 附加语法
同HE:W$ ,但是不重画地图
标准语法有时在你仅仅是检查值的时候都进行重画
(不用理解)
X#(...); 改变英雄的特技. (如下).
# 为从0 到 6. 其它参数的数量依赖于特技的种类#.
(可以在ERM帮助中找到相关参数)
Y$1/$2/$3/$4;改变英雄的祝福与诅咒,现在还不是讲的时候。
[ 本帖最后由 da3338280 于 2009-8-31 13:37 编辑 ] 顶~顶~顶~
帮顶~~~
话说内容很深奥啊... 其实,讲的很好啊,不过在没一课之后,出点题目,布置点作业不是更好? 比如在地图里设置个地点,英雄欧林(编号为0)到达之后,属性就会变化,生物的属性也会相应变化。
比如带个枪兵,到了12.13.1的坐标,就会英雄增加1000点经验,所有属性增加10点,移动力增加1000点,枪兵攻防增加100,伤害增加1000.特技增加无反击和飞行。增加特技格挡50%。那么请问这样,怎么设定呢? 对于英雄的设置上面已经讲了,但是对于怪物的设置首先要获取英雄的怪物,然后用!!MA命令来设置。
PS:上面的内容只整理的一半,中午要吃饭,所以没有时间整理,现在我再整理一下。 整理好了,现在回答158楼的问题:
ZVSE
!?LE12/13/1; 当踩中坐标为12/13/1的事件的时候(请在那里设置一个事件)
!!HE0:Ed1000; 经验+1000
!!HE0:Fd10/d10/d10/d10; 四围+10
!!HE0:Wd1000; 移动+1000
!!MA:A0/d100 D0/d100 E0/d1000 M0/d1000 X0/d2; 枪兵的修改
!!IF:M^将这句话改成你想表达的话。如过不想说任何话,请删除本行。^; 提示语句。
**end**
请注意无论任何英雄踩中这个事件都只改变欧灵的,而不是踩中事件的英雄。
另外提示语句最好还是要的,因为如果不要提示语句,英雄会在事件那里停下来弹出一个空白对话框。