| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2018-10-27 |
| 在线时间 | 32 小时 |
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 32 小时
- 注册时间
- 2016-6-23
- 回帖
- 16
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 RaidenInfinity 于 2016-12-30 23:35 编辑
大家好,我是音无。
今天想问的问题有两个——
1.一个有点难口述的问题:
大概是之前有一个坛友问过的——人物走几帧会卡顿。我这儿的情况是走到地图的某一个固定位置,就会在某一帧突然肉眼可见的人物向前平移了一小格(但是因为只是一瞬间所以难以截图),到了下一帧恢复正常。只会在某些特定的位置出现,不是随机出现的(奔跑和走动均有出现,奔跑时明显)。
听说是要用到1.1的官方补丁,但是找不到啊——
如果实在不行,我只能换台电脑重新建工程了(手头目前只有这台常用的台式机Orz)......
2.(似乎是)一个上次没有解决干净的问题(?):
上次发帖说到pop message和半身像的冲突,版主很给力地解决了我的疑难,在此再一次感谢版主!
这次的问题个半身像还是有关——
算不算是地图缩放脚本和半身像脚本的冲突?
画地图时背景是透明的,出现的问题如图所示Orz
地图缩放脚本:
[pre lang="ruby"]
#==============================================================================
# ■ RGSS3 マップズーム Ver1.00 by 星潟
# ■ RGSS3 地图缩放 Ver1.00 by 星潟 翻译:戏蹑群星斗
#------------------------------------------------------------------------------
#地图缩放。就是这样。
#由于缩放状态保存的数据将被保留(就是存档会保留缩放)。请注意
#==============================================================================
# 使用事件命令的脚本。
#------------------------------------------------------------------------------
# map_zoom(150)
#
# 在这种情况下,它会放大到150%。
#------------------------------------------------------------------------------
# map_zoom(300)
#
# 在这种情况下,它会放大到300%。
#------------------------------------------------------------------------------
# map_zoom
#
# 在这种情况下,放大解除。
#==============================================================================
# 100未満のズーム(縮小)や2000%を超えるのズームには制限をかけてあります。
# 因此,100是最小值,最大值2000。
#==============================================================================
class Game_System
attr_accessor :zoom_mode
#--------------------------------------------------------------------------
# ズームモード
#--------------------------------------------------------------------------
def zoom_mode
@zoom_mode ||= 100
end
end
class Spriteset_Map
#--------------------------------------------------------------------------
# ビューポートの作成
#--------------------------------------------------------------------------
alias create_viewports_zoommap create_viewports
def create_viewports
create_viewports_zoommap
@zoommap = ZoomMap.new(@viewport1,@viewport2)
end
#--------------------------------------------------------------------------
# 更新処理
#--------------------------------------------------------------------------
alias update_zoommap update
def update
@zoommap.update
update_zoommap
end
#--------------------------------------------------------------------------
# 解放処理
#--------------------------------------------------------------------------
alias dispose_zoommap dispose
def dispose
@zoommap.dispose
dispose_zoommap
end
end
class ZoomMap < Sprite_Base
#--------------------------------------------------------------------------
# 初期化
#--------------------------------------------------------------------------
def initialize(v1,v2)
super(v2)
@viewport_data = v1
@zoom_rate = $game_system.zoom_mode
@zoom_bitmap = nil
end
#--------------------------------------------------------------------------
# 解放
#--------------------------------------------------------------------------
def dispose
@zoom_bitmap.dispose if @zoom_bitmap && !@zoom_bitmap.disposed?
super
end
#--------------------------------------------------------------------------
# 更新処理
#--------------------------------------------------------------------------
def update
self.visible = @zoom_rate != 100
@zoom_bitmap.dispose if @zoom_bitmap && !@zoom_bitmap.disposed?
if $game_system.zoom_mode != 100 or @zoom_rate != 100
if @zoom_rate != $game_system.zoom_mode
d = (@zoom_rate - $game_system.zoom_mode).to_i
case d
when 0..9;i = 1
when 10..99;i = 2
when 100..999;i = 3
else; i = 4
end
@zoom_rate += (@zoom_rate < $game_system.zoom_mode) ? i : -i
end
zm = @zoom_rate.to_f / 100
@viewport_data.z += 10000000
@zoom_bitmap = Graphics.snap_to_bitmap
self.bitmap = @zoom_bitmap
w = self.bitmap.width
h =self.bitmap.height
self.ox = [[0,((w * zm / 2) - w / 2) / zm + (($game_player.screen_x - w / 2).to_f)].max,(w * zm - w) / zm].min
self.oy = [[0,((h * zm / 2) - h / 2) / zm + (($game_player.screen_y - 16 - h / 2).to_f)].max,(h * zm - h) / zm].min
self.zoom_x = zm
self.zoom_y = zm
self.visible = true
@viewport_data.z -= 10000000
end
super
end
end
class Game_Interpreter
#--------------------------------------------------------------------------
# ズーム
#--------------------------------------------------------------------------
def map_zoom(rate = 100)
$game_system.zoom_mode = [[rate,100].max,2000].min
end
end
[/pre]
半身像脚本:
[pre lang="ruby"]
#encoding:utf-8
#==============================================================================
# ■ 半身像对话框 by LBQ
#------------------------------------------------------------------------------
# 一个简单的半身像对话框罢了= =
#------------------------------------------------------------------------------
# ■ 用法一览
# 1:如何将半身像应用到游戏中?
# ——如果想要把一个脸图替换成半身像,则需要找到这个脸图的编号,比如说拉尔
# 夫,就是Actor1的编号0,之后去在Graphics/Busts这个文件夹里面拷贝一个
# 叫做Actor1_0的图像,这个图像会被当做半身像替换原有图像。
#==============================================================================
$imported ||= {}
$imported[:LBQ_Bust]=true
module LBQ
module Bust
FOLDER="Busts"
SUB1=[/【/, "\\{\\c[6]-- "]
SUB2=[/】/, " --\\c[0]\\}"]
TEXT_FOR_NEXT="[next]"
TEXT_FOR_END ="[end]"
INDENT=150 #半身像的缩进
end
end
module Cache
def self.busts(filename)
load_bitmap("Graphics/#{LBQ::Bust::FOLDER}/", filename)
end
end
class Sprite_Bust < Sprite_Base
attr_accessor :bust_graphics
attr_accessor :status
def initialize(vp=nil)
super(vp)
@bust_graphics=nil
@status=:nothing
end
def slide_in
@status=:sliding_in
end
def slide_out
@status=:sliding_out
if $game_message.do_not_slide_out
@status=:slided_out
set_pos
end
end
def set_pos(slide_in=true)
self.x=0 - self.bitmap.width
self.y=Graphics.height-self.bitmap.height
self.x=0 unless slide_in
end
def set_graphics(bust_graphics)
self.bitmap=Cache.busts(bust_graphics)
end
def update
super
case @status
when :nothing
# Do Nothing
when :sliding_in
#Slide In
self.x+=12
if self.x>=0
self.x=0
@status=:slided_in
end
when :sliding_out
self.x-=12
if self.x<= -self.bitmap.width
self.x= -self.bitmap.width
@status=:slided_out
end
#Slide Out
when :slided_in
#Slided in
when :slided_out
#Sliede out
end
end
end
class Game_Message
attr_accessor :bust_name
attr_accessor :bust
attr_accessor :have_bust
attr_accessor :do_not_slide_out
alias lbq_bust_shot_game_message_init initialize
def initialize
lbq_bust_shot_game_message_init
@bust_name=""
@bust=nil
@have_bust=false
@do_not_slide_out=false
end
#--------------------------------------------------------------------------
# ● 添加内容
#--------------------------------------------------------------------------
def add(text)
new_text=text.gsub(LBQ::Bust::SUB1[0],LBQ::Bust::SUB1[1])
new_text2=new_text.gsub(LBQ::Bust::SUB2[0],LBQ::Bust::SUB2[1])
if new_text2.include? LBQ::Bust::TEXT_FOR_NEXT
new_text2.delete!(LBQ::Bust::TEXT_FOR_NEXT)
$game_message.do_not_slide_out=true
end
if new_text2.include? LBQ::Bust::TEXT_FOR_END
new_text2.delete!(LBQ::Bust::TEXT_FOR_END)
$game_message.do_not_slide_out=false
end
@texts.push(new_text2)
end
end
class Game_Interpreter
alias lbq_bust_shot_command_101 command_101
#--------------------------------------------------------------------------
# ● 显示文字
#--------------------------------------------------------------------------
def command_101
$game_message.bust=nil
unless @params[0].empty?
if File.exist?("Graphics/#{LBQ::Bust::FOLDER}/#{@params[0]}_#{@params[1]}.png")
$game_message.have_bust=true
else
$game_message.have_bust=false
$game_message.bust_name=""
end
end
unless @params[3] == 2
$game_message.have_bust=false
end
if $game_message.have_bust
$game_message.bust_name="#{@params[0]}_#{@params[1]}"
$game_message.bust=nil
$game_message.bust=Sprite_Bust.new
$game_message.bust.set_graphics($game_message.bust_name)
$game_message.bust.z=99999
unless $game_message.do_not_slide_out
$game_message.bust.set_pos
$game_message.bust.slide_in
else
$game_message.bust.set_pos(false)
$game_message.bust.slide_in
end
end
lbq_bust_shot_command_101
if $game_message.have_bust
$game_message.bust.slide_out
Fiber.yield until $game_message.bust.status==:slided_out
end
$game_message.have_bust=false
$game_message.bust_name=""
end
alias lbq_bust_int_update update
def update
lbq_bust_int_update
$game_message.bust.update unless $game_message.bust.nil?
end
end
class Window_Message
#--------------------------------------------------------------------------
# ● 获取换行位置
#--------------------------------------------------------------------------
def new_line_x
value=0
value=112 unless $game_message.face_name.empty?
unless $game_message.face_name.empty? && $game_message.bust_name.empty?
value=LBQ::Bust::INDENT
end
return value
end
end
class Window_Message
#--------------------------------------------------------------------------
# ● 翻页处理
#--------------------------------------------------------------------------
def new_page(text, pos)
contents.clear
draw_face($game_message.face_name, $game_message.face_index, 0, 0) if $game_message.bust_name.empty?
reset_font_settings
pos[:x] = new_line_x
pos[:y] = 0
pos[:new_x] = new_line_x
pos[:height] = calc_line_height(text)
clear_flags
end
end
[/pre]
以上就是问题了,求解!谢谢 |
-
|