irpg Community
ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RGSS and JS Showcase (https://irpg.in.th/forum-26.html)
+--- Thread: ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง (/thread-455.html)



ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - Muge9thD - 08-11-2012

[XP]ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) + MOG_Battle Panorama 1.5

สคริปต์เขียนโดย : thetitsueng*ปรับปรุงแก้ไขเพิ่มเติมโดย Muge9thD
ลิงค์ต้นฉบับ : Link


รายละเอียด :
มันคือระบบเปลี่ยนพื้นหลังเวลาใช้สกิล ซึ่งเหมาะกับท่าไม้ตายเป็นอย่างยิ่ง แถมด้วยระบบ Battle Panorama ที่ทำให้ใช้ Panorama ในฉากต่อสู้ได้ด้วย!!!

สคริปต์นี้ถูกสร้างมาเพื่อระบบต่อสู้พื้นฐาน และแก้ไขให้ใช้งานร่วมกับระบบต่อสู้ด้านข้างที่ท่าน Shinryu นำมาแจกได้เท่านั้น ผมไม่ขอรับรองว่าจะใช้ได้กับระบบอื่นหรือไม่

สกรีนช๊อต :
ไม่มีนะ แต่มีที่คล้ายๆกันอยู่ในกระทู้นี่ สคริปต์ใช้ทักษะแล้วพื้นหลังเลื่อน ใช้ได้กับ Enu SBS Tanketai XP

วิธีการใช้งาน :

สำหรับสคริปต์ใช้สกิลแล้วเปลี่ยนพื้นหลัง
- 1.นำสคริปต์นี้ไปวางไว้เหนือ Main และใต้ Scene_Debug
- 2.เตรียมภาพพื้นหลังสกิลที่มีสกุล .png ไปไว้ในโฟล์เดอร์ Graphics/Panoramas
- 3.ตั้งค่าสกิลในส่วนนี้
Code:
        @skill_ids = {
            1     => ["001-Sky01",-30,0],
            7     => ["001-Sky01",0,5],
            10   => ["004-Cloudysky01",5,7] #สกิลสุดท้ายที่ตั้งค่าจะไม่มี , ต่อท้าย
                        #เพิ่มตรงนี้
        }
ตามรูปแบบนี้
Code:
ไอดี => ["ชื่อภาพ",ความเร็วแนวนอน(ขวาไปซ้าย),ความเร็วแนวตั้ง(ล่างขึ้นบน)],
เช่น
Code:
1     => ["001-Sky01",-30,0],

สำหรับสคริปต์ MOG_Battle Panorama

ตั้งค่าในส่วนนี้
Code:
module MOG
#ตัวแปรที่เก็บค่าความเร็วของการเลื่อนซ้ายขวา  
    BAT_PANO_VARIABLE_ID_X = 53
#ตัวแปรที่เก็บค่าความเร็วของการเลื่อนขึ้นลง
    BAT_PANO_VARIABLE_ID_Y = 54
#สวิตช์เช็คการสุ่มการเคลื่อนไหวของพื้นหลัง
    BAT_PANO_RAND_SWITCH_ID = 28  
#เวลาที่พื้นหลังจะสุ่ม (เป็นวินาที)
    BAT_PANO_RAND_TIME = 2  #(s)
#    สวิตช์เช็คการซูมการเคลื่อนไหวของพื้นหลัง
    BAT_PANO_ZOOM_SWITCH_ID = 29  
#เวลาที่พื้นหลังจะซูม (เป็นวินาที)
    BAT_PANO_ZOOM_TIME = 2  #(s)
#ความเร็วในการซูมพื้นหลัง
    BAT_PANO_ZOOM_SPEED = 0.007
end
*อนึ่ง Panorama ในฉากต่อสู้จะใช้ตัวเดียวกับ Map

ข้อตกลงการนำไปใช้งาน :
อย่างน้อยๆก็ใส่ชื่อ thetitsueng และ Muge9thD ลงในเครดิตด้วยล่ะ


