铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 3868|回复: 3

[通用] [50指令范例] 笑梦游记的推箱小游戏

[复制链接]
发表于 2008-11-29 21:06 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
;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 编辑 ]

评分

参与人数 1声望 +15 收起 理由
凶神恶煞 + 15 原创精品事件教程

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-11-29 21:20 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-11-30 13:06 | 显示全部楼层
基本看懂了
先判断位置坐标与事件点的坐标
然后设置好推了后的箱子坐标
再判断推后是否撞到建筑或其他箱子等,是的话没效果结束
没障碍的话就重新设置移动后的箱子事件,删除本来的,再移动箱子。


这么复杂。。下次来扫雷

[发帖际遇]: 柳无色发现瘫痪在地的殷梨亭,从他身上偷得银两7.

点评

特么的扫雷现在都没看懂,求赐教- -  发表于 2011-6-4 18:26
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-12-11 20:19 | 显示全部楼层

==

  ==...........

评分

参与人数 1声望 -2 收起 理由
凶神恶煞 -2 无意义的纯表情是灌水!

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-19 03:49

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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