;Kdefnum=1030
(初始化)
50 0 100 0 0 0 0 0 ; 赋值 [X100]=0 (事件点编号)
50 0 109 4576 0 0 0 0 ; 赋值 [X109]=4576(箱子贴图编号)
50 0 110 1030 0 0 0 0 ; 赋值 [X110]=1030(推箱事件)
(对箱子使用物品事件,可以-1)
50 0 112 1041 0 0 0 0 ; 赋值 [X112]=1041
(读取当前场景号)
50 26 0 0 10590 29 101 0 ; 地址 [X101]=[1D-295E+0]
(读取主角当前x座标)
50 26 0 0 10588 29 102 0 ; 地址 [X102]=[1D-295C+0]
(读取主角当前y座标)
50 26 0 0 10586 29 103 0 ; 地址 [X103]=[1D-295A+0]
(读取当前事件点座标x104,x105,判断目前是推哪个箱子,因为箱子很多,而每个箱子都用这个事件)
50 22 3 101 100 9 104 0 ; 50(32):读取D*数据 [X104]=场景[X101]场景事件[X100]属性9
50 22 3 101 100 10 105 0 ; 50(32):读取D*数据 [X105]=场景[X101]场景事件[X100]属性10
(比较事件点座标和主角座标的差异,因为即使彼此只差一格,但也有分四个推向,由xy座标差异判别是哪个推向,
并且依据不同的推向让事件点x104,x105的xy座标做加减一的动作,所得到的是新事件点座标即推到新位置的座标)
50 4 1 2 102 104 0 0 ; 50(32):变量判断 If[X102]=[X104] then JMP=0 else JMP=1
36 256 0 44 ; 36(24):跳转变量JMP是否为0否则跳转到:Label0
50 4 1 5 103 105 0 0 ; 50(32):变量判断 If[X103]>[X105] then JMP=0 else JMP=1
50 3 0 0 106 104 0 0 ; 50(32):四则运算 [X106]=[X104]+0
36 256 0 12 ; 36(24):跳转变量JMP是否为0否则跳转到:Label1
50 3 0 1 107 105 1 0 ; 50(32):四则运算 [X107]=[X105]-1
36 256 65 0 ; 36(24):跳转变量JMP是否为0是则跳转到:Label2
;:Label1
50 3 0 0 107 105 1 0 ; 50(32):四则运算 [X107]=[X105]+1
36 256 0 53 ; 36(24):跳转变量JMP是否为0否则跳转到:Label3
;:Label0
50 4 1 2 103 105 0 0 ; 50(32):变量判断 If[X103]=[X105] then JMP=0 else JMP=1
36 256 1 0 ; 36(24):跳转变量JMP是否为0是则跳转到:Label4
7 ; 7(7):无条件返回
;:Label4
50 4 1 5 102 104 0 0 ; 50(32):变量判断 If[X102]>[X104] then JMP=0 else JMP=1
50 3 0 0 107 105 0 0 ; 50(32):四则运算 [X107]=[X105]+0
36 256 0 12 ; 36(24):跳转变量JMP是否为0否则跳转到:Label5
50 3 0 1 106 104 1 0 ; 50(32):四则运算 [X106]=[X104]-1
36 256 8 0 ; 36(24):跳转变量JMP是否为0是则跳转到:Label6
;:Label5
50 3 0 0 106 104 1 0 ; 50(32):四则运算 [X106]=[X104]+1
;:Label6
;:Label3
;:Label2
(得到新事件点座标了,先别急着把新位置设置新事件点,因为主角可能推到前面的位置是建筑,是不能推成功的。)
50 24 13 101 1 106 107 108 ; 50(32):读取S*数据 [X108]=场景[X101]层1坐标([X106],[X107])
50 4 0 2 108 0 0 0 ; 50(32):变量判断 If[X108]=0 then JMP=0 else JMP=1
36 256 1 0 ; 36(24):跳转变量JMP是否为0是则跳转到:Label7
7 ; 7(7):无条件返回
;:Label7
(当然,前面的位置是已有事件点,也不能推成功,否则事件点会被取代掉。)
50 24 13 101 3 106 107 111 ; 50(32):读取S*数据 [X111]=场景[X101]层3坐标([X106],[X107])
50 4 0 2 111 -1 0 0 ; 50(32):变量判断 If[X111]=-1 then JMP=0 else JMP=1
36 256 1 0 ; 36(24):跳转变量JMP是否为0是则跳转到:Label8
7 ; 7(7):无条件返回
;:Label8
(都考虑周到了!推箱成功!先把旧事件点全部删掉,并在新事件点位置设置推箱事件,作为下次推箱的准备。)
67 24 ; 67(43):播放音效24
3 -2 -2 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ; 3(3):修改事件定义:当前场景:当前场景事件编号
50 23 29 101 3 106 107 100 ; 50(32):保存S*数据 场景[X101]层3坐标([X106],[X107])=[X100]
50 21 3 101 100 0 1 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性0=1
50 21 11 101 100 1 100 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性1=[X100]
50 21 11 101 100 2 110 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性2=[X110]
50 21 11 101 100 3 112 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性3=[X112]
50 21 3 101 100 4 -1 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性4=-1
50 21 11 101 100 5 109 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性5=[X109]
50 21 11 101 100 6 109 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性6=[X109]
50 21 11 101 100 7 109 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性7=[X109]
50 21 3 101 100 8 -1 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性8=-1
50 21 11 101 100 9 106 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性9=[X106]
50 21 11 101 100 10 107 0 ; 50(32):保存D*数据 场景[X101]场景事件[X100]属性10=[X107]
-1 ; -1(FFFF):事件结束
后记:本教程主要以事件制作的流程思维探讨为主,故无法条列式一一做详细说明,毕竟人人风格不同,写法迥异,
只要效果达到,效率良好,任何写法都无优劣。有任何关于更细部的地方不清楚,例如比较事件点座标和主角
座标的差异,欢迎提出发问。
[ 本帖最后由 游客 于 2008-11-29 21:24 编辑 ] |