Project1
标题:
敌人图鉴
[打印本页]
作者:
天地有正气
时间:
2014-3-29 14:38
标题:
敌人图鉴
本帖最后由 天地有正气 于 2015-8-29 17:01 编辑
本脚本有许多bug,请勿下载!!!下周修复!
@learn
@Index
题外话:怎么一大堆都是VA发布的呢!来个XP的吧!
XP貌似没有敌人图鉴呢!于是我就写了个……功能没有VA那么强大……
也许会有一些bug,请大家多报告吧!
# XZZH 6
# 敌人图鉴
# 作者:天地有正气
# 版本号:0.1
# 说明:使用$scene = Scene_EnemyBook.new来呼出。
# 注意:一旦和敌人战斗过,就会被记载在图鉴里。
class Scene_Battle
alias xz_battle_end battle_end
def battle_end(result)
for i in 0..$game_troop.enemies.size
if $game_troop.enemies[i] != nil
id = $game_troop.enemies[i].id
$data_enemies[id].learn = true
end
end
xz_battle_end(result)
end
end
module RPG
class Enemy
alias xz_initialize initialize
def initialize
xz_initialize
@learn = false
end
attr_accessor :learn
end
end
class Window_EnemyName < Window_Selectable
def initialize
super(0,0,240,480)
self.contents = Bitmap.new(width - 32, height - 32)
@column_max = 1
@index = 0
refresh
end
def get_id(index)
@id = []
for i in 0..$data_enemies.size
if $data_enemies[i] != nil
if $data_enemies[i].learn
@id.push($data_enemies[i].id)
end
end
end
return @id[index]
end
def refresh
self.contents.clear
@data = []
for i in 1..$data_enemies.size
if $data_enemies[i] != nil
if $data_enemies[i].learn
@data.push($data_enemies[i].name)
end
end
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_name(i)
end
end
end
def draw_name(index)
self.contents.draw_text(20,index*32,240,32,@data[index])
end
end
class Window_EnemyStatus < Window_Base
def initialize
super(240,0,400,480)
self.contents = Bitmap.new(width - 32, height - 32)
end
def set_enemy(id)
self.contents.clear
text = $data_enemies[id].maxhp
self.contents.draw_text(10,0,400,32,"最大生命值:#{text}")
text = $data_enemies[id].maxsp
self.contents.draw_text(10,32,400,32,"最大魔力值:#{text}")
text = $data_enemies[id].str
self.contents.draw_text(10,64,400,32,"力量:#{text}")
text = $data_enemies[id].dex
self.contents.draw_text(10,96,400,32,"灵巧:#{text}")
text = $data_enemies[id].agi
self.contents.draw_text(10,128,400,32,"速度:#{text}")
text = $data_enemies[id].int
self.contents.draw_text(10,160,400,32,"魔力:#{text}")
text = $data_enemies[id].atk
self.contents.draw_text(10,192,400,32,"攻击力:#{text}")
text = $data_enemies[id].pdef
self.contents.draw_text(10,224,400,32,"物理防御:#{text}")
text = $data_enemies[id].mdef
self.contents.draw_text(10,256,400,32,"魔法防御:#{text}")
name = $data_enemies[id].battler_name
hue = $data_enemies[id].battler_hue
bmp = RPG::Cache.battler(name,hue)
rect = Rect.new(0,0,400,480)
self.contents.blt(120,60,bmp,rect,160)
end
end
class Scene_EnemyBook
def main
@name = Window_EnemyName.new
@status = Window_EnemyStatus.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@name.dispose
@status.dispose
end
def update
@name.update
if Input.trigger?(Input::B)
$scene = Scene_Map.new
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
id = @name.get_id(@name.index)
@status.set_enemy(id)
end
end
end
复制代码
@protosssonny
url请自行去掉 = =
作者:
chd114
时间:
2014-3-29 18:12
能给个效果图吗···
作者:
RyanBern
时间:
2014-3-29 20:15
支持LZ这样的小插件,加油!
不过窃以为脚本不是很完善,在这里提几点小建议:
1.采用$data_enemies全局变量会丢失保存数据,因为$data_enemies每次打开游戏就会被重新载入一次,而上次记录的“learn”标记会丢失。因此这种需要保存的变量不要设置在Enemy属性中,应该另想办法。
2.描绘敌人姓名的那个窗口的refresh编写习惯不太好,建议参考一下Window_Item的相同方法。在这里给一个饭粒:
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...$data_enemies.size
if Xxxx # 在这里判定遇敌条件,不可再用全局数据库变量
@data.push($data_enemies[id])
end
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, 32 * @item_max)
for i in 0...@item_max
draw_item(i)
end
end
end
复制代码
3.敌人图鉴场景中,利用 C 键来实现查看不同敌人的设计略微有些不方便。最好去掉 C 键的判定,改为直接通过光标位置判断该显示的敌人详细信息,可能会爽快点。
提示:可以将set_enemy(id)修改一下,并利用实例变量@id来记录显示的敌人 ID,方法可以这样写:
def set_enemy(id)
if @id != id
@id = id
# 下面进行描绘操作
end
end
复制代码
而在Enemy_Name中可以修改get_id为
def get_id # 注意这里可以略去参数
return @data[self.index].id
end
复制代码
你懂脚本我就不多说了
4.还有就是如果一个敌人都没遇到的话,可能会有Bug,最好看一下。
说多了,该撤了。
作者:
天地有正气
时间:
2014-3-30 15:37
RyanBern 发表于 2014-3-29 20:15
支持LZ这样的小插件,加油!
不过窃以为脚本不是很完善,在这里提几点小建议:
多谢您的回复!
关于您的回复:
1.我想可以把数据存储在rxdata文件里。
2.刷新方法是不大好,准备添加。
作者:
菊花侠小赵
时间:
2014-5-1 18:36
我只想说....效果图呢?被楼主吃了么?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1