irpg Community
[RMXP][Script + Demo]ระบบไฟฉาย 1.0.1 Update - Printable Version

+- irpg Community (http://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (http://irpg.in.th/forum-4.html)
+--- Forum: RGSS and JS Showcase (http://irpg.in.th/forum-26.html)
+--- Thread: [RMXP][Script + Demo]ระบบไฟฉาย 1.0.1 Update (/thread-2939.html)



[RMXP][Script + Demo]ระบบไฟฉาย 1.0.1 Update - XthemeCore - 08-16-2016

ระบบไฟฉาย
[Image: fl_ss.png]

ระบบนี้พัฒนาขึ้นเอง โดยอาศัยภาพจากเว็บนี้ http://centrorpg.com/index.php?topic=11458.0 (ในเว็บเป็น Script ของ VX Ace แต่ลักษณะการเขียนไปคนละทาง ง่วง ) รูปภาพมีการดัดแปลงเล็กน้อยให้เข้ากับ Script (รูปเดิมยังไม่ได้ revert ภาพ + ขนาดใหญ่ไม่พอ)

การติดตั้งและใช้งาน
1. ดาวน์โหลดรูปภาพไฟฉายจากลิงค์ด้านล่างนี้ ไปใส่ในโฟลเดอร์ Pictures ของโปรเจคเกม
รูปภาพLantern

2.ก็อปโค้ดด้านล่างนี้ไปวางเหนือ Main ใน Script โดยแก้ไขตัวแปรดังต่อไปนี้ให้เป็นตามที่ต้องการ
  • $Flashlight_Switch คือ Switch ที่จะใช้ในการเปิดปิดระบบไฟฉาย (เผื่อกรณีเข้าฉากเหตุการ์ณ แล้วไม่อยากให้ระบบไฟฉายทำงาน) ค่าเริ่มต้นเป็น 1
  • $Flashlight_Picture_Id คือ หมายเลขรูปภาพ (ตามปกติเวลาใช้คำสั่ง Show/Move/Erase Pictures จะมีให้ใส่หมายเลขภาพ ก็คือใส่อันนั้นแหละ มีค่าตั้งแต่ 1 - 50) ค่าเริ่มต้นเป็น 1
  • $Flashlight_Picture คือ ชื่อรูปภาพ หากโหลดไฟล์ตัวอย่างให้ใช้ค่าพื้นฐานเลยคือ Lantern
  • $Flashlight_Key คือ ปุ่มที่จะใช้กดเปิดปิด ไฟฉาย ค่าเริ่มต้นคือ X (คือปุ่ม A บนคีย์บอร์ด) สามารถดูค่าปุ่มได้โดยการกด F1
  • $Flashlight_Darkness คือ ค่าความมืด มีค่าตั้งแต่ 0 - 255 (255 จะมืดที่สุด) ค่าเริ่มต้น คือ 128

Code:
#==============================================================================
# Simple Flashlight 1.0.1
#------------------------------------------------------------------------------
# Credit: XthemeCore
#==============================================================================
$Flashlight_Switch = 1 # ต้องมีค่ามากกว่า 0
$Flashlight_Picture_Id = 1   # ต้องมีค่าระหว่าง 1 - 50
$Flashlight_Picture = "Lantern"
$Flashlight_Key = Input::X
$Flashlight_Darkness = 128


#==============================================================================
# **Game_Picture
#------------------------------------------------------------------------------
#  เขียนทับตัวแปร angle ใน Game_Picture เพื่อให้สามารถเข้าถึงค่าองศาของรูปได้
#==============================================================================

class Game_Picture
  attr_accessor :angle # องศาของรูปภาพ
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  เขียนทับ Update เพื่อตรวจสอบการกดปุ่มเปิดไฟฉาย
#==============================================================================

class Scene_Map  
alias overwrite_update update
def update
  overwrite_update
  flashlight_update
end
#--------------------------------------------------------------------------
#  อัพเดตระบบไฟฉาย
#--------------------------------------------------------------------------
def flashlight_update
  if $game_switches[$Flashlight_Switch] == true
    if $flashlight_spark == nil
        $game_screen.start_tone_change(Tone.new(-$Flashlight_Darkness, -$Flashlight_Darkness, -$Flashlight_Darkness,0), 2)
        $flashlight_spark = false
    end
    if Input.trigger?($Flashlight_Key)
      if $flashlight_spark == false
        $game_screen.start_tone_change(Tone.new(0,0,0,0), 0)
        $game_screen.pictures[$Flashlight_Picture_Id].show($Flashlight_Picture, 1, $game_player.screen_x, $game_player.screen_y, 100, 100, $Flashlight_Darkness, 2)
        flashlight_direction_update
        $flashlight_spark = true
      else        
        $game_screen.start_tone_change(Tone.new(-$Flashlight_Darkness, -$Flashlight_Darkness, -$Flashlight_Darkness,0), 2)
        $flashlight_spark = false        
        $game_screen.pictures[$Flashlight_Picture_Id].move(2, 1, $game_player.screen_x, $game_player.screen_y, 100, 100, 0, 2)
        flashlight_direction_update
      end
    elsif $flashlight_spark == true
        $game_screen.pictures[$Flashlight_Picture_Id].move(2, 1, $game_player.screen_x, $game_player.screen_y, 100, 100, $Flashlight_Darkness, 2)
        flashlight_direction_update
    end
  end
end
#--------------------------------------------------------------------------
#  อัพเดตทิศทางไฟฉาย
#--------------------------------------------------------------------------
def flashlight_direction_update
  case $game_player.direction
  when 2
      $game_screen.pictures[$Flashlight_Picture_Id].angle = 0
  when 4
      $game_screen.pictures[$Flashlight_Picture_Id].angle = 270
  when 6
      $game_screen.pictures[$Flashlight_Picture_Id].angle = 90
  when 8
      $game_screen.pictures[$Flashlight_Picture_Id].angle = 180
  end
end
end

3.ให้สร้างเหตุการ์ณที่ทำให้ Switch สำหรับเปิดระบบไฟฉาย เป็น on แล้วทดลองกดปุ่มตามที่ตั้งไว้ดู (ค่าเริ่มต้นคือปุ่ม A บนคีย์บอร์ด)

ตัวอย่าง
สามารถโหลดไฟล์ตัวอย่างได้ที่นี่ ลิงค์

คำแนะนำ
  • ภาพควรมีขนาด 1600x1600
  • ถ้าต้องการปรับค่าความมืดด้วย Event (เช่น บางฉากต้องการให้ความมืดต่างกัน) ให้ใช้ Call Script แล้วใส่คำสั่ง $Flashlight_Darkness = XXX โดย XXX แทนค่าความมืดมีค่าระหว่าง 0-255



Credit
XthemeCore


RE: [RMXP][Script + Demo]ระบบไฟฉาย 1.0.1 Update - Mysticphoenix - 08-17-2016

ขอบคุณครับ แจ๋วๆ