irpg Community
ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RPG Maker Engine School (https://irpg.in.th/forum-7.html)
+--- Thread: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ (/thread-2540.html)

Pages: 1 2


ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - cdaz - 08-30-2015

ใช้วิธีสร้างไฟล์รูปภาพเอาไว้เป็นภาพตัวเลข 1-9
สร้าง Condition ตรวจสอบว่าถ้าค่าตัวแปรเท่ากับ 1 ให้แสดงรูปภาพตัวเลข 1
ถ้าค่าตัวแปร เท่ากับ 2 แสดงภาพตัวเลข 2 ไปเรื่อยจนถึง 9


แต่พอถึงเลขสิบคือจุดที่ผมติดอยู่เพราะ พอเลขขึ้นหลักสิบไป
ผมไม่สามารถหาทางทำให้ตัวเลขหลักหรน่วยมันกลับเป็น 0 ได้

คือแทนที่จะเป็น 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
มันกลับกลายเป็น 1 2 3 4 5 6 7 8 9 19 19 19 19 19 19 19 19 19 19 29

รวมถึงหลักสิบก็ด้วยพอขึ้นถึงหลักร้อยผมก็หาทางให้หลักสิบกลายเป็น 0
พอค่าถึง 100 ก็กลายเป็นแสดงเป็น 199 ไปเลย
ตามคลิปนี้เลยน่ะครับ



ผมต้องแยกตัวแปร หลักสิบ และหลักหน่อยออกมาจากค่าตัวแปรหลักหรืออะไรแบบนั้นรึเปล่าครับ
อันนี้หน้า Event ของผมครับ
[Image: SNAG-0000.jpg]


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - Nazuth - 08-30-2015

ตั้งตัวแปรตัวหนึ่งทำเป็นสกอร์

ตั้งอีเวนท์ให้เช็คเงื่อนไขตัวแปรสกอร์นั้นถ้ามีค่าหลักหน่วย0-9ให้แสดงภาพตามที่เลข
ตั้งเงื่อนไขถ้าเป็นเลข10 20 30 40 50 60 70 80 90 ให้หลักหน่วยแสดงเลข0
คั้งเงื่อนไขถ้าหลักสิบเป็นเลข10-19ให้แสดงเป็นหลักเป็น1
คั้งเงื่อนไขถ้าหลักสิบเป็นเลข20-29ให้แสดงเป็นหลักเป็น2
ไล่ไปเรื่อยๆ
หลักร้อยก็ใช้หลักการเดียวกัน

ผมเคยทำอยู่ในเกมนี้



RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - cdaz - 08-30-2015

จะให้มันตรวจสอบตัวเลขหลักหน่อยยังไงเหรอครับ
ต้องสร้างตัวแปรมาแยกเก็บค่าหลักหน่วยอีกทีใช่ไหมครับ แต่จะดึงเอาเฉพาะหลักหน่วยมาแยกเก็บยังไงเหรอครับ


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - Nazuth - 08-30-2015

ใช่ครับแยกเลย


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - cdaz - 08-30-2015

ได้แล้ว ขอบคุณมากครับ !!


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - OP_Jum_RPG - 08-30-2015

ลำบากไปท่าน ใช้คำสั่ง mod (%) ไปเลยง่ายกว่า

สร้างตัวแปรเพิ่ม เป็นค่าประจำแต่ละหลักด้วย
หลักหน่วย = ตัวแปร%10
หลักสิบ = ตัวแปร %100 แล้ว หาร 10
หลักร้อย = ตัวแปร %1000 แล้ว หาร 100
สูงกว่านี้ก็ใช้รูปแบบนี้ไปเรื่อยๆ

แล้วเช็คทีละหลัก โชว์รูปตามปกติ


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - freemancer - 08-30-2015

ขอถามเพิ่มเติมนะครับ ตัวนี้ผมก็เคยพยายามเหมือนกัน เพราะผมอยากใช้อีเวนท์ โชว์ค่าตัวแปร เป็นอักษร พิเศษที่วาดเปนรูปภาพขึ้นมา

*สมมุติขอตั้งโจทย์ว่าตัวแปรA มีค่าเท่ากับ 2015
ต้องการแยกจำนวนหลักเป็นหลักหน่วย หลักสิบ หลักร้อย หลักพัน จะคิดค่าให้แยกตัวแปรยังไงหรอครับจากค่าตัวแปรA

เพราะ ผมลองคิดว่า ถ้า หารค่าตัวแปรเอา จำนวนเต็ม ตามโจทย์นี้ A%1000 มันจะได้2 เป็นตัวแปรเต็ม แล้วหลักที่เหลือๆตรงนี้ผมค่อนข้างจะงงต่อเลยครับ


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - OP_Jum_RPG - 08-30-2015

2015%1000 ได้ 15 ครับ
mod (%) คือหารแล้วเอาเศษครับ

2015%10 = 5
2015%100 = 15 -> /10 = 1
2015%1000 = 15 -> /100 = 0
2015 /1000 = 2

ครับ

RPG Maker ถ้าไม่ได้กำหนดไว้ โปรแกรมจะคิดตัวแปรทั้งหมดเป็น INT
หรือก็คือ ทศนิยมตัดทิ้ง ไม่มีการปัดเศษนะครับ

[Image: Sep_Degit_Event.jpg]


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - freemancer - 08-30-2015

(08-30-2015, 10:22 PM)OP_Jum_RPG Wrote: 2015%1000 ได้ 15 ครับ
mod (%) คือหารแล้วเอาเศษครับ

2015%10 = 5
2015%100 = 15 -> /10 = 1
2015%1000 = 15 -> /100 = 0
2015 /1000 = 2

ครับ

RPG Maker ถ้าไม่ได้กำหนดไว้ โปรแกรมจะคิดตัวแปรทั้งหมดเป็น INT
หรือก็คือ ทศนิยมตัดทิ้ง ไม่มีการปัดเศษนะครับ

[Image: Sep_Degit_Event.jpg]

โอว ขอบคุณครับท่าน เข้าใจผิดมาตั้งนาน


RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - splendith - 08-31-2015

.

สำหรับผู้ที่ไม่ต้องการเขียน Event ให้มึนงง ขอนำเสนออีกทางเลือกหนึ่ง เป็นการใช้ Script แทนครับ วิธีใช้แค่มีภาพ แล้ว copy script ไปไว้ในเกม เซ็ตค่านิดหน่อย ใช้ได้เลยคร้าบ
(จริงๆ ตอนแรกจะเขียนให้ จขกท เป็นทางเลือก แต่มาดูอีกที จขกท ทำได้ไปแล้ว ก็เลยเอามาแจกแทน *0*)

คุณสมบัติ
  • กำหนดภาพเองได้ตามใจชอบ
  • รองรับจำนวนคะแนนไม่จำกัด มีกี่หลักก็ได้ (หรือเก็บได้เท่าที่เกมจะรับค่าได้)
  • ใช้ตัวแปรเพียงตัวเดียวเท่านั้น คือตัวที่ไว้เก็บหรือกำหนดคะแนน
  • รองรับคะแนนติดลบ
  • กำหนดมุมแสดงคะแนนได้ โดยมีบนซ้าย บนขวา ล่างซ้าย ล่างขวา
  • บอกลาการเขียน Event ตรวจสอบแต่ละเงื่อนไข / เรียกแต่ละรูป / เช็คแต่ละหลักได้เลย ~

Screenshot
[Image: 8capture.png]

วิธีการใช้คือ ให้กำหนด ID ของตัวแปรที่ต้องการเก็บคะแนน (ดูได้จากหมายเลขในหน้าจอเลือกตัวแปร)
แล้วก็เอาไปใส่ที่ VARIABLE = [ID ที่ต้องการ] ใน CONFIGURATION ZONE

สามารถใส่ภาพเลข 0 - 9 ได้ที่ [Project Name]\Graphics\Pictures\digits
ภาพจะต้องมีชื่อ 0.png, 1.png, ..., 9.png และ minus.png สำหรับภาพเครื่องหมายลบ
รูปต้องมีขนาดเท่ากัน ไม่งั้นจะเพี้ยน และต้องไปเซ็ตขนาดภาพใน
IMAGE_WIDTH = [ขนาดภาพ] ใน CONFIGURATION ZONE ด้วย

ตัวเกมจะดึงภาพมาให้อัตโนมัติทันที
แนะนำให้เว้นช่องที่ว่างซ้ายขวา จากตัวเลขในแต่ละภาพด้วยครับ ไม่งั้นมันจะแสดงเลขแต่ละหลักติดกันเป็นปลากระป๋อง

วิธีแสดงคะแนน ให้สร้าง Event Command "Script..." และใส่ SCOREConfusedhow ลงไปเมื่อต้องการแสดง หรือในทางกลับกันให้ใส่ SCORE:hide

จากนั้นเวลาจะเพิ่มคะแนนหรือลดคะแนน ให้ใช้ Event Command Set Variable ตามปกติครับ ขอให้สนุกกับการใช้งาน

คอนฟิกอื่นๆ อ่านใน Script ส่วนของ CONFIGURATION ZONE ครับ
มีปัญหาหรือบั๊ก แจ้งได้นะครับ

หากงงวิธีใช้ ให้โหลดตัวอย่างโปรเจกต์ได้ที่ไฟล์แนบเลยครับ
.zip
Graphic Score.zip (Size: 984.67 KB Downloads: 2)


---

Copy Script ไปวางใน Script Editor โดยสร้างไฟล์ใหม่บน Main
ห้ามนำ Script ไปเผยแพร่ที่ไหนนอกจาก irpg.in.th

[shcode=rails]
# Graphic Score Display
# For RPG Maker XP
# Script by Splendith
# Do not place this code anywhere except irpg.in.th website

############################################################
# HOW TO USE
# - Set variable ID in CONFIGURATION ZONE
# - Use SCOREConfusedhow, SCORE:hide in event command "Script"
# to show / hide score
# - Enjoy using set variables event command!!!
############################################################



module SCORE

###################################################
# CONFIGURATION ZONE #
###################################################

# Set variable ID
VARIABLE = 1

# Position of score (:top_left, :top_right, :bottom_left, :bottom_right)
POSITION = :top_right

# Image width (px), X Gap, and Y Gap
# Gap is the space between the corner of screen
IMAGE_WIDTH = 50
X_GAP = 20
Y_GAP = 20

# Image directory MUST be in [Project Name]\Graphics\Pictures\digits
# Image name MUST be 0.png, 1.png, ..., 9.png
# and minus.png for the negative sign

###################################################

@@temp = 0
@@active = false

def self.active?
@@active
end

def self.temp
@@temp
end

def self.show
@@active = true
self.update
end

def self.hide
@@active = false
self.update
end

def self.update
@@temp = $game_variables[VARIABLE]
divider = 1
i = 1

$game_screen.score_images.each do |x|
x.dispose
end

is_neg = @@temp < 0
@@temp_length = @@temp.to_s.length
temp_abs = @@temp.abs
while (temp_abs / divider) > 0 || (temp_abs == 0 && i == 1) do
last_digit = temp_abs / divider % 10
create_sprite(RPG::Cache.picture("digits/#{last_digit}.png"), i)

divider *= 10
i += 1
end
if is_neg
create_sprite(RPG::Cache.picture("digits/minus.png"), i)
end

end

private
def self.create_sprite (sprite, i)
spr = Sprite.new
spr.visible = @@active
spr.bitmap = sprite

if POSITION == :top_left || POSITION == :bottom_left
spr.x = (@@temp_length * IMAGE_WIDTH) + X_GAP - i*IMAGE_WIDTH
else
spr.x = 640 - X_GAP - i*IMAGE_WIDTH
end

if POSITION == :top_left || POSITION == :top_right
spr.y = Y_GAP
else
spr.y = 480 - Y_GAP - IMAGE_WIDTH
end

$game_screen.score_images << spr
end

end

class Game_Screen
attr_reader Confusedcore_images

alias initialize_c initialize
def initialize
initialize_c
@score_images = []

end

alias update_c update
def update
update_c

if $game_variables[SCORE::VARIABLE] != SCORE::temp
SCORE::update
end
end

end

class Spriteset_Map

alias initialize_c initialize
def initialize
initialize_c
SCORE:Confusedhow if SCORE::active?
end

end
[/shcode]