[XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - Printable Version +- irpg Community (https://irpg.in.th) +-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html) +--- Forum: The Great RPG Maker Library (https://irpg.in.th/forum-5.html) +--- Thread: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] (/thread-264.html) Pages:
1
2
|
[XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - sharifyasan - 07-09-2012 กลับมาแล้วน่ะครับกับตอนที่ 2 ของบทความ "วิธีทำระบบ Action เบื้องต้น" โดยบทความนี้ผมจะมาสอนวิธีการทำ "ม่อนส์เตอร์" หรือศัตรูแบบง่ายๆกันน่ะครับ...โดยสามารถนำไปประยุตก์หรือปรับแต่งให้ดีขึ้นได้เช่นกันครับ *อนึ่งคือการเขียนระบบแบบนี้ต้องมีความรู้พื้นฐานโปรแกรม Rpg Maker ด้วยน่ะครับ เช่น พวกตัวแปร (Variables) สวิตช์ (Switches) และคำสั่งต่างๆอื่นๆอีกด้วยเป็นต้น สำหรับใครที่ยังไม่ได้อ่านบทความตอนที่ 1 สามารถหาอ่านได้ที่นี้เลยครับ โอเคครับเมื่อพร้อมแล้วเราก็มาเริ่มกันเลยดีกว่า...อันดับแรกเรามาดูกันก่อนว่าเราต้องเตรียมอะไรกันบ้างครับ อธิบายทีละบรรทัดน่ะครับ 1. ควบคุมตัวแปรเก็บพิกัด "แนวนอน" ของอีเว้น (Event) ม่อนส์เตอร์ 2. ควบคุมตัวแปรเก็บพิกัด "แนวตั้ง" ของอีเว้น (Event) ม่อนส์เตอร์ 3. ควบคุมตัวแปรเก็บค่า Hp ของม่อนส์เตอร์ 4. ควบคุมสวิตช์เปิด-ปิดระยะเวลาการโจมตีของม่อนสเตอร์ เมื่อเตรียมเสร็จแล้วเราก็จะมาทำม่อนส์เตอร์กันครับ โดยเราจะเขียนคำสั่งเกี่ยวกับ "การโจมตีของม่อนส์เตอร์" กันก่อนนั้นเอง ตามภาพน่ะครับ เราจะสร้างอีเว้นเปล่าๆขึ้นมาก่อน 1 อีเว้นโดยจะตั้งชื่อว่าอะไรก็ได้ครับ...แต่ในฮาวทูนี้ผมขอตั้งเป็น Enemy.1 ละกันเน้อ โดยให้เราปรับรูปแบบการเคลื่อนที่เป็น "เข้าหาผู้เล่น" ส่วนเรื่อง "ความเร็ว" กับ "ความถี่" ในการเคลื่อนที่นี้ก็แล้วแต่เราจะปรับเลยครับผม แล้วก็เซตเงื่อนไขการเริ่มเหตุการณ์เป็นแบบ "เหตุการเข้ามาสัมผัส" อ้อ! อย่าลืมเลือกรูป character ของอีเว้นด้วยเน้อ~ *ที่ต้องปรับให้เป็น "เหตุการณ์เข้ามาสัมผัส" ผู้เล่นก็เพราะว่าเราจะได้เขียนคำสั่งได้เมื่อม่อนส์เตอร์วิ่งมาชนหรือเข้ามาชนกับตัวละครผู้เล่นนั้นเองครับ เมื่อเซตค่าต่างๆเบื้องต้นเสร็จแล้วเราก็มาเขียนคำสั่งต่างๆต่อกันเลยครับ อธิบายทีละบรรทัดน่ะครับ 1. ตรวจเช็คเงื่อนไขเมื่อสวิตช์ Enemy.Delay นั้นเปิดอยู่หรือไม่...โดยครั้งนี้เราจะเขียนคำสั่งลงไปในส่วนของ "กรณีไม่ตรงเงื่อนไข" ซึ่งก็หมายถึงสวิตช์ Enemy.Delay นั้นปิดอยู่นั้นเองครับ 2. แสดงอนิเมชั่น (Animation) ต่างๆกับอีเว้น "ผู้เล่น" เมื่อผู้เล่นถูกม่อนส์เตอร์กระทำหรือโดนโจมตี เช่น อนิเมชั่นโดนกัด, อนิเมชั่นโดนแทง บลาๆ 3. เคลื่อนย้ายเหตุการณ์ "ผู้เล่น" ให้ถอยหลังมา 1 ช่อง...ในส่วนนี้เราจะใส่หรือไม่ก็ได้ครับ แต่ถ้าใส่ให้ถอยหลังก็จะเหมือนว่าผู้เล่นโดนม่อนส์เตอร์โจมตีแล้วกระเด็นถอยออกมานั้นเอง 4. ลดพลังชีวิตทั้งกลุ่ม ตามค่าพลังโจมตีของม่อนส์เตอร์ที่เราคิดไว้...กรณีในฮาวทูนี้ผมเซตไว้ว่าม่อนส์เตอร์โจมตีแรงแค่ 10 ก็ลดพลังชีิวิตผู้เล่นเป็นจำนวน 10 นั้นเองครับ 5. ปิดสวิตช์ Hero.Fire 6. เปิดสวิตช์ Enemy.Delay ถ้าเราดูคำสั่งในหน้านี้ดีๆแล้วจะเห็นได้ว่าคำสั่งจะทำงานโดยที่จะเช็คก่อนว่า สวิตช์ Enemy.Delay เปิดอยู่หรือไม่?...ถ้าไม่ให้ทำการรันคำสั่งอื่นได้ทันที่ แต่ถ้าเปิดอยู่จะไม่มีอะไรเกิดขึ้นเพราะว่าเราไม่ได้เขียนคำสั่งของไปนั้นเอง *ตรงข้อ.5 นั้นถ้าใครได้อ่านบทความตอนที่ 1 แล้วจะจำได้ว่ามันคือสวิตช์ roger.fire หรือ hero.fire นั้นเองครับ (สวิตช์ไอดีหมายเลข 5 ) จากนั้นเราเข้าไปส่วนของ "เหตุการณ์ทั่วไป" ก่อนครับผม...เราจะไปกำหนดระยะเวลาการโจมตีของม่อนส์เตอร์กัน โดยวิธีทำมีเพียงแค่ไม่กี่บรรทัดเองครับ โดยเราจะตั้งชื่อเหตุการณ์เป็นอะไรก็ได้ที่เราเข้าใจน่ะครับ แต่ในฮาวทูนี้ผมขอตั้งเป็น Enemy.Delay ชื่อเดียวกับสวิตช์ละกันครับ จากนั้นปรับเงื่อนไขการเริ่มเหตุการณ์เป็น "พร้อมเนื้อเรื่อง" และเรื่องสวิตช์ที่ใช้เริ่มเหตุการณ์เป็น "Enemy.Delay" ที่เราเตรียมไว้ตอนแรกน่ะครับ ส่วนคำสั่งเหตุการณ์นั้นขออธิบายทีละบรรทัดน่ะครับ 1. รอเวลา ตรงบรรทัดนี้เราจะเซตไว้กี่เฟรมก็ได้ครับ แต่ในฮาวทูนี้ผมเซตไว้ว่า 30 เฟรม ก็หมายความว่า "เมื่อม่อนสเตอร์โจมตีเราโดนครั้งแรกแล้ว...จะต้องรอเวลาอีก 30 เฟรมถึงจะโจมตีครั้งต่อไปได้" นั้นเองครับผม 2. ปิดสวิตช์ Enemy.Delay *จะเห็นได้ว่าขั้นตอนนี้สอดคล้องกับหน้าอีเว้นแรกที่เราได้เขียนไปนั้นเองครับ ซึ่งก็คือเมื่อม่อนส์เตอร์โจมตีเราเสร็จแล้วจะเปิดสวิตช์ Enemy.Delay ซึ่งในหน้าอีเว้นของม่อนส์เตอร์จะไม่มีคำสั่งใดๆหรือก็คืออีเ้้ว้นม่อนส์เตอร์จะเดินตามเราแค่นั้นแต่ทำอะไรไม่ได้...เพราะจริงๆแล้วไม่มีคำสั่งในบรรทัดนั้น แต่ไปมี "ให้รอเวลา 30 เฟรม" ในเหตุการณ์ทั่วไปอยู่นั้นเองครับ ฮว๊ากกก! กลับไปที่หน้าอีเว้นของม่อนส์เตอร์กันอีกทีครับ...เราจะไปเีขียนคำสั่งต่างๆเกี่ยวกับการลดพลังชีวิตของม่อนส์เตอร์เมื่อโดนเราโจมตีกันบ้าง ปรับรูปแบบการเคลื่อนที่หรือเซตค่าต่างๆได้เหมือนหน้าแรกเลยครับ แต่เพิ่มสวิตช์ที่ใช้เปิดคำสั่งหน้านี้เข้าไปก็คือ "Hero.Fire" และเงื่อนไขการเริ่มเหตุการณ์ก็เป็น "พร้อมเนื้อเรื่อง" นั้นเองครับ เมื่อเซตค่าต่างๆของหน้าที่ 2 เสร็จแล้วก็มาถึงการคำนวนพิกัดเมื่อเรายิงโดนม่อนส์เตอร์กันครับ อธิบายทีละบรรทัด 1. ควบคุมตัวแปรเก็บพิกัด "แนวนอน" ของอีเว้นม่อนส์เตอร์ 2. ควบคุมตัวแปรเก็บพิกัด "แนวตั้ง" ของอีเว้นม่อนส์เตอร์ 3. ควบคุมตัวแปรเก็บพิกัด "แนวนอน" ของอีเว้นลูกกระสุน 4. ควบคุมตัวแปรเก็บพิกัด "แนวตั้ง" ของอีเว้นลูกกระสุน (จริงๆแล้วการเก็บพิกัดของอีเว้นลูกกระสุนผมลืมเขียนไปบทความนี้ตอนที่ 1 ซึ่งต้องขออภัยด้วยครับ) 5. ตรวจเช็คเงื่อนไขเมื่อตัวแปร Bullet.Coor.X เท่ากับ Enemy.Coor.X 6. ตรวจเช็คเงื่อนไขเมื่อตัวแปร Bullet.Coor.Y เท่ากับ Enemy.Coor.Y 7. +ค่าตัวแปร Enemy.Hp เป็นจำนวน 10 *ตรงข้อที่ 5 และ 6 นั้นจะอธิบายให้เข้าใจง่ายๆก็คือ เมื่อพิกัดแนวนอนของกระสุน =พิกัดแนวนอนของม่อนส์เตอร์ เมื่อพิกัดแนวตั้งของกระสุน = พิกัดแนวตั้งของม่อนส์เตอร์ หรือก็คือกระสุนยิงโดนม่อนส์เตอร์นั้นเองครับ และแล้วเราก็มาถึงการเขียนอีเว้นม่อนส์เตอร์หน้าที่ 3 หรือหน้าสุดท้ายแล้วน่ะครับ!~ หน้านี้เซตเงื่อนไขต่างๆคล้ายๆกับหน้าที่ 2 ครับเพียงแต่เงื่อนไขการเริ่มเหตุการณ์ให้เซตเป็น "ตัวแปร Enemy.Hp เท่ากับหรือมากกว่า..." แทนและไม่ให้อีเว้นเดินเข้าหาผู้เล่นนั้นเองครับ ที่ต้องเซตให้ตัวแปร Enemy.Hp เริ่มเหตุการณ์ก็เพราะว่าเป็นการตรวจเช็คเงื่อนไขอย่างนึงเมื่อ Hp ของม่อนส์เตอร์เท่ากับค่าที่เรากำหนดไว้ก็จะตาย ในฮาวทูนี้ผมเซตไว้ว่าม่อนส์เตอร์ตัวนี้มีเลือดแค่ 50 Hp ซึ่งจากขั้นตอนข้างต้นเราจะโจมตีได้แ่ค่ 10 ซึ่งก็หมายความว่าจะต้องยิงม่อนส์เตอร์ตัวนี้ 5 ครั้งถึงจะตายนั้นเองครับ ส่วนคำสั่งต่างๆในหน้านี้ก็ขึ้นอยู่กับเราที่จะเซตละครับว่าถ้าม่อนส์เตอร์ตายแล้วจะเกิดอะไรบ้าง เช่น สุ่มได้เงิน, สุ่มได้ไอเทม, ตายแล้วมีอนิเมชั่นวิญญาณหรือเลือดสาด, ตายแล้วแปลงร่างเป็นร่างอื่น (ซึ่งก็ต้องเขียนคำสั่งกันยุ่งยากขึ้นไปอีก) แต่สุดท้ายก็อย่าลืมใส่คำสั่ง "รอเวลา" กี่เฟรมก็ได้น่ะครับเพื่อให้อีเว้นรันคำสั่งข้างบนให้เสร็จก่อนจากนั้นค่อย "ลบเหตุการณ์" นี้ออกไปครับ โอ้วเย้! ในที่สุดเราก็จบแล้วน่ะครับกับตอนที่ 2 นี้สำหรับใครที่มีข้อสงสัยต่างๆอะไรก็ตามสามารถถามมาได้น่ะครับ...ถ้าผมตอบได้ยินดีตอบให้เช่นกัน :"D ตอนนี้ยังไม่มีแพลนว่าจะทำตอนที่ 3 รึเปล่าน่ะครับ แต่ถ้าทำจริงๆคงเป็นระบบที่ขั้นสูงขึ้นมาอีกหน่อยครับ (ถ้าไม่ขี้เกียจด้วยน่ะ ~) ***ห้ามคัดลอกหรือนำไปเผยแพร่ที่อื่นก่อนได้รับอนุญาตจาก sharifyasan หรือ Jacobo ก่อนเป็นอันขาด*** Last Update : 9/07/2012 RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - LuZi - 07-10-2012 โอ้ว บทความคุณภาพจากชารีฟ;w;b RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - byrzt - 07-10-2012 1. ควบคุมตัวแปรเก็บพิกัด "แนวนอน" ของอีเว้น (Event) ม่อนส์เตอร์ 2. ควบคุมตัวแปรเก็บพิกัด "แนวตั้ง" ของอีเว้น (Event) ม่อนส์เตอร์ 3. ควบคุมตัวแปรเก็บค่า Hp ของม่อนส์เตอร์ 4. ควบคุมสวิตช์เปิด-ปิดระยะเวลาการโจมตีของม่อนสเตอร์ พวกนี้อยุ่ที่เหตุการณ์ใน ดาต้าเบส หรือ ครับ ? RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - Shinryu - 07-10-2012 1-3 คำสั่งอิเวนท์ "ตัวแปร" 4 คำสั่งอิเวนท์ "สวิทซ์" RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - OP_Jum_RPG - 07-10-2012 กระทู้ที่แล้วยังเคลียร์ไม่จบเลย เอาอันใหม่มาแล้วรึ - บั๊คแน่นอน คำสั่งเช็คศัตรูชนคนเล่น กับเช็คศัตรูโดนโจมตี ควรจะแยกเหตุการณ์กัน ถ้าทำแบบนี้ ถ้าเรากำลังตีอยู่ ศัตรูจะทำอะไรเราไม่ได้เลย เพราะคำสั่งมันโดนล็อคไว้อีกหน้านึง - แล้วแต่ดวง หน้าสุดท้ายของศัตรู ควรจะใส่รอเวลาไว้ข้างบนสักหน่อย ไม่งั้นถ้ามันทำงานก่อนเหตุการณ์รีเซ็ตแผนที่ ศัตรูที่ตายในแผนที่ก่อนหน้า จะทำให้แผนที่นี้ตายตั้งแต่เข้ามา - ไม่จำเป็น เช็คตำแหน่งกระสุนในหน้าเช็คศัตรูโดนโจมตี - ว่าด้วยเรื่องบท 3 เรื่องพื้นฐานยังขาดอีกเยอะ เช่น 1. การรีเซ็ตค่าในแผนที่ 2. การรีเซ็ตค่าของระบบ 3. กระสุนศัตรู 3.2 จะต่อยอดไปสู่การเขียนบอส 4. VX มีบั๊คเรื่องเหตุการณ์ชนผู้เล่น ปล. ม่อนสเตอร์? RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - BlackHole - 07-10-2012 โอ้ส เยี่ยมยอดครับผม RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - Shinryu - 07-10-2012 เสริมท่านออฟนิด -การเช็คการโจมตีควรเรียกใช้จาก เหตุการณ์ทั่วไป จะดีกว่า -ที่ตัวมอนตั้งแค่เหตุการณ์สำหรับโจมตีผู้เล่นก็พอ Quote:- แล้วแต่ดวงอันนี้ถ้ามีการเซตตัวแปรเป็น0 ต่อท้ายก็ช่วยได้นะ รอท่านนกย่างมาลงวิธี รีเซตค่าพลังมอนเมื่อเข้าฉาก ละกัน RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - OP_Jum_RPG - 07-10-2012 พอดีเอาจากประสบการณ์ตรง เพราะผมรีเซ็ตค่าทุกอย่าง + เซ็ตพลังมอน ตอนเข้าแผนที่ แล้วดันติดดีเลย์ เหตุการณ์มอนรันก่อนซะงั้น ตอนนี้ล็อคหลายชั้นกว่าเดิมมาก บั๊คตรงนี้เลยหายไปแล้ว เดี๋ยวว่างๆจะเอามาสรุปลงให้ละกัน RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - Mysticphoenix - 07-10-2012 Quote:รอท่านนกย่างมาลงวิธี รีเซตค่าพลังมอนเมื่อเข้าฉาก ละกันรีัเซ็ตค่าพลังมอนในแบบฉบับผมนะ ค่อนข้างจะmanual ก็คือแปะ common event ไว้ทุกครั้งที่มีการ teleport แล้วใน common event นั้นก็เขียน reset พลังต่างๆอ่ะคับ ถ้ากลัวไม่เนียนก็ค่อยๆ fade screen ให้ดำ ช่วยได้ RE: [XP/VX/VXA] วิธีทำระบบ Action เบื้องต้น [ตอนที่ 2] - Jirayu - 07-10-2012 (07-10-2012, 09:50 AM)OP_Jum_RPG Wrote: พอดีเอาจากประสบการณ์ตรง ดูเหมือนท่านจะมีประสบการณ์เยอะดี ลองเขียนบทความลงบอร์ดดูสิครับ บอร์ดจะได้มีเนื้อหาคุณภาพมากขึ้น |