赞 | 1 |
VIP | 38 |
好人卡 | 7 |
积分 | 3 |
经验 | 52355 |
最后登录 | 2024-10-23 |
在线时间 | 853 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 300
- 在线时间
- 853 小时
- 注册时间
- 2014-5-5
- 帖子
- 948
|
第一个问题跳过
第二个用脚本简单点- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
- # 自定义内容解释:
- # TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x,
- # 传送去的地图y],角色朝向]
- #
- # 编号请按照0、1、2、3……顺序往下排布
- # 当编号的开关打开的时候,才可以选择这个传送地点
- # 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系
- # 如果是其他方向请自己改。
- #
- # 需要制作脚本,请点击66rpg.com最底部的QQ交谈
- #
- # 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件:
- # 呼叫脚本:$scene = Scene_Teleport.new
- #
- # 制作者:柳柳
- #==============================================================================
- TOWNS=[]
- TOWNS[0]=["测试点",26,[1,9,3],2]
- TOWNS[1]=["揽仙布店",27,[2,11,12],6]
- TOWNS[2]=["",0,[3,3,6],4]
- TOWNS[3]=["",0,[4,2,6],4]
- TOWNS[4]=["",0,[5,2,6],4]
- TOWNS[5]=["",0,[6,9,6],4]
- TOWNS[6]=["",0,[1,2,3],2]
- TOWNS[7]=["",0,[1,2,5],4]
- TOWNS[8]=["",0,[3,3,6],4]
- TOWNS[9]=["",0,[4,2,6],4]
- TOWNS[10]=["",0,[5,2,6],4]
- TOWNS[11]=["",0,[6,9,6],4]
- TOWNS[12]=["",0,[1,2,3],2]
- TOWNS[13]=["",0,[1,2,5],4]
- TOWNS[14]=["",0,[3,3,6],4]
- TOWNS[15]=["",0,[4,2,6],4]
- TOWNS[16]=["",0,[5,2,6],4]
- TOWNS[17]=["",0,[6,9,6],4]
- TOWNS[18]=["",0,[1,2,3],2]
- TOWNS[19]=["",0,[1,2,5],4]
- TOWNS[20]=["",0,[3,3,6],4]
- TOWNS[21]=["",0,[4,2,6],4]
- TOWNS[22]=["",0,[5,2,6],4]
- TOWNS[23]=["",0,[6,9,6],4]
- TOWNS[24]=["",0,[1,2,3],2]
- TOWNS[25]=["",0,[1,2,5],4]
- TOWNS[26]=["",0,[3,3,6],4]
- TOWNS[27]=["",0,[4,2,6],4]
- TOWNS[28]=["",0,[5,2,6],4]
- TOWNS[29]=["",0,[6,9,6],4]
- TOWNS[30]=["",0,[1,2,3],2]
- TOWNS[31]=["",0,[1,2,5],4]
- TOWNS[32]=["",0,[3,3,6],4]
- TOWNS[33]=["",0,[4,2,6],4]
- TOWNS[34]=["",0,[5,2,6],4]
- TOWNS[35]=["",0,[6,9,6],4]
- TOWNS[36]=["",0,[1,2,3],2]
- TOWNS[37]=["",0,[1,2,5],4]
- TOWNS[38]=["",0,[3,3,6],4]
- TOWNS[39]=["",0,[4,2,6],4]
- TOWNS[40]=["",0,[5,2,6],4]
- TOWNS[41]=["",0,[6,9,6],4]
- TOWNS[42]=["",0,[1,2,3],2]
- TOWNS[43]=["",0,[1,2,5],4]
- TOWNS[44]=["",0,[3,3,6],4]
- TOWNS[45]=["",0,[4,2,6],4]
- TOWNS[46]=["",0,[5,2,6],4]
- TOWNS[47]=["",0,[6,9,6],4]
- #==============================================================================
- # ■ Window_Teleport
- #------------------------------------------------------------------------------
- # 处理传送的窗口
- #==============================================================================
- class Window_Teleport < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- super(640,640,64,64)
- self.contents = Bitmap.new(width, height)
- self.opacity = 180
- get_towns
- draw_towns
- @column_max = 1
- end
- #--------------------------------------------------------------------------
- # ● 获取可到达的城镇和窗口大小
- #--------------------------------------------------------------------------
- def get_towns
- @carol3_towns = []
- @width_temp = 0
- @cont_use = false
- for town in TOWNS
- if $game_switches[town[1]]==true
- @carol3_towns.push(town)
- if contents.text_size(town[0]).width >= @width_temp
- @width_temp = contents.text_size(town[0]).width
- end
- end
- end
- @item_max = @carol3_towns.size
- if @item_max == 0
- @carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
- @width_temp = contents.text_size(@carol3_towns[0][0]).width
- @item_max = 1
- @cont_use = true
- end
- self.width = [@width_temp+32,480].min
- self.height = [(@item_max+1)*32,360].min
- self.x = (640-self.width)/2
- self.y = (480-self.height)/2
- self.contents = Bitmap.new(width-32,row_max*32)
- end
- #--------------------------------------------------------------------------
- # ● 描绘城镇名称
- #--------------------------------------------------------------------------
- def draw_towns
- for i in 0...@carol3_towns.size
- self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1)
- end
- end
- #--------------------------------------------------------------------------
- # ● 返回的内容
- #========================================================================
- # ● 地图编号
- #--------------------------------------------------------------------------
- def map_id
- return @carol3_towns[self.index][2][0]
- end
- #--------------------------------------------------------------------------
- # ● 地图x坐标
- #--------------------------------------------------------------------------
- def map_x
- return @carol3_towns[self.index][2][1]
- end
- #--------------------------------------------------------------------------
- # ● 地图y坐标
- #--------------------------------------------------------------------------
- def map_y
- return @carol3_towns[self.index][2][2]
- end
- #--------------------------------------------------------------------------
- # ● 角色朝向
- #--------------------------------------------------------------------------
- def map_direction
- return @carol3_towns[self.index][2][3]
- end
- #--------------------------------------------------------------------------
- # ● 判断是否一个城市都没有
- #--------------------------------------------------------------------------
- def cant_use?
- return @cont_use
- end
- end
- #==============================================================================
- # ■ Scene_Teleport
- #------------------------------------------------------------------------------
- # 处理传送执行的类
- #==============================================================================
- class Scene_Teleport
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
- def main
- $game_system.se_play($data_system.decision_se)
- @carol3_trans_white = false
- @carol3_map_sprite = Spriteset_Map.new
- @carol3_teleport_window = Window_Teleport.new
- if @carol3_teleport_window.cant_use?
- @carol3_teleport_window.index = -1
- else
- @carol3_teleport_window.index = 0
- end
- @carol3_teleport_window.active = true
- Graphics.transition
- loop do
- Graphics.update
- Input.update
- carol3_update
- if $scene != self
- break
- end
- end
- if @carol3_trans_white==true
- @carol3_white_sprite = Sprite.new
- @carol3_white_sprite.bitmap = Bitmap.new(640,480)
- @carol3_white_sprite.opacity = 0
- @carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))
- for i in 0..20
- @carol3_white_sprite.opacity += 15
- @carol3_teleport_window.opacity -= 12
- @carol3_teleport_window.contents_opacity -= 12
- Graphics.update
- end
- Graphics.freeze
- Graphics.transition(0)
- Graphics.update
- @carol3_map_sprite.dispose
- $game_map.setup($game_temp.player_new_map_id)
- $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
- $game_player.turn_down
- $game_player.straighten
- $game_map.autoplay
- Graphics.frame_reset
- for i in 0..20
- @carol3_white_sprite.opacity -= 15
- Graphics.update
- end
- @carol3_white_sprite.dispose
- @carol3_teleport_window.dispose
- Graphics.freeze
- else
- Graphics.freeze
- @carol3_teleport_window.dispose
- @carol3_map_sprite.dispose
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def carol3_update
- @carol3_teleport_window.update
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- $scene = Scene_Map.new
- return
- end
- if Input.trigger?(Input::C)
- if @carol3_teleport_window.index == -1
- $game_system.se_play($data_system.cancel_se)
- $scene = Scene_Map.new
- return
- else
- $game_temp.player_new_map_id = @carol3_teleport_window.map_id
- $game_temp.player_new_x = @carol3_teleport_window.map_x
- $game_temp.player_new_y = @carol3_teleport_window.map_y
- $game_temp.player_new_direction = @carol3_teleport_window.map_direction
- $game_temp.player_transferring = true
- $game_temp.transition_processing = true
- $game_temp.transition_name = ""
- $scene = Scene_Map.new
- @carol3_trans_white = true
- Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
- return
- end
- end
- end
- end
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
复制代码 第三个问题- #==============================================================================
- # ■ RPG追加定义,使用@符号分类
- #==============================================================================
- module RPG
- class Enemy
- def name
- name = @name.split(/@/)[0]
- return name != nil ? name : ''
- end
- def local
- local = @name.split(/@/)[1]
- return local != nil ? local : "未知"
- end
- end
-
- end
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
复制代码- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
- #——————————————————————————————————————
- #魔物图鉴
- #
- #战斗终了时自动添加敌人进入图鉴(class Scene_Battle start_phase5 追加。)
- #
- #Window_MonsterBook_Info 的 DROP_ITEM_NEED_ANALYZE 为 true
- #则会显示敌人携带的物品,通常为false
- #图鉴完成度的表示功能追加
- #SHOW_COMPLETE_TYPE 的数值可以设定
- #当为1,显示现有个数/总数,当为2,显示完成百分比,当为3,全显示。
- #使用方法:$scene = Scene_MonsterBook.new
- #特殊敌人ID指定:对于不想加入怪物图鉴的,首先设置一种属性名为“不加入图鉴”
- #然后让这个敌人对此属性为A即可。
- #——————————————————————————————————————
- module Enemy_Book_Config
- DROP_ITEM_NEED_ANALYZE = false #显示物品
- EVA_NAME = "回避" #回避修正的名称(因为数据库中没有定义)
- SHOW_COMPLETE_TYPE = 3 #图鉴完成率表示方法
- end
- class Data_MonsterBook
- #--------------------------------------------------------------------------
- # ● 图鉴用ID設定
- #--------------------------------------------------------------------------
- def enemy_book_id_set
- data = [0]
- data[1] = 2
- data[2] = 1
- data[3] = 15
- data[4] = 25
- data[5] = 18
- data[6] = 30
- return data
- end
- end
- class Game_Temp
- attr_accessor :enemy_book_data
- alias temp_enemy_book_data_initialize initialize
- def initialize
- temp_enemy_book_data_initialize
- @enemy_book_data = Data_MonsterBook.new
- end
- end
- class Game_Party
- attr_accessor :enemy_info # 出会った敵情報(図鑑用)
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- alias book_info_initialize initialize
- def initialize
- book_info_initialize
- @enemy_info = {}
- end
- #--------------------------------------------------------------------------
- # ● エネミー情報の追加(図鑑用)
- # type : 通常遭遇かアナライズか 0:通常 1:アナライズ -1:情報削除
- # 0:無遭遇 1:遭遇済 2:アナライズ済
- #--------------------------------------------------------------------------
- def add_enemy_info(enemy_id, type = 0)
- case type
- when 0
- if @enemy_info[enemy_id] == 2
- return false
- end
- @enemy_info[enemy_id] = 1
- when 1
- @enemy_info[enemy_id] = 2
- when -1
- @enemy_info[enemy_id] = 0
- end
- end
- #--------------------------------------------------------------------------
- # ● 魔物図鑑の最大登録数を取得
- #--------------------------------------------------------------------------
- def enemy_book_max
- return $game_temp.enemy_book_data.id_data.size - 1
- end
- #--------------------------------------------------------------------------
- # ● 魔物図鑑の現在登録数を取得
- #--------------------------------------------------------------------------
- def enemy_book_now
- now_enemy_info = @enemy_info.keys
- # 登録無視の属性IDを取得
- no_add = $game_temp.enemy_book_data.no_add_element
- new_enemy_info = []
- for i in now_enemy_info
- enemy = $data_enemies[i]
- next if enemy.name == ""
- if enemy.element_ranks[no_add] == 1
- next
- end
- new_enemy_info.push(enemy.id)
- end
- return new_enemy_info.size
- end
- #--------------------------------------------------------------------------
- # ● 魔物図鑑の完成率を取得
- #--------------------------------------------------------------------------
- def enemy_book_complete_percentage
- e_max = enemy_book_max.to_f
- e_now = enemy_book_now.to_f
- comp = e_now / e_max * 100
- return comp.truncate
- end
- end
- class Interpreter
- def enemy_book_max
- return $game_party.enemy_book_max
- end
- def enemy_book_now
- return $game_party.enemy_book_now
- end
- def enemy_book_comp
- return $game_party.enemy_book_complete_percentage
- end
- end
- class Scene_Battle
- alias add_enemy_info_start_phase5 start_phase5
- def start_phase5
- for enemy in $game_troop.enemies
- # エネミーが隠れ状態でない場合
- unless enemy.hidden
- # 敵遭遇情報追加
- $game_party.add_enemy_info(enemy.id, 0)
- end
- end
- add_enemy_info_start_phase5
- end
- end
- class Window_Base < Window
- #--------------------------------------------------------------------------
- # ● エネミーの戦闘後獲得アイテムの描画
- #--------------------------------------------------------------------------
- def draw_enemy_drop_item(enemy, x, y)
- self.contents.font.color = normal_color
- treasures = []
- if enemy.item_id > 0
- treasures.push($data_items[enemy.item_id])
- end
- if enemy.weapon_id > 0
- treasures.push($data_weapons[enemy.weapon_id])
- end
- if enemy.armor_id > 0
- treasures.push($data_armors[enemy.armor_id])
- end
- # 現状ではとりあえず1つのみ描画
- if treasures.size > 0
- item = treasures[0]
- bitmap = RPG::Cache.icon(item.icon_name)
- opacity = 255
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
- name = treasures[0].name
- else
- self.contents.font.color = disabled_color
- name = "无"
- end
- self.contents.draw_text(x+28, y, 212, 32, name)
- end
- #--------------------------------------------------------------------------
- # ● エネミーの図鑑IDの描画
- #--------------------------------------------------------------------------
- def draw_enemy_book_id(enemy, x, y)
- self.contents.font.color = normal_color
- id = $game_temp.enemy_book_data.id_data.index(enemy.id)
- self.contents.draw_text(x, y, 32, 32, id.to_s)
- end
- #--------------------------------------------------------------------------
- # ● エネミーの名前の描画
- # enemy : エネミー
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_enemy_name(enemy, x, y)
- self.contents.font.color = normal_color
- self.contents.draw_text(x, y, 152, 32, enemy.name)
- end
- #--------------------------------------------------------------------------
- # ● エネミーグラフィックの描画(アナライズ)
- # enemy : エネミー
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_enemy_graphic(enemy, x, y, opacity = 255)
- bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
- cw = bitmap.width
- ch = bitmap.height
- src_rect = Rect.new(0, 0, cw, ch)
- x = x + (cw / 2 - x) if cw / 2 > x
- self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
- end
- #--------------------------------------------------------------------------
- # ● エネミーの獲得EXPの描画
- # enemy : エネミー
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_enemy_exp(enemy, x, y)
- self.contents.font.color = system_color
- self.contents.draw_text(x, y, 120, 32, "EXP")
- self.contents.font.color = normal_color
- self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
- end
- #--------------------------------------------------------------------------
- # ● エネミーの獲得GOLDの描画
- # enemy : エネミー
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_enemy_gold(enemy, x, y)
- self.contents.font.color = system_color
- self.contents.draw_text(x, y, 120, 32, $data_system.words.gold)
- self.contents.font.color = normal_color
- self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
- end
- end
- class Game_Enemy_Book < Game_Enemy
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(enemy_id)
- super(2,1)
- @enemy_id = enemy_id
- enemy = $data_enemies[@enemy_id]
- @battler_name = enemy.battler_name
- @battler_hue = enemy.battler_hue
- @hp = maxhp
- @sp = maxsp
- end
- end
- class Data_MonsterBook
- attr_reader :id_data
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- @id_data = enemy_book_id_set
- end
- #--------------------------------------------------------------------------
- # ● 図鑑用登録無視属性取得
- #--------------------------------------------------------------------------
- def no_add_element
- no_add = 0
- # 登録無視の属性IDを取得
- for i in 1...$data_system.elements.size
- if $data_system.elements[i] =~ /不加入图鉴/
- no_add = i
- break
- end
- end
- return no_add
- end
- #--------------------------------------------------------------------------
- # ● 図鑑用敵ID設定
- #--------------------------------------------------------------------------
- def enemy_book_id_set
- data = [0]
- no_add = no_add_element
- # 登録無視の属性IDを取得
- for i in 1...$data_enemies.size
- enemy = $data_enemies[i]
- next if enemy.name == ""
- if enemy.element_ranks[no_add] == 1
- next
- end
- data.push(enemy.id)
- end
- return data
- end
- end
- #==============================================================================
- # ■ Window_Enemylocal 显示敌人分类的窗口
- #==============================================================================
- class Window_Enemylocal < Window_Selectable
- attr_accessor :commands
- #--------------------------------------------------------------------------
- # ● 初始化,生成commands窗口
- #--------------------------------------------------------------------------
- def initialize
- super(0, 64, 160, 416)
- self.opacity = 255
- # self.z=999###标记
- @commands = []
- #————————生成commands窗口
- for i in 1...$data_enemies.size
- if $game_party.enemy_info[i] != 0 and $game_party.enemy_info[i] != nil
- push = true
- for com in @commands
- if com == $data_enemies[i].local
- push = false
- end
- end
- if push == true
- @commands.push($data_enemies[i].local)
- end
- end
- end
-
- if @commands == []
- @commands.push("未知区域")
- end
- @item_max = @commands.size
- self.contents = Bitmap.new(width - 32, @item_max * 32)
- refresh
- self.index = 0
- end
- #--------------------------------------------------------------------------
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- for i in 0...@item_max
- draw_item(i, normal_color)
- end
- end
- #--------------------------------------------------------------------------
- #--------------------------------------------------------------------------
- def draw_item(index, color)
- self.contents.font.color = color
- y = index * 32
- self.contents.draw_text(4, y, 128, 32, @commands[index])
- end
- #--------------------------------------------------------------------------
- # 只描绘原文字
- #--------------------------------------------------------------------------
- #def update_help
- # @help_window.set_text(@commands[self.index])
- #end
- end
- class Window_MonsterBook < Window_Selectable
- attr_reader :data
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(index=0)
- super(160, 64, 480, 416)
- @column_max = 1
- @book_data = $game_temp.enemy_book_data
- @data = @book_data.id_data.dup
- @data.shift
- @item_max = @data.size
- self.index = 0
- refresh if @item_max > 0
- end
- #--------------------------------------------------------------------------
- # ● 遭遇データを取得
- #--------------------------------------------------------------------------
- def data_set
- data = $game_party.enemy_info.keys
- data.sort!
- newdata = []
- for i in data
- next if $game_party.enemy_info[i] == 0
- # 図鑑登録無視を考慮
- if book_id(i) != nil
- newdata.push(i)
- end
- end
- return newdata
- end
-
-
- #--------------------------------------------------------------------------
- # ● 表示許可取得
- #--------------------------------------------------------------------------
- def show?(id)
- if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
- return false
- else
- return true
- end
- end
- #--------------------------------------------------------------------------
- # ● 図鑑用ID取得
- #--------------------------------------------------------------------------
- def book_id(id)
- return @book_data.index(id)
- end
- #--------------------------------------------------------------------------
- # ● エネミー取得
- #--------------------------------------------------------------------------
- def item
- return @data1[self.index].id
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- if self.contents != nil
- self.contents.dispose
- self.contents = nil
- end
- @data1 = []
- end
-
- ###########3
- def set_item(command)
- refresh
- #enemy = $data_enemies[@data[index]]
- #return if enemy == nil
- for i in 1...$data_enemies.size
- if $data_enemies[i].local == command
- enemy = $data_enemies[i]
- @data1.push( $data_enemies[i])
- end
- end
-
- @item_max = @data1.size
- if @item_max > 0
- self.contents = Bitmap.new(width - 0, row_max * 32)
- self.contents.clear
- for i in 0...$data_enemies.size
- draw_item(i)
- end
- end
- end
- #############
- #--------------------------------------------------------------------------
- # ● 項目の描画
- # index : 項目番号
- #--------------------------------------------------------------------------
- def draw_item(index)
- enemy = $data_enemies[@data1[index].id]
- return if enemy == nil
- x = 4 + index % 1 * (200 + 32)
- y = index / 1 * 32
- rect = Rect.new(x, y, self.width / @column_max - 32, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- self.contents.font.color = normal_color
- draw_enemy_book_id(enemy, x, y)
- if show?(enemy.id)
- self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
- else
- self.contents.draw_text(x + 28+16, y, 212, 32, "-----", 0)
- return
- end
- if analyze?(@data[index])
- self.contents.font.color = text_color(3)
- self.contents.draw_text(x + 256, y, 24, 32, "済", 2)
- end
- end
-
-
- #--------------------------------------------------------------------------
- # ● アナライズ済かどうか
- #--------------------------------------------------------------------------
- def analyze?(enemy_id)
- if $game_party.enemy_info[enemy_id] == 2
- return true
- else
- return false
- end
- end
- end
- class Window_MonsterBook_Info < Window_Base
- include Enemy_Book_Config
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- super(0, 0+64, 640, 480-64)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.z = 999
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh(enemy_id)
- self.contents.clear
- self.contents.font.size = 22
- enemy = Game_Enemy_Book.new(enemy_id)
- draw_enemy_graphic(enemy, 96, 240+48+64, 200)
- draw_enemy_book_id(enemy, 4, 0)
- draw_enemy_name(enemy, 48, 0)
- draw_actor_hp(enemy, 288, 0)
- draw_actor_sp(enemy, 288+160, 0)
- draw_actor_parameter(enemy, 288 , 32, 0)
- self.contents.font.color = system_color
- self.contents.draw_text(288+160, 32, 120, 32, EVA_NAME)
- self.contents.font.color = normal_color
- self.contents.draw_text(288+160 + 120, 32, 36, 32, enemy.eva.to_s, 2)
- draw_actor_parameter(enemy, 288 , 64, 3)
- draw_actor_parameter(enemy, 288+160, 64, 4)
- draw_actor_parameter(enemy, 288 , 96, 5)
- draw_actor_parameter(enemy, 288+160, 96, 6)
- draw_actor_parameter(enemy, 288 , 128, 1)
- draw_actor_parameter(enemy, 288+160, 128, 2)
- draw_enemy_exp(enemy, 288, 160)
- draw_enemy_gold(enemy, 288+160, 160)
- if analyze?(enemy.id) or !DROP_ITEM_NEED_ANALYZE
- self.contents.draw_text(288, 192, 96, 32, "掉落物品:")
- draw_enemy_drop_item(enemy, 288+96+4, 192)
- self.contents.font.color = normal_color
- #draw_element_guard(enemy, 320-32, 160-16+96)
- end
- end
- #--------------------------------------------------------------------------
- # ● アナライズ済かどうか
- #--------------------------------------------------------------------------
- def analyze?(enemy_id)
- if $game_party.enemy_info[enemy_id] == 2
- return true
- else
- return false
- end
- end
- end
- class Scene_MonsterBook
- include Enemy_Book_Config
- #--------------------------------------------------------------------------
- # ● メイン処理
- #--------------------------------------------------------------------------
- def main
- $game_temp.enemy_book_data = Data_MonsterBook.new
- # ウィンドウを作成
-
- @title_window = Window_Base.new(0, 0, 640, 64)
- @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
- @title_window.contents.draw_text(4, 0, 320, 32, "魔物图鉴", 0)
-
- if SHOW_COMPLETE_TYPE != 0
- case SHOW_COMPLETE_TYPE
- when 1
- e_now = $game_party.enemy_book_now
- e_max = $game_party.enemy_book_max
- text = e_now.to_s + "/" + e_max.to_s
- when 2
- comp = $game_party.enemy_book_complete_percentage
- text = comp.to_s + "%"
- when 3
- e_now = $game_party.enemy_book_now
- e_max = $game_party.enemy_book_max
- comp = $game_party.enemy_book_complete_percentage
- text = e_now.to_s + "/" + e_max.to_s + " " + comp.to_s + "%"
- end
- if text != nil
- @title_window.contents.draw_text(320, 0, 288, 32, text, 2)
- end
- end
- @itemcommand_window = Window_Enemylocal.new
- @command_index = @itemcommand_window.index
- @main_window = Window_MonsterBook.new
- @itemcommand_window.active = true
- @main_window.active = false
- # インフォウィンドウを作成 (不可視?非アクティブに設定)
- @info_window = Window_MonsterBook_Info.new
- @info_window.z = 110
- @info_window.visible = false
- @info_window.active = false
- @visible_index = 0
- @main_window.set_item(@itemcommand_window.commands[@command_index])
- # トランジション実行
- Graphics.transition
- # メインループ
- loop do
- # ゲーム画面を更新
- Graphics.update
- # 入力情報を更新
- Input.update
- # フレーム更新
- update
- # 画面が切り替わったらループを中断
- if $scene != self
- break
- end
- end
- # トランジション準備
- Graphics.freeze
- # ウィンドウを解放
- @itemcommand_window.dispose
- @main_window.dispose
- @info_window.dispose
- @title_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- # ウィンドウを更新
- @itemcommand_window.update
- @main_window.update
- @info_window.update
- if @command_index != @itemcommand_window.index
- @command_index = @itemcommand_window.index
- @main_window.set_item(@itemcommand_window.commands[@command_index])
- end
- if @itemcommand_window.active
- update_itemcommand
- return
- end
- # if @main_window.active
- # update_main
- # return
- #end
- if @info_window.active
- update_info
- return
- end
- # メインウィンドウがアクティブの場合: update_target を呼ぶ
- if @main_window.active
- update_main
- return
- end
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新 (メインウィンドウがアクティブの場合)
- #--------------------------------------------------------------------------
- def update_main
- # B ボタンが押された場合
- if Input.trigger?(Input::B)
- # キャンセル SE を演奏
- $game_system.se_play($data_system.cancel_se)
- @main_window.active = false
- @itemcommand_window.active = true
- return
- end
- # C ボタンが押された場合
- if Input.trigger?(Input::C)
- if @main_window.item == nil or @main_window.show?(@main_window.item) == false
- # ブザー SE を演奏
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # 決定 SE を演奏
- $game_system.se_play($data_system.decision_se)
- @main_window.active = false
- @info_window.active = true
- @info_window.visible = true
- @visible_index = @main_window.index
- @info_window.refresh(@main_window.item)
- return
- end
- end
- #######################
- def update_itemcommand
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- #$game_temp.in_item = false#initem
- $scene = Scene_Map.new
- return
- end
- if Input.trigger?(Input::C)
- #$game_temp.in_item = true#initem
- #if @itemlist_window.item_number == 0
- # $game_system.se_play($data_system.buzzer_se)
- #return
- #end
- $game_system.se_play($data_system.decision_se)
- @itemcommand_window.active = false
- @main_window.active = true
- @main_window.index = 0
- return
- end
- end
-
- #--------------------------------------------------------------------------
- # ● フレーム更新 (インフォウィンドウがアクティブの場合)
- #--------------------------------------------------------------------------
- def update_info
- # B ボタンが押された場合
- if Input.trigger?(Input::B)
- # キャンセル SE を演奏
- $game_system.se_play($data_system.cancel_se)
- @main_window.active = true
- @info_window.active = false
- @info_window.visible = false
- return
- end
- # C ボタンが押された場合
- if Input.trigger?(Input::C)
- # 決定 SE を演奏
- #$game_system.se_play($data_system.decision_se)
- return
- end
- if Input.trigger?(Input::L)
- # 決定 SE を演奏
- $game_system.se_play($data_system.decision_se)
- loop_end = false
- while loop_end == false
- if @visible_index != 0
- @visible_index -= 1
- else
- @visible_index = @main_window.data.size - 1
- end
- loop_end = true if @main_window.show?(@main_window.data[@visible_index])
- end
- id = @main_window.data[@visible_index]
- @info_window.refresh(id)
- return
- end
- if Input.trigger?(Input::R)
- # 決定 SE を演奏
- $game_system.se_play($data_system.decision_se)
- loop_end = false
- while loop_end == false
- if @visible_index != @main_window.data.size - 1
- @visible_index += 1
- else
- @visible_index = 0
- end
- loop_end = true if @main_window.show?(@main_window.data[@visible_index])
- end
- id = @main_window.data[@visible_index]
- @info_window.refresh(id)
- return
- end
- end
- end
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
复制代码 |
|