[Script] [ACE] [VXA - Cần giúp] Script Fog

Focker_cFocker_c Posts: 1,577Registered
Đang cần xài script sương mù, lên search đc cái này :
[php]#===============================================================
# ● [VX] ◦ Multiple Fogs ◦ □
# * Use unlimited layers of fog *
#
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 13/05/2008
# ◦ Version: 1.0
# ◦ ported to VX Ace by Necromus 17/03/2012
#
#==================================================================
# ** HOW TO USE **
# * use event command 'Script...' for the any script line below~
#
#
#
# ** SETUP FOG PROPERTIES & SHOW FOG **
# * You have to setup fog properties, before show fog~
#
# * There are 3 ways to setup fog properties:
# >> Setup Fog [Custom]:
# $fog.name = 'image_name' # Image file name, must be in fog image path (setup path below).
# $fog.hue = (integer) # Fog's hue. 0 - 360, 0 for no hue.
# $fog.tone = [red, green, blue, gray] # Fog's tone color.
# $fog.opacity = (integer) # Fog's opacity. 0 - 255, you will not see fog in 0.
# $fog.blend = (0, 1, or 2) # Fog's blend type. 0 for Normal, 1 for Add, 2 for Subtract.
# $fog.zoom = (integer) # Fog's size (in %). 100 for normal size.
# $fog.sx = (+ or - integer) # Fog's horizontal move speed.
# $fog.sy = (+ or - integer) # Fog's vertical move speed.
#
# >> Setup Fog [From Preset]:
# (You can setup fog presets, in part FOG PRESET SETUP below)
# $fog.load_preset(preset_id)
#
# >> Setup Fog [From Fog that showing]:
# $fog.load_fog(fog_id)
#
#
# ** SHOW FOG **
#
# After setup the fog, show fog by call script:
# $fog.show(fog_id)
#
# In case you want to show new fog on same ox, oy, tone as old fog. Call Script:
# $fog.show(old_fog_id, false)
#
# * fog_id: the ID number you want to put this fog in.
# (It can be any positive number or zero)
#
# After you show fog, the fog properties you've set will replace with default setting.
# (You can setup default setting, in part FOG DEFAULT SETTING below)
#
#
# ** DELETE FOG **
#
# You can delete 1 or more fog(s) at a time by call script:
# $fog.delete(fog_id, fog_id, fog_id, ...)
#
#
# ** OLD FOG CONTROL EVENT COMMANDS **
#
# Change Fog Tone:
# $game_map.fogtone(fog_id, [red, green, blue, gray], duration)
# e.g. $game_map.fogtone(1, [100,200,-100,0], 10)
# Change Fog Opacity:
# $game_map.fogopac(fog_id, new_opacity, duration)
# e.g. $game_map.fogopac(2, 200, 10)
#
#
# ** ADDITIONAL SETTINGS **
#
# Change Fog Image's Path:
# $game_map.fog_path = 'image_path'
# e.g. $game_map.fog_path = 'Graphics/Pictures/'
# Turn ON/OFF [Automatically clear all fogs when transfer player]:
# $game_map.fog_reset = (true / false)
#
#===============================================================
#==================================================================
# START ** MULTIPLE FOG SETUP **
#==================================================================
class Game_Map
alias wora_mulfog_gammap_ini initialize
def initialize
wora_mulfog_gammap_ini

#==================================================================
# ** MULTIPLE FOG SETUP ** SETTINGS
#
@fog_path = 'Graphics/Pictures/'
# Fog image's path
@fog_reset = true # (true or false)
# Automatically clear all multiple fogs when transfer player
#==================================================================

@mulfog_name = []
@mulfog_hue = []
@mulfog_opacity = []
@mulfog_blend_type = []
@mulfog_zoom = []
@mulfog_sx = []
@mulfog_sy = []
@mulfog_ox = []
@mulfog_oy = []
@mulfog_tone = []
@mulfog_tone_target = []
@mulfog_tone_duration = []
@mulfog_opacity_duration = []
@mulfog_opacity_target = []
end
end
class Wora_Multiple_Fog
def set_default
#==================================================================
# ** MULTIPLE FOG SETUP ** FOG DEFAULT SETTING
#
@name = ''
@hue = 0
@opacity = 64
@blend = 0
@zoom = 200
@sx = 0
@sy = 0
@tone = [0,0,0,0]
#==================================================================
end

