Project1

标题: F1帮助文档脚本中的制作传送物品是怎么实现的? [打印本页]

作者: AZERAL    时间: 2017-4-18 22:32
标题: F1帮助文档脚本中的制作传送物品是怎么实现的?
本帖最后由 AZERAL 于 2017-4-19 17:04 编辑

虽然小弟我勉强能看懂F1帮助文档所有的脚本啦,但唯独制作传送物品这个脚本一直看不懂(如果大家有其他脚本入门实践篇的问题的话,我也能尽力解决啦
虽然本人对脚本不是太懂,可我已经尽力按照手册上的方法做了,但是还是没有成功实现传送物品的效果—在包含城镇等地点的菜单中选择任意地点之后选择物品进行传送一次
所以在这里希望各位大佬们能够帮帮忙,小弟在这里先谢谢啦
这是我写的传送物品的代码,也不知道对不对:
RUBY 代码复制
  1. class Window_Teleport < Window_Command
  2.   def initialize
  3.     super(0, 0)
  4.     hide
  5.     deactivate
  6.   end
  7. end
  8.   def window_width
  9.     return 240
  10.   end
  11.   def window_height
  12.     Graphics.height
  13.   end
  14.   TELEPORT_PLACES =
  15.     [
  16.       [2, "草地2", 2, 7, 7],
  17.       [3, "草地3", 3, 7, 7],
  18.       [4, "草地4", 4, 7, 7],
  19.     ]
  20.     def make_command_list
  21.     TELEPORT_PLACES.each do |place|
  22.       if $game_switches[place[0]]
  23.         add_command(place[1], :teleport, true, place)
  24.       end
  25.     end
  26. end
  27. class Scene_ItemBase
  28.    alias xxx001_start start
  29.   def start
  30.     xxx001_start
  31.     @teleport_window = Window_Teleport.new
  32.     @teleport_window.set_handler(:teleport, method(:on_teleport))
  33.     @teleport_window.set_handler(:cancel, method(:on_teleport_cancel))
  34.   end
  35.   alias xxx001_determine_item determine_item
  36.   def determine_item
  37.     if item.note.include?("<TELEPORT>")
  38.       show_sub_window(@teleport_window)
  39.      end
  40.     else
  41.       xxx001_determine_item
  42.     end
  43. end
  44.    def on_teleport
  45.     place = @teleport_window.current_ext
  46.     $game_player.reserve_transfer(place[2], place[3], place[4])
  47.     SceneManager.goto(Scene_Map)
  48.   end
  49.   def on_teleport_cancel
  50.     hide_sub_window(@teleport_window)
  51.   end

下面是工程失败的截图以及我做的传送物品和技能的范例:

結果.png (406.66 KB, 下载次数: 35)

失败的结果

失败的结果

1.zip

1.43 MB, 下载次数: 103

试验范例


作者: 喵呜喵5    时间: 2017-4-18 23:01
允许传送的开关打开了吗?
作者: AZERAL    时间: 2017-4-19 14:33
喵呜喵5 发表于 2017-4-18 23:01
允许传送的开关打开了吗?

按照制作传送点的清单[开关 ID,传送点的名称,地图 ID,X 坐标, Y 坐标]来理解的话,开关 ID就是传送开关吗?
如果是的话,我在进入每一地点时都设了打开指定开关的事件,但是在菜单中选择传送物品依然不能显示传送点
作者: 魔法丶小肉包    时间: 2017-4-19 16:01
从上往下数第二个end去掉,然后在
if $game_switches[place[0]]
        add_command(place[1], :teleport, true, place)
end
的下面再加一个end
作者: AZERAL    时间: 2017-4-19 16:23
魔法丶小肉包 发表于 2017-4-19 16:01
从上往下数第二个end去掉,然后在
if $game_switches]
        add_command(place[1], :teleport, true, pl ...

十分感謝,終於搞定了啦




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