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

Project1

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

[已经解决] 图鉴怎么做?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
跳转到指定楼层
1
发表于 2009-7-24 18:01:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我最近下载一个叫《幻想RPG大陆》的游戏,非常好玩,并且有怪物图鉴。那么这个图鉴该如何制作呢?

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
2
发表于 2009-7-24 18:46:49 | 只看该作者
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
3
 楼主| 发表于 2009-7-24 19:27:22 | 只看该作者
会跳出提示,第427行错误的。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
4
 楼主| 发表于 2009-7-24 19:37:06 | 只看该作者
#===========================================================================
# 一、将想显示的属性设定好,是一个数组,最多六个
# 二、设定不显示的怪物编号
# 四、在数据库里设置备注成为怪物说明
# 三、在事件上使用脚本:$Scene = Scene_EnemyDex.new 进入图鉴
#===========================================================================
$属性显示 = [9,10,11,12,13,14]
$不显示的怪物 = []
#---------------------------------------------------------------------------
# 对Game_Party添加新的定义
#---------------------------------------------------------------------------
class Game_Party
  #-------------------------------------------------------------------------
  # 出示化实例变量
  #-------------------------------------------------------------------------
  attr_accessor :enemy_view
  #-------------------------------------------------------------------------
  # 初始化
  #-------------------------------------------------------------------------
  alias new_initialize initialize
  def initialize
    new_initialize
    @enemy_view = []
    for i in 1...$data_enemies.size
      @enemy_view[i] = 0
    end
  end
  #-------------------------------------------------------------------------
  # 打开图鉴
  #-------------------------------------------------------------------------
  def add_enemy_view(n)
    if n == "all"
      for i in 1...$data_enemies.size
        @enemy_view[i] += 1
      end
    else
      @enemy_view[n] += 1
    end
  end
end

