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

Project1

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

地图图鉴,未定义的方法pages

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2008-1-25
帖子
312
跳转到指定楼层
1
发表于 2008-9-2 03:30:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #==============================================================================
  2. #地图图鉴系统,clavia版。
  3. #版本V1.1
  4. #效果如下:
  5. #*记录除去特指不记入图鉴的地图内所有工程中的地图。
  6. #*可查询收集到的地图所有可以遇到的敌人,并且按照数据库自动排序~
  7. #*用不同的颜色表示特殊敌人(默认红色为boss,浅蓝色为标记的特殊敌人(自作主张认为是稀有敌人啦~))
  8. #*图鉴中可以显示光标指着的地图的战斗背景(嗯~算是增强效果的设定吧,不过也花费了些功夫。)
  9. #使用方法:复制此脚本所有内容,右键单击脚本编辑器中的main,选插入,粘贴到空白的脚本页即可。
  10. #不记入图鉴的地图和是否显示背景在下面定义。
  11. #在数据库最后一页增加属性“BOSS”和“稀有”来实现敌人的特殊标记
  12. #BOSS属性有效度为A的敌人在图鉴中用红色表示
  13. #稀有属性有效度为A的敌人在图鉴中用浅蓝色表示
  14. #调用方法:$scene = Scene_mapbook.new
  15. #如果事件名称为"hidden",战斗处理中的敌人将不会显示在图鉴里。
  16. #冲突性:修改了Scene_Title,解释器中的场所移动,有一些了……
  17. #修改的地方还算比较“冷僻”,冲突可能不算很大吧,嗯嗯~~
  18. #版权嘛……
  19. #还是算了吧,脚本是方便大家使用的,能有更多人受益的话我也不追究了~
  20. #==============================================================================
  21. HIDDEN = [ ]#不计算在图鉴内的地图的id,不同id之间要用英文逗号隔开哦~(数组数组)
  22. BACK_EXIST = true#是否显示战斗背景
  23. #==============================================================================
  24. # ■ Game_System
  25. #------------------------------------------------------------------------------
  26. #  附加内容。
  27. #==============================================================================
  28. class Game_System
  29.   attr_accessor :mapbook
  30.   alias book3 initialize
  31.   def initialize
  32.     book3
  33.     @mapbook = [ ]
  34.   end
  35.     def gain_map(val)
  36.       $game_system.mapbook.push(val)
  37.     end
  38.   end
  39. #==============================================================================
  40. # ■ Game_Event
  41. #------------------------------------------------------------------------------
  42. #  处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
  43. # 在 Game_Map 类的内部使用。
  44. #==============================================================================
  45. class Game_Event < Game_Character
  46. #——————————————————————————————————————
  47. # 用来返回名称
  48. #——————————————————————————————————————
  49. def name
  50.    return @event.name
  51. end  
  52. def name=(newname)
  53.    @event.name = newname
  54. end
  55. end
  56. #==============================================================================
  57. # ■ Interpreter
  58. #------------------------------------------------------------------------------
  59. #  附加内容。
  60. #==============================================================================
  61.   class Interpreter
  62.   #--------------------------------------------------------------------------
  63.   # ● 场所移动
  64.   #--------------------------------------------------------------------------
  65.   def command_201
  66.     # 战斗中的情况
  67.     if $game_temp.in_battle
  68.       # 继续
  69.       return true
  70.     end
  71.     # 场所移动中、信息显示中、过渡处理中的情况下
  72.     if $game_temp.player_transferring or
  73.        $game_temp.message_window_showing or
  74.        $game_temp.transition_processing
  75.       # 结束
  76.       return false
  77.     end
  78.     # 设置场所移动标志
  79.     $game_temp.player_transferring = true
  80.     # 指定方法为 [直接指定] 的情况下
  81.     if @parameters[0] == 0
  82.       # 设置主角的移动目标
  83.       $game_temp.player_new_map_id = @parameters[1]
  84.       $game_temp.player_new_x = @parameters[2]
  85.       $game_temp.player_new_y = @parameters[3]
  86.       $game_temp.player_new_direction = @parameters[4]
  87.       $game_system.gain_map(@parameters[1]) if !$game_system.mapbook.include?(@parameters[1])#calvia
  88.     # 指定方法为 [使用变量指定] 的情况下
  89.     else
  90.       # 设置主角的移动目标
  91.       $game_temp.player_new_map_id = $game_variables[@parameters[1]]
  92.       $game_temp.player_new_x = $game_variables[@parameters[2]]
  93.       $game_temp.player_new_y = $game_variables[@parameters[3]]
  94.       $game_temp.player_new_direction = @parameters[4]
  95.       $game_system.gain_map($game_variables[@parameters[1]]) if !$game_system.mapbook.include?($game_variables[@parameters[1]])#calvia
  96.     end
  97.     # 推进索引
  98.     @index += 1
  99.     # 有淡入淡出的情况下
  100.     if @parameters[5] == 0
  101.       # 准备过渡
  102.       Graphics.freeze
  103.       # 设置过渡处理中标志
  104.       $game_temp.transition_processing = true
  105.       $game_temp.transition_name = ""
  106.     end
  107.     # 结束
  108.     return false
  109.   end
  110. end
  111. #==============================================================================
  112. # ■ Scene_Title
  113. #------------------------------------------------------------------------------
  114. #  附加内容。
  115. #==============================================================================
  116. class Scene_Title
  117.   alias calvia_title_main main
  118.   def main
  119.     # 读取地图信息文件
  120.     $data_mapinfos = load_data("Data/MapInfos.rxdata")
  121.     calvia_title_main
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 命令 : 新游戏
  125.   #--------------------------------------------------------------------------
  126.   def command_new_game
  127.     # 演奏确定 SE
  128.     $game_system.se_play($data_system.decision_se)
  129.     # 停止 BGM
  130.     Audio.bgm_stop
  131.     # 重置测量游戏时间用的画面计数器
  132.     Graphics.frame_count = 0
  133.     # 生成各种游戏对像
  134.     $game_temp          = Game_Temp.new
  135.     $game_system        = Game_System.new
  136.     $game_switches      = Game_Switches.new
  137.     $game_variables     = Game_Variables.new
  138.     $game_self_switches = Game_SelfSwitches.new
  139.     $game_screen        = Game_Screen.new
  140.     $game_actors        = Game_Actors.new
  141.     $game_party         = Game_Party.new
  142.     $game_troop         = Game_Troop.new
  143.     $game_map           = Game_Map.new
  144.     $game_player        = Game_Player.new
  145.     # 设置初期同伴位置
  146.     $game_party.setup_starting_members
  147.     # 设置初期位置的地图
  148.     $game_map.setup($data_system.start_map_id)
  149.     $game_system.gain_map($data_system.start_map_id)#calvia
  150.     # 主角向初期位置移动
  151.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  152.     # 刷新主角
  153.     $game_player.refresh
  154.     # 执行地图设置的 BGM 与 BGS 的自动切换
  155.     $game_map.autoplay
  156.     # 刷新地图 (执行并行事件)
  157.     $game_map.update
  158.     # 切换地图画面
  159.     $scene = Scene_Map.new
  160.   end
  161. end

  162. #==============================================================================
  163. # ■ Window_Help
  164. #------------------------------------------------------------------------------
  165. #  特技及物品的说明、角色的状态显示的窗口。
  166. #==============================================================================

  167. class Window_maphelp < Window_Base
  168.   #--------------------------------------------------------------------------
  169.   # ● 初始化对像
  170.   #--------------------------------------------------------------------------
  171.   def initialize
  172.     super(0, 0, 640, 64)
  173.     self.contents = Bitmap.new(width - 32, height - 32)
  174.     self.back_opacity = 160
  175.     self.contents.draw_text(4, 0,640 - 32, 32,"地点图鉴")
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 设置文本
  179.   #     text  : 窗口显示的字符串
  180.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  181.   #--------------------------------------------------------------------------
  182.   def set_text(text)
  183.     # 如果文本和对齐方式的至少一方与上次的不同
  184.     if text != @text
  185.       # 再描绘文本
  186.       self.contents.clear
  187.       self.contents.font.color = normal_color
  188.       self.contents.draw_text(4, 0,640 - 32, 32,"地图图鉴")
  189.       self.contents.draw_text(480, 0,640 - 32, 32,"完成度")
  190.       self.contents.draw_text(548, 0,48, 32,"#{text}",1)
  191.       self.contents.draw_text(595, 0,640 - 32, 32,"%")
  192.       @text = text
  193.     self.visible = true
  194.   end
  195.   end
  196. end
  197. #==============================================================================
  198. # ■ Window_Skill
  199. #------------------------------------------------------------------------------
  200. #  特技画面、战斗画面、显示可以使用的特技浏览的窗口。
  201. #==============================================================================

  202. class Window_maplist < Window_Selectable
  203.   #--------------------------------------------------------------------------
  204.   # ● 初始化对像
  205.   #     actor : 角色
  206.   #--------------------------------------------------------------------------
  207.   def initialize
  208.     super(0,64, 280,416)
  209.     self.back_opacity = 160
  210.     @column_max = 1
  211.     @have = $game_system.mapbook
  212.     @hidden = HIDDEN
  213.     refresh
  214.     self.index = 0
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 获取特技
  218.   #--------------------------------------------------------------------------
  219.   def skill
  220.    if @have.include?(@data[self.index])
  221.     return @data[self.index]
  222.   else
  223.     return false
  224.    end
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 刷新
  228.   #--------------------------------------------------------------------------
  229.   def refresh
  230.     if self.contents != nil
  231.       self.contents.dispose
  232.       self.contents = nil
  233.     end
  234.     @data = []
  235.     for i in 1...$data_mapinfos.size + 1
  236.       skill = $data_mapinfos[i].order
  237.       if skill != nil and [email protected]?(skill)
  238.         @data.push(skill)
  239.       end
  240.     end
  241.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  242.     @item_max = @data.size
  243.     if @item_max > 0
  244.       self.contents = Bitmap.new(width - 32, row_max * 32)
  245.       for i in 0...@item_max
  246.         draw_item(i)
  247.       end
  248.     end
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 描绘项目
  252.   #     index : 项目编号
  253.   #--------------------------------------------------------------------------
  254.   def draw_item(index)
  255.     skill = @data[index]
  256.     self.contents.font.color = normal_color
  257.     #x = 4 + index  * (288 + 32)
  258.     y = index * 32
  259.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  260.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  261.     if @have.include?(skill)
  262.     self.contents.draw_text(32, y, 204, 32, $data_mapinfos[skill].name, 0)
  263.   else
  264.     self.contents.draw_text(32, y, 204, 32,"- - - - - - - - -", 0)
  265.   end
  266.   end
  267. end
  268. #==============================================================================
  269. # ■ Window_Gold
  270. #------------------------------------------------------------------------------
  271. #  显示金钱的窗口。
  272. #==============================================================================

  273. class Window_mapmain < Window_Base
  274.   #--------------------------------------------------------------------------
  275.   # ● 初始化窗口
  276.   #--------------------------------------------------------------------------
  277.   def initialize
  278.     super(280, 64, 360,416)
  279.     self.back_opacity = 160
  280.     self.contents = Bitmap.new(width - 32, height - 32)
  281.     self.contents.font.size = 16
  282.     for i in 0...$data_system.elements.size
  283.     if $data_system.elements[i] == "BOSS"
  284.       @boss = i
  285.     end
  286.     if $data_system.elements[i] == "稀有"
  287.       @xy = i
  288.     end
  289.   end
  290.     refresh
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● 刷新
  294.   #--------------------------------------------------------------------------
  295.   def refresh
  296.     self.contents.clear
  297.     self.contents.font.color = normal_color
  298.     self.contents.fill_rect(Rect.new(0,4,self.width,24), Color.new(0,51,255, 200))
  299.     self.contents.draw_text(0,0,self.width- 32,32,"存在的魔物",1)
  300.   end
  301. #--------------------------------------------------------------------------
  302.   # ● 刷新
  303.   #--------------------------------------------------------------------------
  304.   def set_map(map)
  305.     @map2 = map
  306.     self.contents.clear
  307.     self.contents.font.color = normal_color
  308.     self.contents.fill_rect(Rect.new(0,4,self.width,24), Color.new(0,51,255, 200))
  309.     self.contents.draw_text(0,0,self.width- 32,32,"存在的魔物",1)
  310.     @a = 0
  311.     @c = 0
  312.     @b = []
  313.     @d = []
  314.     @map = load_data(sprintf("Data/Map%03d.rxdata",@map2))
  315.       for i in @map.encounter_list
  316.       for j in $data_troops[i].members
  317.          @b.push(j.enemy_id)
  318.      end
  319.    end
  320.    for i in [email protected]

  321.      for j in @map.events[i].pages
  322.        for l in j.list
  323.          if l.code == 301 and @map.events[i].name != "hidden"
  324.            for m in $data_troops[l.parameters[0]].members
  325.            @b.push(m.enemy_id)
  326.          end
  327.       end
  328.     end
  329.      end
  330.    end
  331.    @b.uniq!
  332.    @b.sort!
  333.      for k in @b
  334.        self.contents.font.color = normal_color
  335.        if @boss != nil
  336.        if $data_enemies[k].element_ranks[@boss] == 1
  337.          self.contents.font.color = Color.new(255,51,0,255)
  338.        end
  339.      end
  340.      if @xy != nil
  341.        if $data_enemies[k].element_ranks[@xy] == 1
  342.         self.contents.font.color = Color.new(0,238,255,255)
  343.       end
  344.       end
  345.        self.contents.draw_text(@c * 164 + 8, @a*32 + 32,164 - 16,32,$data_enemies[k].name,1)
  346.        @a += 1
  347.        if @a > 10
  348.          @c += 1
  349.          @a = 0
  350.        end
  351.        end
  352.      end
  353.    end
  354. #==============================================================================
  355. # ■ Scene_handbook
  356. #------------------------------------------------------------------------------
  357. #  处理地名图鉴的类。
  358. #==============================================================================
  359. class Scene_mapbook
  360.   def main
  361.     @help_window = Window_maphelp.new
  362.     @list_window = Window_maplist.new
  363.     @main_window = Window_mapmain.new
  364.     @back = Sprite.new
  365.     if @list_window.skill != false
  366.     @map = load_data(sprintf("Data/Map%03d.rxdata",@list_window.skill))
  367.     @main_window.set_map(@list_window.skill)
  368.     if BACK_EXIST == true and $data_tilesets[@map.tileset_id].battleback_name != ""
  369.      @back.bitmap = Bitmap.new("Graphics/Battlebacks/#{$data_tilesets[@map.tileset_id].battleback_name}")
  370.      @back.zoom_y = (480 / @back.bitmap.height.to_f)
  371.      @back.x = 0
  372.      @back.y = 0
  373.     end
  374.   end
  375.     over = ((($game_system.mapbook - HIDDEN).size / ($data_mapinfos.size - HIDDEN.size).to_f)*100).round
  376.     @help_window.set_text("#{over}")
  377.     # 执行过渡
  378.     Graphics.transition
  379.     # 主循环
  380.     loop do
  381.       # 刷新游戏画面
  382.       Graphics.update
  383.       # 刷新输入信息
  384.       Input.update
  385.       # 刷新画面
  386.       update
  387.       # 如果画面切换的话就中断循环
  388.       if $scene != self
  389.         break
  390.       end
  391.     end
  392.     Graphics.freeze
  393.     @help_window.dispose
  394.     @list_window.dispose
  395.     @main_window.dispose
  396.     @back.dispose
  397.   end
  398.   def update
  399.     @help_window.update
  400.     @list_window.update
  401.     @main_window.update
  402.   if Input.trigger?(Input::B)
  403.       # 演奏取消 SE
  404.    $game_system.se_play($data_system.cancel_se)
  405.    $scene = Scene_Map.new
  406. end
  407. if  @list_window.skill != false and (Input.press?(Input::UP) or Input.press?(Input::DOWN))
  408.     @main_window.set_map(@list_window.skill)
  409.     @map = load_data(sprintf("Data/Map%03d.rxdata",@list_window.skill))
  410.     if BACK_EXIST == true and $data_tilesets[@map.tileset_id].battleback_name != ""
  411.      @back.bitmap = Bitmap.new("Graphics/Battlebacks/#{$data_tilesets[@map.tileset_id].battleback_name}")
  412.      @back.zoom_y = (480 / @back.bitmap.height.to_f)
  413.      @back.x = 0
  414.      @back.y = 0
  415.     end
  416.   
  417.   if $data_tilesets[@map.tileset_id].battleback_name == ""
  418.     @back.bitmap.clear if @back.bitmap != nil
  419.   end
  420.   elsif @list_window.skill == false and (Input.press?(Input::UP) or Input.press?(Input::DOWN))
  421.       @main_window.refresh
  422.     @back.bitmap.clear if @back.bitmap != nil
  423.     @back.update if @back.is_a?(Sprite)
  424. end

  425. rescue Errno::ENOENT
  426. end
  427. end
  428. #==============================================================================
  429. #只是收尾哦
  430. #==============================================================================
复制代码


     for j in @map.events.pages  <====脚本提示出错
出的错为  未定义的方法pages  

在哪里可以定义这东西,怎么写?

此贴于 2008-9-2 11:15:28 被版主darkten提醒,请楼主看到后对本贴做出回应。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-1-24 19:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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