irpg Community
แถบจำกัดเวลาเลือกตอบ Renpy - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Sugar School of Ren'Py (https://irpg.in.th/forum-38.html)
+--- Forum: The Great Ren'Py Library (https://irpg.in.th/forum-40.html)
+--- Thread: แถบจำกัดเวลาเลือกตอบ Renpy (/thread-1901.html)



แถบจำกัดเวลาเลือกตอบ Renpy - XthemeCore - 05-21-2014

Code:
##############################################################################
# Timer
#
# :ใช้สำหรับคำถามเลือกตอบที่ต้องการจับเวลาเหมือนในเกม Walking Dead หรือ Wolf Among Us

transform alpha_dissolve:
    alpha 0.0
    linear 0.5 alpha 1.0
    on hide:
        linear 0.5 alpha 0
    # ส่วนนี้ใช้ในงาน Fade In และ Fade Out ของแถบจับเวลา เรียกใช้เพียง 1 ครั้ง

screen countdown:
    timer time repeat False action [Hide('countdown'), Jump(timer_jump)]

# xmaximum คือความกว้างสูงสุดของแถบ ,right_bar คือภาพของแถบด้านขวา , left_bar คือภาพของแถบด้านซ้าย , thumb คือภาพหัวลูกศรที่ใช้ลากแถบ (ในที่นี้ไม่่ได้ใส่ไว้เลยเป็น None )

    bar value AnimatedValue(0, time, time, time) xmaximum 300 xalign 0.70910 yalign 0.05 right_bar "graphics/ui/timed_right_empty.png" left_bar "graphics/ui/timed_full.png"  thumb None


# ปกติแถบจะเปลี่ยนจากด้านซ้ายไปขวา (จะลดหรือเพิ่มขึ้นอยู่กับรูปด้วย) ถ้าต้องการให้กลับด้านกัน ใช้ bar_invert ดังด้านล่างนี้

    bar value AnimatedValue(0, time, time, time) xmaximum 300 xalign 0.30115 yalign 0.05 bar_invert True right_bar "graphics/ui/timed_full.png"  left_bar "graphics/ui/timed_left_empty.png" thumb None

จากตัวอย่างนี้ถ้าลองรันดูจะพบว่า แถบเวลาจะเริ่มจากปลายสุดของแต่ละด้านล้วมาบรรจบที่ตรงกลาง (ตามรูปประกอบด้านล่างนี้)

ลองเอาไปประยุกต์ใช้ดูนะครับ (ผมอธิบายไม่ค่อยเก่ง)
ไฟล์รูปจะอยู่ในไฟล์แนบนะครับ

วิธีใช้
1).แตกไฟล์ zip แล้วนำไปวางในโฟลเดอร์เกมของท่าน
2).นำ Code ด้านบน วางไว้ในไฟล์ .rpy ไฟล์ใดก็ได้ แต่ต้องไม่อยู่ภายใน label screen หรือ init python ใดๆ
(ผมวางไว้ใน screens.rpy ด้านบนสุด)
3).เวลาใช้ ใช้ใน label ทีเราเขียนเนื้อเรื่อง โดยการวาง code นี้ก่อนขึ้นคำสั่งแสดงตัวเลือก

Code:
# time คือเวลาที่ต้องการ , timer_jump คือ ข้ามไป label ชื่อ noanswer หากว่าเวลาหมดก่อนที่ผู้เล่นจะเลือกตอบคำถาม

    $ time = 15
    $ timer_jump = 'noanswer'
    show screen countdown

4).ในตัวเลือกทุกตัวเลือกต้องมีคำสั่ง hide screen countdown
ขึ้นก่อนเสมอ เมื่อปิดแถบจับเวลานี้ไป
5).เท่านี้ก็ได้แถบจับเวลาแล้ว


ตัวอย่างแถบจับเวลา (ถือโอกาสโฆษณานิดๆ >w<)

[Image: wa.jpg]




ขอบคุณครับ แล้วพบกันใหม่โอกาสหน้าสวัสดี >w<