Project1

标题: 废渣型脚本产物Ⅸ-地图传送道具(简版) [打印本页]

作者: 冰舞蝶恋    时间: 2011-5-27 13:07
标题: 废渣型脚本产物Ⅸ-地图传送道具(简版)
苦研脚本2天...还是比不上各位大神,如果发现BUG麻烦在下面举报。
  1. #============================================================================
  2. # ○ 简易传送物品脚本
  3. #         ——By.冰舞蝶恋
  4. #----------------------------------------------------------------------------
  5. module Flyitem
  6. #--设定部分------------------------------------------------------------------
  7. # 用来传送到各地图的物品id,上限可自行添加
  8.   FLYITEM = [21, 22, 23]
  9. #----------------------------------------------------------------------------
  10. # 物品对应的可传送地图,如范例中:[[1,2]……]就代表21号物品可传送到1号和2号
  11. # 地图;再如,22号物品可传送到2号地图;23号物品可传送到1,3,4号地图,可自己
  12. # 设定,以此类推。
  13.   MAPID = [[1, 2],
  14.            [2],
  15.            [1, 3, 4]]
  16. #----------------------------------------------------------------------------
  17. # 被传送地图的X,Y坐标,从1号地图开始,如范例中[1,1]就是如果传送到1号地图,
  18. # 则被传送的坐标是1,1(地图坐标从0记起);[2,4],代表着如果被传送到2号地图
  19. # ,则是从x=2,y=4的地方出现,以此类推。
  20.   MAPXY = [[0, 0],
  21.            [4, 6],
  22.            [5, 5],
  23.            [1, 4]]
  24. #--设定结束,祝您使用愉快----------------------------------------------------
  25. end
  26. # 特别感谢:八云紫 前辈!
  27. #============================================================================
  28. $flyitem = []
  29. $flyid = []
  30. class Scene_Item < Scene_Base
  31.   #--------------------------------------------------------------------------
  32.   # ● 非同伴目标使用物品
  33.   #--------------------------------------------------------------------------
  34.   def use_item_nontarget
  35.     Sound.play_use_item
  36.     $game_party.consume_item(@item)
  37.     @item_window.draw_item(@item_window.index)
  38.     @target_window.refresh
  39.     # 这里是八云紫前辈的判断方法..-------------------------------------------
  40.     if Flyitem::FLYITEM.include?(@item.id)
  41.       fly = Flyitem::FLYITEM.index(@item.id)
  42.       for i in 0..Flyitem::MAPID[fly].size-1
  43.         a = load_data("Data/MapInfos.rvdata")
  44.         $flyitem[i] = a[Flyitem::MAPID[fly][i]].name
  45.         $flyid[i] = Flyitem::MAPID[fly][i]
  46.         if $flyitem.size == Flyitem::MAPID[fly].size
  47.           @fly_cmd = Window_Command.new(240, $flyitem)
  48.           @fly_cmd.x = (544 - @fly_cmd.width) / 2
  49.           @fly_cmd.y = (416 - @fly_cmd.height) / 2
  50.           @fly_cmd.active = @fly_cmd.visible = true
  51.         end
  52.       end
  53.     end
  54.     # 另一种算法(骄傲的:咱自己的思路~~
  55. #~     for fly in 0..Flyitem::FLYITEM.size-1
  56. #~       if @item.id == Flyitem::FLYITEM[fly]
  57. #~         for i in 0..Flyitem::MAPID[fly].size-1
  58. #~           a = load_data("Data/MapInfos.rvdata")
  59. #~           $flyitem[i] = a[Flyitem::MAPID[fly][i]].name
  60. #~           $flyid[i] = Flyitem::MAPID[fly][i]
  61. #~           if $flyitem.size == Flyitem::MAPID[fly].size
  62. #~             @fly_cmd = Window_Command.new(240, $flyitem)
  63. #~             @fly_cmd.x = (544 - @fly_cmd.width) / 2
  64. #~             @fly_cmd.y = (416 - @fly_cmd.height) / 2
  65. #~             @fly_cmd.active = @fly_cmd.visible = true
  66. #~           end
  67. #~         end
  68. #~       end
  69. #~     end
  70.     #------------------------------------------------------------------------
  71.     if $game_party.all_dead?
  72.       $scene = Scene_Gameover.new
  73.     elsif @item.common_event_id > 0
  74.       $game_temp.common_event_id = @item.common_event_id
  75.       $scene = Scene_Map.new
  76.     end
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 更新画面
  80.   #--------------------------------------------------------------------------
  81.   def update
  82.     super
  83.     update_menu_background
  84.     if @fly_cmd != nil
  85.       if @fly_cmd.active
  86.         @fly_cmd.update
  87.         return cmd
  88.       end
  89.     end
  90.     @help_window.update
  91.     @item_window.update
  92.     @target_window.update
  93.     if @item_window.active
  94.       update_item_selection
  95.     elsif @target_window.active
  96.       update_target_selection
  97.     end
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 按键处理
  101.   #--------------------------------------------------------------------------
  102.   def cmd
  103.     if Input.trigger?(Input::C)
  104.       id = $flyid[@fly_cmd.index]
  105.       $scene = Scene_Map.new
  106.       @fly_cmd = nil
  107.       xy = Flyitem::MAPXY
  108.       xy2 = xy[id-1]
  109.       $game_map.setup(id)
  110.       $game_player.moveto(xy2[0], xy2[1])
  111.     elsif Input.trigger?(Input::B)
  112.       $scene = Scene_Item.new
  113.       @fly_cmd = nil
  114.       $game_party.gain_item($data_items[@item.id],1)
  115.     end
  116.   end
  117. end
