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

Project1

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

[已经解决] 截图存档和路牌提示脚本出现问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
139 小时
注册时间
2013-1-30
帖子
65
跳转到指定楼层
1
发表于 2013-4-16 13:20:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 575539640 于 2013-4-17 06:17 编辑

放在一起了,
打开后没有什么问题,截图存档也很正常,但是一旦经
过路牌提示的区域后,再存档就会弹出错误



却弹出来这么个错误

工程在下面

Project2.rar (261.37 KB, 下载次数: 59)



愁死我了。。。。

Lv1.梦旅人

梦石
0
星屑
38
在线时间
1165 小时
注册时间
2012-3-16
帖子
5336
2
发表于 2013-4-17 00:42:43 | 只看该作者
覆盖原来的路标脚本~
我是抄的我会说吗...
  1. #===============================================================================
  2. # 路牌提示系统 v1.02 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 功能说明:
  5. #   仿《黑暗圣剑传说2 序章》(柳柳)的介绍里提到的效果写的,据说是空之轨迹里的效果
  6. #   原游戏的实现方式是公共事件播放动画, 以下引用原描述:
  7. #     "方便玩家的路牌设计, 当靠近路牌的时候, 路牌就会指引玩家的方向"
  8. #------------------------------------------------------------------------------
  9. # 使用说明(详见范例工程):
  10. #   ① 制作路牌皮肤文件, 包含三个文件(64×64的窗体和两个箭头标志)
  11. #   ② 在地图上创建路牌事件, 并在事件中用注释写上指路内容, 允许多项
  12. #   ③ 指路内容格式为(忽略空格): 方向代号 = 该方向所指向的名称
  13. #      其中方向代号为: 2 4 6 8 (下 左 右 上)
  14. #      例: 2 = 悦来客栈        显示"↓ 悦来客栈"
  15. #   ④ 创建与路牌事件同名的区域, 表示玩家进入该区域时激活相应路牌
  16. #------------------------------------------------------------------------------
  17. # 更新历史:
  18. #   2008-09-09    v1.00  原始版
  19. #   2008-10-19    v1.01  增加场所跳转时路牌的显示控制
  20. #   2010-10-05    v1.02  修复路牌正在显示时无法存档的错误
  21. #==============================================================================
  22. # □ Spriteset_Roadsign
  23. #==============================================================================
  24. class Spriteset_Roadsign
  25.   #--------------------------------------------------------------------------
  26.   # ○ 参数设定
  27.   #--------------------------------------------------------------------------
  28.   # 窗体最小宽度
  29.   WIDTH_MIN = 96
  30.   # 窗体显示时间
  31.   SHOW_TIME = 60
  32.   
  33.   # 字体
  34.   FONT = "宋体"
  35.   # 字体大小
  36.   FONT_SIZE = 14
  37.   # 字体阴影
  38.   FONT_SHADOW = false
  39.   # 字体颜色
  40.   FONT_COLOR = Color.new(0,0,0)
  41.   
  42.   # 路标皮肤
  43.   SIGN_SKIN = "Roadsign"
  44.   # 皮肤厚度(边框)
  45.   SKIN_SIZE = 8
  46.   # 路标不透明度
  47.   SIGN_OPACITY = 192
  48.   
  49.   # 路标箭头坐标微调
  50.   X_ADJ = 0
  51.   Y_ADJ = 0
  52.   #--------------------------------------------------------------------------
  53.   # ○ 初始化对象
  54.   #     event : 事件
  55.   #--------------------------------------------------------------------------
  56.   def initialize(event)
  57.     @event = event
  58.     # 显示控制符
  59.     [url=home.php?mod=space&uid=32215]@show[/url] = true
  60.     # 显示时间计数
  61.     @show_count = 0
  62.     # 相对定位
  63.     @x_plus = 0
  64.     @y_plus = 0
  65.     # 描绘内容
  66.     @texts = get_texts
  67.     # 主'窗体'
  68.     @base_sprite = Sprite.new
  69.     @base_sprite.z = 999
  70.     @base_sprite.opacity = 0
  71.     # 大小和尺寸
  72.     set_size
  73.     get_pos
  74.     reset_pos
  75.     # 描绘皮肤
  76.     draw_skin
  77.     refresh
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ○ 释放
  81.   #--------------------------------------------------------------------------
  82.   def dispose
  83.     @base_sprite.bitmap.dispose
  84.     @base_sprite.dispose
  85.     @arrow_sprite.bitmap.dispose
  86.     @arrow_sprite.dispose
  87.     # 还原事件
  88.     $game_map.events.each_value{|event| event.roadsign = "" if event == @event}
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ○ 是否释放
  92.   #--------------------------------------------------------------------------
  93.   def disposed?
  94.     return @base_sprite.disposed?
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ○ 更新画面
  98.   #--------------------------------------------------------------------------
  99.   def update
  100.     # 跟随路标
  101.     reset_pos
  102.     # 显示期
  103.     if @show_count > 0
  104.       @show_count -= 1
  105.       return
  106.     end
  107.     # 开始显示期
  108.     if @base_sprite.opacity >= 255
  109.       @show_count = SHOW_TIME
  110.       @show = false
  111.     end
  112.     # 显示中或隐藏中
  113.     if @show
  114.       @base_sprite.opacity += 8 if @base_sprite.opacity < 255
  115.     else
  116.       @base_sprite.opacity -= 8 if @base_sprite.opacity > 0
  117.     end
  118.     @arrow_sprite.opacity = @base_sprite.opacity
  119.     # 自释放
  120.     self.dispose if !@show and @base_sprite.opacity <= 0
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ○ 获取描绘文本
  124.   #--------------------------------------------------------------------------
  125.   def get_texts
  126.     down  = @event.read_roadsign("2")
  127.     left  = @event.read_roadsign("4")
  128.     right = @event.read_roadsign("6")
  129.     up    = @event.read_roadsign("8")
  130.     texts = []
  131.     texts.push("↓ " + down)  if down  != ""
  132.     texts.push("← " + left)  if left  != ""
  133.     texts.push("→ " + right) if right != ""
  134.     texts.push("↑ " + up)    if up    != ""
  135.     return texts
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ○ 创建位图
  139.   #--------------------------------------------------------------------------
  140.   def create_bitmap(width, height)
  141.     @base_sprite.bitmap = Bitmap.new(width, height)
  142.     # 字体设定
  143.     @base_sprite.bitmap.font = Font.new(FONT, FONT_SIZE)
  144.     @base_sprite.bitmap.font.shadow = FONT_SHADOW
  145.     @base_sprite.bitmap.font.color = FONT_COLOR
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ○ 设定尺寸
  149.   #--------------------------------------------------------------------------
  150.   def set_size
  151.     # 最小宽度
  152.     width = WIDTH_MIN
  153.     # 测试宽度的临时位图
  154.     test_bitmap = Bitmap.new(1, 1)
  155.     test_bitmap.font = Font.new(FONT, FONT_SIZE)
  156.     for text in @texts
  157.       c_width = test_bitmap.text_size(text).width
  158.       width = c_width if c_width > width
  159.     end
  160.     height = @texts.size * line_height
  161.     create_bitmap(width+SKIN_SIZE*2, height+SKIN_SIZE*2)
  162.     # 释放临时位图
  163.     test_bitmap.dispose
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ○ 获取坐标
  167.   #--------------------------------------------------------------------------
  168.   def get_pos
  169.     x = @event.screen_x - width/2
  170.     if @event.screen_y > height
  171.       y = @event.screen_y - height - 32
  172.       # 箭头类型标志
  173.       up = true
  174.     else
  175.       y = @event.screen_y
  176.       # 箭头类型标志
  177.       up = false
  178.     end
  179.     # 相对定位
  180.     @x_plus = x - @event.screen_x
  181.     @y_plus = y - @event.screen_y
  182.     set_arrow_sprite(up)
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ○ 重设坐标
  186.   #--------------------------------------------------------------------------
  187.   def reset_pos
  188.     # 相对定位
  189.     @base_sprite.x = @event.screen_x + @x_plus
  190.     @base_sprite.y = @event.screen_y + @y_plus
  191.     @arrow_sprite.x = @event.screen_x - 16 + X_ADJ
  192.     @arrow_sprite.y = @event.screen_y - 32 + Y_ADJ
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ○ 设定箭头
  196.   #--------------------------------------------------------------------------
  197.   def set_arrow_sprite(up = true)
  198.     @arrow_sprite = Sprite.new
  199.     @arrow_sprite.opacity = 0
  200.     # 上下两套箭头
  201.     case up
  202.     when true
  203.       bitmap = Cache.system(SIGN_SKIN + "_arrow_up")
  204.       rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  205.       @arrow_sprite.bitmap = Bitmap.new(rect.width, rect.height)
  206.       @arrow_sprite.bitmap.blt(0, 0, bitmap, rect, SIGN_OPACITY)
  207.     when false
  208.       bitmap = Cache.system(SIGN_SKIN + "_arrow_down")
  209.       rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  210.       @arrow_sprite.bitmap = Bitmap.new(rect.width, rect.height)
  211.       @arrow_sprite.bitmap.blt(0, 0, bitmap, rect, SIGN_OPACITY)
  212.     end
  213.     bitmap.dispose
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ○ 获取宽度
  217.   #--------------------------------------------------------------------------
  218.   def width
  219.     return @base_sprite.width
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ○ 获取高度
  223.   #--------------------------------------------------------------------------
  224.   def height
  225.     return @base_sprite.height
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ○ 获取行高
  229.   #--------------------------------------------------------------------------
  230.   def line_height
  231.     return FONT_SIZE + 2
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ○ 描绘皮肤
  235.   #--------------------------------------------------------------------------
  236.   def draw_skin
  237.     # 皮肤文件
  238.     skin = Cache.system(SIGN_SKIN)
  239.     @base_sprite.bitmap.clear
  240.     # 描绘角
  241.     src_rect = Rect.new(0,0,16,16)
  242.     @base_sprite.bitmap.blt(0, 0, skin, src_rect, SIGN_OPACITY)
  243.     src_rect = Rect.new(48,0,16,16)
  244.     @base_sprite.bitmap.blt(width-16, 0, skin, src_rect, SIGN_OPACITY)
  245.     src_rect = Rect.new(0,48,16,16)
  246.     @base_sprite.bitmap.blt(0, height-16, skin, src_rect, SIGN_OPACITY)
  247.     src_rect = Rect.new(48,48,16,16)
  248.     @base_sprite.bitmap.blt(width-16, height-16, skin, src_rect, SIGN_OPACITY)
  249.     # 描绘边
  250.     dest_rect = Rect.new(16,0,width-32,16)
  251.     src_rect = Rect.new(16,0,32,16)
  252.     @base_sprite.bitmap.stretch_blt(dest_rect, skin, src_rect, SIGN_OPACITY)
  253.     dest_rect = Rect.new(16,height-16,width-32,16)
  254.     src_rect = Rect.new(16,48,32,16)
  255.     @base_sprite.bitmap.stretch_blt(dest_rect, skin, src_rect, SIGN_OPACITY)
  256.     dest_rect = Rect.new(0,16,16,height-32)
  257.     src_rect = Rect.new(0,16,16,32)
  258.     @base_sprite.bitmap.stretch_blt(dest_rect, skin, src_rect, SIGN_OPACITY)
  259.     dest_rect = Rect.new(width-16,16,16,height-32)
  260.     src_rect = Rect.new(48,16,16,32)
  261.     @base_sprite.bitmap.stretch_blt(dest_rect, skin, src_rect, SIGN_OPACITY)
  262.     # 描绘底
  263.     dest_rect = Rect.new(16,16,width-32,height-32)
  264.     src_rect = Rect.new(16,16,32,32)
  265.     @base_sprite.bitmap.stretch_blt(dest_rect, skin, src_rect, SIGN_OPACITY)
  266.     # 释放皮肤文件
  267.     skin.dispose
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ○ 刷新
  271.   #--------------------------------------------------------------------------
  272.   def refresh
  273.     # 逐行
  274.     for i in [email protected]
  275.       rect = Rect.new(SKIN_SIZE, i*line_height+SKIN_SIZE, @base_sprite.width, line_height)
  276.       text = @texts[i]
  277.       @base_sprite.bitmap.draw_text(rect, text)
  278.     end
  279.   end
  280. end
  281. #==============================================================================
  282. # ■ Game_Event
  283. #==============================================================================
  284. class Game_Event < Game_Character
  285.   #--------------------------------------------------------------------------
  286.   # ◎ 定义实例变量
  287.   #--------------------------------------------------------------------------
  288.   attr_reader   :id                      # 事件 ID
  289.   attr_reader   :name                    # 事件名称
  290.   attr_accessor :roadsign                # 路标标志
  291.   #--------------------------------------------------------------------------
  292.   # ◎ 初始化对像
  293.   #     map_id : 地图 ID
  294.   #     event  : 事件 (RPG::Event)
  295.   #--------------------------------------------------------------------------
  296.   def initialize(map_id, event)
  297.     super()
  298.     @map_id = map_id
  299.     @event = event
  300.     @id = @event.id
  301.     @erased = false
  302.     @starting = false
  303.     @through = true
  304.     # 事件名称
  305.     @name = @event.name
  306.     # 路标
  307.     @roadsign = ''
  308.     moveto(@event.x, @event.y)            # 向初期位置移动
  309.     refresh
  310.   end
  311.   #-------------------------------------------------------------------------
  312.   # ○ 读取路标指定字段
  313.   #     section : 字段名
  314.   #     ignore_caps : 忽略大小写(仅字段名)
  315.   #-------------------------------------------------------------------------
  316.   def read_roadsign(section, ignore_caps = false)
  317.     result = ''
  318.     # 忽略大小写时,全部转大写
  319.     section.upcase! if ignore_caps
  320.     # 转symbol方便比较
  321.     s = section.to_sym
  322.     @roadsign.each_line{|line|
  323.       temp = line.split(/=/)
  324.       # 去掉干扰字符
  325.       temp.each {|i| i.strip!}
  326.       temp[0].upcase! if ignore_caps
  327.       if temp[0].to_sym == s
  328.         unless temp[1] == nil
  329.           result = temp[1]
  330.         end
  331.         # 如果希望同名字段值覆盖前面的字段,去掉下一行
  332.         break
  333.       end
  334.     }
  335.     return result
  336.   end
  337. end
  338. #==============================================================================
  339. # ■ Game_Player
  340. #==============================================================================
  341. class Game_Player < Game_Character
  342.   #--------------------------------------------------------------------------
  343.   # ◎ 刷新画面
  344.   #--------------------------------------------------------------------------
  345.   def update
  346.     last_real_x = @real_x
  347.     last_real_y = @real_y
  348.     last_moving = moving?
  349.     move_by_input
  350.     super
  351.     update_scroll(last_real_x, last_real_y)
  352.     update_vehicle
  353.     update_nonmoving(last_moving)
  354.     # 路标窗体刷新
  355.     unless @roadsign_sprite == nil or @roadsign_sprite.disposed?
  356.       @roadsign_sprite.update
  357.     end
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ◎ 增加步数
  361.   #--------------------------------------------------------------------------
  362.   def increase_steps
  363.     super
  364.     return if @move_route_forcing
  365.     return if in_vehicle?
  366.     $game_party.increase_steps
  367.     $game_party.on_player_walk
  368.     # 路标操作
  369.     setup_roadsign_spriteset
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ○ 显示路标
  373.   #--------------------------------------------------------------------------
  374.   def setup_roadsign_spriteset
  375.     name = roadsign_name
  376.     return if name == "" or name == @old_name
  377.     @old_name = name
  378.     event = get_event(name)
  379.     return if event == nil
  380.     roadsign_event = setup_roadsign_event(event)
  381.     return if roadsign_event == nil
  382.     # 生成路标窗体
  383.     if @roadsign_sprite == nil or @roadsign_sprite.disposed?
  384.       @roadsign_sprite = Spriteset_Roadsign.new(roadsign_event)
  385.     end
  386.   end
  387.   #--------------------------------------------------------------------------
  388.   # ○ 设置路标
  389.   #     event   : 事件(Game_Map内部)
  390.   #--------------------------------------------------------------------------
  391.   def setup_roadsign_event(event)
  392.     return if event.list == nil
  393.     for line in event.list
  394.       if line.code == 108 or 408
  395.         unless line.parameters.empty?
  396.           event.roadsign += line.parameters.to_s + "\r\n"
  397.         end
  398.       end
  399.     end
  400.     return event
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ○ 查找路标名称
  404.   #--------------------------------------------------------------------------
  405.   def roadsign_name
  406.     for area in $data_areas.values
  407.       return area.name if $game_player.in_area?(area)
  408.     end
  409.     @old_name = ""
  410.     return @old_name
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ○ 获取事件
  414.   #     event_name   : 事件名 $game_map.events.values
  415.   #--------------------------------------------------------------------------
  416.   def get_event(event_name)
  417.     $game_map.events.each_value {|event| event.refresh;
  418.     return event if event.name == event_name}
  419.     return nil
  420.   end
  421.   #--------------------------------------------------------------------------
  422.   # ○ 释放路标
  423.   #--------------------------------------------------------------------------
  424.   def dispose_roadsign
  425.     if @roadsign_sprite
  426.       @roadsign_sprite.dispose
  427.       @roadsign_sprite = nil
  428.     end
  429.   end
  430. end
  431. #==============================================================================
  432. # ■ Scene_Map
  433. #==============================================================================
  434. class Scene_Map < Scene_Base
  435.   #--------------------------------------------------------------------------
  436.   # ◎ 结束处理
  437.   #--------------------------------------------------------------------------
  438.   def terminate
  439.     super
  440.     if $scene.is_a?(Scene_Battle)     # 正在切换战斗画面的情况下
  441.       @spriteset.dispose_characters   # 为了生成背景隐藏角色
  442.     end
  443.     snapshot_for_background
  444.     @spriteset.dispose
  445.     @message_window.dispose
  446.     if $scene.is_a?(Scene_Battle)     # 正在切换战斗画面的情况下
  447.       perform_battle_transition       # 执行战斗前变换
  448.     end
  449.     # 释放路标
  450.     $game_player.dispose_roadsign
  451.   end
  452. end
