Project1

标题: 解谜:推箱子+制造跳跃,怎么搞?(帮帮我啊!) [打印本页]

作者: 艾路塞尔    时间: 2007-6-8 23:43
标题: 解谜:推箱子+制造跳跃,怎么搞?(帮帮我啊!)
最近受到《黄太》的启发,
也想搞点解谜成分,但不知怎么搞。
在此想请教一下各位高手帮帮忙。

例如:先到1F,将箱子码好:




再到2F踩着箱子到对面去。

当然也能这样码:



推箱子我知道怎么弄,但是如何在2F踩着它们到对面去呢?
希望高手指点!



PS:黄太里有好多解谜成分,不知道RM能不能搞出来。
作者: 艾路塞尔    时间: 2007-6-8 23:43
标题: 解谜:推箱子+制造跳跃,怎么搞?(帮帮我啊!)
最近受到《黄太》的启发,
也想搞点解谜成分,但不知怎么搞。
在此想请教一下各位高手帮帮忙。

例如:先到1F,将箱子码好:




再到2F踩着箱子到对面去。

当然也能这样码:



推箱子我知道怎么弄,但是如何在2F踩着它们到对面去呢?
希望高手指点!



PS:黄太里有好多解谜成分,不知道RM能不能搞出来。
作者: 远去的列车    时间: 2007-6-8 23:47
图全是红叉

2F的箱子事件设置成 允许穿透 可以吗?
作者: 远去的列车    时间: 2007-6-9 00:13
呃,我是新手,我的想法:

在第二张图人物站的那个地方设置一个事件(叫它为“跳板”吧)
与主角接触触发
加上代码:
设置移动路线: 角色(忽略不能移动的场合)
:     : 穿透ON
:     : 跳跃:+2,+0
:     : 穿透OFF


作者: 远去的列车    时间: 2007-6-9 00:14
然后在前三块木头上都设置同“跳板”的事件
作者: 艾路塞尔    时间: 2007-6-9 05:26
你所说的“跳板”事件的位置是不确定的。

而实现“跳板”的前提是你已经将木箱摆到可以到达对面的位置。

如何判断上述条件已成立是个问题。
作者: 远去的列车    时间: 2007-6-9 18:34
我照你的画了个图(箱子高度为2)
http://rpg.blue/upload_program/files/tiao.JPG

关于可以跳的判定和跳的动作全放在事件5里面,代码如下:
1页:与主角接触
插入脚本:(判断三个箱子事件的坐标[你的有四个箱子,一样],若符合开启独立开关A)
if $game_map.events[1].x == 5 and
$game_map.events[2].x == 7 and
$game_map.events[3].x == 9 and
$game_map.events[1].y == 10 and
$game_map.events[2].y == 10 and
$game_map.events[3].y == 10            #判断各箱子坐标是否符合条件
$game_self_switches[[2,5,"A"]] = true  #符合 开启"跳板"事件的独立开关A
$game_map.need_refresh = true          #使独立开关A ON有效
end


发现了一个BUG,我的方法用的是三个箱子的一种排列,而实际上三个箱子任意一种排列组合都可行,把表达式改一下就可以啦。

2页:条件:独立开关A为ON  并行处理

设置移动路线 : 角色
:            : 总在最前显示 ON
:            : 跳跃 : +2,+0
:            : 跳跃 : +2,+0
:            : 跳跃 : +2,+0
:            : 跳跃 : +2,+0
:            : 总在最前显示 OFF
等待移动结束
独立开关的操作 : A = OFF

箱子事件只管你推的好了  (精简了些)

作者: 远去的列车    时间: 2007-6-9 20:28
效果图:
http://rpg.blue/upload_program/files/xiang.JPG

欢迎指出问题,我正学习呢,这算是一次作业好了
作者: 艾路塞尔    时间: 2007-6-10 03:51
嗯,首先感谢你。
先记录一下,回去再研究研究。
作者: 艾路塞尔    时间: 2007-6-10 06:08
嗯,经过测试,这种方法基本可以实现人物的“跳跃”。

但有些地方我觉得还可以更完善一点。

比如N个箱子事件是等效的,也就是说从左到右1,2,3和3,2,1这样码是一样的。

都可以使“起跳”发生。

嗯,连续自动跳跃看起来有点怪,如果在每个跳跃点加上“输入键的设定”呢。。。