โค๊ดสคริปต์
Code:
#:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=:
# [XP]ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) * Edited Edition
# By thetitsueng[new]
# Ver 1.01 [26/3/2553]
#+--------------------------+
# ||==changelog==||
# Ver 1.00 by thetitsueng[25/3/2553]
# Ver 1.01 by thetitsueng[26/3/2553]
#     - ปรับให้ใช้ได้กับสคริปต์สู้ด้านข้าง minkoff
# Ver 1.01m by Muge9thD[ไม่ทราบวันที่แก้ไข]
#     - ปรับให้ใช้ MOG - Battle Panorama ได้อย่างสมบูรณ์
#        - ปรับให้ใช้ได้ร่วมกับสคริปต์ Connected Attacking
#        - แก้ไขบัค F12
#+--------------------------+
# http://necz.net
# [email protected]
#=====================================================
=begin
------------------------------------------------------
=> วิธีตั้งค่า :
    - 1.นำสคริปต์นี้ไปวางไว้เหนือ Main และใต้ Scene_Debug
    - 2.เตรียมภาพพื้นหลังสกิลที่มีสกุล .png ไปไว้ในโฟล์เดอร์ Graphics/Panoramas
||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+||
||***     สคริปต์นี้จำเป็นต้องใช้ร่วมกับ สคริปต์ MOG - Battle Panorama      ***||
||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+||
------------------------------------------------------
=end
#=====================================================
# *ส่วนการตั้งค่า
#=====================================================
class Scene_Battle
    alias initialize_new main
    alias make_skill_action_result_new make_skill_action_result
    alias update_phase4_step6_new update_phase4_step6
    def main
        @skill_ids = nil
        #  ห้ามแก้ไขบรรทัดด้านบน
        @skill_ids = {
            1     => ["001-Sky01",-30,0],
            7     => ["001-Sky01",0,5],
            10   => ["004-Cloudysky01",5,7] #สกิลสุดท้ายที่ตั้งค่าจะไม่มี , ต่อท้าย
                        #เพิ่มตรงนี้

        }
        @minkoff = 1 # ถ้าใช้ร่วมกับสคริปต์ต่อสู้ด้านข้าง minkoff ให้เปลี่ยนเป็น 1
        #  สามารถเพิ่มหรือแก้ไขได้โดยใช้แบบฟอร์มด้านล่าง
        #  ไอดี => ["ชื่อภาพ",ความเร็วแนวนอน(ขวาไปซ้าย),ความเร็วแนวตั้ง(ล่างขึ้นบน)],
        #  เช่น    1 => ["001-Sky01",-10,0]
        #  หมายถึงเมื่อใช้สกิลไอดี 1 จะเปลี่ยนภาพพื้นหลังเป็นภาพ 001-Sky01 และจะเลื่อนจากซ้ายไปขวาด้วยความเร็ว 10
        #=====================================================
        # *จบส่วนการตั้งค่า
        #:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=:
        initialize_new
    end
    def make_skill_action_result(battler = @active_battler, plus_id = 0)
        @sid = $data_skills[battler.current_action.skill_id].id
        if @skill_ids[@sid] != nil
            @skill_pano_swicth_c = @skill_ids[@sid]
            if $game_temp.hitcheckbatpano == 0
                @panorama_name_cache = $game_map.panorama_name
                @battleback_name1_cache = $game_map.battleback_name
                @battleback_name2_cache = $game_temp.battleback_name
                @bat_pano_variable_id_x_cache = $game_variables[MOG::BAT_PANO_VARIABLE_ID_X]
                @bat_pano_variable_id_y_cache = $game_variables[MOG::BAT_PANO_VARIABLE_ID_Y]
                @bat_pano_switch_rand_cache = $game_switches[MOG::BAT_PANO_RAND_SWITCH_ID]
                @bat_pano_switch_zoom_cache = $game_switches[MOG::BAT_PANO_ZOOM_SWITCH_ID]
            end
            $game_map.panorama_name = @skill_ids[@sid][0]
            $game_variables[MOG::BAT_PANO_VARIABLE_ID_X] = @skill_ids[@sid][1]
            $game_variables[MOG::BAT_PANO_VARIABLE_ID_Y] = @skill_ids[@sid][2]
            $game_switches[MOG::BAT_PANO_RAND_SWITCH_ID] = false
            $game_switches[MOG::BAT_PANO_ZOOM_SWITCH_ID] = false
            $game_temp.battleback_name = $game_map.battleback_name = ""
            $game_temp.hitcheckbatpano +=1
        end
        make_skill_action_result_new if @minkoff == 0
        make_skill_action_result_new(battler, plus_id) if @minkoff == 1
    end
    def update_phase4_step6(battler = 0)
        update_phase4_step6_new if @minkoff == 0
        update_phase4_step6_new(battler) if @minkoff == 1
        if @skill_pano_swicth_c != nil
            $game_variables[MOG::BAT_PANO_VARIABLE_ID_X] = @bat_pano_variable_id_x_cache
            $game_variables[MOG::BAT_PANO_VARIABLE_ID_Y] = @bat_pano_variable_id_y_cache
            $game_switches[MOG::BAT_PANO_RAND_SWITCH_ID] = @bat_pano_switch_rand_cache
            $game_switches[MOG::BAT_PANO_ZOOM_SWITCH_ID] = @bat_pano_switch_zoom_cache
            $game_map.panorama_name = @panorama_name_cache
            $game_map.battleback_name = @battleback_name1_cache
            $game_temp.battleback_name = @battleback_name2_cache
            $game_temp.hitcheckbatpano = 0
            @skill_pano_swicth_c = nil
        end
    end
