Sound STEP 2.0!! เติมแต่งเสียงเดินด้วยสคริปต์~!
หลังจากนั่งงมมานาน ในที่สุดก็เสร็จแล้วครับ >_</
เป็นสคริปต์แรกในชีวิตเลยมั้งที่เขียนเองจริง ๆ = ="
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 วิธีการตั้งค่าเสียงเดินให้อีเว้นท์
ไปที่อีเว้นท์ที่ต้องการใส่เสียงเดินนะครับ แล้วใส่คอมเม้นท์เข้าไปด้านบนสุด
รูปตัวอย่าง:
จากรูป จะเห็นว่ามีคอมเม้นท์อยู่ 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) อย่างเดียวพอ
- ถ้าจะเอาความดังเสียง (คอมเม้นท์สาม) ต้องกำหนดรูปแบบเสียง (คอมเม้นท์สอง) ด้วยครับ
- ส่วนถ้าจะเอารูปแบบเสียง ไม่เอาความดังเสียง ก็ไม่ต้องใส่คอมเม้นท์สำหรับความดังเสียง >_<
=================================>
เครดิต วอราม่อน