Project1
标题:
即时消息脚本出错~
[打印本页]
作者:
宾少
时间:
2007-12-21 11:57
标题:
即时消息脚本出错~
#------------------制作by bluefool,转载请保留------------------
module Blue
#这个是控制显示最近的多少条信息的,当超出一屏能显示的值的话可通过先按一下shift
#然后用上下翻看内容。再按一次shift则解除激活
Blue_max = 4
#这个填写进如游戏时生成的系统语言,
INTRO = "欢迎到梦的回忆来."
#战斗画面时即时消息窗口的x坐标
BATAM_X = 0
#战斗画面时即时消息窗口的y坐标
BATAM_Y = 90
#用于清空hash表,可以不管它,但不要让Blue_max大于它,当然,它的值也可以改变
NAM_MAX = 50
#主要传递信息参数为函数$am,参见脚本内容
end
#-------------------------------------------
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# ● 确定时的处理
#--------------------------------------------------------------------------
def on_decision(filename)
# 文件不存在的情况下
unless FileTest.exist?(filename)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏读档 SE
$game_system.se_play($data_system.load_se)
# 写入存档数据
file = File.open(filename, "rb")
read_save_data(file)
file.close
# 还原 BGM、BGS
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
# 刷新地图 (执行并行事件)
$a = {}
$game_map.update
# 切换到地图画面
$scene = Scene_Map.new
end
end
class Game_Player < Game_Character
def update
# 本地变量记录移动信息
last_moving = moving?
# 移动中、事件执行中、强制移动路线中、
# 信息窗口一个也不显示的时候
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing or $ccc == 1
case Input.dir4
when 2
move_down
when 4
move_left
when 6
move_right
when 8
move_up
end
end
# 本地变量记忆坐标
last_real_x = @real_x
last_real_y = @real_y
super
# 角色向下移动、画面上的位置在中央下方的情况下
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
# 画面向下卷动
$game_map.scroll_down(@real_y - last_real_y)
end
# 角色向左移动、画面上的位置在中央左方的情况下
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
# 画面向左卷动
$game_map.scroll_left(last_real_x - @real_x)
end
# 角色向右移动、画面上的位置在中央右方的情况下
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
# 画面向右卷动
$game_map.scroll_right(@real_x - last_real_x)
end
# 角色向上移动、画面上的位置在中央上方的情况下
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
# 画面向上卷动
$game_map.scroll_up(last_real_y - @real_y)
end
# 不在移动中的情况下
unless moving?
# 上次主角移动中的情况
if last_moving
# 与同位置的事件接触就判定为事件启动
result = check_event_trigger_here([1,2])
# 没有可以启动的事件的情况下
if result == false
# 调试模式为 ON 并且按下 CTRL 键的情况下除外
unless $DEBUG and Input.press?(Input::CTRL)
# 遇敌计数下降
if @encounter_count > 0
@encounter_count -= 1
end
end
end
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 判定为同位置以及正面的事件启动
check_event_trigger_here([0])
check_event_trigger_there([0,1,2])
end
end
end
end
#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
# 处理标题画面的类。
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● 命令 : 新游戏
#--------------------------------------------------------------------------
def command_new_game
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 停止 BGM
Audio.bgm_stop
# 重置测量游戏时间用的画面计数器
Graphics.frame_count = 0
# 生成各种游戏对像
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# 设置初期同伴位置
$game_party.setup_starting_members
# 设置初期位置的地图
$game_map.setup($data_system.start_map_id)
# 主角向初期位置移动
$game_player.moveto($data_system.start_x, $data_system.start_y)
# 刷新主角
$game_player.refresh
# 执行地图设置的 BGM 与 BGS 的自动切换
$game_map.autoplay
# 刷新地图 (执行并行事件)
$game_map.update
$a = {}
$am = Blue::INTRO
$ccc = 0
# 切换地图画面
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● 命令 : 继续
#--------------------------------------------------------------------------
def command_continue
# 继续无效的情况下
unless @continue_enabled
# 演奏无效 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到读档画面
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# ● 命令 : 退出
#--------------------------------------------------------------------------
def command_shutdown
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# BGM、BGS、ME 的淡入淡出
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# 退出
$scene = nil
end
#--------------------------------------------------------------------------
# ● 战斗测试
#--------------------------------------------------------------------------
def battle_test
# 载入数据库 (战斗测试用)
$data_actors = load_data("Data/BT_Actors.rxdata")
$data_classes = load_data("Data/BT_Classes.rxdata")
$data_skills = load_data("Data/BT_Skills.rxdata")
$data_items = load_data("Data/BT_Items.rxdata")
$data_weapons = load_data("Data/BT_Weapons.rxdata")
$data_armors = load_data("Data/BT_Armors.rxdata")
$data_enemies = load_data("Data/BT_Enemies.rxdata")
$data_troops = load_data("Data/BT_Troops.rxdata")
$data_states = load_data("Data/BT_States.rxdata")
$data_animations = load_data("Data/BT_Animations.rxdata")
$data_tilesets = load_data("Data/BT_Tilesets.rxdata")
$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
$data_system = load_data("Data/BT_System.rxdata")
# 重置测量游戏时间用的画面计数器
Graphics.frame_count = 0
# 生成各种游戏对像
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
$a = {0=>"进入战斗测试."}
# 设置战斗测试用同伴
$game_party.setup_battle_test_members
# 设置队伍 ID、可以逃走标志、战斗背景
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# 演奏战斗开始 BGM
$game_system.se_play($data_system.battle_start_se)
# 演奏战斗 BGM
$game_system.bgm_play($game_system.battle_bgm)
# 切换到战斗画面
$scene = Scene_Battle.new
end
end
#-------------------------------------------------------
class Scene_Map
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new
@down_window = Window_Down.new
Graphics.transition
# 主循环
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@spriteset.dispose
@message_window.dispose
@down_window.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
@am_size = $a.size
end
#---------------------
def bluefool_sort
if $am != nil
if $a.size > Blue::NAM_MAX
a_temp = {}
j = 0
for i in ($a.size - Blue::Blue_max)...$a.size
a_temp[j] = $a[i]
j += 1
end
$a = a_temp
end
if $am.length < 54
$a[$a.size] = $am
else
while $am.length > 53
i = 53
while (/\W/ =~ $am[i-3,3]) != nil
i -= 1
end
$a[$a.size] = $am[0,i]
$am = $am[i ,$am.length - i]
end
$a[$a.size] = $am
end
$am = nil
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 循环
loop do
# 按照地图、实例、主角的顺序刷新
# (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
# 的机会的重要因素)
$game_map.update
$game_system.map_interpreter.update
$game_player.update
# 系统 (计时器)、画面刷新
$game_system.update
$game_screen.update
# 如果主角在场所移动中就中断循环
unless $game_temp.player_transferring
break
end
# 执行场所移动
transfer_player
# 处理过渡中的情况下、中断循环
if $game_temp.transition_processing
break
end
end
# 刷新活动块
@spriteset.update
# 刷新信息窗口
@message_window.update
# 游戏结束的情况下
if $game_temp.gameover
# 切换的游戏结束画面
$scene = Scene_Gameover.new
return
end
# 返回标题画面的情况下
if $game_temp.to_title
# 切换到标题画面
$scene = Scene_Title.new
return
end
# 处理过渡中的情况下
if $game_temp.transition_processing
# 清除过渡处理中标志
$game_temp.transition_processing = false
# 执行过渡
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# 显示信息窗口中的情况下
if $game_temp.message_window_showing
return
end
# 遇敌计数为 0 且、且遇敌列表不为空的情况下
if $game_player.encounter_count == 0 and $game_map.encounter_list != []
# 不是在事件执行中或者禁止遇敌中
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# 确定队伍
n = rand($game_map.encounter_list.size)
troop_id = $game_map.encounter_list[n]
# 队伍有效的话
if $data_troops[troop_id] != nil
# 设置调用战斗标志
$game_temp.battle_calling = true
$game_temp.battle_troop_id = troop_id
$game_temp.battle_can_escape = true
$game_temp.battle_can_lose = false
$game_temp.battle_proc = nil
end
end
end
#---------------------------------------------
bluefool_sort
if @am_size != $a.size
@down_window.refresh
if $a != nil and $a.size < Blue::Blue_max + 1
@down_window.index = $a.size/2 - 1
elsif $a != nil and $a.size > Blue::Blue_max
@down_window.index = Blue::Blue_max/2 - 1
end
@am_size = $a.size
end
#----------------------------------------------
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 不是在事件执行中或菜单禁止中
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
# 设置菜单调用标志以及 SE 演奏
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
#k###########################
if Input.trigger?(Input::A)
$scene = Scene_Lvup.new
end
#k###########################
# 调试模式为 ON 并且按下 F9 键的情况下
if $DEBUG and Input.press?(Input::F9)
# 设置调用调试标志
$game_temp.debug_calling = true
end
# 不在主角移动中的情况下
unless $game_player.moving?
# 执行各种画面的调用
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
end
end
end
end
class Game_Battler
def bluefool_sort
if $am != nil
if $am.length < 54
$a[$a.size] = $am
else
while $am.length > 53
i = 53
while (/\W/ =~ $am[i-3,3]) != nil
i -= 1
end
$a[$a.size] = $am[0,i]
$am = $am[i ,$am.length - i]
end
$a[$a.size] = $am
end
$am = nil
end
end
end
#---------------------------------------------------------
class Interpreter
def bluefool_sort
if $am != nil
if $a.size > Blue::NAM_MAX
a_temp = {}
j = 0
for i in ($a.size - Blue::Blue_max)...$a.size
a_temp[j] = $a[i]
j += 1
end
$a = a_temp
end
if $am.length < 54
$a[$a.size] = $am
else
while $am.length > 53
i = 53
while (/\W/ =~ $am[i-3,3]) != nil
i -= 1
end
$a[$a.size] = $am[0,i]
$am = $am[i ,$am.length - i]
end
$a[$a.size] = $am
end
$am = nil
end
end
def command_125
value = operate_value(@parameters[0], @parameters[1], @parameters[2])
$game_party.gain_gold(value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value}#{$data_system.words.gold}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}#{$data_system.words.gold}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
def command_126
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 增减物品
$game_party.gain_item(@parameters[0], value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value.abs.to_s}个#{$data_items[@parameters[0]].name}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}个#{$data_items[@parameters[0]].name}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
def command_127
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 增减武器
$game_party.gain_weapon(@parameters[0], value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value.abs.to_s}个#{$data_weapons[@parameters[0]].name}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}个#{$data_weapons[@parameters[0]].name}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
def command_128
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 增减防具
$game_party.gain_armor(@parameters[0], value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value.abs.to_s}个#{$data_armors[@parameters[0]].name}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}个#{$data_armors[@parameters[0]].name}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
#-------------------------
end
#==============================================================================
# ■ Window_Down
#------------------------------------------------------------------------------
# 信息窗口。
#==============================================================================
class Window_Down < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(420, 240, 330, 240)
@column_max = 1
self.opacity = 0
if $a != nil and $a.size < 21
self.index = $a.size/2
elsif $a != nil and $a.size > 20
self.index = 9
end
refresh
self.active = false
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
if $a != nil and $a.size < Blue::Blue_max + 1
@item_max = $a.size
elsif $a != nil and $a.size > Blue::Blue_max
@item_max = Blue::Blue_max
end
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 16)
for i in 0...@item_max
draw_item(i)
end
end
end
def item_max
return @item_max
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
if $a.size < Blue::Blue_max + 1
item = $a[index]
else
item = $a[index + $a.size - Blue::Blue_max]
end
x = 0
y = index * 16
self.contents.font.size = 14
self.contents.font.color = Color.new(-170,-170,-170,255)
self.contents.draw_text(x + 6, y + 1, self.contents.text_size(item).width, 16, item, 0)
self.contents.font.color = normal_color
self.contents.draw_text(x + 5, y, self.contents.text_size(item).width, 16, item, 0)
end
#--------------------------------------
# ● 刷新光标
#--------------------------------------
def update_cursor_rect
# 光标位置不满 0 的情况下
if @index < 0
self.cursor_rect.empty
return
end
# 获取当前的行
row = @index / @column_max
# 当前行被显示开头行前面的情况下
if row < self.top_row
# 从当前行向开头行滚动
self.top_row = row
end
# 当前行被显示末尾行之后的情况下
if row > self.top_row + (self.page_row_max - 1)
# 从当前行向末尾滚动
self.top_row = row - (self.page_row_max - 1)
end
# 计算光标的宽
cursor_width = self.width / @column_max - 32
cursor_width = 0
# 计算光标坐标
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 32 - self.oy
# 更新国标矩形
self.cursor_rect.set(x, y, cursor_width, 16)
end
end
复制代码
1.我按SHIFT之后,游戏就会弹出错误.想问下,怎么取消按SHIFT这个功能取消掉!
2.好像还跟66加强对话框Fuki对话框整合+附送功能脚本有点儿冲突.
两个一起用的话,比如用\name[ID]这个功能会失效,该怎么解决呢?
3.最后,如何设置一个按钮,按下之后,出现的那些即时消息消失掉. [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
宾少
时间:
2007-12-21 11:57
标题:
即时消息脚本出错~
#------------------制作by bluefool,转载请保留------------------
module Blue
#这个是控制显示最近的多少条信息的,当超出一屏能显示的值的话可通过先按一下shift
#然后用上下翻看内容。再按一次shift则解除激活
Blue_max = 4
#这个填写进如游戏时生成的系统语言,
INTRO = "欢迎到梦的回忆来."
#战斗画面时即时消息窗口的x坐标
BATAM_X = 0
#战斗画面时即时消息窗口的y坐标
BATAM_Y = 90
#用于清空hash表,可以不管它,但不要让Blue_max大于它,当然,它的值也可以改变
NAM_MAX = 50
#主要传递信息参数为函数$am,参见脚本内容
end
#-------------------------------------------
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# ● 确定时的处理
#--------------------------------------------------------------------------
def on_decision(filename)
# 文件不存在的情况下
unless FileTest.exist?(filename)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏读档 SE
$game_system.se_play($data_system.load_se)
# 写入存档数据
file = File.open(filename, "rb")
read_save_data(file)
file.close
# 还原 BGM、BGS
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
# 刷新地图 (执行并行事件)
$a = {}
$game_map.update
# 切换到地图画面
$scene = Scene_Map.new
end
end
class Game_Player < Game_Character
def update
# 本地变量记录移动信息
last_moving = moving?
# 移动中、事件执行中、强制移动路线中、
# 信息窗口一个也不显示的时候
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing or $ccc == 1
case Input.dir4
when 2
move_down
when 4
move_left
when 6
move_right
when 8
move_up
end
end
# 本地变量记忆坐标
last_real_x = @real_x
last_real_y = @real_y
super
# 角色向下移动、画面上的位置在中央下方的情况下
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
# 画面向下卷动
$game_map.scroll_down(@real_y - last_real_y)
end
# 角色向左移动、画面上的位置在中央左方的情况下
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
# 画面向左卷动
$game_map.scroll_left(last_real_x - @real_x)
end
# 角色向右移动、画面上的位置在中央右方的情况下
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
# 画面向右卷动
$game_map.scroll_right(@real_x - last_real_x)
end
# 角色向上移动、画面上的位置在中央上方的情况下
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
# 画面向上卷动
$game_map.scroll_up(last_real_y - @real_y)
end
# 不在移动中的情况下
unless moving?
# 上次主角移动中的情况
if last_moving
# 与同位置的事件接触就判定为事件启动
result = check_event_trigger_here([1,2])
# 没有可以启动的事件的情况下
if result == false
# 调试模式为 ON 并且按下 CTRL 键的情况下除外
unless $DEBUG and Input.press?(Input::CTRL)
# 遇敌计数下降
if @encounter_count > 0
@encounter_count -= 1
end
end
end
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 判定为同位置以及正面的事件启动
check_event_trigger_here([0])
check_event_trigger_there([0,1,2])
end
end
end
end
#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
# 处理标题画面的类。
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● 命令 : 新游戏
#--------------------------------------------------------------------------
def command_new_game
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 停止 BGM
Audio.bgm_stop
# 重置测量游戏时间用的画面计数器
Graphics.frame_count = 0
# 生成各种游戏对像
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# 设置初期同伴位置
$game_party.setup_starting_members
# 设置初期位置的地图
$game_map.setup($data_system.start_map_id)
# 主角向初期位置移动
$game_player.moveto($data_system.start_x, $data_system.start_y)
# 刷新主角
$game_player.refresh
# 执行地图设置的 BGM 与 BGS 的自动切换
$game_map.autoplay
# 刷新地图 (执行并行事件)
$game_map.update
$a = {}
$am = Blue::INTRO
$ccc = 0
# 切换地图画面
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● 命令 : 继续
#--------------------------------------------------------------------------
def command_continue
# 继续无效的情况下
unless @continue_enabled
# 演奏无效 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到读档画面
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# ● 命令 : 退出
#--------------------------------------------------------------------------
def command_shutdown
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# BGM、BGS、ME 的淡入淡出
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# 退出
$scene = nil
end
#--------------------------------------------------------------------------
# ● 战斗测试
#--------------------------------------------------------------------------
def battle_test
# 载入数据库 (战斗测试用)
$data_actors = load_data("Data/BT_Actors.rxdata")
$data_classes = load_data("Data/BT_Classes.rxdata")
$data_skills = load_data("Data/BT_Skills.rxdata")
$data_items = load_data("Data/BT_Items.rxdata")
$data_weapons = load_data("Data/BT_Weapons.rxdata")
$data_armors = load_data("Data/BT_Armors.rxdata")
$data_enemies = load_data("Data/BT_Enemies.rxdata")
$data_troops = load_data("Data/BT_Troops.rxdata")
$data_states = load_data("Data/BT_States.rxdata")
$data_animations = load_data("Data/BT_Animations.rxdata")
$data_tilesets = load_data("Data/BT_Tilesets.rxdata")
$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
$data_system = load_data("Data/BT_System.rxdata")
# 重置测量游戏时间用的画面计数器
Graphics.frame_count = 0
# 生成各种游戏对像
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
$a = {0=>"进入战斗测试."}
# 设置战斗测试用同伴
$game_party.setup_battle_test_members
# 设置队伍 ID、可以逃走标志、战斗背景
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# 演奏战斗开始 BGM
$game_system.se_play($data_system.battle_start_se)
# 演奏战斗 BGM
$game_system.bgm_play($game_system.battle_bgm)
# 切换到战斗画面
$scene = Scene_Battle.new
end
end
#-------------------------------------------------------
class Scene_Map
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new
@down_window = Window_Down.new
Graphics.transition
# 主循环
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@spriteset.dispose
@message_window.dispose
@down_window.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
@am_size = $a.size
end
#---------------------
def bluefool_sort
if $am != nil
if $a.size > Blue::NAM_MAX
a_temp = {}
j = 0
for i in ($a.size - Blue::Blue_max)...$a.size
a_temp[j] = $a[i]
j += 1
end
$a = a_temp
end
if $am.length < 54
$a[$a.size] = $am
else
while $am.length > 53
i = 53
while (/\W/ =~ $am[i-3,3]) != nil
i -= 1
end
$a[$a.size] = $am[0,i]
$am = $am[i ,$am.length - i]
end
$a[$a.size] = $am
end
$am = nil
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 循环
loop do
# 按照地图、实例、主角的顺序刷新
# (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
# 的机会的重要因素)
$game_map.update
$game_system.map_interpreter.update
$game_player.update
# 系统 (计时器)、画面刷新
$game_system.update
$game_screen.update
# 如果主角在场所移动中就中断循环
unless $game_temp.player_transferring
break
end
# 执行场所移动
transfer_player
# 处理过渡中的情况下、中断循环
if $game_temp.transition_processing
break
end
end
# 刷新活动块
@spriteset.update
# 刷新信息窗口
@message_window.update
# 游戏结束的情况下
if $game_temp.gameover
# 切换的游戏结束画面
$scene = Scene_Gameover.new
return
end
# 返回标题画面的情况下
if $game_temp.to_title
# 切换到标题画面
$scene = Scene_Title.new
return
end
# 处理过渡中的情况下
if $game_temp.transition_processing
# 清除过渡处理中标志
$game_temp.transition_processing = false
# 执行过渡
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# 显示信息窗口中的情况下
if $game_temp.message_window_showing
return
end
# 遇敌计数为 0 且、且遇敌列表不为空的情况下
if $game_player.encounter_count == 0 and $game_map.encounter_list != []
# 不是在事件执行中或者禁止遇敌中
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# 确定队伍
n = rand($game_map.encounter_list.size)
troop_id = $game_map.encounter_list[n]
# 队伍有效的话
if $data_troops[troop_id] != nil
# 设置调用战斗标志
$game_temp.battle_calling = true
$game_temp.battle_troop_id = troop_id
$game_temp.battle_can_escape = true
$game_temp.battle_can_lose = false
$game_temp.battle_proc = nil
end
end
end
#---------------------------------------------
bluefool_sort
if @am_size != $a.size
@down_window.refresh
if $a != nil and $a.size < Blue::Blue_max + 1
@down_window.index = $a.size/2 - 1
elsif $a != nil and $a.size > Blue::Blue_max
@down_window.index = Blue::Blue_max/2 - 1
end
@am_size = $a.size
end
#----------------------------------------------
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 不是在事件执行中或菜单禁止中
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
# 设置菜单调用标志以及 SE 演奏
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
#k###########################
if Input.trigger?(Input::A)
$scene = Scene_Lvup.new
end
#k###########################
# 调试模式为 ON 并且按下 F9 键的情况下
if $DEBUG and Input.press?(Input::F9)
# 设置调用调试标志
$game_temp.debug_calling = true
end
# 不在主角移动中的情况下
unless $game_player.moving?
# 执行各种画面的调用
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
end
end
end
end
class Game_Battler
def bluefool_sort
if $am != nil
if $am.length < 54
$a[$a.size] = $am
else
while $am.length > 53
i = 53
while (/\W/ =~ $am[i-3,3]) != nil
i -= 1
end
$a[$a.size] = $am[0,i]
$am = $am[i ,$am.length - i]
end
$a[$a.size] = $am
end
$am = nil
end
end
end
#---------------------------------------------------------
class Interpreter
def bluefool_sort
if $am != nil
if $a.size > Blue::NAM_MAX
a_temp = {}
j = 0
for i in ($a.size - Blue::Blue_max)...$a.size
a_temp[j] = $a[i]
j += 1
end
$a = a_temp
end
if $am.length < 54
$a[$a.size] = $am
else
while $am.length > 53
i = 53
while (/\W/ =~ $am[i-3,3]) != nil
i -= 1
end
$a[$a.size] = $am[0,i]
$am = $am[i ,$am.length - i]
end
$a[$a.size] = $am
end
$am = nil
end
end
def command_125
value = operate_value(@parameters[0], @parameters[1], @parameters[2])
$game_party.gain_gold(value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value}#{$data_system.words.gold}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}#{$data_system.words.gold}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
def command_126
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 增减物品
$game_party.gain_item(@parameters[0], value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value.abs.to_s}个#{$data_items[@parameters[0]].name}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}个#{$data_items[@parameters[0]].name}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
def command_127
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 增减武器
$game_party.gain_weapon(@parameters[0], value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value.abs.to_s}个#{$data_weapons[@parameters[0]].name}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}个#{$data_weapons[@parameters[0]].name}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
def command_128
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 增减防具
$game_party.gain_armor(@parameters[0], value)
if value >= 0
$am = "#{$game_party.actors[0].name}得到了#{value.abs.to_s}个#{$data_armors[@parameters[0]].name}"
else
$am = "#{$game_party.actors[0].name}失去了#{value.abs.to_s}个#{$data_armors[@parameters[0]].name}"
end
bluefool_sort
Audio.se_play("Audio/SE/"+"006-System06",100,100)
return true
end
#-------------------------
end
#==============================================================================
# ■ Window_Down
#------------------------------------------------------------------------------
# 信息窗口。
#==============================================================================
class Window_Down < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(420, 240, 330, 240)
@column_max = 1
self.opacity = 0
if $a != nil and $a.size < 21
self.index = $a.size/2
elsif $a != nil and $a.size > 20
self.index = 9
end
refresh
self.active = false
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
if $a != nil and $a.size < Blue::Blue_max + 1
@item_max = $a.size
elsif $a != nil and $a.size > Blue::Blue_max
@item_max = Blue::Blue_max
end
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 16)
for i in 0...@item_max
draw_item(i)
end
end
end
def item_max
return @item_max
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
if $a.size < Blue::Blue_max + 1
item = $a[index]
else
item = $a[index + $a.size - Blue::Blue_max]
end
x = 0
y = index * 16
self.contents.font.size = 14
self.contents.font.color = Color.new(-170,-170,-170,255)
self.contents.draw_text(x + 6, y + 1, self.contents.text_size(item).width, 16, item, 0)
self.contents.font.color = normal_color
self.contents.draw_text(x + 5, y, self.contents.text_size(item).width, 16, item, 0)
end
#--------------------------------------
# ● 刷新光标
#--------------------------------------
def update_cursor_rect
# 光标位置不满 0 的情况下
if @index < 0
self.cursor_rect.empty
return
end
# 获取当前的行
row = @index / @column_max
# 当前行被显示开头行前面的情况下
if row < self.top_row
# 从当前行向开头行滚动
self.top_row = row
end
# 当前行被显示末尾行之后的情况下
if row > self.top_row + (self.page_row_max - 1)
# 从当前行向末尾滚动
self.top_row = row - (self.page_row_max - 1)
end
# 计算光标的宽
cursor_width = self.width / @column_max - 32
cursor_width = 0
# 计算光标坐标
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 32 - self.oy
# 更新国标矩形
self.cursor_rect.set(x, y, cursor_width, 16)
end
end
复制代码
1.我按SHIFT之后,游戏就会弹出错误.想问下,怎么取消按SHIFT这个功能取消掉!
2.好像还跟66加强对话框Fuki对话框整合+附送功能脚本有点儿冲突.
两个一起用的话,比如用\name[ID]这个功能会失效,该怎么解决呢?
3.最后,如何设置一个按钮,按下之后,出现的那些即时消息消失掉. [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
宾少
时间:
2007-12-22 07:49
目前发现冲突不是一点点,有人帮忙一下吗?tanksa~
作者:
精灵使者
时间:
2007-12-22 08:22
这个脚本问题真的很多……
我以前用过,但是不得不放弃了。 [LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1