def load_preset(preset_id)
case preset_id
#==================================================================
# ** MULTIPLE FOG SETUP ** FOG PRESET SETUP
#
when 1 # Preset ID 1
@name = 'Fog07'
@hue = 0
@tone = [0,0,20,0]
@opacity = 100
@blend = 0
@zoom = 150
@sx = 3
@sy = 3
when 2 # Preset ID 2
@name = 'Fog11'
@hue = 0
@tone = [0,0,0,0]
@opacity = 100
@blend = 0
@zoom = 150
@sx = 3
@sy = 3
#==================================================================
end
end
#==================================================================
# END ** MULTIPLE FOG SETUP **
# * Don't change anything below unless you know what you're doing.
#==================================================================
attr_accessor :name, :hue, :opacity, :blend, :zoom, :sx, :sy, :tone
def initialize
set_default
end

def load_fog(id)
@name = $game_map.mulfog_name[id].sub($game_map.fog_path, '')
@hue = $game_map.mulfog_hue[id]
@opacity = $game_map.mulfog_opacity[id]
@blend = $game_map.mulfog_blend_type[id]
@zoom = $game_map.mulfog_zoom[id]
@sx = $game_map.mulfog_sx[id]
@sy = $game_map.mulfog_sy[id]
tn = $game_map.mulfog_tone[id]
@tone = [tn.red, tn.blue, tn.green, tn.gray]
end
def show(id, reset_all = true)
$game_map.mulfog_name[id] = $game_map.fog_path + @name
$game_map.mulfog_hue[id] = @hue
$game_map.mulfog_opacity[id] = @opacity
$game_map.mulfog_blend_type[id] = @blend
$game_map.mulfog_zoom[id] = @zoom
$game_map.mulfog_sx[id] = @sx
$game_map.mulfog_sy[id] = @sy
$game_map.mulfog_tone[id] = Tone.new(@tone[0], @tone[1], @tone[2], @tone[3])
if $game_map.mulfog_ox[id].nil? or reset_all
$game_map.mulfog_ox[id] = 0
$game_map.mulfog_oy[id] = 0
$game_map.mulfog_tone_target[id] = Tone.new(0, 0, 0, 0)
$game_map.mulfog_tone_duration[id] = 0
$game_map.mulfog_opacity_duration[id] = 0
$game_map.mulfog_opacity_target[id] = 0
end
set_default
end

def delete(*args)
args.each do |id|
$game_map.mulfog_name[id] = ''
end
end
end
class Game_Interpreter
alias wora_mulfog_interpret_com201 command_201
#
# * Transfer Player
#
def command_201
if $game_map.fog_reset
if @params[0] == 0; id_map = @params[1]
else; id_map = $game_variables[@params[1]]
end
$game_map.clear_mulfog if id_map != @map_id
end
wora_mulfog_interpret_com201
end
end
class Game_Map
attr_accessor :mulfog_name, :mulfog_hue, :mulfog_opacity, :mulfog_blend_type,
:mulfog_zoom, :mulfog_sx, :mulfog_sy, :mulfog_ox, :mulfog_oy, :mulfog_tone,
:mulfog_tone_target, :mulfog_tone_duration, :mulfog_opacity_duration,
:mulfog_opacity_target, :fog_reset, :fog_path
alias wora_mulfog_gammap_upd update
def update(main)
wora_mulfog_gammap_upd(main)
@mulfog_name.each_index do |i|
next if @mulfog_name.nil? or @mulfog_name == ''
# Manage fog scrolling
@mulfog_ox -= @mulfog_sx / 8.0
@mulfog_oy -= @mulfog_sy / 8.0
# Manage change in fog color tone
if @mulfog_tone_duration >= 1
d = @mulfog_tone_duration
target = @mulfog_tone_target
@mulfog_tone.red = (@mulfog_tone.red * (d - 1) + target.red) / d
@mulfog_tone.green = (@mulfog_tone.green * (d - 1) + target.green) / d
@mulfog_tone.blue = (@mulfog_tone.blue * (d - 1) + target.blue) / d
@mulfog_tone.gray = (@mulfog_tone.gray * (d - 1) + target.gray) / d
@mulfog_tone_duration -= 1
end
# Manage change in fog opacity level
if @mulfog_opacity_duration >= 1
d = @mulfog_opacity_duration
@mulfog_opacity = (@mulfog_opacity * (d - 1) + @mulfog_opacity_target) / d
@mulfog_opacity_duration -= 1
end
end
end
#

