ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย 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 ของผมครับ 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 หรือก็คือ ทศนิยมตัดทิ้ง ไม่มีการปัดเศษนะครับ RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - freemancer - 08-30-2015 (08-30-2015, 10:22 PM)OP_Jum_RPG Wrote: 2015%1000 ได้ 15 ครับ โอว ขอบคุณครับท่าน เข้าใจผิดมาตั้งนาน RE: ขอปรึกษาเรื่องการ แสดงตัวเลขบนหน้าจอด้วย Event หน่อยๆครับ - splendith - 08-31-2015 . สำหรับผู้ที่ไม่ต้องการเขียน Event ให้มึนงง ขอนำเสนออีกทางเลือกหนึ่ง เป็นการใช้ Script แทนครับ วิธีใช้แค่มีภาพ แล้ว copy script ไปไว้ในเกม เซ็ตค่านิดหน่อย ใช้ได้เลยคร้าบ (จริงๆ ตอนแรกจะเขียนให้ จขกท เป็นทางเลือก แต่มาดูอีกที จขกท ทำได้ไปแล้ว ก็เลยเอามาแจกแทน *0*) คุณสมบัติ
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] |