end
#:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=:
# [XP]ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้)
# By thetitsueng[new]
#:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=:
#_______________________________________________________________________________
# MOG_Battle Panorama 1.5          
#_______________________________________________________________________________
# By Moghunter              
# http://www.atelier-rgss.com
#_______________________________________________________________________________
# CARACTER?STICAS
# - Adiciona um panorama em movimento no campo de batalha.
# - Zoom.
# - Movimento aleat?rio.
#
# UTILIZA??O
# - Defina um panorama qualquer no Tilesets.
# - Modifique o valor da vari?vel que corresponder? a velocidade
#   do panorama de fundo.
# - ? necess?rio que o Battleback tenha alguma transpar?ncia
#   para que a visualiza??o do panorama seja poss?vel.
#_______________________________________________________________________________
module MOG
    #Defini??o da vari?vel que definir? a velocidade na horizontal.  
    BAT_PANO_VARIABLE_ID_X = 53
    #Defini??o da vari?vel que definir? a velocidade na vertical.  
    BAT_PANO_VARIABLE_ID_Y = 54
    #ID da Switch que ativa o movimento aleat?rio do panorama.
    BAT_PANO_RAND_SWITCH_ID = 28  
    #Tempo para mudar de dire??o do panorama.
    BAT_PANO_RAND_TIME = 2  #(s)
    #ID da Switch que ativa o zoom no panorama.
    BAT_PANO_ZOOM_SWITCH_ID = 29  
    #Tempo para mudar de zoom (IN para OUT).
    BAT_PANO_ZOOM_TIME = 2  #(s)
    #Poder (Velocidade) do zoom.
    BAT_PANO_ZOOM_SPEED = 0.007
