Galaxy   10-17-2012, 06:24 PM
#1
Sound STEP 2.0!! เติมแต่งเสียงเดินด้วยสคริปต์~!

[Image: 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 [woratana@hotmail.com]
# 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. (woratana@hotmail.com)
#==============================================

#============================================
# 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. (woratana@hotmail.com)
#==============================================

วิธีการใช้
ในเดโมมีอธิบายบางส่วนแล้วน้อ~

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:
$hero_step = 1
เปรียบเทียบกับสคริปต์ที่อยู่ข้างบน
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]

จากรูป จะเห็นว่ามีคอมเม้นท์อยู่ 3 อัน ซึ่งแต่ละอันทำงานดังนี้:
Code:
Comment: step
ใส่คอมเม้นท์เขียนว่า step เพื่อเปิดการทำงานเสียงเดินครับ ถ้าไม่ใส่อันนี้ก็ไม่มีเสียงเดินน้อ (บังคับใส่ =w=b ถ้าจะเอาเสียงเดิน)
Code:
Comment: -1
คอมเม้นท์บรรทัดที่สองนี่ จะใส่หรือไม่ใส่ก็ได้ครับ ถ้าไม่ใส่มันจะเล่นเสียงปกติที่เราเซ็ตไว้ด้านล่างบรรทัดนี้
Code:
# Setup Normal Sound
(ถ้าไม่ใส่จะเป็นแบบเดินเสียงเดียวนั่นเอง)

ส่วนถ้าใส่ มีเลขที่ใส่ได้ดังนี้ครับ >>
Quote:0 คือ เล่นเสียงปกติ (เหมือนกับไม่ใส่นั่นแล)
-1 คือ เล่นเสียงตาม Terrain Tag
เลขอื่น ๆ (1 ขึ้นไป...) คือ เล่นเสียงเสียงเดียว
ที่ตั้งค่าเสียงแบบนี้น่ะครับ >>
QUOTE
@sound_step[หมายเลข] = "ชื่อไฟล์เสียง"

เอาส่วน หมายเลข มาใส่เข้าไปได้เลย
สำหรับคอมเม้นท์อันสุดท้าย
Code:
Comment: 50
อันนี้ คือ ความดังของเสียงเดินครับ ถ้าไม่ใส่มันก็จะเล่นเสียงที่ความดังปกติ
(เซ็ตได้ในส่วน
Code:
# Setup Normal Sound
ครับ)

ความดังของเสียงใส่ได้ตั้งแต่ 0-100 ครับ~^^

=================
สรุป: - การติดตั้งเสียงเดินให้อีเว้นท์ ต้องใส่คอมเม้นท์อันแรกเขียนว่า step
- ตรงรูปแบบเสียง กับความดังเสียง ถ้าไม่เอาก็ใส่คอมเม้นท์แค่อันแรก (step) อย่างเดียวพอ
- ถ้าจะเอาความดังเสียง (คอมเม้นท์สาม) ต้องกำหนดรูปแบบเสียง (คอมเม้นท์สอง) ด้วยครับ
- ส่วนถ้าจะเอารูปแบบเสียง ไม่เอาความดังเสียง ก็ไม่ต้องใส่คอมเม้นท์สำหรับความดังเสียง >_<
=================================>

เครดิต วอราม่อน
Pethple   07-10-2015, 07:41 PM
#2
(Terrain Tag สามารถเปลี่ยนได้ใน ฐานข้อมูล => Tileset) ขอละเอียดกว่านี้ได้ไหมคับ

สร้างเกมอยู่...
cdaz   08-01-2015, 03:29 PM
#3
ขอบคุณมากครับ แต่ขอถามหน่อยครับ
ถ้าอยากได้เสียงหลายชุดกว่านี้ต้องแก้ยังไงเหรอครับ ประมาณมอนส์เตอร์แต่ละตัวก็มีเสียงเดินต่างกันไปน่ะครับ
  
Users browsing this thread: 5 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.