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

Project1

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

[RMVX发布] 仿黃金太陽跳格子

[复制链接]

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

跳转到指定楼层
1
发表于 2010-12-20 21:26:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 雪流星 于 2012-2-25 15:07 编辑

更新日誌︰
  • 2011-01-11
        - 增加使用元件ID判斷,修改中間無法通行的元件是牆壁時也會跳躍的 BUG
  • 2011-01-12
        - 增加使用元件ID判斷,修改中間無法通行的元件是櫃台、欄杆等元件時也會跳躍的 BUG
  1. class Game_Map
  2.   def get_tile_id(x, y)
  3.     a = data[x, y, 0]
  4.     return 0 unless a
  5.     a-=2000
  6.     map_tile_id_0 = (a >= 0) ? a/48 : (a+593)
  7.     map_tile_id_1 = (data[x, y, 1]-2000) / 48
  8.     map_tile_id_2 = (data[x, y, 2])
  9.          
  10.     map_tile_id_0 = 0 if map_tile_id_0 == -42 # A
  11.     map_tile_id_1 = 0 if map_tile_id_1 == -42 # I
  12.     map_tile_id_2 = 0 if map_tile_id_2 == -42 # B~E
  13.    
  14.     # 图块 ID 矫正
  15.     map_tile_id_0 = map_tile_id_1 if map_tile_id_1 > 0
  16.     unless @events.nil?
  17.       for event in @events.values
  18.         if event.pos?(x, y) and event.tile_id > 0
  19.           # 若是事件使用地图元件,使用该地图元件的ID
  20.           map_tile_id_2 = event.tile_id
  21.         end
  22.       end
  23.     end
  24.     # 返回 [底层ID, 上层ID]
  25.     return [map_tile_id_0, map_tile_id_2]
  26.   end
  27. end
  28. class Game_Character
  29.   def get_map_tile_id(x, y)
  30.     return $game_map.get_tile_id(x, y)
  31.   end
  32.   def can_jump?
  33.     # 面向與方向鍵不同時不跳躍
  34.     return false if Input.dir4 != @direction
  35.     # 測試行走(按下Ctrl)時不跳躍
  36.     return false if debug_through?
  37.     x_f1 = x_f2 = @x
  38.     y_f1 = y_f2 = @y
  39.     case @direction
  40.     when 2
  41.       y_f2 += 2
  42.       y_f1 += 1
  43.     when 4
  44.       x_f2 -= 2
  45.       x_f1 -= 1
  46.     when 6
  47.       x_f2 += 2
  48.       x_f1 += 1
  49.     when 8
  50.       y_f2 -= 2
  51.       y_f1 -= 1
  52.     end
  53.     # 前第一格判斷
  54.     if can_walk?(x_f1, y_f1)# 判斷前一格是否能行走
  55.       return false
  56.     elsif [18, 19, 22, 26, 27, 30, 34, 35, 38, 42, 43, 46].include?(get_map_tile_id(x_f1, y_f1)[0])
  57.       return false # 前一格的A層為山、森林、欄杆元件時不能跳躍
  58.     elsif get_map_tile_id(x_f1, y_f1)[1]>1
  59.       return false # 前一格的B~E層無法通行時也不能跳躍
  60.     elsif $game_map.counter?(x_f1, y_f1)
  61.       return false # 前一格為櫃台時無法跳躍
  62.     elsif !$game_map.events_xy(x_f1, y_f1).empty?
  63.       return false
  64.     end
  65.     # 判斷面前兩格是否相同
  66.     return false if get_map_tile_id(x_f1, y_f1) == get_map_tile_id(x_f2, y_f2)
  67.     # 判斷面前一格是否牆壁元件
  68.     wall_tile = (89..96).to_a + (105..112).to_a + (121..128).to_a # 獲取牆壁元件ID
  69.     w_top_tile = (81..88).to_a + (97..104).to_a + (113..120).to_a # 獲取牆頂元件ID
  70.     if wall_tile.include?(get_map_tile_id(x_f1, y_f1)[0]) # 若前一格為牆壁元件
  71.       # 判斷當前格是否為牆(此功能需配合四方通行判斷腳本才能看出效用)
  72.       if w_top_tile.include?(get_map_tile_id(@x, @y)[0])
  73.         return get_map_tile_id(@x, @y) == get_map_tile_id(x_f2, y_f2)
  74.       else
  75.         return false
  76.       end
  77.     end
  78.     # 判斷前二格是否能行走
  79.     return can_walk?(x_f2, y_f2)
  80.   end
  81. end
  82. class Game_Event < Game_Character
  83.   def can_jump?
  84.     return false if @list[0].code != 108 # 第一个指令不是“注释”时返回 false
  85.     return @list[0].parameters[0] == "jumpable"
  86.   end
  87. end
  88. class Game_Player < Game_Character
  89.   alias old_move_by_input move_by_input
  90.   def move_by_input
  91.     # 不能行動時忽略所有動作
  92.     return unless movable?
  93.     # 解釋器執行時忽略所有動作
  94.     return if $game_map.interpreter.running?
  95.     d = Input.dir4
  96.     # 能夠跳躍時
  97.     if can_jump?
  98.       # 判斷跳躍方向
  99.       case d
  100.       when 2;  jump(0, 2)  # 向下跳
  101.       when 4;  jump(-2, 0) # 向左跳
  102.       when 6;  jump(2, 0)  # 向右跳
  103.       when 8;  jump(0, -2) # 向上跳
  104.       end
  105.     end
  106.     # 呼叫原有方法
  107.     old_move_by_input
  108.   end
  109. end
