[สคริปต์] Sound STEP 2.0!! เติมแต่งเสียงเดินด้วยสคริปต์~! - Galaxy -  10-17-2012
 
 
Sound STEP 2.0!! เติมแต่งเสียงเดินด้วยสคริปต์~! 
 
![[Image: soundstep-1.jpg]](http://i83.photobucket.com/albums/j295/woratana/soundstep-1.jpg)  
 
หลังจากนั่งงมมานาน ในที่สุดก็เสร็จแล้วครับ >_</ 
เป็นสคริปต์แรกในชีวิตเลยมั้งที่เขียนเองจริง ๆ = =" 
 
Download Demo 
Demo สอนวิธีใช้ครับ~^^ ภาษาอังกฤษ (แบบไทย ๆ) หมดน้อ ตัวเกมแกะได้ (ซะที = =") เผื่ออ่านแล้วงง =w=~ 
ขอบคุณแมพสำหรับทดสอบโดย LusiferNazi ครับ >_</ 
 
มีโฮสต์เดียวให้โหลดก่อนน้อ ใครมีปัญหาการโหลดแจ้งนะครับ~^^ 
 
http://www.mediafire.com/?bhgitjwpjqw 
 
[color=#FF0000][b]คุณสมบัติของสคริปต์ 
- เพิ่มเสียงเดินให้ตัวเรา/อีเว้นท์ได้ 
- อีเว้นท์แต่ละตัวกำหนดเสียงเดิน และความดังของเสียง ให้แตกต่างกันได้~ (ตัวเราก็ทำได้ =w=) 
- กรณีที่ขี้เกียจเซ็ตแบบเฉพาะตัว ก็สามารถตั้งค่า default ไว้ได้ ประหยัดเวลา =w=~ 
- เปิด/ปิดระบบได้ด้วยสวิตช์ 
- ใช้ SDK!! แต่...ไม่ต้องตกใจ ผมตัดมาเฉพาะส่วนที่ใช้ ไม่มีปัญหาเกมรวนแน่นอน >_</ (สำหรับคนไม่รู้จักก็ไม่เป็นไร =w=~) 
- ไร้บั๊ก 99% (เหลือ 1% เพราะผมไม่เจอบั๊ก คนอื่นอาจเจอ = =") 
- ไร้ไวรัส 100% (เพราะอัพลงโฮสต์ mediafire ที่มีการันตีแล้วว่าสแกนไวรัสเรียบร้อย) 
 
Script สคริปต์ 
โหลดได้ที่ไฟล์แนบในโพสนี้เลยงิ~^^ หรือจะเอาจากเดโมก็ได้ครับ! 
Code: #=========================================== 
# * Sound STEP Script v.2 
#------------------------------------------------------------------------------ 
# by Woratana [[email protected]] 
# Thaiware RPG Maker Community 
# Released on: 13/01/2008 
=begin 
# SCRIPTER'S NOTE 
* for File name: you don't have to put file type 
(e.g. file name "Walk.mp3", you just put "Walk" in script) 
=end 
#============================================== 
 
=begin #======================================================================= 
 
#============================================================================== 
# ** RMXP Standard Development Kit 
#------------------------------------------------------------------------------ 
# Build Date - 22.11.05 
# Version 1.0 - Near Fantastica - 22.11.05 
# Version 1.1 - SephirothSpawn - 18.12.05 - (Near Fantastica) 
# Version 1.2 - Near Fantastica - 18.12.05 
=end #=============================================================================== 
 
module SDK 
  #-------------------------------------------------------------------------- 
  # * Returns a list of parameters form a Event Comments 
  #-------------------------------------------------------------------------- 
  def self.event_comment_input(*args) 
    parameters = [] 
    list = *args[0].list 
    elements = *args[1] 
    trigger = *args[2] 
    return nil if list == nil 
    return nil unless list.is_a?(Array) 
    for idem in list 
      next if idem.code != 108 
      if idem.parameters[0] == trigger 
        start = list.index(idem) + 1 
        finish = start + elements 
        for id in start...finish 
          next if !list[id] 
          parameters.push(list[id].parameters[0]) 
        end 
        return parameters 
      end 
    end 
    return nil 
  end 
end #SDK 
 
#=========================================== 
# * Sound STEP Script 
# START from Here! 
# Need Support? just e-mail to me. ([email protected]) 
#============================================== 
 
#============================================ 
# Game Map 
#============================================ 
class Game_Map 
#------------------------------------------------------------------------------ 
# * Setup Sound STEP 
#-------------------------------------------------------------------------- 
SWITCH = 1 # Set Switch for turn on/off system 
$hero_step = -1 # 0 to turn off hero's step sound 
$hero_sound = 80 
attr_accessor :s_sound, :sound_step, :terrain_step, :step_vol, :step_tem, :volume 
#------------------------------------------------------------------------------ 
# * Setup Sounds 
#-------------------------------------------------------------------------- 
alias map_ini initialize 
def initialize 
map_ini 
@sound_step = @terrain_step = @sound = [] 
# Setup Normal Sound 
@sound_step[0] = @terrain_step[0] = "Walk-Tile" # Normal step sound 
@step_vol = 80 # Step sound Volume [Lowest (No sound) 0 - 100 Highes] 
@step_tem = 100 # Step sound Tempo [Default = 100] 
# Add more sounds below here 
@sound_step[1] = "Walk-Grass" 
@sound_step[2] = "Walk-Water" 
@sound_step[3] = "Walk-Hall" 
@sound_step[4] = "Walk-Tile" 
# Add more sounds depend on [Terrain Tag] below here 
@terrain_step[1] = "Walk-Grass" 
@terrain_step[2] = "Walk-Water" 
@terrain_step[3] = "Walk-Hall" 
@terrain_step[4] = "Walk-Tile" 
end 
#------------------------------------------------------------------------------ 
# * Frame Update 
#-------------------------------------------------------------------------- 
 alias map_update update 
 def update 
  map_update 
  return unless $game_switches[SWITCH] == true 
  for i in @events.keys 
    step_check(@events[i]) 
    # Check if start new map 
  end #for 
if $hero_step != 0 
  step_check($game_player) 
end 
end #def update 
#------------------------------------------------------------------------------ 
# * Character Step Check 
#-------------------------------------------------------------------------- 
def step_check(ev) 
    # Setup 
    if ev.lx == 0 
      ev.lx = ev.x 
    end 
    if ev.ly == 0 
      ev.ly = ev.y 
    end 
      # Check event move here 
      if ev.lx != ev.x or ev.ly != ev.y 
      ev.lx = ev.x 
      ev.ly = ev.y 
      # Read Event Comment 
      sound = [] 
      if ev != $game_player 
      eff = SDK.event_comment_input(ev, 2, "step") 
      return if eff.nil? 
      sound = eff.to_a 
      else # Hero Case 
      sound[0] = $hero_step 
      sound[1] = $hero_sound 
      end 
      if sound[1].to_i > 0 
      volume = sound[1].to_i 
      else 
      volume = @step_vol 
    end 
      play_sound(sound,ev,volume) 
    end 
  end 
#------------------------------------------------------------------------------ 
# * Play Sound STEP Effect 
#-------------------------------------------------------------------------- 
 def play_sound(sound,ev,volume) 
  case sound[0].to_i 
  when nil 
    @s_sound = @sound_step[0] 
  when -1 
    terrain_sound(ev) 
  else 
    if @sound_step[sound[0].to_i] != nil 
    @s_sound = @sound_step[sound[0].to_i] 
    else 
    @s_sound = @sound_step[0] 
    end 
  end 
  Audio.se_play("Audio/SE/" + @s_sound.to_s, volume.to_i, @step_tem) 
end 
#------------------------------------------------------------------------------ 
# * Depend on Terrain 
#-------------------------------------------------------------------------- 
def terrain_sound(ev) 
    terrain = ev.terrain_tag 
    if @sound_step[terrain] != nil 
      @s_sound = @sound_step[terrain] 
    else 
      @s_sound = @sound_step[0] 
    end 
end 
  
end #CLASS END 
 
#============================================ 
# Game Character 
#============================================ 
class Game_Character 
#------------------------------------------------------------------------------ 
# * Public Instance Variables 
#-------------------------------------------------------------------------- 
 attr_accessor :lx, :ly 
#------------------------------------------------------------------------------ 
# * Object Initialization 
#-------------------------------------------------------------------------- 
 alias char_initialize initialize 
 def initialize 
  char_initialize 
  @lx = 0 
  @ly = 0 
  end 
end #Class Game_Character 
#=========================================== 
# * Sound STEP Script END Here 
# Need Support? just e-mail to me. ([email protected]) 
#============================================== 
วิธีการใช้ 
ในเดโมมีอธิบายบางส่วนแล้วน้อ~ 
 
Setup การตั้งค่าเริ่มต้น 
พอแปะสคริปต์เสร็จก็มาตั้งค่ากันก่อนครับ >_</ (ค่าพวกนี้บางส่วนสามารถเปลี่ยนระหว่างเล่นเกมได้) 
ให้ไปหาบรรทัดนี้ 
Code: # * Setup Sound STEP
  แล้วมองลงมาด้านล่าง >> 
 
Quote:SWITCH = 1 
ตั้งหมายเลขสวิตช์สำหรับเปิดปิดสคริปต์ จากด้านบน ระบบจะทำงานเฉพาะเมื่อสวิตช์หมายเลข 1 เปิด 
$hero_step = -1 
ตั้งค่าเสียงขณะฮีโร่เดิน (เปลี่ยนได้ในเกมภายหลัง) ค่าจะแตกต่างกันดังนี้: 
-1 จะทำให้เสียงเดินของฮีโร่แตกต่างกันตามพื้นที่ที่เหยียบ (ตาม Terrain Tag) 
0 จะปิดเสียงเดินฮีโร่ 
ตัวเลข 1 เป็นต้นไป จะกำหนดเสียงเดินฮีโร่เสียงเดียว (ตั้งค่าเสียงในสคริปต์) 
$hero_sound = 80 
ความดังของเสียงเดินฮีโร่ ใส่ได้ตั้งแต่ 0-100 (100 ดังที่สุด) 
 
จากนั้นมองลงมาอีกนิดนึง (นิดเดียวจริง ๆ นะ = =") หาบรรทัดนี้ 
Code: # Setup Normal Sound
  ด้านล่างของบรรทัดนั้น แก้ไขตามต้องการ ดังนี้ >> 
Quote:@sound_step[0] = @terrain_step[0] = "Walk-Tile" 
ใส่ 
ชื่อไฟล์เสียงเดินปกติของอีเว้นท์และฮีโร่ เข้าไป~ ใส่แค่ชื่อไฟล์นะ 
ไม่ต้องมีนามสกุลไฟล์ ครอบด้วยเครื่องหมาย " แบบนี้ "ชื่อไฟล์" 
และไฟล์เสียงนั้นต้องอยู่ในโฟลเดอร์ Audio/SE ของเกมครับ 
@step_vol = 80 
ความดังของเสียงเดินปกติของอีเว้นท์ ใส่ได้ตั้งแต่ 0-100 (100 ดังที่สุด) 
@step_tem = 100 
ปรับเทมโปของเสียง (ปกติ 100 เสียงจะปกติสุด = =" เพราะงั้นปล่อยไว้) 
================================ 
Add Sound เพิ่มเสียงเดิน 
หาบรรทัดล่างคอมเม้นท์สองอันนี้ครับ~ 
Code: # Add more sounds below here
  กับ 
Code: # Add more sounds depend on [Terrain Tag] below here
  ถ้าใส่ใต้อันแรก ไว้ใช้สำหรับระบบเสียงเดินเสียงเดียวครับ 
เช่น 
Code: # Add more sounds below here 
@sound_step[1] = "Walk-Grass" 
@sound_step[2] = "Walk-Water" 
@sound_step[3] = "Walk-Hall" 
@sound_step[4] = "Walk-Tile"
  รูปแบบการเพิ่มก็คือ: 
Code: @sound_step[หมายเลข] = "ชื่อไฟล์เสียง"
  
กรณีจะเรียกใช้เสียงนั้น ๆ สำหรับฮีโร่ก็ให้ Call Script รูปแบบนี้: 
Code: $hero_step = หมายเลข
  เช่น 
เปรียบเทียบกับสคริปต์ที่อยู่ข้างบน 
Code: @sound_step[1] = "Walk-Grass"
  เสียงเดินฮีโร่ตอนนี้ก็จะเป็น "Walk-Grass" ตลอดนั่นเองครับ 
 
ส่วนวิธีตั้งค่าเสียงเสียงเดียวให้อีเว้นท์ อ่านในหัวข้อด้านล่าง 
Add Event's Step Sound วิธีการตั้งค่าเสียงเดินให้อีเว้นท์ ครับ~^^ 
======================== 
ต่อไปเป็นวิธีเพิ่มเสียงแบบที่สองครับ ใต้อันนี้ 
Code: # Add more sounds depend on [Terrain Tag] below here
  จะเอาไว้ใส่เสียงที่แตกต่างกันตาม Terrain Tag ครับ~^^ 
(กรณีตั้งค่ารูปแบบเสียงฮีโร่ หรืออีเว้นท์ให้เป็น -1 นั่นเอง) 
 
รูปแบบ: 
Quote:@terrain_step[หมายเลข] = "ชื่อไฟล์" 
 
 
ตัวอย่าง: 
Code: # Add more sounds depend on [Terrain Tag] below here 
@terrain_step[1] = "Walk-Grass" 
@terrain_step[2] = "Walk-Water" 
@terrain_step[3] = "Walk-Hall" 
@terrain_step[4] = "Walk-Tile"
  
ซึ่งกรณี @terrain_step[0] จะหมายถึง เสียงที่ดังขึ้นตอนเราเหยียบบน Terrain Tag หมายเลข 0 
@terrain_step[2] ก็คือเสียงที่ดังตอนเราเหยียบบน Terrain Tag 2นั่นเองครับ~^^ 
(Terrain Tag สามารถเปลี่ยนได้ใน ฐานข้อมูล => Tileset) 
 
================================ 
Add Event's Step Sound วิธีการตั้งค่าเสียงเดินให้อีเว้นท์ 
ไปที่อีเว้นท์ที่ต้องการใส่เสียงเดินนะครับ แล้วใส่คอมเม้นท์เข้าไปด้านบนสุด 
 
รูปตัวอย่าง: 
![[Image: stepment.jpg]](http://i83.photobucket.com/albums/j295/woratana/stepment.jpg)  
 
จากรูป จะเห็นว่ามีคอมเม้นท์อยู่ 3 อัน ซึ่งแต่ละอันทำงานดังนี้: 
ใส่คอมเม้นท์เขียนว่า step เพื่อเปิดการทำงานเสียงเดินครับ ถ้าไม่ใส่อันนี้ก็ไม่มีเสียงเดินน้อ (บังคับใส่ =w=b ถ้าจะเอาเสียงเดิน) 
คอมเม้นท์บรรทัดที่สองนี่ จะใส่หรือไม่ใส่ก็ได้ครับ ถ้าไม่ใส่มันจะเล่นเสียงปกติที่เราเซ็ตไว้ด้านล่างบรรทัดนี้ 
Code: # Setup Normal Sound
  (ถ้าไม่ใส่จะเป็นแบบเดินเสียงเดียวนั่นเอง) 
 
ส่วนถ้าใส่ มีเลขที่ใส่ได้ดังนี้ครับ >> 
Quote:0 คือ เล่นเสียงปกติ (เหมือนกับไม่ใส่นั่นแล) 
-1 คือ เล่นเสียงตาม Terrain Tag 
เลขอื่น ๆ (1 ขึ้นไป...) คือ เล่นเสียงเสียงเดียว 
ที่ตั้งค่าเสียงแบบนี้น่ะครับ >> 
QUOTE 
@sound_step[หมายเลข] = "ชื่อไฟล์เสียง" 
 
เอาส่วน หมายเลข มาใส่เข้าไปได้เลย 
สำหรับคอมเม้นท์อันสุดท้าย 
อันนี้ คือ ความดังของเสียงเดินครับ ถ้าไม่ใส่มันก็จะเล่นเสียงที่ความดังปกติ 
(เซ็ตได้ในส่วน 
Code: # Setup Normal Sound
  ครับ) 
 
ความดังของเสียงใส่ได้ตั้งแต่ 0-100 ครับ~^^ 
 
================= 
สรุป: - การติดตั้งเสียงเดินให้อีเว้นท์ ต้องใส่คอมเม้นท์อันแรกเขียนว่า step 
- ตรงรูปแบบเสียง กับความดังเสียง ถ้าไม่เอาก็ใส่คอมเม้นท์แค่อันแรก (step) อย่างเดียวพอ 
- ถ้าจะเอาความดังเสียง (คอมเม้นท์สาม) ต้องกำหนดรูปแบบเสียง (คอมเม้นท์สอง) ด้วยครับ 
- ส่วนถ้าจะเอารูปแบบเสียง ไม่เอาความดังเสียง ก็ไม่ต้องใส่คอมเม้นท์สำหรับความดังเสียง >_< 
=================================> 
 
เครดิต วอราม่อน
 
 
 
RE: [สคริปต์] Sound STEP 2.0!! เติมแต่งเสียงเดินด้วยสคริปต์~! - Pethple -  07-10-2015
 
 
(Terrain Tag สามารถเปลี่ยนได้ใน ฐานข้อมูล => Tileset) ขอละเอียดกว่านี้ได้ไหมคับ
 
 
 
RE: [สคริปต์] Sound STEP 2.0!! เติมแต่งเสียงเดินด้วยสคริปต์~! - cdaz -  08-01-2015
 
 
ขอบคุณมากครับ แต่ขอถามหน่อยครับ 
ถ้าอยากได้เสียงหลายชุดกว่านี้ต้องแก้ยังไงเหรอครับ ประมาณมอนส์เตอร์แต่ละตัวก็มีเสียงเดินต่างกันไปน่ะครับ
 
 
 
 |