Project1
标题:
请问在VX里有没有类似于怪物图签的脚本?
[打印本页]
作者:
呼啦啦菜鸟
时间:
2008-3-31 08:44
标题:
请问在VX里有没有类似于怪物图签的脚本?
请问在VX里有没有类似于怪物图签的脚本?
作者:
雪流星
时间:
2008-3-31 10:41
请去技术区找
请LZ结帖
作者:
火鸡三毛老大
时间:
2008-3-31 20:44
#===========================================================================
# 一、将想显示的属性设定好,是一个数组,最多六个
# 二、设定不显示的怪物编号
# 四、在数据库里设置备注成为怪物说明
# 三、在事件上使用脚本:$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)
end
end
复制代码
原版 详情请到VX技术区看贴
VX技术区:http://rpg.blue/forumdisplay.php?fid=53
作者:
雪流星
时间:
2008-3-31 20:47
直接贴连结就好了吧?
让新人多逛逛6R的各区,才不会再发错区
作者:
火鸡三毛老大
时间:
2008-3-31 21:04
以下引用
snstar2006于2008-3-31 12:47:17
的发言:
直接贴连结就好了吧?
让新人多逛逛6R的各区,才不会再发错区
...额....这样放出来方便查找
看起来楼主是个新手 才发过1贴 而且今天才注册...{/kuk}
作者:
八云紫
时间:
2008-3-31 21:07
帮助新手,按我的理解,是帮助新手的提高能力,而不是帮助新手,使其成为伸手党。
个人意见,请无视。
作者:
水鸡三毛老大
时间:
2008-3-31 21:27
提示:
作者被禁止或删除 内容自动屏蔽
作者:
呼啦啦菜鸟
时间:
2008-3-31 22:21
谢谢~~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1