佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
查看: 4406|回复: 11

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

[复制链接]

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
发表于 2009-5-14 11:53:43 | 显示全部楼层 |阅读模式
!?FU719;

!!OW:Tx16/?y1; [get team number if any]
!!VRy1&y1=-1:S-2; [treat no team as not the same team]
!!VRvv600&x1<>x16/x2<>y1:Sx16; [store player number if usable for shroud-placing]

是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的脚本中赋予的??
变量能跨脚本么??

该用户从未签到

906

回帖

9696

金币

2

精华

5级 Honorable Hero

Rank: 5Rank: 5

积分
4086

退役版主

发表于 2009-5-14 13:07:52 | 显示全部楼层
答:

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

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

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


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

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
 楼主| 发表于 2009-5-14 13:17:49 | 显示全部楼层
那这里x1和x2也在script1没出现过,也是全局变量?

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

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

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

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

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

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

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
 楼主| 发表于 2009-5-14 13:21:31 | 显示全部楼层
另外问下ERM么有调试功能么,这样就可以自己试试,语句是啥作用了

该用户从未签到

1551

回帖

1万

金币

4

精华

4级 Famous Hero

Rank: 4

积分
2102

退役版主论坛元老

发表于 2009-5-14 13:48:14 | 显示全部楼层
x1 x2 x16
这些东西

是在FU函数里面调用的

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
 楼主| 发表于 2009-5-14 14:48:34 | 显示全部楼层
我知道是函数参数,但是总要表示个啥意思吧

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

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
 楼主| 发表于 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

该用户从未签到

261

回帖

6666

金币

3

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
492

论坛元老

发表于 2009-5-14 18:35:35 | 显示全部楼层
!!VRy1&y1=-1:S-2; [treat no team as not the same team]

这个语句表示如果!!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楼

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

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
 楼主| 发表于 2009-5-14 20:33:47 | 显示全部楼层
哦,关于X函数参数,script1的脚本跟您写的不大一样。

!?FU719;

!!OW:Tx16/?y1; [get team number if any]
!!VRy1&y1=-1:S-2; [treat no team as not the same team]
!!VRvv600&x1<>x16/x2<>y1:Sx16; [store player number if usable for shroud-placing]

** find nonteammate for player x16

!?FU720;

!!VRv600:S564 +x16; [number of variable holding non-teammate]
!!VRvv600:Sx16; [default for 8-player-team game]
!!OW:Tx16/?y1; [get team number if any]
!!DO719/0/7/1:Px16/y1; [check each player for not being on this team]

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中被赋值的。

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
 楼主| 发表于 2009-5-14 20:38:47 | 显示全部楼层
!?FU719;

!!OW:Tx16/?y1; [get team number if any]
!!VRy1&y1=-1:S-2; [treat no team as not the same team]
!!VRvv600&x1<>x16/x2<>y1:Sx16; [store player number if usable for shroud-placing]

** find nonteammate for player x16

!?FU720;

!!VRv600:S564 +x16; [number of variable holding non-teammate]
!!VRvv600:Sx16; [default for 8-player-team game]
!!OW:Tx16/?y1; [get team number if any]
!!DO719/0/7/1:Px16/y1; [check each player for not being on this team]

** end of initialization functions


** Initialization Code

!#VRv1:S0; [make sure v1 starts as 0]
!#UN:P101/?v1; [check wogify options number - 5 means no rules]
!#TM84&v1<>5:S1/999/1/255; [timer every day for all players]
!#VRv579:S0; [first 10 bits of rules - none chosen yet]
!#VRv578:S0; [previous day in game]
!#VRv577:S0; [creatures are normal price]
!#VRv576:S0; [second 11 bits of rules - none chosen yet]
!#UN:X?v574/?v575; [get size/underground]
!#VRv573:Sv574 :2; [get half of size = middle of map]
!#VRv572:S0; [day of last rogue attack]
!#VRv550:C1/2/4/8/16/32/64/128/256/512/1024; [bit table]

!#VRz332:Sz101000; [rule names for menu/papyrus]
!#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,就是在这里被赋值的么

该用户从未签到

906

回帖

9696

金币

2

精华

5级 Honorable Hero

Rank: 5Rank: 5

积分
4086

退役版主

发表于 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 编辑 ]

该用户从未签到

18

回帖

7555

金币

0

精华

1级 Hired Hero

Rank: 1

积分
35
 楼主| 发表于 2009-5-15 10:24:05 | 显示全部楼层
谢谢楼上两次教导,终于明白了,也谢谢各位老鸟的悉心指导。
ahome_bigavatar:guest
ahome_bigavatar:welcomelogin
您需要登录后才可以回帖 登录 | 英雄注册|Register

本版积分规则

捐赠
关注我们,英3Mod一网打尽!

WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号

GMT+8, 2025-4-20 01:46 , Processed in 0.943127 second(s), 15 queries , Gzip On, File On.

Powered by Discuz! X3.4

Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.

快速回复 返回顶部 返回列表