end
#_______________________________________________________________________________
$mogscript = {} if $mogscript == nil
$mogscript["Battle_Panorama"] = true
################
# Scene_Battle #
################
class Scene_Battle
    alias mog04_main main
    def main
        @mb = Plane.new
        @mb.bitmap = RPG::Cache.panorama($game_map.panorama_name,0) rescue nil
        @mb.z = -1
        @mbr = 0
        @bat_pano_x = 0
        @bat_pano_y = 0
        @bat_pano_speed_x = 1
        @bat_pano_speed_y = 1
        @bat_pano_zoom_x = 0
        @bat_pano_zoom_y = 0
        @bat_pano_zoom_time_x = 0
        @bat_pano_zoom_time_y = 0
        mog04_main
        @mb.dispose
    end
    alias mog04_update update
    def update
        @mb.bitmap = RPG::Cache.panorama($game_map.panorama_name,0) rescue nil
        if $game_switches[MOG::BAT_PANO_RAND_SWITCH_ID] == true
            @mbr += 1
            if @mbr > 40 * MOG::BAT_PANO_RAND_TIME
                @mbr = 0
                case rand(2)
                when 0
                    @bat_pano_x = 0
                when 1
                    @bat_pano_x = 1
                end
                case rand(2)
                when 0
                    @bat_pano_y = 0
                when 1
                    @bat_pano_y = 1
                end
                case rand(2)
                when 0
                    @bat_pano_speed_x = 1
                when 1
                    @bat_pano_speed_x = 2
                end
                case rand(2)
                when 0
                    @bat_pano_speed_y = 1
                when 1
                    @bat_pano_speed_y = 2
                end
            end
            if @bat_pano_x == 0
                @mb.ox += $game_variables[MOG::BAT_PANO_VARIABLE_ID_X] * @bat_pano_speed_x
            else
                @mb.ox -= $game_variables[MOG::BAT_PANO_VARIABLE_ID_X] * @bat_pano_speed_x    
            end
            if @bat_pano_y == 0
                @mb.oy += $game_variables[MOG::BAT_PANO_VARIABLE_ID_Y] * @bat_pano_speed_y
            else
                @mb.oy -= $game_variables[MOG::BAT_PANO_VARIABLE_ID_Y] * @bat_pano_speed_y
            end
        else
            @mb.ox += $game_variables[MOG::BAT_PANO_VARIABLE_ID_X]
            @mb.oy += $game_variables[MOG::BAT_PANO_VARIABLE_ID_Y]
        end
        if $game_switches[MOG::BAT_PANO_ZOOM_SWITCH_ID] == true
            if  @bat_pano_zoom_x > 1
                @bat_pano_zoom_x = 0
            end
            if  @bat_pano_zoom_y > 1
                @bat_pano_zoom_y = 0
            end
            @bat_pano_zoom_time_x += 1
            @bat_pano_zoom_time_y += 1
            if @bat_pano_zoom_time_x > 40 * MOG::BAT_PANO_ZOOM_TIME
                @bat_pano_zoom_time_x = 0  
                @bat_pano_zoom_x += 1
            end
            if @bat_pano_zoom_time_y > 40 * MOG::BAT_PANO_ZOOM_TIME
                @bat_pano_zoom_time_y = 0  
                @bat_pano_zoom_y += 1
            end  
            if @bat_pano_zoom_x == 0
                @mb.zoom_x += MOG::BAT_PANO_ZOOM_SPEED
            elsif @bat_pano_zoom_x == 1
                @mb.zoom_x -= MOG::BAT_PANO_ZOOM_SPEED
            end
            if @bat_pano_zoom_y == 0
                @mb.zoom_y += MOG::BAT_PANO_ZOOM_SPEED
            elsif  @bat_pano_zoom_y == 1
                @mb.zoom_y -= MOG::BAT_PANO_ZOOM_SPEED
            end
            if @mb.zoom_x > 2.0
                @mb.zoom_x = 2.0  
            elsif @mb.zoom_x < 1.0
                @mb.zoom_x = 1.0  
            end
            if @mb.zoom_y > 2.0
                @mb.zoom_y = 2.0  
            elsif @mb.zoom_y < 1.0
                @mb.zoom_y = 1.0  
            end
        end
        mog04_update
    end
end
class Game_Temp
attr_accessor :hitcheckbatpano
alias hitcheckinitialize initialize
def initialize
hitcheckinitialize
@hitcheckbatpano = 0
end
end



RE: ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - Shinryu - 08-11-2012

ไม่ใช่ของผม เป็นสคริปต์สู้ด้านข้าง minkoff ตะหาก


RE: ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - ACSII - 08-11-2012

อันนี้คือถ้าใช้สกิลแล้วพื้นหลังเป็นPanorama แล้วเปลี่ยนกลับอย่างเดิมก็ดีนะ คือผมเคยลองใช้กับ ฉากต่อสู้เป็น Panorama คือมันเปลี่ยนแล้วไม่เปลี่ยนกลับน่ะครับ เดียวนำไปลองก่อน
ขอบคุณมาก


RE: ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - luvikung - 08-11-2012

แจ๋วมากครับ =[]=b


RE: ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - Muge9thD - 08-11-2012

@ASCII ตัวนี้ผมแก้ไขบั๊กพวกนั้นเรียบร้อยแล้วครับ สบายใจหายห่วงได้เลย
@Shinryu แหม พิมพ์ผิดนะครับ #แก้ไขแล้วนะครับ
ปล. นี่คือหนึ่งในระบบที่ผมแก้ไขมาอย่างภูมใจ(ถึงจะไม่ได้เขียนเองก็เหอะ/Yao1)

*Edit แก้ไข code นิดหน่อยฮะ(ลืมใส่ Class Game_Temp ที่ใช้เก็บตัวแปร)


RE: ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - Shinryu - 08-11-2012

@ACSII
ตัวนี้เปลี่ยนไปเปลี่ยนกลับน้อ เปลี่ยนกลับหลังใช้สกิลจบ

ระบบนี้ผมเคยทำแบบเหตุการณ์ จนสคริปเตอร์ทนไม่ไหวมาทำให้


RE: ใช้สกิลแล้วเปลี่ยนพื้นหลัง(พื้นหลังสามารถเลื่อนได้) *เวอร์ชั่นปรับปรุง - ACSII - 08-11-2012

ใช้ได้แล้วครับ ขอบคุณมาก รักและคิดถึง จุ๊ฟๆๆๆๆ