#---------------------------------------------------------------------------
# 新建图鉴窗口
#---------------------------------------------------------------------------
class Window_EnemyDex_Info < Window_Base
  #-------------------------------------------------------------------------
  # 初始化
  #-------------------------------------------------------------------------
  def initialize(id)
    super(0,56,544,360)
    @id = id
    @now_id = 0
    @element = $属性显示
    refresh
  end
  #-------------------------------------------------------------------------
  # 刷新
  #-------------------------------------------------------------------------
  def refresh
    if @now_id != @id
      self.contents.clear
      draw_enemy_name(@id)
      draw_enemy_hp(@id)
      draw_enemy_mp(@id)
      draw_enemy_atk(@id)
      draw_enemy_def(@id)
      draw_enemy_spi(@id)
      draw_enemy_agi(@id)
      draw_enemy_hit(@id)
      draw_enemy_eva(@id)
      draw_enemy_exp(@id)
      draw_enemy_gold(@id)
      draw_enemy_item1(@id)
      draw_enemy_item2(@id)
      draw_enemy_levitate(@id)
      draw_enemy_has_critical(@id)
      draw_enemy_element_ranks(@id)
      draw_enemy_action(@id)
    end
    @now_id = @id
  end
  #-------------------------------------------------------------------------
  # 名字
  #-------------------------------------------------------------------------
  def draw_enemy_name(id)
    self.contents.font.color = Color.new(255,255,0,255)
    self.contents.draw_text(0,0,160,24,$data_enemies[id].name)
  end
  #-------------------------------------------------------------------------
  # 生命
  #-------------------------------------------------------------------------
  def draw_enemy_hp(id)
    self.contents.font.color = system_color
    self.contents.draw_text(0,24,40,24,"HP")
    self.contents.font.color = normal_color
    self.contents.draw_text(40,24,80,24,$data_enemies[id].maxhp)
  end
  #-------------------------------------------------------------------------
  # 精神
  #-------------------------------------------------------------------------
  def draw_enemy_mp(id)
    self.contents.font.color = system_color
    self.contents.draw_text(0,48,40,24,"MP")
    self.contents.font.color = normal_color
    self.contents.draw_text(40,48,80,24,$data_enemies[id].maxmp)
  end
  #-------------------------------------------------------------------------
  # 图像
  #-------------------------------------------------------------------------
  def draw_enemy_picture(id)
    bitmap = Cache.battler($data_enemies[id].battler_name,$data_enemies[id].battler_hue)
    src_rect = Rect.new(0,0,bitmap.width,bitmap.height)
    self.contents.blt(((self.width-32)-bitmap.width)/2,((self.height-32)-bitmap.height)/2,bitmap,src_rect)
  end
  #-------------------------------------------------------------------------
  # 攻击
  #-------------------------------------------------------------------------
  def draw_enemy_atk(id)
    self.contents.font.color = Color.new(255,128,128,255)
    self.contents.draw_text(0,72,60,24,"攻击力")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,72,80,24,$data_enemies[id].atk,2)
  end
  #-------------------------------------------------------------------------
  # 防御
  #-------------------------------------------------------------------------
  def draw_enemy_def(id)
    self.contents.font.color = Color.new(255,128,128,255)
    self.contents.draw_text(0,96,60,24,"防御力")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,96,80,24,$data_enemies[id].def,2)
  end
  #-------------------------------------------------------------------------
  # 精神
  #-------------------------------------------------------------------------
  def draw_enemy_spi(id)
    self.contents.font.color = Color.new(255,128,128,255)
    self.contents.draw_text(0,120,60,24,"精神力")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,120,80,24,$data_enemies[id].spi,2)
  end
  #-------------------------------------------------------------------------
  # 敏捷
  #-------------------------------------------------------------------------
  def draw_enemy_agi(id)
    self.contents.font.color = Color.new(255,128,128,255)
    self.contents.draw_text(0,144,60,24,"敏捷力")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,144,80,24,$data_enemies[id].agi,2)
  end
  #-------------------------------------------------------------------------
  # 命中
  #-------------------------------------------------------------------------
  def draw_enemy_hit(id)
    self.contents.font.color = Color.new(255,128,255,255)
    self.contents.draw_text(0,168,60,24,"命中率")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,168,80,24,$data_enemies[id].hit,2)
  end
  #-------------------------------------------------------------------------
  # 回避
  #-------------------------------------------------------------------------
  def draw_enemy_eva(id)
    self.contents.font.color = Color.new(255,128,255,255)
    self.contents.draw_text(0,192,60,24,"回避率")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,192,80,24,$data_enemies[id].eva,2)
  end
  #-------------------------------------------------------------------------
  # 经验
  #-------------------------------------------------------------------------
  def draw_enemy_exp(id)
    self.contents.font.color = Color.new(240,255,130,255)
    self.contents.draw_text(0,216,60,24,"经验值")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,216,80,24,$data_enemies[id].exp,2)
  end
  #-------------------------------------------------------------------------
  # 金钱
  #-------------------------------------------------------------------------
  def draw_enemy_gold(id)
    self.contents.font.color = Color.new(240,255,130,255)
    self.contents.draw_text(0,240,60,24,"金钱")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,240,80,24,$data_enemies[id].gold,2)
  end
  #-------------------------------------------------------------------------
  # 物品1
  #-------------------------------------------------------------------------
  def draw_enemy_item1(id)
    self.contents.font.color = Color.new(128,255,128,255)
    self.contents.draw_text(0,264,60,24,"物品一")
    self.contents.font.color = normal_color
    case $data_enemies[id].drop_item1.kind
    when 0
      self.contents.draw_text(80,264,80,24,"无",2)
    when 1
      self.contents.draw_text(80,264,80,24,$data_items[$data_enemies[id].drop_item1.item_id].name,2)
    when 2
      self.contents.draw_text(80,264,80,24,$data_weapons[$data_enemies[id].drop_item1.weapon_id].name,2)
    when 3
      self.contents.draw_text(80,264,80,24,$data_armors[$data_enemies[id].drop_item1.armor_id].name,2)
    end
  end
  #-------------------------------------------------------------------------
  # 物品2
  #-------------------------------------------------------------------------
  def draw_enemy_item2(id)
    self.contents.font.color = Color.new(128,255,128,255)
    self.contents.draw_text(0,288,60,24,"物品二")
    self.contents.font.color = normal_color
    case $data_enemies[id].drop_item2.kind
    when 0
      self.contents.draw_text(80,288,80,24,"无",2)
    when 1
      self.contents.draw_text(80,288,80,24,$data_items[$data_enemies[id].drop_item2.item_id].name,2)
    when 2
      self.contents.draw_text(80,288,80,24,$data_weapons[$data_enemies[id].drop_item2.weapon_id].name,2)
    when 3
      self.contents.draw_text(80,288,80,24,$data_armors[$data_enemies[id].drop_item2.armor_id].name,2)
    end
  end
  #-------------------------------------------------------------------------
  # 空中
  #-------------------------------------------------------------------------
  def draw_enemy_levitate(id)
    self.contents.font.color = $data_enemies[id].levitate == true ? Color.new(255,255,0,255) : Color.new(150,150,150,255)
    self.contents.draw_text(200,264,160,24,"配置在空中")
  end
  #-------------------------------------------------------------------------
  # 重击
  #-------------------------------------------------------------------------
  def draw_enemy_has_critical(id)
    self.contents.font.color = $data_enemies[id].has_critical == true ? Color.new(255,255,0,255) : Color.new(150,150,150,255)
    self.contents.draw_text(200,288,160,24,"有会心一击")
  end
  #-------------------------------------------------------------------------
  # 属性
  #-------------------------------------------------------------------------
  def draw_enemy_element_ranks(id)
    self.contents.font.color = Color.new(255,180,255,255)
    self.contents.draw_text(380,0,60,24,"属性")
    self.contents.font.color = normal_color
    x = 0
    for i in @element
      self.contents.draw_text(380,x*48+24,80,24,$data_system.elements[i])
      case $data_enemies[id].element_ranks[i]
      when 1
        percent = "200%"
        width = 100
        c1 = Color.new(255,255,64,255)
        c2 = Color.new(255,128,128,255)
      when 2
        percent = "150%"
        width = 75
        c1 = Color.new(255,255,64,255)
        c2 = Color.new(255,128,128,255)
      when 3
        percent = "100%"
        width = 50
        c1 = Color.new(255,255,64,255)
        c2 = Color.new(128,255,128,255)
      when 4
        percent = "50%"
        width = 25
        c1 = Color.new(255,128,128,255)
        c2 = Color.new(255,255,64,255)
      when 5
        percent = "0%"
        width = 0
        c1 = Color.new(255,128,128,255)
        c2 = Color.new(255,255,64,255)
      when 6
        percent = "-100%"
        width = 100
        c1 = Color.new(255,128,255,255)
        c2 = Color.new(128,255,128,255)
      end
      a = 380
      b = 6
      for i in 0...12
        self.contents.fill_rect(a,x*48+48+b,100,1,Color.new(0,0,0,200))
        a += 0.5
        b += 1
      end
      self.contents.gradient_fill_rect(380,x*48+48+6,width,1,c1,c2)
      self.contents.gradient_fill_rect(380.5,x*48+48+7,width,1,c1,c2)
      self.contents.gradient_fill_rect(381,x*48+48+8,width,1,c1,c2)
      self.contents.gradient_fill_rect(381.5,x*48+48+9,width,1,c1,c2)
      self.contents.gradient_fill_rect(382,x*48+48+10,width,1,c1,c2)
      self.contents.gradient_fill_rect(382.5,x*48+48+11,width,1,c1,c2)
      self.contents.gradient_fill_rect(383,x*48+48+12,width,1,c1,c2)
      self.contents.gradient_fill_rect(383.5,x*48+48+13,width,1,c1,c2)
      self.contents.gradient_fill_rect(384,x*48+48+14,width,1,c1,c2)
      self.contents.gradient_fill_rect(384.5,x*48+48+15,width,1,c1,c2)
      self.contents.gradient_fill_rect(385,x*48+48+16,width,1,c1,c2)
      self.contents.gradient_fill_rect(385.5,x*48+48+17,width,1,c1,c2)
      self.contents.draw_text(380,x*48+40,100,24,percent,2)
      x += 1
      break if x >= 6
    end
  end
  #-------------------------------------------------------------------------
  # 行动
  #-------------------------------------------------------------------------
  def draw_enemy_action(id)
    self.contents.font.color = Color.new(0,255,255,255)
    self.contents.draw_text(200,0,60,24,"行动")
    self.contents.font.color = normal_color
    x = 1
    for action in $data_enemies[id].actions
      if action.kind == 0
        case action.basic
        when 0
          self.contents.draw_text(200,x*24,160,24,"#{x}. "+"攻击")
        when 1
          self.contents.draw_text(200,x*24,160,24,"#{x}. "+"防御")
        when 2
          self.contents.draw_text(200,x*24,160,24,"#{x}. "+"逃跑")
        when 3
          self.contents.draw_text(200,x*24,160,24,"#{x}. "+"待机")
        end
      else
        self.contents.draw_text(200,x*24,160,24,"#{x}. "+$data_skills[action.skill_id].name)
      end
      x += 1
      break if x >= 11
    end
  end
