Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RMXP Auto-Scrolling FPS System V.1
#1
ตามคำเรียกร้องที่มีตติ้งครั้งที่ 4

Auto-Scrolling FPS System

Download V.1
https://www.mediafire.com/?9xybu05ld6jiodw

ระบบนี้คือเกมแนว FPS หรือ First Person Shooting
ที่เราไม่สามารถบังคับตัวละครได้อย่างอิสระ
นอกจากขยับเพื่อเล็งปืนเท่านั้น
ส่วนการเดินและเลื่อนฉาก เกมจะเป็นตัวทำให้ทั้งหมด
เมื่อถึงจุดๆหนึ่งที่เกมกำหนด ก็จะหยุด และเริ่มมีศัตรูออกมา

ในระบบเบื้องต้นที่แจกนี้
จะยังไม่สามารถให้ศัตรูออกมากลางทางได้


ตัวอย่าง





ระบบนี้ทำงานอย่างไร
ระบบนี้จะแบ่งเป็นสองส่วนใหญ่ๆ คือส่วนของ
3D และส่วนระบบยิงศัตรู

3D-Auto Walking System
หรือก็คือช่วงแรกของเกม ที่ตัวเราเดินไปเรื่อยๆ

จริงๆเราไม่ได้เดินไปไหนครับ
ภาพที่เห็นเป็นแค่การแสดงภาพต่อเนื่อง
โดยการสร้างฉากและทำเป็ Movie ขึ้นมา ด้วยโปรแกรมทำ 3D อะไรก็ได้
ในตัวอย่างนี้ใช้ FPS Creator
ทำยังไงก็ได้ ให้ได้ออกมาเป็นรูปต่อเนื่อง และเฟรมเรทที่เหมาะสม
(จำนวนรูปต่อวินาที ต้องหาร 20 ลงตัว เช่น 2,4,5 ไม่ควรจะเกินนี้ไม่งั้นเกมจะหนักโดยไม่จำเป็น)

สคริปต์
Code:
=begin
Scene_Image_Movie
By OP_Jum_RPG
ใช้แสดงภาพต่อเนื่องกัน ไม่จำกัดจำนวนภาพ
ชื่อโฟลเดอร์ตั้งอะไรก็ได้ ใส่ใน Graphics
ชื่อไฟล์ตั้งให้เหมือนกันทั้งโฟลเดอร์ ตามด้วยลำดับภาพ ไม่ต้องเว้นวรรค

เวลาเรียกใช้ ก็
$scene = Scene_Movie.new("Folder name","Image Name",delay,maxframe)

ใส่เครื่องหมาย " ด้วย
ตรงชื่อภาพ ไม่ต้องใส่เลขภาพและนามสกุลไฟล์
ถ้าชื่อภาพมีแต่ตัวเลขให้เว้นว่างไว้

=end

class Scene_Movie
  def initialize(folder="",name="",delay=5,frame=0)
    @folder = folder
    @name = name
    @delay = delay
    @frame = frame
  end
  
  def main
    if @name == "" && @folder == ""
      $scene = Scene_Map.new
      return
    end
    @index = 1
    @count = 0
    @img = Sprite.new
    @img.bitmap = Bitmap.new(32,32)
    Graphics.transition
    
    loop do
      Graphics.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @img.dispose
  end
  
  def update
    if @count > 0
      @count -= 1
    else
      @count = @delay
      @img.bitmap.dispose
      @img.bitmap = Bitmap.new("Graphics\\"+@folder+"\\"+ @name+@index.to_s)
      @index += 1
      if @index > @frame
        $scene = Scene_Map.new
      end
    end
  end
end


เช่น ในตัวอย่างนี้
[Image: Test_FPS_1.jpg]
รูปอยู่ในโฟลเดอร์ชื่อ S1_1
และรูปชื่อ fgdhdhd
จำนวนรูป 94 รูป
เฟรมเรท 3 รูปต่อวินาที
หรือ Delay 7 เฟรม ต่อรูป

จึงเรียกใช้สคริปต์เป็น
Code:
$scene=Scene_Movie.new("S1_1","fgdhdhd",7,94)

สำคัญ มันเป็นบั๊ค
หลังจบคำสั่งนี้ ให้ใส่คำสั่งรอเวลา 1 เฟรมไว้ก่อนคำสั่งต่อไปด้วย

-----------------------------------------------------
จากนั้นให้เทเลพอร์ทไปแผนที่ใหม่เลยจะดีที่สุด
และจะเข้าสู่ช่วงที่เรายิงกับศัตรู

Common Event#1 [Shot]
- เช็คกดปุ่มยิง ด้วย
Code:
Input.trigger?(Input::C)
เพื่อป้องกันการกดแช่
- เช็คว่าเรามีกระสุนเหลือไหม
- ถ้ามี แสดงอนิเมชั่นยิงที่ตัวผู้เล่น (ไอ้วงกลมๆสีแดงนั่นแหละ) และกระสุน -1

Common Event#2 [Reload]
- เช็คกดปุ่ม Reload
- จำนวนกระสุน = Max

Event ที่ขอบด้านล่างและทางขวา เป็นแค่ Interface ขอไม่อธิบายนะครับ

Event#1
เปลี่ยนพาโนราม่าเป็นรูปสุดท้ายของ 3D เมื่อกี๊

Event#2
สั่งให้ศัตรูออกมา

Event#3
รอเวลา แล้วใส่เอฟเฟ็คต์ผู้เล่นโดนยิง

Event Enemy
เช็ค"กดคีย์" ลด HP ศัตรูตัวนั้น

ถ้าอยากให้ศัตรูออกมากลางทาง หรือเล่นต่อเนื่องโดยไม่ต้องเปลี่ยนแผนที่ (กำลังพัฒนา)
สิ่งที่ต้องทำ
1. เปลี่ยนจากโชว์รูป ไปเป็นพาโนราม่าแทน ไม่งั้นมันจะบังหมด
2. คำสั่งควบคุมศัตรู และการยิง ต้องทำงานตลอดเวลา
และศัตรูต้องหายไปเมื่อถึงเวลาที่กำหนด
3. ศัตรูต้องเลื่อนไปตามฉาก ซึ่งความจริงฉากมันอยู่ของมันเฉยๆ จะยากตรงนี้แหละ
4. ที่เหลือก็อยู่ที่การนับเฟรมแล้วล่ะ
[-] The following 10 users say Thank You to OP_Jum_RPG for this post:
  • [IRPG] bassza123, gol-a-khung, jin, KonRaiNamJai, Kuntana, motley, P.P.DarkWings, slost, tiwlymaster, นิราจ
Reply
#2
เหมือนเกมส์ the house of the dead เลย
เดินเองและก็หยุดให้ยิง
Reply
#3
โอ้วแหล่มมาก แต่เปลืองภาพไปนิด ถ้าทำเป็นเกมเล็กๆไม่ใหญ่มากก็โอคับ แมวเบิกบาน
[Image: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
Reply
#4
เมพขริงๆ RMXP ทำได้ทุกอย่างจริงๆครับ Oh My God
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)