irpg Community
[ถาม]ทำให้มีกระสุนขึ้นยังไง - 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: [ถาม]ทำให้มีกระสุนขึ้นยังไง (/thread-1953.html)

Pages: 1 2


RE: [ถาม]ทำให้มีกระสุนขึ้นยังไง - freemancer - 06-15-2014

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

ฝึกทำฝึกคิดบ่อยๆจะชำนาญครับ ทั้งการคิดขึ้นมาใหม่และการแก้ปัญหา หากลองพยายามคิดไปเรื่อยๆท่านจะปลดล็อคพลังได้แบบคนอื่นๆในบอร์ดครับ
วันใดมีคำถามและไร้คนตอบ วันนั้นท่านต้องหาคำตอบด้วยตัวเอง( ไม่งั้นท่านจะไปต่อไม่ได้)

getsunova. คำถามซึ่งไร้คำตอบ


RE: [ถาม]ทำให้มีกระสุนขึ้นยังไง - Mysticphoenix - 06-15-2014

ลองดูนะครับ ก็อปสคริปข้างล่างไว้เหนือ main ครับ

Code:
class BulletWindow

  def self.show
    text1 = "Bullet : " + $game_party.item_number(33).to_s
    width = 640
    height = 64
    x = 0
    y = 0
    
    @windowp = Window_Base.new(x, y, width, height)
    @windowp.contents = Bitmap.new(width - 32, height - 32)
    @windowp.contents.draw_text(x, y, width - 32, height - 32, text1)
    
    end
  
  def self.update
    @windowp = @windowp.dispose
    text1 = "Bullet : " + $game_party.item_number(33).to_s
    width = 640
    height = 64
    x = 0
    y = 0
    
    @windowp = Window_Base.new(x, y, width, height)
    @windowp.contents = Bitmap.new(width - 32, height - 32)
    @windowp.contents.draw_text(x, y, width - 32, height - 32, text1)
    end

  #-----------------------------------------------------------------------------
  # * Dispose the window
  #-----------------------------------------------------------------------------
  def self.dispose_window
    if @windowp != nil && [email protected]?
      @windowp = @windowp.dispose
    end
  end
end

วิธีตั้งค่าครับ แก้ในสคริป
ตรง $game_party.item_number(33).to_s แก้เลข 33 ให้เป็น id ของกระสุนในฐานข้อมูลนะครับ

width คือความกว้างวินโดวส์
height คือความสูงวินโดวส์
x คือตำแหน่งวินโดวส์แนวนอน ยิ่งมากยิ่งไปขวา
y คือตำแหน่งวินโดวส์แนวตั้ง ยิ่งมาก ยิ่งลงล่าง

ถ้าอยากให้วินโดวส์เล็กแค่ไหน หรืออยู่ตำแหน่งไหน ก็ลองจัดดูนะครับ ตำแหน่งใน screen shot น่าจะประมาณ x=64 y=64 รึเปล่า

วิธีใช้สคริปคับ
เริ่มเกมมา ให้เรียก BulletWindow.show ครั้งเดียวคับ

เวลาเพิ่มหรือลดไอเทมกระสุนทุกครั้ง ให้เรียก BulletWindow.update ครับ
(เช่นเวลาได้ไอเทมจากหีบ หรือเรายิงปืนออกไป)

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

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

ผมเขียน pseudo-code ให้ดูนะ (ตอนนี้ไม่มี RM)

เวลายิงปืนหรือได้รับกระสุนเพิ่มนะคับ
Code:
if ปืนสั้น
    เพิ่มหรือลดกระสุนปืนสั้น
    เปลี่ยนตัวแปร[19] ให้มีค่าเท่ากับจำนวนกระสุนปืนสั้น
    BulletWindow.update
else if ลูกซอง
    เพิ่มหรือลดกระสุนปืนสั้น
    เปลี่ยนตัวแปร[19] ให้มีค่าเท่ากับจำนวนกระสุนปืนลูกซอง
    BulletWindow.update
else if ไรเฟิล
    เพิ่มหรือลดกระสุนปืนสั้น
    เปลี่ยนตัวแปร[19] ให้มีค่าเท่ากับจำนวนกระสุนปืนไรเฟิล
    BulletWindow.update
end
ในสคริป แก้ $game_party.item_number(33).to_s เป็น $game_variables[19] ด้วยครับ