复制代码

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 认可答案

查看全部评分

我想要到的是保护同伴的力量,能与同伴一起欢笑的未来的力量,如果无法做到的话,那就无需继承,如果是这样的彭格列的话,那我亲手毁掉它!
  
                       欢迎加入我们的家族~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
139 小时
注册时间
2013-1-30
帖子
65
3
 楼主| 发表于 2013-4-17 06:11:48 | 只看该作者
本帖最后由 575539640 于 2013-4-17 06:17 编辑
彭格列第XI代 发表于 2013-4-17 00:42
覆盖原来的路标脚本~
我是抄的我会说吗...


好像出了一点点问题

复制的时候~粘贴进去后就成了下面说的那样了



点评

复制脚本框里的脚本,如果出错少可以手动修改,如果出错太多,可以用这个来解决。http://bbs.66rpg.com/thread-287646-1-5.html  发表于 2013-4-17 10:27
你没复错地方吧=A=我怎么没事...  发表于 2013-4-17 09:34
愁死我了。。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
139 小时
注册时间
2013-1-30
帖子
65
4
 楼主| 发表于 2013-4-17 12:57:46 | 只看该作者
彭格列第XI代 发表于 2013-4-17 00:42
覆盖原来的路标脚本~
我是抄的我会说吗...

十分感谢~~问题解决了
愁死我了。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 01:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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