RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - cdaz - 08-31-2015
a (08-31-2015, 12:16 AM)splendith Wrote: .
สำหรับผู้ที่ไม่ต้องการเขียน Event ให้มึนงง ขอนำเสนออีกทางเลือกหนึ่ง เป็นการใช้ Script แทนครับ วิธีใช้แค่มีภาพ แล้ว copy script ไปไว้ในเกม เซ็ตค่านิดหน่อย ใช้ได้เลยคร้าบ
(จริงๆ ตอนแรกจะเขียนให้ จขกท เป็นทางเลือก แต่มาดูอีกที จขกท ทำได้ไปแล้ว ก็เลยเอามาแจกแทน *0*)
คุณสมบัติ- กำหนดภาพเองได้ตามใจชอบ
- รองรับจำนวนคะแนนไม่จำกัด มีกี่หลักก็ได้ (หรือเก็บได้เท่าที่เกมจะรับค่าได้)
- ใช้ตัวแปรเพียงตัวเดียวเท่านั้น คือตัวที่ไว้เก็บหรือกำหนดคะแนน
- รองรับคะแนนติดลบ
- กำหนดมุมแสดงคะแนนได้ โดยมีบนซ้าย บนขวา ล่างซ้าย ล่างขวา
- บอกลาการเขียน Event ตรวจสอบแต่ละเงื่อนไข / เรียกแต่ละรูป / เช็คแต่ละหลักได้เลย ~
Screenshot
วิธีการใช้คือ ให้กำหนด 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..." และใส่ SCOREhow ลงไปเมื่อต้องการแสดง หรือในทางกลับกันให้ใส่ SCORE:hide
จากนั้นเวลาจะเพิ่มคะแนนหรือลดคะแนน ให้ใช้ Event Command Set Variable ตามปกติครับ ขอให้สนุกกับการใช้งาน
คอนฟิกอื่นๆ อ่านใน Script ส่วนของ CONFIGURATION ZONE ครับ
มีปัญหาหรือบั๊ก แจ้งได้นะครับ
หากงงวิธีใช้ ให้โหลดตัวอย่างโปรเจกต์ได้ที่ไฟล์แนบเลยครับ
---
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 SCOREhow, 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 core_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:how if SCORE::active?
end
end
[/shcode] สคริปท์น่าสนมาก ขอบคุณมากครับที่อุตส่าห์ช่วยเขียนให้
งานหน้าคงจะช่วยให้สะดวกขึ้นเยอะเลยครับ
|