end

#---------------------------------------------------------------------------
# 新建图鉴窗口
#---------------------------------------------------------------------------
class Window_EnemyDex_Intro < Window_Base
  #-------------------------------------------------------------------------
  # 初始化
  #-------------------------------------------------------------------------
  def initialize(id)
    super(0,56,544,360)
    @id = id
    @now_id = 0
    refresh
  end
  #-------------------------------------------------------------------------
  # 刷新
  #-------------------------------------------------------------------------
  def refresh
    if @now_id != @id
      self.contents.clear
      draw_enemy_picture(@id)
    end
    @now_id = @id
  end
  #-------------------------------------------------------------------------
  # 图像
  #-------------------------------------------------------------------------
  def draw_enemy_picture(id)
    bitmap = Cache.battler($data_enemies[id].battler_name,$data_enemies[id].battler_hue)
    src_rect = Rect.new(0,0,bitmap.width,bitmap.height)
    self.contents.blt(((self.width-32)-bitmap.width)/2,((self.height-32)-bitmap.height)/2,bitmap,src_rect)
  end
end

#---------------------------------------------------------------------------
# 选择窗口
#---------------------------------------------------------------------------
class Window_EnemyDex < Window_Selectable
  #-------------------------------------------------------------------------
  # 初始化
  #-------------------------------------------------------------------------
  def initialize
    super(0,56,544,360)
    @column_max = 2
    self.index = 0
    refresh
  end
  #-------------------------------------------------------------------------
  # 获取敌人
  #-------------------------------------------------------------------------
  def enemy
    return @data[self.index]
  end
  #-------------------------------------------------------------------------
  # 刷新
  #-------------------------------------------------------------------------
  def refresh
    @data = []
    for i in 1...$data_enemies.size
      if !$不显示的怪物.include?(i)
        @data.push($data_enemies[i])
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #-------------------------------------------------------------------------
  # 显示
  #-------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    enemy = @data[index]
    if $game_party.enemy_view[enemy.id] > 0
      rect.width -= 4
      self.contents.draw_text(rect.x+4,rect.y,(self.width-32)/2,24,"#{index+1}. " + enemy.name)
    else
      rect.width -= 4
      self.contents.draw_text(rect.x+4,rect.y,(self.width-32)/2,24,"----------------")
    end
  end
  #-------------------------------------------------------------------------
  # 帮助
  #-------------------------------------------------------------------------
  def update_help
    view = $game_party.enemy_view[enemy.id]
    @help_window.set_text(view > 0 ? "编号 #{enemy.id}" : "----------------")
  end
