Project1
标题:
如何设置主角的初始物品?
[打印本页]
作者:
creeper0924
时间:
2015-7-31 22:35
标题:
如何设置主角的初始物品?
大家安好,最近刚用RMXP,
1.请问如何设置主角的初始物品。
(比如:一进入游戏便有回复药之类的)
2.怎么做传送卷轴。
3.怎么做怪兽图鉴。
请各位大神帮忙援助。
谢谢(=゚ω゚)=
作者:
RyanBern
时间:
2015-7-31 22:53
首先,请勿一帖多问,三个无关的问题最好分别发帖询问。
如果对一些基本事件概念不清楚请参考置顶的入门教程。
1. 最简单的办法就是把在主角初期位置的地图上设置一个事件,事件开启条件为自动执行,内容为增减一系列物品,当然增添完物品之后必须打开独立开关,然后在第二页事件页上把事件出现的条件选择对应的独立开关,防止重复获得物品。
2. 在公共事件里添加场所移动的指令,然后将物品关联到这个公共事件上。
3. 你需要怪物图鉴脚本,请在论坛上搜索一下。
作者:
邪月长啸
时间:
2015-8-1 12:39
第一个问题跳过
第二个用脚本简单点
#==============================================================================
# 本脚本来自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,使用和转载请保留此信息
#==============================================================================
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1