a
 (08-31-2015, 12:16 AM)splendith Wrote:  .
สำหรับผู้ที่ไม่ต้องการเขียน Event ให้มึนงง ขอนำเสนออีกทางเลือกหนึ่ง เป็นการใช้ Script แทนครับ วิธีใช้แค่มีภาพ แล้ว copy script ไปไว้ในเกม เซ็ตค่านิดหน่อย ใช้ได้เลยคร้าบ 
(จริงๆ ตอนแรกจะเขียนให้ จขกท เป็นทางเลือก แต่มาดูอีกที จขกท ทำได้ไปแล้ว ก็เลยเอามาแจกแทน *0*)
คุณสมบัติ- กำหนดภาพเองได้ตามใจชอบ
 
- รองรับจำนวนคะแนนไม่จำกัด มีกี่หลักก็ได้ (หรือเก็บได้เท่าที่เกมจะรับค่าได้)
 
- ใช้ตัวแปรเพียงตัวเดียวเท่านั้น คือตัวที่ไว้เก็บหรือกำหนดคะแนน
 
- รองรับคะแนนติดลบ
 
- กำหนดมุมแสดงคะแนนได้ โดยมีบนซ้าย บนขวา ล่างซ้าย ล่างขวา
 
- บอกลาการเขียน Event ตรวจสอบแต่ละเงื่อนไข / เรียกแต่ละรูป / เช็คแต่ละหลักได้เลย ~
 
Screenshot
![[Image: 8capture.png]](http://upic.me/i/il/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..." และใส่ SCORE
how ลงไปเมื่อต้องการแสดง หรือในทางกลับกันให้ใส่ 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 SCORE
how, 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]
สคริปท์น่าสนมาก ขอบคุณมากครับที่อุตส่าห์ช่วยเขียนให้
งานหน้าคงจะช่วยให้สะดวกขึ้นเยอะเลยครับ