# * Start Changing Fog Color Tone
#
def fogtone(i, tone, duration)
duration = duration * 2
tone = Tone.new(tone[0], tone[1], tone[2], tone[3])
@mulfog_tone_target = tone.clone
@mulfog_tone_duration = duration
if @mulfog_tone_duration == 0
@mulfog_tone = @mulfog_tone_target.clone
end
end
#

# * Start Changing Fog Opacity Level
#
def fogopac(i, opacity, duration)
duration = duration * 2
@mulfog_opacity_target = opacity * 1.0
@mulfog_opacity_duration = duration
if @mulfog_opacity_duration == 0
@mulfog_opacity = @mulfog_opacity_target
end
end

def clear_mulfog
@mulfog_name.each_index {|i| @mulfog_name = '' }
end
end
$worale = {} if !$worale
$worale = true
$fog = Wora_Multiple_Fog.new
class Spriteset_Map
alias wora_mulfog_sprmap_crepal create_parallax
alias wora_mulfog_sprmap_updpal update_parallax
alias wora_mulfog_sprmap_dispal dispose_parallax

def create_parallax
@mulfog = []
@mulfog_name = []
@mulfog_hue = []
wora_mulfog_sprmap_crepal
end

def update_parallax
wora_mulfog_sprmap_updpal
$game_map.mulfog_name.each_index do |i|
next if $game_map.mulfog_name.nil?
# If fog is different than current fog
if @mulfog_name != $game_map.mulfog_name or @mulfog_hue != $game_map.mulfog_hue
@mulfog_name = $game_map.mulfog_name
@mulfog_hue = $game_map.mulfog_hue
if @mulfog.nil?
@mulfog = Plane.new(@viewport3)
@mulfog.z = 3000
end
if @mulfog.bitmap != nil
@mulfog.bitmap.dispose
@mulfog.bitmap = nil
end
if @mulfog_name != ''
@mulfog.bitmap = Cache.load_bitmap('', @mulfog_name, @mulfog_hue)
end
Graphics.frame_reset
end
next if @mulfog.bitmap.nil?
# Update fog plane
@mulfog.zoom_x = ($game_map.mulfog_zoom / 100.0) if @mulfog.zoom_x != ($game_map.mulfog_zoom / 100.0)
@mulfog.zoom_y = ($game_map.mulfog_zoom / 100.0) if @mulfog.zoom_y != ($game_map.mulfog_zoom / 100.0)
@mulfog.opacity = $game_map.mulfog_opacity if @mulfog.opacity != $game_map.mulfog_opacity
@mulfog.blend_type = $game_map.mulfog_blend_type if @mulfog.blend_type != $game_map.mulfog_blend_type
@mulfog.ox = $game_map.mulfog_ox + $game_map.display_x * 32 if @mulfog.ox != $game_map.mulfog_ox + $game_map.display_x * 32
@mulfog.oy = $game_map.mulfog_oy + $game_map.display_y * 32 if @mulfog.oy != $game_map.mulfog_oy + $game_map.display_y * 32
@mulfog.tone = $game_map.mulfog_tone if @mulfog.tone != $game_map.mulfog_tone
end
end

def dispose_parallax
@mulfog.each_index do |i|
next if @mulfog.nil?
@mulfog.bitmap.dispose if !@mulfog.bitmap.nil?
@mulfog.dispose
end
wora_mulfog_sprmap_dispal
end
end
#==================================================================
# [END] VX Multiple Fog by Woratana [woratana@hotmail.com]
#==================================================================[/php]

Có hình bỏ vào mục Pictures rồi, call script bằng lệnh : $fog.load_fog(fog_id)
thì báo lỗi Game_Interpreter
Nó bị lỗi gì à ? Hay mình làm ko đúng cái gì ?
Moi người coi dùm. :)
«1

