+ Reply to Thread
Page 1 of 2 12 LastLast
Results 1 to 10 of 19
  1. #1
    BeamTCG

    Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    Credit : [email]Allegro@/teamems/]Extreme Mapping Studio

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

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

    ขอบเขตของเนื้อหา
    ในส่วนของเนื้อหาตรงนี้ผมจะอธิบายเกี่ยวกับ วิธีการใช้ Trigger เพื่อสร้าง Custom Skill นะครับ ดังนั้นก่อนจะมาเข้าเนื้อหาเรามาดูสิ่งที่ทุกท่านต้องเตรียมก่อน ซึ่งเพียงสิ่งเดียวครับคือ
    - โปรแกรม World Editor 1.20 หรือ 1.18+

    Custom Skill คืออะไร?
    ตรงนี้คิดว่าหลายท่านคงทราบกันแล้ว แต่หากยังไม่ทราบผมก็จะสรุปสั้นๆ เลยนะครับ "Custom Skill" ก็คือสกิลที่เราสร้างขึ้นมาเอง โดยออกแบบจากสกิลที่มีอยู่แล้วใน Warcraft III หรืออาจจะเป็นเค้าโครงสกิลใหม่ที่เราคิดขึ้นมาเองครับ

    ส่วนประกอบของ Custom Skill
    โดยหลักๆ แล้ว Custom Skill ที่เราจะทำขึ้นจะมีส่วนประกอบหลักๆ ดังนี้คือ
    1. Dummy Unit
    2. Dummy Skill
    3. Trigger Script
    เอาเป็นว่าเรามาดูกันทีละส่วนเลยดีกว่าครับ

    :: 1.Dummy Unit ::
    คือ Unit ที่ถูกสร้างขึ้นมาเพื่อใช้ในการเขียน Trigger โดยเฉพาะ Unit นี้จริงๆ แล้วมันก็คือ Unit ธรรมดานี้แหล่ะครับ แต่เราจะมีการปรับคุณสมบัติบางอย่าง ทำให้มันไม่สามารถถูกมองเห็นด้วย Minimap และไม่สามารถบังคับ หรือจัดการกับมันได้ในการเล่น ซึ่งเป็นสิ่งที่ทุกๆท่าน ควรจะทำความเข้าใจกันไว้นะครับ เพราะเจ้า Dummy Unit นี่แหล่ะครับ จะทำให้เราพลิกแพลงการทำได้หลากหลายรูปแบบ
    เอาล่ะครับทีนี้ผมอยากให้ทุกท่าน มาเริ่มสร้าง Dummy Unit ไปพร้อมๆ กันเลยครับ ให้ทุกท่านเปิดโปรแกรม World Editor ขึ้นมาเลยครับ

    วิธีการสร้าง Dummy Unit
    1. ให้ทุกท่านเข้าไปที่ Object Editor โดยการกด F6 เลยครับ หากเครื่องช้าให้รอหน่อยนะครับ เพราะบางทีจะโหลดนานหน่อย
    2. จากนั้นจะมีแถบมากมาย เช่น Unit/Ability/Item/Buff/etc. ให้ไปที่ Unit เลยครับ
    3. จากนั้นดูแถบทางซ้าย ให้คลิกไปที่ในส่วน Unit ของ Human > Melee > Special จากนั้นจะเห็น Unit ที่มีชื่อว่า 'Militia' ให้ คลิกขวาแล้วเลือก Copy Unit ครับ
    4. จากนั้นที่แถบทางซ้ายเลื่อนแถบลงมาล่างสุด สังเกตจะมีหมวดที่ชื่อว่า Custom Unit ให้คลิกขวาแล้วเลือก Paste Unit ครับ เราจะได้ Unit ที่เป็น Militia อีกตัวหนึ่งซึ่งพร้อมจะนำไปทำเป็น Dummy Unit ครับ
    5. ให้เราคลิกตัว Militia ที่เราเพิ่งก็อบมาเมื่อกี๊ใน Custom Unit ครับ จากนั้นจะสังเกตค่าต่างๆ ทางขวามือมากมาย ขอให้ทุกท่านปรับตามนี้เลยนะครับ

    ** Abilities - Normal : Locust/Invulnerable (อันอื่นที่ไม่ใช่ลบทิ้งให้หมดเลยนะครับ)
    การปรับอันนี้จะส่งผลทำให้ Unit ตัวนี้มี สถานะ Locust ทำให้เดินทะลุทุกอย่างได้ และไม่สามารถทำลายได้ (ขอบคุณความเห็นดีๆ ของคุณ Divinity ครับ)

    ** Art - Model File : none.mdl (ให้เราเลือก custom แล้วพิมพ์ลงไปเอานะครับ)
    การปรับนี้จะส่งผลให้มันไม่แสดงรูปโมเดลของ Unit บนแผนที่ครับ

    ** Art - Shadow Image (Unit) : None
    ทำให้ไม่มีเงานั่นเอง

    ** Combat - Attack Enabled : None
    ทำให้ Unit นี้บังคับโจมตีไม่ได้

    ** Movement - Speed Base : 0
    Movement - Type : Fly
    ทำให้ Unit นี้เดินไม่ได้ และลอยอยู่บนอากาศ ลดปัญหาการติดน้ำลึก ภูเขาครับ

    ** Sound - Unit Sound Set : None
    ไม่มีเสียงเวลาเรียกออกมา

    ** Stat - Can Flee : False
    Stat - Food Cost : 0
    ยูนิตนี้จะไม่ได้หลบการโจมตีครับ ส่วนอันหลังจะทำให้ไม่เสียจำนวน Food ของเรา

    ** Stat - Hide Minimap Display : True
    ทำให้มองไม่เห็นในมินิแมพครับ

    ** Stat - Mana Initial Amount : 100000
    Stat - Mana Maximun : 100000
    Stat - Mana Regeneration : 1000
    ตรงนี้แล้วแต่ใครจะปรับนะครับ ใส่มากๆ ไว้ก็ดี เผื่อๆ ไว้ก่อนครับ

    ** Stat - Sight Radius (Day) : 0
    Stat - Sight Radius (Night) : 0
    ทำให้ระยะมองเห็นเป็น 0

    ** Text - Name : Dummy
    อันนี้เป็นการตั้งชื่อเฉยๆ ครับ ผมใช้ชื่อว่า Dummy เลยนะครับ


    เมื่อปรับทุกอย่างเสร็จทุกท่านก็จะได้ Dummy Unit มาพร้อมใช้งานแล้วครับ

    :: การวางแผนในการเขียน Custom Skill ::
    ในตอนนี้หลังจากเรามี Dummy Unit พร้อมแล้ว เราก็ต้องมาวางแผนวิธีการทำงานของสกิลที่เราจะสร้างขึ้นมาก่อน ซึ่งในตอนนี้ผมจะสร้างสกิลขึ้นมาสกิลหนึ่งชื่อว่า "Shock of Dead"

    คุณสมบัติสกิล
    ทำการยิงกระแสงไฟฟ้าไปยังเป้าหมาย สร้าง Damage แบบสุ่ม 1 เป้าหมาย และมีโอกาส 50% ที่จะทำให้เป้าหมายติดอาการ Stun

    Lv. 1 - Dmg 1-100 Stun 1 sec / Mana 80
    Lv. 2 - Dmg 1-200 Stun 1.5 sec / Mana 100
    Lv. 3 - Dmg 1-300 Stun 2 sec / Mana 120
    Lv. 4 - Dmg 1-400 Stun 3 sec / Mana 140

    ลักษณะรูปของสกิลเมื่อกดใช้
    - ใช้รูปเดียวกับ Chain Lightnight

    เมื่อกำหนดได้ดังนี้แล้ว เราจะเริ่มจากการวางผังการทำงานซึ่ง ผมเขียนย่อๆ ได้ดังนี้
    1. สร้างรูป Chain Lightning ไปยังเป้าหมาย
    2. ตรวจ Lv. สกิลที่ใช้ จากนั้นสุ่มค่าตามที่กำหนดไว้
    3. ทำ Dmg เป้าหมาย
    4. สุ่มโอกาส 50% หากได้ผลจริง (คือสุ่มได้) ให้เป้าหมายถูกสกิล Storm Bolt* ด้วย โดยไม่คิด Dmg ของ Storm Bolt

    หัวข้อต่อไปเราจะมาทำ Dummy Skill กันนะครับ หากทุกท่านพร้อมแล้วเรามาลุยกันต่อเลยดีกว่าครับ

    :: 2. Dummy Skill ::
    ก่อนอื่นเกริ่นสักนิดนะครับ Dummy Skill คือสกิลที่เราสร้างขึ้นมาเพื่อจุดประสงค์ในการทำ Custom Skill โดยสกิลดังกล่าวจะมีลักษณะบางส่วนที่คงรูปสกิลของเดิมไว้ บางส่วนจะเปลี่ยนแปลงไป

    เราเริ่มจากการทำ Dummy Skill ของสกิลที่เราจะสร้าง "Shock of Dead" กันเลยดีกว่าครับ ขอให้ทุกท่านได้ทดลองทำตามไปด้วยเลยนะครับ
    1. ที่ Object Editor ให้เราไปที่แถบ Ability เลยครับ
    2. เราจะใช้พื้นฐานเดิมของ Chain Lightning ให้เราไปที่ Unit > Orc > Heroes จากนั้นให้ copy สกิล Chain Lightning มาเก็บไว้ที่ Custom Skill เลยครับ
    3. ให้เราไปทำการปรับค่าสกิลที่เราได้ก็อปไปเมื่อกี้ดังนี้เลยนะครับ

    Stat - Level : 4
    Text - Name : Shock of Dead
    Text - Order String - Use/Turn On : None
    ส่วนบนนี้เป็นค่าพื้นฐานที่ต้องปรับนะครับ

    ส่วนข้างล่างนี้เราจะเซตค่าความเสียหายของสกิลเดิมที่ให้มาเป็น 0 ทุกอย่าง เพราะเราจะไม่ใช้ความเสียหายเดิม ทำโดยการปรับค่าซึ่งมี

    Level x Data - Damage Reduction : 0
    Level x Data - Damage per Target : 0
    Level x Data - Number of Target Hits : 1
    Level x Stat - Area of Effect : 0

    ต่อไปนี้เป็นค่าที่ปรับเองได้ครับคือ
    Level x Stat - Cast Range : ระยะร่ายเวทสูงสุด ผมใช้ 800
    Level x Stat - Casting Time : เวลาร่าย อันนี้ผมให้เป็น 0
    Level x Stat - Cooldown : เวลา Cooldown สกิลเป็นวินาที ผมให้ 9 ทุกเลเวล
    Level x Stat - Mana Cost : จำนวนมานาที่จะใช้
    Level x Stat - Target Allowed : ชนิดของเป้าหมายที่ใช้ได้ ในที่นี้ผมใช้ที่มันให้มาเลย


    ส่วนคำอธิบายอื่นๆ จะเขียนอย่างไรก็ได้ตามชอบครับ

    ก่อนจะไปต่อเรามาลองเอา Dummy Skill ที่เราสร้างมาลองใช้ดีกว่าครับ ให้ทุกท่านลองสร้าง Unit ที่บรรจุสกิลที่สร้างใหม่นี้ลงไป จากนั้นลองเปิดแมพทดสอบดูเลยครับ

    จบสำหรับการสร้าง Dummy Skill ของ "Shock of Dead"

    ต่อไปเราจะมาสร้าง Dummy Skill ของ Storm Bolt ซึ่งจะนำมาใช้ในการทำ Stun ครับ

    วิธีก็คือให้ copy Skill Storm Bolt ต้นแบบ ซึ่งจะอยู่ใน Human > Heroes > Storm Bolt จากนั้นให้แก้ค่าต่างๆ ดังต่อไปนี้ครับ

    Stat - Level : 4
    Text - Name : Stunner [for Dummy]
    Text - Order String - Use/Turn On : None

    Art - Missile Art : ให้ลบทิ้งหมดเลยครับ เพราะเราไม่ต้องการรูปค้อน
    Level x Data - Damage : 0 ทุกเวลครับ
    Level x Stat - Duration : ระยะเวลาในการติด Stun ใส่ตามชอบในที่นี้ผมใช้ตามที่ออกแบบไว้คือ 1/1.5/2/3 ไล่ตามเลเวลครับ
    Level x Stat - Mana Cost : 0 ทุกเลเวลครับ


    เท่านี้เราก็จะได้สกิล Dummy ของ การทำ Stun มาพร้อมแล้วครับ สรุปแล้วตอนนี้เราจะมี Skill อยู่ 2 ตัวคือ
    - Shock of Dead
    - Stunner [for Dummy]

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

    :: 3. Trigger Script ::
    ให้เราเปิดหน้าต่าง Trigger Editor ขึ้นมาโดยการกลับเข้าโหมดแก้ไข ปกติ แล้วกด F4 ครับ เราจะพบหน้าต่าง Trigger Editor ที่เป็นพระเอกของงานนี้ครับ ซึ่งหากคุณเริ่มสร้างแมพนี้เป็นครั้งแรกมันจะมี Trigger ที่ชื่อว่า Melee Initialization ให้คุณคลิกแล้ว กด Delete ลบทิ้งไปได้เลยครับ

    ก่อนอื่นผมคงต้องขออธิบายองค์ประกอบของการสร้าง Trigger โดยคร่าวๆ ก่อนครับ การสร้าง Trigger จะมีองค์ประกอบหลักใหญ่ๆ อยู่ 3 อย่างคือ
    1. Event - เป็นส่วนที่ใช้กำหนดว่า Trigger เราจะทำงานเมื่อใด
    2. Condition - เป็นเงื่อนไขการทำงาน หากเงื่อนไขที่เรากำหนดจริงทุกประการ คำสั่งของ Trigger ก็จะเริ่มทำงาน
    3. Action - เป็นส่วนชุดคำสั่งของที่จะให้ทำงาน

    เราจะมาเริ่มกันเลยนะครับ ให้ทุกท่านเลือกเมนู New > Category เพื่อสร้างหมวดใหม่ขึ้นมา ใช้ชื่ออะไรก็ได้ ในที่นี้ผมใช้ชื่อว่า "Shock of Dead" ครับ
    จากนั้นให้คลิกขวาที่หมวดที่เราได้สร้างไว้ตะกี๊ ให้เราเลือก New Trigger จากนั้นตั้งชื่ออะไรก็ได้ ในที่นี้ผมใช้ชื่อว่า "Shock Damage" ครับ

    จากนั้นสังเกตที่ฝั่งขวานะครับ จะมีส่วนของ Trigger Comment กับ Trigger Functions ซึ่งจุดที่เราจะเขียนคำสั่งก็คือ Trigger Functions ครับ เราจะมาเริ่มเขียนกันทีละส่วนเลยนะครับ

    :: Event ::
    เป็นส่วนที่บอกว่า Trigger เราจะทำงานเมื่อใด ซึ่งวิธีการเพิ่มคำสั่งให้คลิกขวาที่ Event แล้วเลือก New Event เลยครับ จากนั้นให้เราเลือกเพิ่มเหตุการณ์ที่ชื่อว่า Unit - Generic Unit Event จาดนั้นเซตค่าจาก "Dies" ให้เป็น "Starts the effect of an ability" จะได้เป็น

    Events
    Unit - A unit Starts the effect of an ability


    ซึ่งหมายความว่า Event จะทำงานเมื่อมียูนิตใดๆ ในเกมส์เริ่มกดใช้สกิลครับ นั่นหมายความว่ากดสกิลอะไร Event ก็จะตรงทำให้ Trigger นี้ทำงาน ดังนั้นเราจึงต้องเพิ่มเงื่อนไขในส่วนของ Condition ครับ

    :: Condition ::
    ในส่วนนี้เราจะสร้างข้อบังคับขึ้นมา 1 ข้อคือสกิลที่กดใช้ต้องเป็น สกิล Shock of Dead เท่านั้น ให้เราคลิกขวาที่ Condition แล้ว New Condition จากนั้นเลือกเงื่อนไขที่มีชื่อว่า "Ability - Comparison" จากนั้นกำหนดให้ได้ค่าเป็น

    Conditions
    (Ability being cast) Equal to Shock of Dead


    นั่นหมายถึงสกิลที่ร่ายต้องเป็นสกิล Shock of Dead เท่านั้น ซึ่งมาถึงตรงนี้ทุกท่านก็ได้กำหนดเงื่อนไขในการทำงานของ Trigger ครบแล้ว จากนี้จะเป็นส่วนของคำสั่ง (Action) ครับ

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

    ก่อนอื่นให้เรากำหนดตัวแปรที่จะใช้เก็บค่าที่เราคำนวณ ให้ทุกท่านเข้าไปที่เมนู Edit > Variable จากนั้นกดเพิ่มตัวแปร ซึ่งมีอยู่ 2 ตัวที่เราจะใช้มีรายละเอียดดังนี้ครับ

    ตัวแรก
    Variable Name : ShockDamage
    Variable Type : Real
    ตัวที่สอง
    Variable Name : ShockStunRate
    Variable Type : Integer

    ในส่วนแรกจะเป็นคำสั่งคำนวณ Damage ที่จะทำได้ครับ เขียนได้ดังนี้ครับ

    Set ShockDamage = (Random real number between 1.00 and (100.00 x (Real((Level of Shock of Dead for (Casting unit))))))

    หมายความว่าให้ค่าตัวแปร ShockDamage เก็บค่าของ Damage ที่ได้จากการสุ่มตั้งแต่ 1 ถึง (100 x Lv. ของสกิล)

    ซึ่งวิธีเขียน Action ตัวข้างบนนี้หลายท่านหากยังไม่คุณกับการสร้าง Trigger ก็ลองทำตามนี้เลยครับ
    1. หลังจากเลือก New Action แล้ว ให้เลือก คำสั่ง Set Variable
    2. มันจะมีให้เราปรับ 2 ที่ โดยตัวหน้า(Variable) ให้เราปรับเป็นชื่อของตัวแปรที่จะเก็บค่า ในที่นี้ก็คือ ShockDamage จากนั้นให้คลิกปรับที่ตัวหลังเครื่องหมายเท่ากับ(Value) จะมีหน้าต่างโผล่ขึ้นมาอีกอันหนึ่ง

    ซึ่งในฝั่งขวาของเครื่องหมายเท่ากับ คือค่าที่เราต้องการจะให้ตัวแปรที่อยู่ฝั่งซ้ายเก็บค่าเอาไว้ ซึ่งจากสมการคำนวณความแรงของเราซึ่งมีอยู่ว่า
    ShockDamage = สุ่มค่า(1 ถึง 100xLv. ของสกิล)

    3. ดังนั้นจากหน้าต่างที่โผล่ขึ้นมาใหม่นี้ให้เราเลือก ตรง Function > Math - Random Number
    4. ซึ่งเราจะพบว่าการเซ็ตค่าที่จะให้สุ่มจะมีการเซ็ตอยู่ 2 ค่าคือ จุดเริ่มต้น และ จุดจบ ซึ่งในที่นี้จุดเริ่มของเราคือ 1 (เพราะ Damage ต่ำสุดคือ 1) แต่ Damage สูงสุดคือ (100xLv. ของสกิล) ดังนั้นให้เราคลิกปรับค่าตัวหน้าเป็น 1 ก่อนครับ หลังจากนั้นเราถึงมาจัดการกับตัวหลังครับ ให้เราคลิก 1 ทีมันก็จะขึ้นหน้าต่างแบบเดิมซ้อนขึ้นมาอีกชั้นหนึ่ง
    5. มาถึงตอนนี้สิ่งที่เราจะทำคือ สั่งให้มันคำนวณนิพจน์สั้นๆ ของเราที่ได้วางแผนไว้ คือ

    100 x Lv. ของสกิล

    ให้เราเลือก Function เป็น Arithmetic ทีนี้ให้เราปรับเครื่องหมายตรงกลางเป็นตัวคุณก่อนเลยครับ ส่วนตัวฝั่งซ้ายก็ให้เราปรับเป็น 100 ตามที่เราวางแผนไว้ด้านบน

    ทีนี้ก็เหลือส่วนฝั่งขวา ซึ่งจะเป็นการดึงค่า Lv. ของสกิล ซึ่งค่าดังกล่าวจะเก็บในลักษณะของจำนวนเต็ม (Integer) แต่ด้วยความที่ว่า ขณะนี้เรากำลังทำงานกับตัวแปร ShockDamage ซึ่งเป็นประเภทจำนวนจริง (Real) เราจึงต้องแปลงค่าเลเวลสกิลที่เราจะดึงมาให้เป็นจำนวนจริงด้วย เพราะไม่งั้นโปรแกรมมันจะไม่ยอมคำนวณให้เรา

    6. ดังนั้นให้เราคลิกแก้ไขที่ฝั่งขวาเราจะพบหน้าต่างแบบเดิมขึ้นมาอีกครับ คราวนี้ให้เราเลือก Function > Conversion - Convert Integer to Real ซึ่งใช้ในการแปลงค่าจากจำนวนเต็มไปเป็นจำนวนจริง พอคลิกเลือกแล้ว ดูตรงที่เราปรับค่ามันจะมีค่าให้เราปรับแค่ตัวเดียวคือ ตัวที่อยู่ในวงเล็บของ Real() ให้เราคลิกข้อความด้านในเพื่อปรับค่า จะมีหน้าต่าง Integer ให้เราเลือก Function > Unit - Level of Ability for Unit เมื่อเลือกแล้วก็จะมีค่าให้เราปรับอยู่ 2 ค่าคือ

    Ability ให้เราตั้งค่าเป็น Shock of Dead
    ส่วนหลัง for () ในวงเล็บคือ Unit ที่จะทำการดึงค่าเลเวลของสกิล ให้เราเซตเป็น Casting Unit ซึ่งหมายถึง Unit ที่กำลังร่ายสกิลใน Triggers ตัวนี้ ซึ่งก็คือตัวผู้ร่ายนั่นเอง

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

    มาถึงชุดคำสั่งต่อไปนะครับ (Action > New Action ใหม่เลยนะครับ)

    Set ShockStunRate = (Random integer number between 1 and 100)

    ใช้เก็บเลขที่สุ่มตั้งแต่ 1 - 100 ครับ นั่นคือใช้สำหรับตรวจ % การติด Stun นั่นเอง

    ชุดคำสั่งต่อไปเป็นการสร้างความเสียหาย จากที่ได้คำนวนไว้ครับ

    Unit - Create 1 Dummy for (Owner of (Casting unit)) at (Position of (Target unit of ability being cast)) facing Default building facing degrees
    Unit - Cause (Last created unit) to damage (Target unit of ability being cast), dealing ShockDamage damage of attack type Spells and damage type Normal


    บรรทัดแรกคือคำสั่ง Unit - Create a unit facing angle ใช้สำหรับสร้างยูนิตซึ่ง ซึ่งในที่นี้ผมสั่งให้สร้าง Dummy Unit โดยกำหนดให้ตำแหน่งที่สร้างคือจุดเดียวกับเป้าหมาย

    บรรทัดที่สองคือคำสั่ง Unit - Damage Target เป็นการสั่งให้ Unit ที่เราต้องการ ทำการทำ Damage ใส่เป้าหมาย ซึ่งในที่นี้ผมสั่งให้ Dummy ที่เพิ่งสร้างขึ้นทำ Damage ใส่เป้าหมายด้วยความเสียหายเป็นค่าเดียวกับตัวแปร ShockDamage ที่ได้คำนวณไว้

    ที่นี้ก็มาถึงชุดคำสั่งการ Stun ซึ่งมาถึงตรงนี้เรามี 2 ทางเลือกที่เป็นไปได้คือ ติด Stun และไม่ติด Stun ในที่นี้เราจะนำค่าที่สุ่มไว้ในตัวแปร ShockStunRate มาเปรียบเทียบว่า ค่าที่สุ่มได้จะต้องมีค่าน้อยกว่า หรือเท่ากับ 50 (ไม่เกิน 50) เป็นเกณฑ์วัดว่าเป้าหมายจะติดอาการ Stun

    ซึ่ง Action ที่ใช้กำหนดเงื่อนไขคือ If/Then/Else, Multiple Function ให้ทุกท่านเลือกตามเลยนะครับ
    คำสั่งนี้จะประกอบด้วยส่วนประกอบ 3 ส่วนย่อยๆ คือ
    If - Condition : เป็นส่วนของเงื่อนไขที่เรากำหนด
    Then - Actions : ชุดคำสั่งที่จะให้ทำเมื่อเงื่อนไขที่กำหนดไว้เป็นจริง
    Else - Actions : ชุดคำสั่งที่จะให้ทำเมื่อเงื่อนไขที่กำหนดไว้เป็นเท็จ
    ให้ทุกท่านเขียนคำสั่งตามนี้เลยนะครับ

    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    ShockStunRate Less than or equal to 50
    Then - Actions
    Unit - Add Stunner [for Dummy] to (Last created unit)
    Unit - Set level of Stunner [for Dummy] for (Last created unit) to (Level of Shock of Dead for (Casting unit))
    Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Target unit of ability being cast)
    Wait 2.00 seconds
    Else - Actions
    Do nothing


    :: อธิบายคำสั่ง ::
    ในส่วนของ If - Condition มีเงื่อนไขเพียงตัวเดียวคือถ้าค่าของตัวแปร ShockStunRate <50> 50 จะให้ค่าเป็นเท็จ คำสั่งใน Else - Actions จะทำงาน ซึ่งมีเพียง Do Nothing คือไม่เกิดอะไรขึ้นครับ
    โดยในส่วนของ Condition ให้ทุกท่านเลือกเงื่อนไขที่ชื่อว่า "Integer Comparison" ซึ่งใช้สำหรับเปรียบเทียบค่าตัวแปรจำพวก Integer (จำนวนเต็ม)

    ทีนี้ในส่วนของ Then Action จะมีชุดคำสั่ง 3 บรรทัดซึ่งมีรายละเอียดดังนี้ครับ
    บรรทัดแรก เป็นคำสั่ง Unit - Add Ability เป็นการสั่งให้เพิ่มสกิล Stunner [for Dummy] ให้กับ Dummy Unit ซึ่งมีค่าเท่ากับ Last Created Unit (Unit ที่เพิ่งถูกสร้างโดย Trigger ตัวล่าสุด)
    บรรทัดที่สอง เป็นคำสั่ง Unit - Set Level of Ability for Unit ใช้กำหนดเลเวลของสกิลให้กับ Unit เป้าหมาย ซึ่งในที่นี้ผมกำหนดให้เลเวลของสกิลที่เท่ากับเลเวลของสกิล Shock of Dead ของผู้ใช้
    บรรทัดที่สาม เป็นคำสั่ง Unit - Issue Order Targeting a Unit เป็นการสั่งให้ Unit ทำการ Lock Unit เป้าหมายเพื่อกระทำการบางสิ่ง ในที่นี้เป็นการสั่งให้ใช้สกิล Storm Bolt ใส่เป้าหมาย
    บรรทัดที่สี่ เป็นคำสั่ง Wait เพื่อหน่วงเวลาให้เจ้า Dummy ของเรามีเวลาใช้สกิลใส่เป้าหมายครับ หากไม่ Wait มันจะทิ้ง Stun ไม่ทันครับ

    มาถึงคำสั่งสุดท้ายของ Trigger นี้คือคำสั่งลบ Dummy Unit ทิ้ง
    Unit - Remove (Last created unit) from the game

    เราจะได้คำสั่งทั้งหมดของ Trigger นี้เป็นดังนี้ครับ

    Shock Damage
    Events
    Unit - A unit Starts the effect of an ability
    Conditions
    (Ability being cast) Equal to Shock of Dead
    Actions
    Set ShockDamage = (Random real number between 1.00 and (100.00 x (Real((Level of Shock of Dead for (Casting unit))))))
    Set ShockStunRate = (Random integer number between 1 and 100)
    Unit - Create 1 Dummy for (Owner of (Casting unit)) at (Position of (Target unit of ability being cast)) facing Default building facing degrees
    Unit - Cause (Last created unit) to damage (Target unit of ability being cast), dealing ShockDamage damage of attack type Spells and damage type Normal
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    ShockStunRate Less than or equal to 50
    Then - Actions
    Unit - Add Stunner [for Dummy] to (Last created unit)
    Unit - Set level of Stunner [for Dummy] for (Last created unit) to (Level of Shock of Dead for (Casting unit))
    Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Target unit of ability being cast)
    Wait 2.00 seconds
    Else - Actions
    Do nothing
    Unit - Remove (Last created unit) from the game


    หลังจากนั้นลองทดสอบเล่นดูครับ จะพบว่าสกิลของเรามีการทำ Damage Random และมีโอกาสติด Stun ถึง 50 % เลยล่ะครับ หุหุ เป็นไงบ้างครับสกิลที่ทำขึ้นเอง...

    ท้ายสุดนี้ผมจะสรุปทิ้งท้ายไว้ว่า ความรู้ในการสร้าง Trigger ที่ผมแนะนำในนี้เป็นเพียงจุดเริ่มต้นเท่านั้นครับ และหวังว่าจะเป็น Idea ให้กับคนที่จะสร้าง Custom Skill หากเนื้อหาของผมซับซ้อน หรือยากเกินความเข้าใจตรงไหน ทุกท่านสามารถโพสถามได้ครับ ผมยินดีตอบคำถามของทุกท่านครับ

    และหากจะคุยกันเป็นการส่วนตัวก็ Add MSN มาคุยกันได้ที่ khempokeclub@hotmail.com ครับ วันนี้ขอตัวลาก่อนแล้วครับ

  2. #2
    arzeroth

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    เป็นบทความที่ดีมากครับ :004:
    ขนาดทำครั้งแรกนะเนี่ย
    มีคำถามครับ

    Quote Originally Posted by BeamTCG

    Shock Damage
    Events
    Unit - A unit Starts the effect of an ability
    Conditions
    (Ability being cast) Equal to Shock of Dead
    Actions
    Set ShockDamage = (Random real number between 1.00 and (100.00 x (Real((Level of Shock of Dead for (Casting unit))))))
    Set ShockStunRate = (Random integer number between 1 and 100)
    Unit - Create 1 Dummy for (Owner of (Casting unit)) at (Position of (Target unit of ability being cast)) facing Default building facing degrees
    Unit - Cause (Last created unit) to damage (Target unit of ability being cast), dealing ShockDamage damage of attack type Spells and damage type Normal
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    ShockStunRate Less than or equal to 50
    Then - Actions
    Unit - Add Stunner [for Dummy] to (Last created unit)
    Unit - Set level of Stunner [for Dummy] for (Last created unit) to (Level of Shock of Dead for (Casting unit))
    Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Target unit of ability being cast)
    Wait 2.00 seconds
    Else - Actions
    Do nothing
    Unit - Remove (Last created unit) from the game
    Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Target unit of ability being cast)
    Q : ถ้าเราสร้าง custom ability มันจะไม่มี preset ให้ จะสั่ง unit ใช้สกิลอย่างไรดี ทำไม่เป็น :011:

  3. #3
    black rock

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    ใช้สกิลต้นแบบที่เอามาทำ Custom skill ครับ

  4. #4
    arzeroth

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    Quote Originally Posted by Black rock ออคหินสีดำ
    ใช้สกิลต้นแบบที่เอามาทำ Custom skill ครับ
    :004: ขอบคุณอย่างสูงยิ่ง :004:

    เดิมใช้วิธีสร้าง item ให้ dummy ใช้ โง่หลาย กร๊ากกกกกก :016: :016:
    ต้องกลับไปนั่งแก้ trigger ใหม่ซะแล้ว

  5. #5
    karnkimavaha

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    ช้าก่อน แล้ว สกิล Spellbook ใช้ทำอะไรครับ

  6. #6
    arzeroth

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    Quote Originally Posted by karnkimavaha
    ช้าก่อน แล้ว สกิล Spellbook ใช้ทำอะไรครับ
    ไม่เข้าใจคำถาม spellbook ไรหรอ :017:

  7. #7
    black rock

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    Quote Originally Posted by karnkimavaha
    ช้าก่อน แล้ว สกิล Spellbook ใช้ทำอะไรครับ

    เอาไว้ใส่ skill ครับ


    อย่างใน Map RPG

  8. #8
    black rock

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    อยากได้พวก Damage Trigger ของ Allegro จัง =w=

  9. #9
    Niagin

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    เป็นบทความที่ดีมากๆ มือใหม่อย่างผมอ่านครั้งแรกแล้วยังเข้าใจเลย
    เข้าใจแจ่มแจ้ง ไร้ข้อสงสัยทั้งปวง จะมีก็แต่อ่านแล้วจับประเด็นไม่ออกเอง

    เลยมีอะไรจะแนะนิดนึง

    Unit - Create 1 Dummy for (Owner of (Casting unit)) at (Position of (Target unit of ability being cast)) facing Default building facing degrees
    Unit - Cause (Last created unit) to damage (Target unit of ability being cast), dealing ShockDamage damage of attack type Spells and damage type Normal


    บรรทัดแรกคือคำสั่ง Unit - Create a unit facing angle ใช้สำหรับสร้างยูนิตซึ่ง ซึ่งในที่นี้ผมสั่งให้สร้าง Dummy Unit โดยกำหนดให้ตำแหน่งที่สร้างคือจุดเดียวกับเป้าหมาย

    บรรทัดที่สองคือคำสั่ง Unit - Damage Target เป็นการสั่งให้ Unit ที่เราต้องการ ทำการทำ Damage ใส่เป้าหมาย ซึ่งในที่นี้ผมสั่งให้ Dummy ที่เพิ่งสร้างขึ้นทำ Damage ใส่เป้าหมายด้วยความเสียหายเป็นค่าเดียวกับตัวแปร ShockDamage ที่ได้คำนวณไว้
    ตรงช่วงเนี้ยแหละ ที่งงอยู่นานกว่าจะจับจุดได้ ว่าควรจะทำอย่างไรกับ Trigger ตัวปัญหาดี

    แนะนำว่า ควรแยกให้ชัดเจนระหว่าง สิ่งที่ต้องทำ กับ ผลลัพธ์ ที่ได้
    ตรงไหนคือสิ่งที่ต้องทำก็ตีกรอบไว้ ตรงไหนคือผลลัพธ์ที่ได้ก็ใส่สีลงไป เช่น

    Unit - Create 1 Dummy for (Owner of (Casting unit)) at (Position of (Target unit of ability being cast)) facing Default building facing degrees
    Unit - Cause (Last created unit) to damage (Target unit of ability being cast), dealing ShockDamage damage of attack type Spells and damage type Normal


    บรรทัดแรกคือคำสั่ง
    Unit - Create a unit facing angle
    ใช้สำหรับสร้างยูนิตซึ่ง ซึ่งในที่นี้ผมสั่งให้สร้าง Dummy Unit โดยกำหนดให้ตำแหน่งที่สร้างคือจุดเดียวกับเป้าหมาย

    บรรทัดที่สองคือคำสั่ง
    Unit - Damage Target
    เป็นการสั่งให้ Unit ที่เราต้องการ ทำการทำ Damage ใส่เป้าหมาย ซึ่งในที่นี้ผมสั่งให้ Dummy ที่เพิ่งสร้างขึ้นทำ Damage ใส่เป้าหมายด้วยความเสียหายเป็นค่าเดียวกับตัวแปร ShockDamage ที่ได้คำนวณไว้
    แบบนี้จะเห็นได้ชัดเจนเลยว่าสั่งที่ต้องทำคืออะไร และ ผลลัพธ์คืออะไร

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


    ปล. มีข้อสงสัย(มือใหม่นะ) ขออภัยถ้าคำถามออกจะงี่เง่าอยู่
    1. Custom Skill ที่สร้างในหัวข้อนี้ มันคือ การสร้าง Dummy Unit ไปยังเป้าหมายที่กำหนด แล้วทำให้ค่าที่ตั้งไว้ใน Trigger ส่งผลไปยัง Unit ที่ถูก Dummy Unit สร้างทับขึ้นมา หรือพูดง่ายๆก็คือ Dummy Unit นี่เป็น Spell ใช่มั๊ยคับ (ถ้าเข้าใจไม่ผิด)
    2. จากข้อ 1 ถ้าเกิดผมเข้าใจผิดขึ้นมา ก็หมายความว่า Dummy Unit นี่คือ Unit ที่สามารถใช้ Spell Shock of Dead และ Stunner [for Dummy] ได้ ใช่มั๊ยคับ

    พูดง่ายๆ ก็คือ ไอเจ้า Dummy Unit เนี่ยมันคือ ตัว Spell ของ Shock of Dead หรือว่า เป็น Unit ที่สามารถใช้ Spell Shock of Dead และ Stunner [for Dummy] ได้อะคับ

    3. ถ้าข้อ 1 ถูกต้องแล้วที่ว่า Dummy Unit คือตัว Spell ของ Shock of Dead แล้วตัว Unit ที่สามารถใช้ Spell Shock of Dead นี้ได้ จะทำขึ้นมายังไงอะคับ
    4. ทำยังไงถึงจะ Test Spell นี้ได้
    5. แล้วผมจะ Save ผลงานที่ทำขึ้นมานี้ยังไงอะ

    พอดีไม่รู้เรื่องอะไรเลย รบกวนช่วยไขข้อข้องใจเหล่านี้ด้วยนะครับ

    ขอบคุณมาก

  10. #10
    spider-x

    Re: Allegro Tutorial 01 : Create 'Custom Skill' with Triggers [Basic]

    ขอบคุณสำหรับกระทู้ดีๆครับ

Facebook Comments


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •