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

Project1

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

[RMXP发布] 敌人图鉴

[复制链接]

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

跳转到指定楼层
1
发表于 2014-3-29 14:38:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 天地有正气 于 2015-8-29 17:01 编辑




本脚本有许多bug,请勿下载!!!下周修复!







@learn @Index
题外话:怎么一大堆都是VA发布的呢!来个XP的吧!
XP貌似没有敌人图鉴呢!于是我就写了个……功能没有VA那么强大……
也许会有一些bug,请大家多报告吧!
  1. # XZZH 6
  2. # 敌人图鉴
  3. # 作者:天地有正气
  4. # 版本号:0.1
  5. # 说明:使用$scene = Scene_EnemyBook.new来呼出。
  6. # 注意:一旦和敌人战斗过,就会被记载在图鉴里。
  7. class Scene_Battle
  8.   alias xz_battle_end battle_end
  9.   def battle_end(result)
  10.     for i in 0..$game_troop.enemies.size
  11.       if $game_troop.enemies[i] != nil
  12.         id = $game_troop.enemies[i].id
  13.         $data_enemies[id].learn = true
  14.       end
  15.     end  
  16.     xz_battle_end(result)
  17.   end  
  18. end  
  19. module RPG
  20.   class Enemy
  21.     alias xz_initialize initialize
  22.     def initialize
  23.       xz_initialize
  24.       @learn = false
  25.     end
  26.     attr_accessor :learn
  27.   end
  28. end
  29. class Window_EnemyName < Window_Selectable
  30.   def initialize
  31.     super(0,0,240,480)
  32.     self.contents = Bitmap.new(width - 32, height - 32)
  33.     @column_max = 1
  34.     @index = 0
  35.     refresh
  36.   end
  37.   def get_id(index)
  38.     @id = []
  39.      for i in 0..$data_enemies.size
  40.        if $data_enemies[i] != nil
  41.          if $data_enemies[i].learn
  42.            @id.push($data_enemies[i].id)
  43.          end
  44.        end
  45.      end
  46.      return @id[index]
  47.   end  
  48.   def refresh
  49.     self.contents.clear
  50.     @data = []
  51.     for i in 1..$data_enemies.size
  52.       if $data_enemies[i] != nil
  53.         if $data_enemies[i].learn
  54.           @data.push($data_enemies[i].name)
  55.         end
  56.       end
  57.     end
  58.     @item_max = @data.size
  59.     if @item_max > 0
  60.       self.contents = Bitmap.new(width - 32, row_max * 32)
  61.       for i in 0...@item_max
  62.         draw_name(i)
  63.       end
  64.     end  
  65.   end
  66.   def draw_name(index)
  67.     self.contents.draw_text(20,index*32,240,32,@data[index])
  68.   end
  69. end
  70. class Window_EnemyStatus < Window_Base
  71.   def initialize
  72.     super(240,0,400,480)
  73.     self.contents = Bitmap.new(width - 32, height - 32)
  74.   end
  75.   def set_enemy(id)
  76.     self.contents.clear

  77.     text = $data_enemies[id].maxhp
  78.     self.contents.draw_text(10,0,400,32,"最大生命值:#{text}")
  79.     text = $data_enemies[id].maxsp
  80.     self.contents.draw_text(10,32,400,32,"最大魔力值:#{text}")
  81.     text = $data_enemies[id].str
  82.     self.contents.draw_text(10,64,400,32,"力量:#{text}")
  83.     text = $data_enemies[id].dex
  84.     self.contents.draw_text(10,96,400,32,"灵巧:#{text}")
  85.     text = $data_enemies[id].agi
  86.     self.contents.draw_text(10,128,400,32,"速度:#{text}")
  87.     text = $data_enemies[id].int
  88.     self.contents.draw_text(10,160,400,32,"魔力:#{text}")
  89.     text = $data_enemies[id].atk
  90.     self.contents.draw_text(10,192,400,32,"攻击力:#{text}")
  91.     text = $data_enemies[id].pdef
  92.     self.contents.draw_text(10,224,400,32,"物理防御:#{text}")
  93.     text = $data_enemies[id].mdef
  94.     self.contents.draw_text(10,256,400,32,"魔法防御:#{text}")
  95.     name = $data_enemies[id].battler_name
  96.     hue = $data_enemies[id].battler_hue
  97.     bmp = RPG::Cache.battler(name,hue)
  98.     rect = Rect.new(0,0,400,480)
  99.     self.contents.blt(120,60,bmp,rect,160)   
  100.   end  
  101. end  
  102. class Scene_EnemyBook
  103.   def main
  104.     @name = Window_EnemyName.new
  105.     @status = Window_EnemyStatus.new
  106.     Graphics.transition
  107.     loop do
  108.       Graphics.update
  109.       Input.update
  110.       update
  111.       if $scene != self
  112.         break
  113.       end
  114.     end
  115.     Graphics.freeze
  116.     @name.dispose
  117.     @status.dispose
  118.   end  
  119.   def update
  120.     @name.update
  121.     if Input.trigger?(Input::B)
  122.       $scene = Scene_Map.new
  123.     end
  124.     if Input.trigger?(Input::C)
  125.       $game_system.se_play($data_system.decision_se)
  126.       id = @name.get_id(@name.index)
  127.       @status.set_enemy(id)
  128.     end  
  129.   end  
  130. end
复制代码
@protosssonny     



url请自行去掉 = =     

点评

帮汝编辑了一下  发表于 2014-3-29 14:41

评分

参与人数 1星屑 +40 收起 理由
RyanBern + 40 塞糖

查看全部评分

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2014-3-29 18:12:57 | 只看该作者
能给个效果图吗···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2014-3-29 20:15:34 | 只看该作者
支持LZ这样的小插件,加油!

不过窃以为脚本不是很完善,在这里提几点小建议:
1.采用$data_enemies全局变量会丢失保存数据,因为$data_enemies每次打开游戏就会被重新载入一次,而上次记录的“learn”标记会丢失。因此这种需要保存的变量不要设置在Enemy属性中,应该另想办法。
2.描绘敌人姓名的那个窗口的refresh编写习惯不太好,建议参考一下Window_Item的相同方法。在这里给一个饭粒:
  1. def refresh
  2.   if self.contents != nil
  3.     self.contents.dispose
  4.     self.contents = nil
  5.   end
  6.   @data = []
  7.   for i in 0...$data_enemies.size
  8.     if Xxxx # 在这里判定遇敌条件,不可再用全局数据库变量
  9.       @data.push($data_enemies[id])
  10.     end
  11.   end
  12.   @item_max = @data.size
  13.   if @item_max > 0
  14.     self.contents = Bitmap.new(width - 32, 32 * @item_max)
  15.     for i in 0...@item_max
  16.       draw_item(i)
  17.     end
  18.   end
  19. end
复制代码
3.敌人图鉴场景中,利用 C 键来实现查看不同敌人的设计略微有些不方便。最好去掉 C 键的判定,改为直接通过光标位置判断该显示的敌人详细信息,可能会爽快点。
提示:可以将set_enemy(id)修改一下,并利用实例变量@id来记录显示的敌人 ID,方法可以这样写:
  1. def set_enemy(id)
  2.   if @id != id
  3.     @id = id
  4.     # 下面进行描绘操作
  5.   end
  6. end
复制代码
而在Enemy_Name中可以修改get_id为
  1. def get_id # 注意这里可以略去参数
  2.   return @data[self.index].id
  3. end
复制代码
你懂脚本我就不多说了
4.还有就是如果一个敌人都没遇到的话,可能会有Bug,最好看一下。

说多了,该撤了。

点评

谢谢!  发表于 2014-3-30 20:38
太感谢了!区区90糖不成敬意  发表于 2014-3-29 20:34

评分

参与人数 1星屑 +90 收起 理由
天地有正气 + 90 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

4
 楼主| 发表于 2014-3-30 15:37:01 | 只看该作者
RyanBern 发表于 2014-3-29 20:15
支持LZ这样的小插件,加油!

不过窃以为脚本不是很完善,在这里提几点小建议:

多谢您的回复!
关于您的回复:
1.我想可以把数据存储在rxdata文件里。
2.刷新方法是不大好,准备添加。

点评

按照我的理解来说,可以借助$game_variables来存储这个对象,这样的话遇敌信息就直接跟存档挂钩,不用新开一个rxdata了。  发表于 2014-3-30 18:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
274 小时
注册时间
2014-2-22
帖子
335
5
发表于 2014-5-1 18:36:16 | 只看该作者
我只想说....效果图呢?被楼主吃了么?

点评

我肚子好饿啊 - -  发表于 2014-5-6 18:15
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-22 03:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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