Comments

  • MeoDenLuoiMeoDenLuoi Posts: 1,425Registered
    xưa mèo vọc mấy cái script cũng có bị cái ấy hoài mà search cái là ra cách fix luôn mà
    có cái trang này k biết phải k, để trong kho lâu r k đụng tới, thay thế cái Game_Interpreter là lại dùng ngon :]] http://pastebin.com/YQW4znZc
  • Focker_cFocker_c Posts: 1,577Registered
    Ôi, vẫn ko đc :(
  • slucis7593slucis7593 Posts: 544Registered
    Mình làm được mà, script không bị lỗi.

    Khi vào game mình gọi script như sau:
    [php]
    $fog.name = 'fog.png'
    $fog.sx = +5
    $fog.show(0)
    [/php]

    'fog.png' là tên file ảnh http://forums.rpgmakerweb.com/uploads/monthly_09_2012/post-4632-0-19903400-1347851640.png
    bỏ vào thư mục Graphics/Pictures của game.
  • Focker_cFocker_c Posts: 1,577Registered
    Ủa ? chứ ko phải call lên bằng $fog.load_fog(fog_id) à ?
    Vậy cái $fog.load_fog(fog_id) để làm gì đây chứ hả? :D
  • slucis7593slucis7593 Posts: 544Registered
    # >> Setup Fog [From Fog that showing]:
    # $fog.load_fog(fog_id)

    "Theo mình":
    Đây là cách setup fog thứ 3 trong 3 cách.
    Như ở ghi chú là showing - tức là đang hiển thị, cái này dùng cho trường hợp sử dụng nhiều fog và fog phải được tạo trước đó rồi hay là tạo bằng cách 1 [Custom] rồi.
    Theo như mình nghĩ đặt tên là setup có vẻ hơi sai, đặt là load thì hợp lý hơn.
  • Focker_cFocker_c Posts: 1,577Registered
    Có tạo ở dưới rồi đấy, mà có call đc đâu :) ko hiểu ko hiểu :)

    À, còn cách của @slucis7593 thì mặc dù sx = +5 rồi mà nó chẳng xê dịch chút nào. Nó ko scroll ^^
  • slucis7593slucis7593 Posts: 544Registered
    Focker_c wrote:
    Có tạo ở dưới rồi đấy, mà có call đc đâu :) ko hiểu ko hiểu :)

    À, còn cách của @slucis7593 thì mặc dù sx = +5 rồi mà nó chẳng xê dịch chút nào. Nó ko scroll ^^

    :ngaytho: Hơ? mình chạy được mà nhỉ?
  • Focker_cFocker_c Posts: 1,577Registered
    Ủa ? sao của mình lại đứng đơ vậy ? Lý do có thể là từ đâu đây nhỉ ?
  • slucis7593slucis7593 Posts: 544Registered
    Bạn thử tạo prj mới rồi chạy thử script xem có được không?
    Nếu được thì có khả năng prj hiện tại sửa script gốc nào đó của vxa hoặc bị xung đột với script nào đó rồi.
    Nếu không được thì chịu, do phần mềm vxa chăng? :ngaytho:
    Mà bạn có viết y hệt giống code mình đưa không hay thêm thắt dòng gì nữa?
  • KangKang Posts: 453Registered
    hay là bị xung đột với script khác nhỉ? mình là hay bị lắm
  • Focker_cFocker_c Posts: 1,577Registered


    Call thế này :
    $fog.name = 'fog07.png'
    $fog.sx = +10
    $fog.show(0)
    $fog.opacity = 100
    $fog.blend = 0
    $fog.zoom = 100
    

    Mọi người xem dùm
  • slucis7593slucis7593 Posts: 544Registered
    Focker_c wrote:


    Call thế này :
    $fog.name = 'fog07.png'
    $fog.sx = +10
    $fog.show(0)
    $fog.opacity = 100
    $fog.blend = 0
    $fog.zoom = 100
    

    Mọi người xem dùm

    lạ thật, mình copy y xỳ của bạn chạy nó vẫn scroll bình thường cơ mà nhỉ? -_-
    Không được có khi bạn tìm script khác thử xem. :)
  • Focker_cFocker_c Posts: 1,577Registered
    Ca fog này đau đầu vụ scroll này quá. Ai còn script fog nào khác ko vậy ? :(
  • sanggameboysanggameboy Posts: 1,943Registered
    Sao cậu không dùng script Fog của Victor Engine?
  • Focker_cFocker_c Posts: 1,577Registered
    Cái đó lại cần phải cài thêm Module Victor . Sợ sẽ có nhiều xung đột xảy ra , hic :(
Sign In or Register to comment.