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

Project1

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

[已经解决] 如何制作回程卷轴?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-6-19
帖子
45
跳转到指定楼层
1
发表于 2010-7-3 12:33:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 sqj1982 于 2010-7-3 17:16 编辑

指定地点的很简单,用公用事件就可以做了.但是要分别做不同地点的回程
如何做能够自动判断所处地图,然后根据判断结果移动到不同地点的回程卷轴呢?
还有如何做随即坐标移动的道具呢?

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
2
发表于 2010-7-3 12:40:05 | 只看该作者
地图ID可以代入【变量】,【条件分歧】可以判定变量的值。

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-6-19
帖子
45
3
 楼主| 发表于 2010-7-3 12:59:12 | 只看该作者
感谢LS,这么做应该可以,我试试看...貌似比较麻烦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
4
发表于 2010-7-3 13:35:03 | 只看该作者
上脚本
  1. #==============================================================================
  2. # ★ Teleport                                               特别感谢 Yoji Ojima
  3. #------------------------------------------------------------------------------
  4. #  制作传送道具或是技能的脚本。
  5. #==============================================================================

  6. # 瞬间传送的识别文字。
  7. # 将这段文字写在作为传送道具或技能的「备注」之中。
  8. # [效果范围] 设为 [无]、[使用场合] 设为 [菜单中] 。
  9. EXSKL_TELEPORT_SIGNATURE = "*TELEPORT"

  10. # 允许瞬间传送的开关 ID。
  11. # 当此号的开关为 ON 时,则可以使用传送物品/技能
  12. # 可以在事件内开启或关闭此功能。
  13. EXSKL_TELEPORT_PERMISSION_SID = 1

  14. # 瞬间移动列表。
  15. # 开关 ID、场所名称、地图 ID、X 座标、Y 座标、传送后角色面向 (对应四方键)
  16. # 依照上面的顺序填入
  17. # 当对应的开关为 ON 时,就能够选择该场所来瞬间移动。
  18. EXSKL_TELEPORT_PLACES =
  19. [  
  20.   [1, "雾江之村伊波", 29, 242, 191, 8],
  21.   [1, "雪2崖" , 29, 246,242, 8],
  22.   [989, "草1原" , 2,16, 9, 2],
  23. ]
  24. # 开关, 场所名称, 地图ID, X 座标, Y 座标, 面向

  25. # 传送时的 SE。
  26. # 依次指定 SE 的名称、音量、音调。(不指定时留 [])
  27. EXSKL_TELEPORT_SE = ["Teleport", 80, 100]

  28. #------------------------------------------------------------------------------

  29. class Game_Actor
  30.   alias _exstlp_skill_can_use? skill_can_use?
  31.   #--------------------------------------------------------------------------
  32.   # ● 可用技能判断 (追加定义)
  33.   #     skill : 技能
  34.   #--------------------------------------------------------------------------
  35.   def skill_can_use?(skill)
  36.     return false unless skill.is_a?(RPG::Skill)
  37.     if skill.note.include?(EXSKL_TELEPORT_SIGNATURE)
  38.       return false unless $game_party.teleport_can_use?
  39.       return false if $game_player.in_vehicle?
  40.     end
  41.     return _exstlp_skill_can_use?(skill)
  42.   end
  43. end

  44. class Game_Party
  45.   alias _exstlp_item_can_use? item_can_use?
  46.   #--------------------------------------------------------------------------
  47.   # ● 可用物品判断 (追加定义)
  48.   #     item : 物品
  49.   #--------------------------------------------------------------------------
  50.   def item_can_use?(item)
  51.     return false unless item.is_a?(RPG::Item)
  52.     return false if item_number(item) == 0
  53.     if item.note.include?(EXSKL_TELEPORT_SIGNATURE)
  54.       return false unless teleport_can_use?
  55.       return false if $game_player.in_vehicle?
  56.     end
  57.     return _exstlp_item_can_use?(item)
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ☆ 可用「瞬间移动」判定
  61.   #--------------------------------------------------------------------------
  62.   def teleport_can_use?
  63.     return false if EXSKL_TELEPORT_PLACES.empty?
  64.     return false unless $game_switches[EXSKL_TELEPORT_PERMISSION_SID]
  65.     for place in EXSKL_TELEPORT_PLACES
  66.       return true if $game_switches[place[0]]
  67.     end
  68.     return false
  69.   end
  70. end

  71. #==============================================================================
  72. # ★ Window_Teleport
  73. #------------------------------------------------------------------------------
  74. #  显示可以移动的场所列表。
  75. #==============================================================================

  76. class Window_Teleport < Window_Selectable
  77.   #--------------------------------------------------------------------------
  78.   # ☆ 初始化对象
  79.   #--------------------------------------------------------------------------
  80.   def initialize
  81.     super(0, 0, 272, 416)
  82.     refresh
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ☆ 获取项目
  86.   #--------------------------------------------------------------------------
  87.   def item
  88.     return @data[self.index]
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ☆ 刷新
  92.   #--------------------------------------------------------------------------
  93.   def refresh
  94.     self.contents.clear
  95.     @data = []
  96.     for place in EXSKL_TELEPORT_PLACES
  97.       if $game_switches[place[0]]
  98.         @data.push(place)
  99.       end
  100.     end
  101.     @item_max = [@data.size, 1].max
  102.     create_contents
  103.     for i in 0...@item_max
  104.       draw_item(i)
  105.     end
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ☆ 描绘项目
  109.   #     index : 项目索引
  110.   #--------------------------------------------------------------------------
  111.   def draw_item(index)
  112.     rect = item_rect(index)
  113.     rect.x += 4
  114.     rect.width -= 8
  115.     self.contents.clear_rect(rect)
  116.     place = @data[index]
  117.     if place != nil
  118.       self.contents.draw_text(rect, "  "+place[1])
  119.       ###################传送美化
  120.       bitmap = Cache.load_bitmap("Graphics/Pictures/", "Icon")
  121.       case place[0] #######图标一致的地图开关写在一起!
  122.       when 1..20
  123.       zuobiaox = 24 * 2 +1
  124.       zuobiaoy = 24 + 1
  125.       when 800..1000
  126.       zuobiaox = 24 * 3 +1
  127.       zuobiaoy = 0
  128.       end
  129.       rect = Rect.new(zuobiaox, zuobiaoy, 24, 24)
  130.       self.contents.blt(0, index * 24, bitmap, rect, 255)
  131.       ###################传送美化
  132.     end
  133.   end
  134. end

  135. class Scene_Item
  136.   alias _exstlp_start start
  137.   alias _exstlp_terminate terminate
  138.   alias _exstlp_update update
  139.   alias _exstlp_determine_item determine_item
  140.   #--------------------------------------------------------------------------
  141.   # ○ 开始处理 (追加定义)
  142.   #--------------------------------------------------------------------------
  143.   def start
  144.     _exstlp_start
  145.     @teleport_window = Window_Teleport.new
  146.     hide_teleport_window
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ○ 结束处理 (追加定义)
  150.   #--------------------------------------------------------------------------
  151.   def terminate
  152.     _exstlp_terminate
  153.     @teleport_window.dispose
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ○ 更新画面 (追加定义)
  157.   #--------------------------------------------------------------------------
  158.   def update
  159.     teleport_active = @teleport_window.active
  160.     _exstlp_update
  161.     @teleport_window.update
  162.     if teleport_active
  163.       update_teleport_selection
  164.     end
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ○ 确认物品 (追加定义)
  168.   #--------------------------------------------------------------------------
  169.   def determine_item
  170.     if @item.note.include?(EXSKL_TELEPORT_SIGNATURE)
  171.       show_teleport_window(@item_window.index % 2 == 0)
  172.     else
  173.       _exstlp_determine_item
  174.     end
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ☆ 显示瞬间传送窗口
  178.   #     right : 靠右对齐标签(为false时则靠左)
  179.   #--------------------------------------------------------------------------
  180.   def show_teleport_window(right)
  181.     @item_window.active = false
  182.     width_remain = 544 - @teleport_window.width
  183.     @teleport_window.x = right ? width_remain : 0
  184.     @teleport_window.visible = true
  185.     @teleport_window.active = true
  186.     @teleport_window.index = 0
  187.     if right
  188.       @viewport.rect.set(0, 0, width_remain, 416)
  189.       @viewport.ox = 0
  190.     else
  191.       @viewport.rect.set(@teleport_window.width, 0, width_remain, 416)
  192.       @viewport.ox = @teleport_window.width
  193.     end
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ☆ 隐藏瞬间传送窗口
  197.   #--------------------------------------------------------------------------
  198.   def hide_teleport_window
  199.     @item_window.active = true
  200.     @teleport_window.visible = false
  201.     @teleport_window.active = false
  202.     @viewport.rect.set(0, 0, 544, 416)
  203.     @viewport.ox = 0
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ☆ 更新瞬间传送选取
  207.   #--------------------------------------------------------------------------
  208.   def update_teleport_selection
  209.     if Input.trigger?(Input::B)
  210.       Sound.play_cancel
  211.       hide_teleport_window
  212.     elsif Input.trigger?(Input::C)
  213.       determine_teleport
  214.     end
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ☆ 确认瞬间传送
  218.   #--------------------------------------------------------------------------
  219.   def determine_teleport
  220.     place = @teleport_window.item
  221.     if place == nil
  222.       Sound.play_buzzer
  223.     else
  224.       se = EXSKL_TELEPORT_SE
  225.       RPG::SE.new(se[0], se[1], se[2]).play unless se.empty?
  226.       $game_party.last_item_id = @item.id
  227.       $game_party.consume_item(@item)
  228.       $game_player.reserve_transfer(place[2], place[3], place[4], place[5])
  229.       $scene = Scene_Map.new
  230.     end
  231.   end
  232. end

  233. class Scene_Skill
  234.   alias _exstlp_start start
  235.   alias _exstlp_terminate terminate
  236.   alias _exstlp_update update
  237.   alias _exstlp_determine_skill determine_skill
  238.   #--------------------------------------------------------------------------
  239.   # ○ 开始处理 (追加定义)
  240.   #--------------------------------------------------------------------------
  241.   def start
  242.     _exstlp_start
  243.     @teleport_window = Window_Teleport.new
  244.     hide_teleport_window
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ○ 结束处理 (追加定义)
  248.   #--------------------------------------------------------------------------
  249.   def terminate
  250.     _exstlp_terminate
  251.     @teleport_window.dispose
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ○ 更新画面 (追加定义)
  255.   #--------------------------------------------------------------------------
  256.   def update
  257.     teleport_active = @teleport_window.active
  258.     _exstlp_update
  259.     @teleport_window.update
  260.     if teleport_active
  261.       update_teleport_selection
  262.     end
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ○ 确认技能 (追加定义)
  266.   #--------------------------------------------------------------------------
  267.   def determine_skill
  268.     if @skill.note.include?(EXSKL_TELEPORT_SIGNATURE)
  269.       show_teleport_window(@skill_window.index % 2 == 0)
  270.     else
  271.       _exstlp_determine_skill
  272.     end
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ☆ 显示瞬间传送窗口
  276.   #     right : 靠右对齐标签(为false时则靠左)
  277.   #--------------------------------------------------------------------------
  278.   def show_teleport_window(right)
  279.     @skill_window.active = false
  280.     width_remain = 544 - @teleport_window.width
  281.     @teleport_window.x = right ? width_remain : 0
  282.     @teleport_window.visible = true
  283.     @teleport_window.active = true
  284.     @teleport_window.index = 0
  285.     if right
  286.       @viewport.rect.set(0, 0, width_remain, 416)
  287.       @viewport.ox = 0
  288.     else
  289.       @viewport.rect.set(@teleport_window.width, 0, width_remain, 416)
  290.       @viewport.ox = @teleport_window.width
  291.     end
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ☆ 隐藏瞬间传送窗口
  295.   #--------------------------------------------------------------------------
  296.   def hide_teleport_window
  297.     @skill_window.active = true
  298.     @teleport_window.visible = false
  299.     @teleport_window.active = false
  300.     @viewport.rect.set(0, 0, 544, 416)
  301.     @viewport.ox = 0
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ☆ 更新瞬间传送选取
  305.   #--------------------------------------------------------------------------
  306.   def update_teleport_selection
  307.     if Input.trigger?(Input::B)
  308.       Sound.play_cancel
  309.       hide_teleport_window
  310.     elsif Input.trigger?(Input::C)
  311.       determine_teleport
  312.     end
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ☆ 确认瞬间传送
  316.   #--------------------------------------------------------------------------
  317.   def determine_teleport
  318.     place = @teleport_window.item
  319.     if place == nil
  320.       Sound.play_buzzer
  321.     else
  322.       se = EXSKL_TELEPORT_SE
  323.       RPG::SE.new(se[0], se[1], se[2]).play unless se.empty?
  324.       @actor.last_skill_id = @skill.id
  325.       @actor.mp -= @actor.calc_mp_cost(@skill)
  326.       $game_player.reserve_transfer(place[2], place[3], place[4], place[5])
  327.       $scene = Scene_Map.new
  328.     end
  329.   end
  330. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-6-19
帖子
45
5
 楼主| 发表于 2010-7-3 16:45:38 | 只看该作者
回复 wangswz 的帖子
感谢,我回去整合下

   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-6-19
帖子
45
6
 楼主| 发表于 2010-7-3 16:59:52 | 只看该作者
回复 wangswz 的帖子
给个工程吧,还是不大会用
需要开关的话,实际上用事件也能解决...

   

点评

说明上都写着的啊 脚本前几行  发表于 2010-7-3 17:01
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-6-19
帖子
45
7
 楼主| 发表于 2010-7-3 17:08:52 | 只看该作者
抱歉3连了,找到合适的脚本了
http://rpg.blue/forum.php?mod=vi ... &extra=page%3D1
还是感谢LSSS的帮助

点评

同汗  发表于 2010-7-3 21:08
moy
知道3连为什么不在同一楼编辑.....编辑功能不是摆设  发表于 2010-7-3 17:17
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-19 08:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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