jackbauer14 发表于 2009-5-14 11:53:43

问下最基本的程序是啥意思。

!?FU719;

!!OW:Tx16/?y1;
!!VRy1&y1=-1:S-2;
!!VRvv600&x1<>x16/x2<>y1:Sx16;

是script1里面的第一个函数。

第一步是把各个玩家的代码赋予Y1。

第二步就看不懂了

y1 and y1=-1 赋予 -2
就是y1(玩家的代码,例如红色为1等等)和-1进行比较,如果为真 那么y1赋予-2

第三步就更不可理解了
vv600 得意思是 把v600就是前一个v变量的序号 也就是说v600等于1,那么vv600=v1

那么
vv600 and x1 不等于x16 or x2 不等于 y1 赋予x16.

这个是怎么理解的,是((vv600 and x1)不等于x16) or (x2 不等于 y1)
结果vv600,赋予x16

还是((vv600 and (x1 不等于 x16)) or (x2 不等于 y1) 结果vv600,赋予x16

这是第一个函数
v600在在之前都没赋予过,那这个变量赋值是script00的脚本中赋予的??
变量能跨脚本么??

poet 发表于 2009-5-14 13:07:52

答:

v变量是全局的,当然跨脚本。

&符号表示条件:
!!XXX & YYY : ZZZ;

这个是ERM语句的基本格式:当满足YYY条件时,执行 XXX 语句,并且给予参数 ZZZ。


vv600 :假如 v600 的值是 70,那么 vv600 就等于 v70

jackbauer14 发表于 2009-5-14 13:17:49

那这里x1和x2也在script1没出现过,也是全局变量?

帮助文件上说 他们 是函数参数。

这到底是啥意思??x16是依次顺序赋值??

对X系列的变量,看帮助好像还是很难理解

那第二步的意思就是当y1=-1(也就是当前英雄的情况下),y1=-2

第三步就是,当X1不等于X16,X2不等于Y1时,VV600赋值X16

[ 本帖最后由 jackbauer14 于 2009-5-14 13:20 编辑 ]

jackbauer14 发表于 2009-5-14 13:21:31

另外问下ERM么有调试功能么,这样就可以自己试试,语句是啥作用了

zzy007 发表于 2009-5-14 13:48:14

x1 x2 x16
这些东西

是在FU函数里面调用的

jackbauer14 发表于 2009-5-14 14:48:34

我知道是函数参数,但是总要表示个啥意思吧

就如此函数,X1,X2,X16到底是各代表了啥??

jackbauer14 发表于 2009-5-14 15:43:30

尤其是第三步,

当x1不等于x16或x2不等于y1 时, vv600赋予x16.

根据函数,x16是随机选择1-8 和-1,(因为玩家颜色只有8个,-1代表无变化的当前玩家)

当x16=1时,也就是红色,第二步y1=-1不成立,跳到第三步。

x1不等于x16,x1是被赋予了什么值??x2又被赋予了什么值??

才vv600赋予了x16

kofcao 发表于 2009-5-14 18:35:35

!!VRy1&y1=-1:S-2;
这个语句表示如果!!OW:Tx16/?y1;执行后 y1=-1那么给y1重新赋值为y1=-2 接下来再调用y1就是按照-2计算了

第三步就更不可理解了
vv600 得意思是 把v600就是前一个v变量的序号 也就是说v600等于1,那么vv600=v1
这一步的意思是:我们假设v600=4 那么这条语句就是赋值v4=x16
如果v600=5 那么这条语句就是赋值v5=x16

v600在在之前都没赋予过,那这个变量赋值是script00的脚本中赋予的??
变量能跨脚本么??
v变量 w变量 flag 都能跨脚本
PS:貌似只要数据没有重复,所有的脚本中应该都保持最后的赋值,不会自动复原,这个是我的个人推断,没有核实过

x1不等于x16,x1是被赋予了什么值??x2又被赋予了什么值??
x变量是函数调用,要复杂一些,你可以看看我原来写的一点东西
http://bbs.h3wog.com/thread-17353-2-1.html
这里的第23楼

编写脚本,娱几娱人,希望更多的人对编校本感兴趣,也希望早日看到搂主的作品

jackbauer14 发表于 2009-5-14 20:33:47

哦,关于X函数参数,script1的脚本跟您写的不大一样。

!?FU719;

!!OW:Tx16/?y1;
!!VRy1&y1=-1:S-2;
!!VRvv600&x1<>x16/x2<>y1:Sx16;

** find nonteammate for player x16

!?FU720;

!!VRv600:S564 +x16;
!!VRvv600:Sx16;
!!OW:Tx16/?y1;
!!DO719/0/7/1:Px16/y1;

DO719 是写在720函数上的,这是个嵌套函数么??
Px16/y1,也是跟在DO语句后面

也就是说x1是被赋值x16,x2是被赋值y1的。这句话是写在DO语句里的。

v600=564+x16.

我终于有点清楚了。

719函数和720函数是嵌套的,

720函数是个循环语句,跟C语言的for一样。

但是719函数时哪里看出来调用720了呢,只有720调用719.

也就是说720先运行,然后在运行了719.。
那么720先运行的话,x16又是等于啥呢??x16是在719中被赋值的。

jackbauer14 发表于 2009-5-14 20:38:47

!?FU719;

!!OW:Tx16/?y1;
!!VRy1&y1=-1:S-2;
!!VRvv600&x1<>x16/x2<>y1:Sx16;

** find nonteammate for player x16

!?FU720;

!!VRv600:S564 +x16;
!!VRvv600:Sx16;
!!OW:Tx16/?y1;
!!DO719/0/7/1:Px16/y1;

** end of initialization functions


** Initialization Code

!#VRv1:S0;
!#UN:P101/?v1;
!#TM84&v1<>5:S1/999/1/255;
!#VRv579:S0;
!#VRv578:S0;
!#VRv577:S0;
!#VRv576:S0;
!#UN:X?v574/?v575;
!#VRv573:Sv574 :2;
!#VRv572:S0;
!#VRv550:C1/2/4/8/16/32/64/128/256/512/1024;

!#VRz332:Sz101000;
!#VRz333:Sz101001;
!#VRz334:Sz101002;
!#VRz335:Sz101003;
!#VRz336:Sz101004;
!#VRz337:Sz101005;
!#VRz338:Sz101006;
!#VRz339:Sz101007;
!#VRz340:Sz101008;
!#VRz341:Sz101009;
!#VRz342:Sz101010;
!#VRz343:Sz101011;
!#VRz344:Sz101012;
!#VRz345:Sz101013;
!#VRz346:Sz101014;
!#VRz347:Sz101015;
!#VRz348:Sz101016;
!#VRz349:Sz101017;
!#VRz350:Sz101018;
!#VRz351:Sz101019;
!#VRz680:Sz101051;

!#DO720/0/7/1&v1<>5:P;

整个函数是这样的。

我大致上看了个意思,先运行是最后一句

!#DO720/0/7/1&v1<>5:P;
x16,就是在这里被赋值的么

poet 发表于 2009-5-15 09:19:32

x1, x2, x16 都是函数参数,其作用范围是局部,是在调用函数的时候传进来的参数:

!!DO719/0/7/1:Px16/y1

DO719 这个语句会调用 FU719 8次, x1 固定等于这时的 x16,x2 固定等于这时的 y1,x16 等于 0-7

注意由于 x16 是局部变量,因此在 FU720 里面的 x16 跟在 FU719 里面的 x16 是两个不同的变量。


!#DO720/0/7/1&v1<>5:P;
这个语句调用 720 函数8次,每次 x16 顺序等于 0-7。

[ 本帖最后由 poet 于 2009-5-15 09:21 编辑 ]

jackbauer14 发表于 2009-5-15 10:24:05

谢谢楼上两次教导,终于明白了,也谢谢各位老鸟的悉心指导。
页: [1]
查看完整版本: 问下最基本的程序是啥意思。

捐赠