irpg Community

Full Version: รวมวิธีดึง วัน-เวลา จากเครื่องมาเก็บในตัวแปรของ RPG Maker แต่ละรุ่น
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
วิธีดึง วัน-เวลา จากเครื่องมาเก็บในตัวแปร

RMMV
RMMV ใช้ภาษา Javascript จึงทำให้การดึง วันและเวลา จากเครื่องมาใช้ ทำได้ง่ายมาก

เพียงแค่ตั้งค่าตัวแปรตามภาพด้านล่างนี้
[Image: AvTTCSu.png]
ก็จะได้เวลาที่เป็นชั่วโมงจากเครื่องมาเก็บไว้ในตัวแปรเลย (เช่นเวลา 16:40 ก็จะได้ว่า 16)

การดึงข้อมูล วัน-เวลา ต่างๆ
วันที่ => new Date().getDate();
วันในสัปดาห์ => new Date().getDay(); (เริ่มต้นที่วันอาทิตย์มีค่าเป็น 0)
เดือน  => new Date().getMonth() + 1; (เดือนต้องบวก 1 เพราะมกราคม มันนับเป็นเดือนที่ 0)
ปี      => new Date().getFullYear();
ชั่วโมง => new Date().getHours();
นาที   => new Date().getMinites();
วินาที  => new Date().getSeconds();

วันเวลาแบบข้อความ (สามารถแทนค่า default ด้วย en-us สำหรับภาษาอังกฤษ หรือ th-th สำหรับภาษาไทย)
ชื่อวันในสัปดาห์(เต็ม) => new Date().toLocaleString('default',{ weekday:'long'})
ชื่อวันในสัปดาห์(ย่อ) => new Date().toLocaleString('default',{ weekday:'short'})
ชื่อเดือน(เต็ม) => new Date().toLocaleString('default',{ month:'long'})
ชื่อเดือน(ย่อ) => new Date().toLocaleString('default',{ month:'short'})
สำหรับ XP, VX และ VX Ace

สามเวอร์ชั่นนี้จะเหมือนกัน คือใช้ Ruby Script ในการดึง
โดยสามารถดึงวัน-เวลาโดยใช้สคริปต์


Code:
Time.new หรือ Time.now

สามารถดึงวันเวลาแบบเต็มออกมาได้โดยใส่สคริปต์


Code:
ตัวแปร = Time.new

ตัวอย่าง
[Image: cS0xEKd.png]
จะเป็นการดุงเวลามาใส่ไว้ในตัวแปรเบอร์ 1


หากต้องการดึงเวลาออกมาเฉพาะค่าที่ต้องการ

วิธีที่ 1 แบบเป็นข้อความ

Code:
Time.new.strftime(format)

ตัวอย่าง Format ที่สำคัญ
%A วัน แบบเต็ม (Sunday, Monday ... )
%a วัน แบบย่อ (Sun, Mon ... )
%B เดือน แบบเต็ม (January, February ... )
%b เดือน แบบย่อ (Jan, Feb ... )
%m เดือนแบบตัวเลข (01-12)
%c วันและเวลา
%d วันที่
%Y ปี ค.ศ. แบบเต็ม
%y ปี ค.ศ. แบบย่อ (2022 => 22)

%H เวลาในหน่วยชั่วโมง แบบ 24-hour format (00-23)
%I เวลาในหน่วยชั่วโมง แบบ 12-hour format (01-12)
%M นาที (00-59)
%p AM or PM
%S วินาที (00-60, 60 being a leap second)



อ่านต่อได้ใน Help File ของ RPG Maker ทั้งสามรุ่น

ตัวอย่างการใส่สคริปต์
Code:
@hour = Time.new.strftime("%H")
@min = Time.new.strftime("%M")
@sec = Time.new.strftime("%S")

จะเป็นการดึงเวลา ชั่วโมง มาใส่ในตัวแปร @hour, นาที ใส่ในตัวแปร @min และวินาที ใส่ในตัวแปร @sec ตามลำดับ

ตัวอย่าง
[Image: r8bKkT1.png]

หรือจะใส่รวมแบบนี้เลยก็ยังได้ (สคริปต์จะมองเป็นตัวแปรประเภท String จึงพิมพ์เหมือนข้อความปกติได้เลย)

Code:
@time = Time.new.strftime("%H : %M : %S")


นอกจากนี้ XP ยังทำแบบนี้ได้ด้วย
Show ContentSpoiler:


------------------------------------------------------------------------------------------
สามารถศึกษาคำสั่งเกี่ยวกับเวลาของ Ruby Script เพิ่มเติม ได้ที่ 
https://ruby-doc.org/core-2.1.3/Time.htm...yur5OK3hfc
สำหรับ XP, VX และ VX Ace

แบบที่ 2 แบบให้ค่าที่ออกมาเป็นตัวเลข (integer)

เนื่องจากวิธีที่ 1 (ในเรปบน) จะได้ค่าตัวแปรออกมาเป็น String
จึงนำมา บวก/ลบ กันตรงๆไม่ได้
ถ้าบวกกันมันจะออกมาแบบนี้

11 + 22 + 33 = 112233

..............................................................
วิธีแก้

วิธีที่ 1
เปลี่ยนประเภทตัวแปรจากแบบแรก ให้เป็น integer ซะ
โดยเติม .to_i ไว้หลังชื่อตัวแปร
[Image: cdcrKSZ.png]

วิธีที่ 2
เรียกใช้ค่าเวลาที่เป็นตัวเลขโดยตรง

ชั่วโมง   Time.now.hour
นาที      Time.now.min
วินาที    Time.now.sec

อ่านเพิ่มเติมได้ใน Help

-------------------------------------------------------------------
ในทางกลับกัน
ถ้าต้องการแปลง int ไปเป็น string เพื่อเอาไปใช้กับแบบแรก ให้ใส่ .to_s หลังชื่อตัวแปร
เอ ท่านใช้ตัวไหนอยู่ครับ?

ลอง Search ว่า time ดูครับ

ผมอัพให้ละ ตั้งแต่ 2000 ถึง MV เลย
https://www.mediafire.com/folder/qqdj02gws76vm/