问下最基本的程序是啥意思。
!?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的脚本中赋予的??
变量能跨脚本么?? 答:
v变量是全局的,当然跨脚本。
&符号表示条件:
!!XXX & YYY : ZZZ;
这个是ERM语句的基本格式:当满足YYY条件时,执行 XXX 语句,并且给予参数 ZZZ。
vv600 :假如 v600 的值是 70,那么 vv600 就等于 v70 那这里x1和x2也在script1没出现过,也是全局变量?
帮助文件上说 他们 是函数参数。
这到底是啥意思??x16是依次顺序赋值??
对X系列的变量,看帮助好像还是很难理解
那第二步的意思就是当y1=-1(也就是当前英雄的情况下),y1=-2
第三步就是,当X1不等于X16,X2不等于Y1时,VV600赋值X16
[ 本帖最后由 jackbauer14 于 2009-5-14 13:20 编辑 ] 另外问下ERM么有调试功能么,这样就可以自己试试,语句是啥作用了 x1 x2 x16
这些东西
是在FU函数里面调用的 我知道是函数参数,但是总要表示个啥意思吧
就如此函数,X1,X2,X16到底是各代表了啥?? 尤其是第三步,
当x1不等于x16或x2不等于y1 时, vv600赋予x16.
根据函数,x16是随机选择1-8 和-1,(因为玩家颜色只有8个,-1代表无变化的当前玩家)
当x16=1时,也就是红色,第二步y1=-1不成立,跳到第三步。
x1不等于x16,x1是被赋予了什么值??x2又被赋予了什么值??
才vv600赋予了x16 !!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楼
编写脚本,娱几娱人,希望更多的人对编校本感兴趣,也希望早日看到搂主的作品 哦,关于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中被赋值的。 !?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,就是在这里被赋值的么 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 编辑 ] 谢谢楼上两次教导,终于明白了,也谢谢各位老鸟的悉心指导。
页:
[1]