这样的话我还是觉得码箱子的方法只有一种会比较容易,码的方法多的话设计起来会很
麻烦。(所以说不知还有什么其他方法...{/wx}
如图:(只有一种排箱子法)



当然了,这种方法我已经觉的很好了。
作者: 远去的列车    时间: 2007-6-10 08:44
这个比较难了,人物跳在箱子事件的上面两格,箱子事件却不在跳跃点上,不知道怎么弄了

而且还要求箱子事件的上面两格可通行,又不好在那再加事件

只能做到自动连续跳跃啦,至于排列组合问题,应该比较好解决
作者: huha    时间: 2007-6-10 09:18
自己参考《逃出XXXX之金钱游戏》
我懒{/gg}
作者: xiuye1987    时间: 2007-6-10 11:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 艾路塞尔    时间: 2007-6-11 01:54
嗯,找到了这个,大家看看有什么启发。
【小游戏】完美版推箱子
http://rpg.blue/web/htm/down20.htm
作者: 十二月夜    时间: 2007-6-11 02:07
以下引用艾路塞尔于2007-6-10 17:54:25的发言:

嗯,找到了这个,大家看看有什么启发。
【小游戏】完美版推箱子
http://rpg.blue/web/htm/down20.htm


推箱子不是重点...重点是人跳到箱子上...
作者: 艾路塞尔    时间: 2007-6-12 00:07
以下引用远去的列车于2007-6-10 0:44:25的发言:

至于排列组合问题,应该比较好解决


[本贴由作者于 2007-6-10 0:46:39 最后编辑]

怎么解决 排列组合 的问题啊,这方面我很菜,教教我啦!
作者: 艾路塞尔    时间: 2007-6-12 00:09
以下引用huha于2007-6-10 1:18:19的发言:

自己参考《逃出XXXX之金钱游戏》
我懒


加密的,咋参考{/fd}
作者: 远去的列车    时间: 2007-6-12 00:33
以下引用艾路塞尔于2007-6-11 16:07:07的发言:

怎么解决 排列组合 的问题啊,这方面我很菜,教教我啦!


#a..b 为箱子事件标号,以三个箱子为例,b-a = 2
for i in a..b
if $game_map.events.x == 5
  for j in a..b                        #不用考虑 j != i 了
   if $game_map.events[j].x == 7
    for k in a..b                      #不用考虑 k != i and k != j 了
     if $game_map.events[k].x == 9 and
$game_map.events.y == 10 and
$game_map.events[j].y == 10 and
$game_map.events[k].y == 10
      $game.switches[可以跳的开关的编号] = true
     end
    end
   end
  end
end
end
作者: 远去的列车    时间: 2007-6-12 00:39
前面我用的是独立开关,现在改成开关

如果“可以跳”这个开关开启,可以在跳的着陆点(即箱子顶端)周围加事件设为不可穿透(效果相当于跳在箱子顶端那一块小地方走不动了)

然后判断按键继续跳。

缺点:加了好多事件,每个着陆点周围有四个
作者: 亿万星辰    时间: 2007-6-12 00:50
两个地图间通过事件设置图块,并通过开关进行关系连接
作者: 艾路塞尔    时间: 2007-6-12 01:24
以下引用远去的列车于2007-6-11 16:33:34的发言:


#a..b 为箱子事件标号,以三个箱子为例,b-a = 2
for i in a..b
if $game_map.events.x == 5
for j in a..b                        #不用考虑 j != i 了
  if $game_map.events[j].x == 7
   for k in a..b                      #不用考虑 k != i and k != j 了
    if $game_map.events[k].x == 9 and
$game_map.events.y == 10 and
$game_map.events[j].y == 10 and
$game_map.events[k].y == 10
     $game.switches[可以跳的开关的编号] = true
    end
   end
  end
end
end
end


这个脚本加在哪?

作者: 远去的列车    时间: 2007-6-12 01:31
代替6楼有颜色的地方
作者: 艾路塞尔    时间: 2007-6-12 20:37
以下引用远去的列车于2007-6-11 17:31:06的发言:

代替6楼有颜色的地方



一个脚本格里放不下怎么办?

作者: 远去的列车    时间: 2007-6-12 21:59
装不下就简化脚本,如下没经过测试

x = []
y = []
for i in a..b
x.push($game_map.events.x)  #把各事件的 x 坐标列成一个数组
y.push($game_map.events.y)    #把各事件的 y 坐标列成一个数组
end
if x.include?(5) and x.include?(7) and x.include?(9)  # x 数组里含有 5,7,9 ?
if y.all? {|v| v == 10}               # y 数组里全是 10 ?
   $game.switches[可以跳的开关的编号] = true
end
end
作者: 远去的列车    时间: 2007-6-12 21:59
以上脚本是今天学的{/dk}
作者: 艾路塞尔    时间: 2007-6-13 02:49
我这样写的:
  1. x = []
  2. y = []
  3. for i in 1..3
  4. x.push($game_map.events[i].x)  
  5. y.push($game_map.events[i].y)   
  6. end
  7. if x.include?(7) and x.include?(9) and
  8. x.include?(11)  
  9. if y.all? {|v| v == 7}          
  10.  $game.switches[2] = true
  11. end
  12. end
复制代码


为什么发生错误?{/dk}
作者: 远去的列车    时间: 2007-6-13 03:48

语法上 x.push 5 是正确的,但 push 一个变量却报错?

难道这不能用数组解决了吗?我也请教
作者: 远去的列车    时间: 2007-6-13 17:47
楼主,你改成下面这样就OK了。问题不是push 的错,而是include?的格式
x.include? 5    #直接数不要括号
等同于
a = 5
x.include?(a)  #变量加括号

x = []
y = []
for i in 1..3
x.push($game_map.events.x)  
y.push($game_map.events.y)   
end
if x.include? 7 and x.include? 9 and
x.include? 11 and y.all? {|v| v == 7}          
 $game_switches[2] = true              # game_switches
end
作者: 艾路塞尔    时间: 2007-6-14 02:49


我这样做了,为什么还是显示“SyntaxError”?{/dk}

为什么啊?
作者: 艾路塞尔    时间: 2007-6-15 02:41
到底是哪里出错了啊?{/dk}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1