设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1950|回复: 6
打印 上一主题 下一主题

[已经解决] 一句脚本想写在事件页的条件分歧中,可否?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
跳转到指定楼层
1
发表于 2014-11-14 15:59:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如果11号事件的右方不可通行并且11号事件当前的x坐标是地图的宽度-2,能否用一句脚本写在事件的条件分歧中?

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

2
发表于 2014-11-14 16:14:11 | 只看该作者
$game_map.passable?($game_map.events[11].x+1,$game_map.events[11].y,0,$game_player)&&$game_map.events[11].x==$game_map.width-2
注意:通行度是相对于主角而言并且为全方向判定

点评

0.0  发表于 2014-11-15 15:56
↓自己想去  发表于 2014-11-15 15:56
这两个都是and的效果吗···那优先级怎么试出来的- -|||  发表于 2014-11-15 15:43
没差  发表于 2014-11-15 15:34
那这一层的脚本的&&换成and会怎样···  发表于 2014-11-15 15:31
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
3
 楼主| 发表于 2014-11-14 23:21:10 | 只看该作者
本帖最后由 stella 于 2014-11-14 23:24 编辑
myownroc 发表于 2014-11-14 16:14
$game_map.passable?($game_map.events[11].x+1,$game_map.events[11].y,0,$game_player)&&$game_map.event ...


地图宽度判断出来了,但是通行度没有判断出来啊?用这句脚本判断7号事件前面是否有障碍,判断结果是右边没遇到障碍

点评

通行度是相对于主角而言的,相对于事件而言的通行度还没考虑过。我先想想看。  发表于 2014-11-15 00:04
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
4
 楼主| 发表于 2014-11-15 12:01:58 | 只看该作者
myownroc 发表于 2014-11-14 16:14
$game_map.passable?($game_map.events[11].x+1,$game_map.events[11].y,0,$game_player)&&$game_map.event ...

我只能写成这样:unless $game_map.events[11].passable?($game_map.events[11].x, $game_map.events[11].y, 6)
但是这样不能写进事件的条件分歧中,无法放进很多东西,也无法添加别的判断条件,很不方便

点评

事件中写成!($game_map.events[11].passable?($game_map.events[11].x, $game_map.events[11].y, 6))  发表于 2014-11-15 12:42
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
5
发表于 2014-11-15 12:50:24 | 只看该作者
本帖最后由 汪汪 于 2014-11-15 13:00 编辑
  1. class Game_Character
  2.   def e_passable?(d)
  3.     x=self.x
  4.     y=self.y
  5.     # 求得新的坐标
  6.     new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  7.     new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  8.     # 坐标在地图以外的情况
  9.     unless $game_map.valid?(new_x, new_y)
  10.       # 不能通行
  11.       return false
  12.     end
  13.     # 穿透是 ON 的情况下
  14.     if @through
  15.       # 可以通行
  16.       return true
  17.     end
  18.     # 移动者的元件无法来到指定方向的情况下
  19.     unless $game_map.passable?(x, y, d, self)
  20.       # 通行不可
  21.       return false
  22.     end
  23.     # 从指定方向不能进入到移动处的元件的情况下
  24.     unless $game_map.passable?(new_x, new_y, 10 - d)
  25.       # 不能通行
  26.       return false
  27.     end
  28.     # 循环全部事件
  29.     for event in $game_map.events.values
  30.       # 事件坐标于移动目标坐标一致的情况下
  31.       if event.x == new_x and event.y == new_y
  32.         # 穿透为 ON
  33.         unless event.through
  34.           # 自己就是事件的情况下
  35.           if self != $game_player
  36.             # 不能通行
  37.             return false
  38.           end
  39.           # 自己是主角、对方的图形是角色的情况下
  40.           if event.character_name != ""
  41.             # 不能通行
  42.             return false
  43.           end
  44.         end
  45.       end
  46.     end
  47.     # 主角的坐标与移动目标坐标一致的情况下
  48.     if $game_player.x == new_x and $game_player.y == new_y
  49.       # 穿透为 ON
  50.       unless $game_player.through
  51.         # 自己的图形是角色的情况下
  52.         if @character_name != ""
  53.           # 不能通行
  54.           return false
  55.         end
  56.       end
  57.     end
  58.     # 可以通行
  59.     return true
  60.   end
  61.   def e_valid?(x=0,y=0,x0=0, y0=0)
  62.     x1 = $game_map.width - 1 - x
  63.     y1 = $game_map.height - 1 - y
  64.     if self.x >= x0 and self.x<=x1 and self.y >= y0 and self.y<=y1
  65.       return true
  66.     end
  67.     return false
  68.   end
  69. end
复制代码

额 ,不要在意水里的木桩   (o゚ω゚o)
第一个条件分歧,如果在范围内。
如果可以向右
事件向右,
除此以外
向下
end
除此以外,如果出了边界(地图宽- 2 , 地图 高 -1),p 也就是 x 坐标为18时
向上走
end

点评

我就是想反过来定义行不行?希望是这样:if 不能通行  发表于 2014-11-15 19:44

评分

参与人数 2星屑 +270 收起 理由
︶ㄣ牛排ぶ + 250 认可答案
stella + 20 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
52 小时
注册时间
2014-11-6
帖子
23
6
发表于 2014-11-15 13:11:56 | 只看该作者
温馨提示:条件分歧是可以写多行脚本的。返回最后一行的值。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
7
 楼主| 发表于 2014-11-15 15:20:51 | 只看该作者
本帖最后由 stella 于 2014-11-15 18:13 编辑
汪汪 发表于 2014-11-15 12:50
额 ,不要在意水里的木桩   (o゚ω゚o)
第一个条件分歧,如果在范围内。
如果可以向右



谢谢,$game_map.events[1].e_passable?(6)  这一句是不是用来判断右方是否无法通行的?但是我用这个判断出来怎么不对?


因为是在并行公共事件里统一判断的,而有的地图里可能是宽度-1就有边界障碍物,有的地图可能是宽度-2就有边界障碍物,所以我想在公共事件里判断出:如果事件走到地图width-1或者地图宽度width-2的地方不能通行了,就执行XXXXX。。。。。。

点评

改成!$game_map.events[1].e_passable?(6)   发表于 2014-11-15 22:28
$game_map.events[1].e_passable?(6)  发表于 2014-11-15 22:27
要得到相反的效果在条件分歧所用的脚本前加! 另外,除此以外的场合指的就是当条件不成立时的情况。  发表于 2014-11-15 22:24
边界障碍物其实可以用透明的不可通行图块绘制,或者用我那个图片中第一个条件分歧那样,第一个分歧就是判断是否在可行范围内。当然,可行是TRUE  发表于 2014-11-15 18:45
那个,,这个判断可以通行返回true,你把判断弄反了。  发表于 2014-11-15 18:40
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-11 09:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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