复制代码
插入 main 前面,地圖上若空一格無法通行,就會像黃金太陽那樣跳過去
範例工程︰ GS_Jump.rar (238.73 KB, 下载次数: 12055)

评分

参与人数 1星屑 +1016 收起 理由
夕阳武士 + 1016 创意万岁

查看全部评分

VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv3.寻梦者

梦石
0
星屑
1195
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

2
发表于 2010-12-20 22:18:08 | 只看该作者
或许想法不一样,流行姐可考虑针对这个脚本的建议:
http://rpg.blue/thread-139905-1-1.html

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

3
 楼主| 发表于 2010-12-20 23:36:51 | 只看该作者
回复 DeathKing 的帖子

嗯~~~兩個腳本功能類似,但是效果不同,可以考慮合併使用︰小間隔直接跳,大間隔用技能。

那個 FSL 的全文有嗎?你那個帖子裡面的連結打不開?

点评

Hello FSL,Welcome to FSL.  发表于 2010-12-21 20:17
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1195
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

4
发表于 2010-12-21 13:15:29 | 只看该作者
回复 雪流星 的帖子

那个只是类似与CC或是GPL之类的版权约定,准备重新起草。

http://rpg.blue/group-115-1.html

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

5
 楼主| 发表于 2011-1-12 11:07:55 | 只看该作者
更新日誌︰
  • 2011-01-11   增加使用元件ID判斷,修改中間無法通行的元件是牆壁時也會跳躍的 BUG



雪流星于2011-1-12 22:35补充以下内容:
2011-01-12
    * 增加使用元件ID判斷,修改中間無法通行的元件是櫃台、欄杆等元件時也會跳躍的 BUG

点评

又發現一個BUG,明天會再更新  发表于 2011-1-12 13:07
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2012-1-16
帖子
22
6
发表于 2012-1-18 08:59:56 | 只看该作者
为毛测试时系统会说“64行发生了SyntaxError”…………

新人求解…………

评分

参与人数 1星屑 -40 收起 理由
退屈£无聊 -40 挖坟了哦亲

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
7
发表于 2013-2-8 15:57:30 | 只看该作者
不能下载了.....
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-22 00:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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