end

#---------------------------------------------------------------------------
# 图鉴
#---------------------------------------------------------------------------
class Scene_EnemyDex < Scene_Base
  #-------------------------------------------------------------------------
  # 处理
  #-------------------------------------------------------------------------
  def start
    create_menu_background
    @help_window = Window_Help.new
    @enemydex_window = Window_EnemyDex.new
    @enemydex_window.help_window = @help_window
    @enemydex_window.active = true
    @enemydex_info_window = Window_EnemyDex_Info.new(@enemydex_window.enemy.id)
    @enemydex_info_window.visible = false
    @enemydex_intro_window = Window_EnemyDex_Intro.new(@enemydex_window.enemy.id)
    @enemydex_intro_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @help_window.dispose
    @enemydex_window.dispose
    @enemydex_info_window.dispose
    @enemydex_intro_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @help_window.update
    @enemydex_window.update
    @enemydex_info_window.update
    @enemydex_intro_window.update
    return select_enemy if @enemydex_window.active
    return in_info if @enemydex_info_window.visible
    return in_intro if @enemydex_intro_window.visible
  end
  #--------------------------------------------------------------------------
  # 选择敌人
  #--------------------------------------------------------------------------
  def select_enemy
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    end
    if Input.trigger?(Input::C)
      if $game_party.enemy_view[@enemydex_window.enemy.id] > 0
        Sound.play_decision
        @enemydex_window.active = false
        @enemydex_window.visible = false
        @enemydex_intro_window = Window_EnemyDex_Intro.new(@enemydex_window.enemy.id)
        @enemydex_intro_window.visible = true
      else
        Sound.play_buzzer
      end
    end
  end
  #--------------------------------------------------------------------------
  # 详情察看
  #--------------------------------------------------------------------------
  def in_info
    view = $game_party.enemy_view[@enemydex_window.enemy.id]
    @help_window.set_text("发现数:#{view}")
    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
      @enemydex_window.visible = false
      @enemydex_intro_window = Window_EnemyDex_Intro.new(@enemydex_window.enemy.id)
      @enemydex_intro_window.visible = true
      @enemydex_info_window.visible = false
    end
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      Sound.play_cancel
      @enemydex_window.visible = true
      @enemydex_window.active = true
      @enemydex_info_window.visible = false
      @help_window.set_text(view > 0 ? "编号 #{@enemydex_window.enemy.id}" : "----------------")
    end
  end
  #--------------------------------------------------------------------------
  # 详情察看
  #--------------------------------------------------------------------------
  def in_intro
    @b = ""
    text = @enemydex_window.enemy.note.dup
    text.split(/[\r\n]+/).each { |line|
    if line =~ /\[(note|备注|備註) \w+\]/
      a = line.split(/ /)[1]
      while ((c = a.slice!(/./m)) != nil)
        @b += c if c != "]"
      end
    end;}
    @b = @b != "" ? @b : "资料不详"
    @help_window.set_text(@b)
    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
      @enemydex_window.visible = false
      @enemydex_info_window = Window_EnemyDex_Info.new(@enemydex_window.enemy.id)
      @enemydex_info_window.visible = true
      @enemydex_intro_window.visible = false
    end
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      Sound.play_cancel
      @enemydex_window.visible = true
      @enemydex_window.active = true
      @enemydex_intro_window.visible = false
      view = $game_party.enemy_view[@enemydex_window.enemy.id]
      @help_window.set_text(view > 0 ? "编号 #{@enemydex_window.enemy.id}" : "----------------")
    end
  end
