Pages (2):    1 2
cdaz   08-31-2015, 01:27 AM
#11
a
(08-31-2015, 12:16 AM)splendith Wrote: .

สำหรับผู้ที่ไม่ต้องการเขียน 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 ครับ
มีปัญหาหรือบั๊ก แจ้งได้นะครับ

หากงงวิธีใช้ ให้โหลดตัวอย่างโปรเจกต์ได้ที่ไฟล์แนบเลยครับ

---

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]
สคริปท์น่าสนมาก ขอบคุณมากครับที่อุตส่าห์ช่วยเขียนให้
งานหน้าคงจะช่วยให้สะดวกขึ้นเยอะเลยครับ
This post was last modified: 08-31-2015, 01:33 AM by cdaz.
Pages (2):    1 2
  
Users browsing this thread: 1 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.