Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
รวมวิธีดึง วัน-เวลา จากเครื่องมาเก็บในตัวแปรของ RPG Maker แต่ละรุ่น
#1
วิธีดึง วัน-เวลา จากเครื่องมาเก็บในตัวแปร

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'})
[-] The following 4 users say Thank You to XthemeCore for this post:
  • DinnerFast, dreamknight, OngkrubG, [IRPG] OP_Jum_RPG
Reply
#2
สำหรับ 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 วันและเวลา
%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
[-] The following 3 users say Thank You to [IRPG] OP_Jum_RPG for this post:
  • DinnerFast, OngkrubG, XthemeCore
Reply
#3
สำหรับ 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 หลังชื่อตัวแปร
[-] The following 2 users say Thank You to [IRPG] OP_Jum_RPG for this post:
  • DinnerFast, XthemeCore
Reply
#4
(04-06-2020, 10:30 AM)OP_Jum_RPG Wrote: อ่านต่อได้ใน Help File ของ RPG Maker ทั้งสามรุ่น

พอจะขอ Help File ของ RPG Maker ทั้งสามรุ่นได้ไหมครับ
Help File ของผมมันมีสอนแค่ Event

อยากได้ ที่มันมี structure ของพวก build-in class เช่น RPG::Sprite ด้วย
แบบที่มันมีในเวปนี้ แต่เป็นไฟล์ที่เก็บไว้ในเครื่องได้น่ะครับ (ผมลองพยายามเซฟจากเวปแล้วมันไม่ได้น่ะครับ)
http://www.rpg-maker.fr/dl/monos/aide/xp...index.html
[Image: Untitled2.jpg]
- Element Series -
Elemental Fragment 1 (2007, 2016, 2020)
Elemental Fragment 2 (2020)
- Celestial Series -
Celestial Realm (2011)
Pocket Mina (2008, 2017)
- Fan Game -
Expheritys Shana RPG (2017, 2020)
- Sample Game -
Infringe Ace Devaduta (2015)
Reply
#5
เอ ท่านใช้ตัวไหนอยู่ครับ?

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

ผมอัพให้ละ ตั้งแต่ 2000 ถึง MV เลย
https://www.mediafire.com/folder/qqdj02gws76vm/
[-] The following 1 user says Thank You to [IRPG] OP_Jum_RPG for this post:
  • acet
Reply
#6
ขอบคุณครับ

ปล.สำหรับบางคนที่อาจจะเปิดแล้วอ่านไฟล์ .chm ไม่ได้
ให้คลิกขวาเลือก properties แล้วเลือก unblock อันล่างสุดนะครับ
- Element Series -
Elemental Fragment 1 (2007, 2016, 2020)
Elemental Fragment 2 (2020)
- Celestial Series -
Celestial Realm (2011)
Pocket Mina (2008, 2017)
- Fan Game -
Expheritys Shana RPG (2017, 2020)
- Sample Game -
Infringe Ace Devaduta (2015)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)