复制代码
如果脚本设定不易理解,那么就下载范例吧。
上图:



附件:
地图传送道具.rar (259.91 KB, 下载次数: 3779)
作者: 忧雪の伤    时间: 2011-5-27 20:03
全局变量可否考虑换下?
作者: 冰舞蝶恋    时间: 2011-5-27 20:35
忧雪の伤 发表于 2011-5-27 20:03
全局变量可否考虑换下?

呃,局部也可以啊,懒得改了呢
作者: wangswz    时间: 2011-5-27 21:03
本帖最后由 wangswz 于 2011-5-27 21:05 编辑

地图前显示类似 草原 城镇 的图标
ID和地图ID XY 写一起编辑起来更直观 扩充起来也不会乱
有和队伍人员地图跟随脚本兼容的意向吗
加个开关控制 或者设置个地图ID数组 禁止某些地图传送
物品的消耗问题

以上
作者: 冰舞蝶恋    时间: 2011-5-27 21:49
wangswz 发表于 2011-5-27 21:03
地图前显示类似 草原 城镇 的图标
ID和地图ID XY 写一起编辑起来更直观 扩充起来也不会乱
有和队伍人员地 ...

怎么了?消耗?是说返回之后才重新获取,还是会正常消耗的说啊!
话说好久不见前辈啦
作者: 夕阳武士    时间: 2011-5-28 12:25
这么喜欢数组?
作者: 忧雪の伤    时间: 2011-5-28 12:59
可以考虑把设定放到物品的备注上?
在脚本设置未免有些繁琐,且不适合新手。
作者: 冰舞蝶恋    时间: 2011-5-28 13:53
忧雪の伤 发表于 2011-5-28 12:59
可以考虑把设定放到物品的备注上?
在脚本设置未免有些繁琐,且不适合新手。 ...

感谢提议,顺便问下,备注是.note吗?
作者: 9993669    时间: 2011-7-5 21:07
汗堡~我都是用事件的
作者: 絀神入化    时间: 2011-7-6 17:34
以上,脚本盲+事件党路过。

这个用纯事件也行的吧?
作者: 忧雪の伤    时间: 2011-7-6 19:49
  1. for count in 0..5 - 1
  2. end
  3. p count # => 4
  4. for count in 0...5
  5. end
  6. p count # => 4
复制代码
懂了吧。
作者: 九夜神尊    时间: 2011-7-28 19:27
鼓励冰舞的说。虽然这东西一般人都用事件了。
作者: 退屈£无聊    时间: 2011-7-29 09:30
本帖最后由 退屈£无聊 于 2011-7-29 09:31 编辑

可否考虑用HASH=-=?
另外对那些认为可以用事件的人们:
当有一堆地图移动道具和可移动地图的时候,事件的设置就略显烦琐.
作者: px.凤翔九天    时间: 2011-7-29 09:45
表示冰舞姐的脚本进步挺快的呢~这个功能也挺实用的。
记得做悬赏写过一个是使用道具返回主城,然后再使用在返回那个迷宫的地方的。
这个跟那个属于不同的类型,不过也挺不错的~
支持个~
作者: 873007324    时间: 2011-8-22 09:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: a88953327    时间: 2011-11-9 18:25
脚本 什么都看不懂     还是事件比较简单
作者: 步兵中尉    时间: 2011-11-14 21:32
看到这个想起了轩辕剑3里李靖的乘龙诀。
话说以前站上发过相关传送系统,脚本操作,而且事件控制。物品对应公共事件似乎就可以了。
感谢分享这个技术
作者: 小小西    时间: 2013-8-30 18:03
下载显示有毒
作者: 、、威龙    时间: 2013-9-19 14:01
我用公用事件做出了一个传送道具
作者: 、、威龙    时间: 2013-9-19 14:02
我去搜刮素材了。。、




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