end

#----------------------------------------------------------------------------
# 追加定义
#----------------------------------------------------------------------------
class Scene_Battle
  alias new_battle_end battle_end
  def battle_end(result)
    if result == 0
      for enemy in $game_troop.members
        $game_party.add_enemy_view(enemy.enemy_id)
      end
    end
    new_battle_end(result)


一直提示第427行错误
  end
end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
5
 楼主| 发表于 2009-7-25 15:05:55 | 只看该作者
3小时,自顶,寻求帮助!!!!!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
6
发表于 2009-7-25 15:57:07 | 只看该作者
你在放入脚本之前打过怪吗?
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
7
 楼主| 发表于 2009-7-25 17:36:15 | 只看该作者
什么意思?我在做游戏不是玩游戏,测试我都不存档的。而且我脚本没做之前可以进游戏,做了以后就进不去了打不了怪
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
9 小时
注册时间
2007-2-23
帖子
26
8
发表于 2009-7-26 07:19:52 | 只看该作者
新建个工程, 然后把脚本插入▼ 插件脚本素材 下,然后在游戏里建个npc调用事件$scene = Scene_EnemyDex.new就可以用了.
如果要做到esc菜单里,还需要修改几个地方
1.vocab模块里添加"图鉴"的宏定义
2.在Scene_Menu里修改"创建命令窗口" 创建它.
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    s7 = Vocab::Enemy_Dex     #模块的调用,这里是修改的地方
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])#这里添加了s7
3.在Scene_Menu里修改" 更新指令选择输入资讯"里调用它.
      case @command_window.index
      when 0      # 用品
        $scene = Scene_Item.new
      when 1,2,3  # 技能,整备,状态
        start_actor_selection
      when 4      # 存档
        $scene = Scene_File.new(true, false, false)
      when 5      # 结束游戏
        $scene = Scene_End.new
      when 6      # 图鉴
        $scene = Scene_EnemyDex.new

前面写了个详尽的,但由于ie不知道什么原因假死了...so怨念了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
9
 楼主| 发表于 2009-8-18 19:40:36 | 只看该作者
那么就谢谢楼上的那位了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 21:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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