บทความนี้จะแนะนำแนวคิดที่เกี่ยวข้องกับตัวแก้ไขดั้งเดิมและส่วนดั้งเดิมใน CraftLand เป็นหลัก
ภาพรวมของ Metablocks
เมื่อทำการแก้ไขกราฟิก เราจะต้องสังเกตรูปร่างของบล็อกกราฟิกแต่ละบล็อก สิ่งที่เราต้องทำคือ รวบรวมบล็อกเหล่านี้เข้าด้วยกันตามกฎเกณฑ์ที่กำหนดไว้
การดำเนินการขั้นพื้นฐาน
ก่อนที่จะเข้าสู่ตัวแก้ไขดั้งเดิม เราต้องเปิดสคริปต์ก่อน เปิด CraftLand คลิก [More] ที่มุมซ้ายบน จากนั้นคลิก [Block Script] เมื่อเราเข้าสู่ตัวแก้ไขดั้งเดิม เราจะเปิด ‘สคริปต์ทั่วไป’ ตามค่าเริ่มต้น
แนะนำอินเทอร์เฟซ
หลังจากเข้าสู่ตัวแก้ไของค์ประกอบแล้ว จะมี 4 พื้นที่ในอินเทอร์เฟซตัวแก้ไขที่ควรให้ความสนใจ ดังที่แสดงในรูปด้านล่าง
หมายเลขซีเรียล | รูปภาพ | คำอธิบาย |
---|---|---|
1 | ![]() |
ที่มุมซ้ายบนของอินเทอร์เฟซคือช่องค้นหา เนื่องจากมีบล็อกดั้งเดิมจำนวนมาก เราจึงสามารถค้นหาบล็อกดั้งเดิมที่ต้องการได้โดยป้อนคำหลักในกล่องค้นหา |
2 | ![]() |
ที่มุมขวาบนของอินเทอร์เฟซคือรายการการเลือกสคริปต์ คลิกไอคอนทางด้านขวาเพื่อแสดงตัวเลือกแบบดรอปดาวน์ซึ่งแสดงสคริปต์ที่พร้อมใช้งานในปัจจุบัน สคริปต์ทั่วโลกจะถูกสร้างขึ้นตามค่าเริ่มต้น |
3 | ![]() |
เราแบ่งกลุ่มพื้นฐานออกเป็น 6 กลุ่ม เราสามารถคลิกไอคอนกลุ่มเพื่อขยายรายการกลุ่มพื้นฐานได้ |
4 | ![]() |
ไอคอนทางด้านซ้ายคือปุ่มย้อนกลับ ซึ่งสามารถย้อนกลับการทำงานครั้งล่าสุดได้ ไอคอนทางด้านขวาคือปุ่มทำซ้ำ ซึ่งสามารถย้อนกลับการทำงานครั้งล่าสุดได้ |
วางข้อมูลเบื้องต้น
1. ลากบล็อกออก: หลังจากทำความเข้าใจอินเทอร์เฟซแล้ว ขั้นแรกให้เราเปิดหมวดหมู่แรกที่มุมซ้ายล่าง เลือกบล็อกดั้งเดิมจากบล็อกนั้นแล้วลากไปยังช่องว่างเพื่อเป็นจุดเริ่มต้นของตรรกะของเรา
2. การเชื่อมต่อบล็อก: เราเลือกบล็อกที่มีรอยบุ๋มอยู่ด้านบนจากรายการบล็อก เราจะพบว่าเมื่อเราลากบล็อกไปที่ด้านล่างของบล็อกเริ่มต้น จะมีพรอมต์ UI สีเหลืองอยู่บนส่วนที่ยกขึ้นด้านล่างบล็อกเริ่มต้น เมื่อเราปล่อยนิ้ว เราจะพบว่าบล็อกทั้งสองจะถูกดูดซับเข้าด้วยกันโดยอัตโนมัติ จากนั้นเราก็ได้เสร็จสิ้นตรรกะง่ายๆ แล้ว
3. กรอกข้อมูล: ขั้นแรก เราจะลากข้อมูลในบล็อกดั้งเดิมออกมาหรือลากชนิดข้อมูลที่เหมาะสมในรายการดั้งเดิมออกมา
จากนั้นลากบล็อกข้อมูลไปยังพื้นที่ข้อมูลที่เกี่ยวข้อง กล่องข้อความ UI สีเหลืองจะปรากฏขึ้นในพื้นที่ข้อมูล ซึ่งระบุว่าสามารถวางประเภทบล็อกปัจจุบันได้ เมื่อคุณปล่อยนิ้ว บล็อกข้อมูลจะถูกดูดซับเข้าไปในพื้นที่โดยอัตโนมัติ
หมายเหตุ: เมื่อชนิดข้อมูลที่กรอกไม่สอดคล้องกับชนิดข้อมูลในช่องว่าง ตัวแก้ไขจะมีการแจ้งเตือนที่ชัดเจนและแสดงบล็อกข้อมูลที่ไม่ตรงกับชนิดโดยอัตโนมัติ
4. การแยกชิ้นส่วนบล็อก เมื่อเราเคลื่อนย้ายบล็อกกราฟิกใดบล็อกหนึ่งจากหลายบล็อกที่เชื่อมต่อกัน บล็อกทั้งหมดที่เชื่อมต่ออยู่ด้านล่างจะถูกแยกออกไปพร้อมๆ กัน
5. ลบบล็อค: เมื่อคุณกดและกดบล็อคกราฟิกใดๆ ค้างไว้ ถังขยะจะปรากฏขึ้นทางด้านขวาของอินเทอร์เฟซ เราสามารถลบบล็อคกราฟิกได้โดยการย้ายมันไปที่ถังขยะ
แน่นอนว่าเราสามารถลากบล็อกหลายๆ บล็อกไปที่ถังขยะเพื่อลบบล็อกหลายๆ บล็อกในเวลาเดียวกันได้
รูปร่าง
คำอธิบายบล็อค | ไอคอน |
---|---|
เฉพาะบล็อกที่ยกขึ้นด้านล่างเท่านั้นที่เป็นจุดเริ่มต้นของตรรกะ | ![]() |
บล็อกที่มีเฉพาะส่วนบนที่จมลงไปมักจะเป็นจุดสิ้นสุดของตรรกะ | ![]() |
ถ้าไม่มีรอยบุ๋มที่ด้านบนและไม่มีส่วนที่ยื่นออกมาที่ด้านล่าง แสดงว่าบล็อคนี้เป็นข้อมูลชิ้นหนึ่ง ซึ่งสามารถนำไปใช้กับบล็อคอื่นๆ ได้เป็นพารามิเตอร์ในการดำเนินการเชิงตรรกะบางอย่าง | ![]() |
หากบล็อกมีทั้งส่วนบนที่ยกขึ้นและส่วนล่างที่จมลง แสดงว่าบล็อกนั้นสามารถเชื่อมโยงกับบล็อกอื่นที่มีส่วนล่างที่ยกขึ้นได้ และสามารถเชื่อมโยงกับบล็อกอื่น ๆ ที่อยู่ด้านล่างได้อีกด้วย อาจเป็นโหนดของตรรกะ | ![]() |
ในการจำแนกประเภทบล็อก เราจะพบบล็อกที่มีรูปร่างพิเศษ บล็อกพิเศษนี้เป็นนิพจน์เงื่อนไขซึ่งแบ่งออกเป็นส่วนนูนภายนอกและพื้นที่เว้า และพื้นที่นูนภายในและพื้นที่เว้า เราสามารถเชื่อมต่อบล็อกอื่นๆ ได้ตามปกติบนพื้นที่นูนภายนอกและพื้นที่เว้าของบล็อกนิพจน์เงื่อนไข เช่นเดียวกับการเชื่อมต่อบล็อกอื่นๆ หรือเราสามารถเชื่อมโยงบล็อกภายในนิพจน์เงื่อนไข และตรรกะที่เขียนไว้ภายในนั้นจะต้องตรงตามตรรกะเงื่อนไขบางประการก่อนจึงจะคำนวณได้ | ![]() |
การจำแนกประเภท
เพื่อค้นหาบล็อคที่ต้องการได้อย่างมีประสิทธิภาพมากขึ้นในโปรแกรมแก้ไขดั้งเดิม เราแบ่งบล็อคออกเป็น 7 ประเภท
ดังแสดงในรูปต่อไปนี้:
ประเภท | แผนภาพ | ภาพรวม |
---|---|---|
เหตุการณ์ | ![]() |
ประเภทเหตุการณ์: โดยทั่วไป เมื่อถึงจุดเวลาที่ตรรกะเริ่มต้น เมื่อเราเขียนตรรกะดั้งเดิม เราจะต้องชี้แจงก่อนว่าเราต้องการให้ตรรกะนี้ทำงานเมื่อใด ตัวอย่างเช่น เมื่อผู้เล่นฟื้นคืนชีพ เราต้องการให้ปืนแก่เขา หรือเมื่อรอบเริ่มต้น เราต้องการวางกล่องเสบียงทางอากาศไว้ตรงกลางแผนที่ จากนั้น ‘เมื่อผู้เล่นฟื้นคืนชีพ’ และ ‘เมื่อรอบเริ่มต้น’ คือโหนดเวลาที่จำเป็นสำหรับตรรกะนี้ |
เอนทิตี้ | ![]() |
ประเภทเอนทิตี้: เป็นแนวคิดที่สำคัญใน CraftLand (ดูรายละเอียดใน ‘แนวคิดที่สำคัญ’) ในกระบวนการแก้ไขแบบดั้งเดิม เรามักจะเรียกหรือเปลี่ยนแปลงคุณสมบัติของเอนทิตี้ |
เกม | ![]() |
ประเภทเกม: ในประเภทเกม เราจัดเตรียมฟังก์ชันที่ใช้กันทั่วไปมากมายสำหรับผู้สร้าง CL ฟังก์ชันเหล่านี้มักเป็นการตั้งค่าที่มักต้องปรับเปลี่ยนในบางเกม ฟังก์ชันเหล่านี้ยังเกี่ยวข้องกับการเล่นเกมอย่างมาก เช่น การสร้างมอนสเตอร์ การเปลี่ยนสกายบ็อกซ์ หรือการเข้าร่วมช่องเสียง |
ข้อมูล | ![]() |
ประเภทข้อมูล: บล็อกข้อมูลอาจเป็นพารามิเตอร์ที่จำเป็นสำหรับการดำเนินการเชิงตรรกะส่วนใหญ่ อาจเป็นข้อมูลชิ้นหนึ่งที่ใช้ในบล็อกอื่น หรือเป็นการดำเนินการเพื่อคำนวณค่า |
ตรรกะ | ![]() |
ประเภทตรรกะ: ในประเภทตรรกะ เราจัดเตรียมการดำเนินการตรรกะที่ซับซ้อนหลายอย่าง การดำเนินการตรรกะประเภทนี้มักใช้เมื่อประมวลผลข้อมูล สามารถกรอง ตัดสิน หรือตัดสินใจตามเงื่อนไขเฉพาะ เช่น กำหนดว่าตัวเลขหนึ่งมากกว่าตัวเลขอื่นหรือไม่ จากนั้นจึงตัดสินใจดำเนินการอื่น |
ตัวแปร | ![]() |
ประเภทตัวแปร: ในประเภทตัวแปร เราสามารถสร้างตัวแปรได้ด้วยตัวเอง ตัวแปรที่สร้างขึ้นในลักษณะนี้คือตัวแปรสคริปต์ ซึ่งใช้สำหรับการประมวลผลข้อมูลสคริปต์ปัจจุบัน ในสคริปต์อื่น ตัวแปรสามารถรับและตั้งค่าได้โดยการอ้างอิงภายนอก |
ฟังก์ชัน | ![]() |
ประเภทฟังก์ชัน: ในประเภทฟังก์ชัน คุณสามารถสร้างเหตุการณ์ที่กำหนดเองได้ เหตุการณ์ที่กำหนดเองที่เราสร้างสามารถรวมเอาส่วนหนึ่งของตรรกะไว้ด้วยกัน ทำให้ตรรกะชัดเจนขึ้น เข้าใจง่ายขึ้น และบำรุงรักษาง่ายขึ้น |
คำอธิบายบล็อกองค์ประกอบตรรกะ
คำนามบล็อก | แผนภาพ | คำอธิบาย |
---|---|---|
คำสั่งเงื่อนไข (คำสั่ง if) | ![]() |
หากตรงตามเงื่อนไข โหนดภายใต้ IF จะถูกดำเนินการ |
คำสั่งเงื่อนไข…else(if…else statement) | ![]() |
หากตรงตามเงื่อนไข โหนดภายใต้ IF จะถูกดำเนินการ หากไม่ตรงตามเงื่อนไข โหนดภายใต้ ELSE จะถูกดำเนินการ |
ลูปเงื่อนไข (คำสั่ง while) | ![]() |
ตราบใดที่ตรงตามเงื่อนไข โหนดด้านล่างจะทำงานในลูป |
ลูปของความโกรธจำนวนเต็ม (สำหรับคำสั่งดัชนี) | ![]() |
พารามิเตอร์ i เริ่มต้นจากค่าต่ำสุด และทุกครั้งที่มีการเรียกใช้โหนดที่ต่ำกว่า i จะเพิ่มค่าขั้นบันไดจนกระทั่ง i มากกว่าหรือเท่ากับค่าสูงสุด |
วนซ้ำทุกองค์ประกอบ (สำหรับแต่ละคำสั่ง) | ![]() |
สำหรับแต่ละ KEY ในรายการ/พจนานุกรมพารามิเตอร์ ให้ดำเนินการโหนดด้านล่างหนึ่งครั้ง |
ตรวจสอบค่า null | ![]() |
ตรวจสอบว่าเป็นค่า null หรือไม่ และจัดการค่า null อย่างเหมาะสมเพื่อหลีกเลี่ยงข้อผิดพลาด |
ดำเนินการต่อในตอนถัดไป | ![]() |
ข้ามลูปนี้และเข้าสู่ลูปถัดไปของตัวลูป |
ตัดวงจร | ![]() |
ตัดวงจรและดำเนินการโหนดต่อหลังเนื้อหาของวงจร |
ECA คืออะไร?
ในบริบทของโค้ด ECA (Event-Condition-Action) มักจะหมายถึงวิธีการแสดงกฎ
I. ส่วนประกอบ
- กิจกรรม
- สถานการณ์หรือเหตุการณ์เฉพาะที่กระตุ้นให้มีการดำเนินการตามกฎ เช่น ผู้เล่นเข้าสู่เกม ผู้เล่นทำการฆ่า หรือผู้เล่นออกจากเกม
ตัวอย่าง: ผู้เล่นทำให้เกิดการฆ่า และหลังจากที่กระตุ้นเหตุการณ์นี้ ผู้เล่นได้รับเหรียญทอง 100 เหรียญ
- เงื่อนไข
- นิพจน์ตรรกะที่กำหนดว่าจะดำเนินการต่อเนื่องหรือไม่หลังจากเหตุการณ์เกิดขึ้น การดำเนินการที่เกี่ยวข้องจะดำเนินการเฉพาะเมื่อเงื่อนไขเป็นจริงเท่านั้น ตัวอย่างเช่น หากจำนวนซอมบี้มีน้อยกว่า 10 ตัว ให้สร้างซอมบี้ หากจำนวนผู้เล่นเท่ากับ 1 ให้รับปืนกล Gatling หรือหากพิกัดของผู้เล่นเท่ากับค่าที่กำหนด ให้เทเลพอร์ตผู้เล่นไปยังพิกัดอื่น
ตัวอย่าง: เมื่อผู้เล่นเข้าร่วมเกมและมีไมโครโฟนเปิดอยู่ ชื่อของเขาจะกลายเป็น "ฉันมีไมโครโฟน"
- การกระทำ
- หากเหตุการณ์เกิดขึ้นและเป็นไปตามเงื่อนไขที่กำหนด จะมีการดำเนินการเฉพาะเจาะจง ซึ่งอาจเป็นการแก้ไขข้อมูล เรียกใช้ฟังก์ชัน ส่งข้อความ ทริกเกอร์เหตุการณ์อื่น เป็นต้น
ตัวอย่าง: มอบปืน AK47 ให้กับผู้เล่นในตอนเริ่มรอบ และตั้งค่าพลังชีวิตของผู้เล่นเป็น 500
แนวคิดที่สำคัญใน ECA
ชื่อแนวคิด | คำอธิบาย |
---|---|
ฟังก์ชัน | ฟังก์ชัน (มักเรียกว่าเมธอด) คือบล็อกโค้ดที่นำมาใช้ซ้ำได้ซึ่งดำเนินการงานเฉพาะ ฟังก์ชันจะรวมการดำเนินการหรืองานเฉพาะไว้ในบล็อกเมธอดอิสระ ทำให้การดำเนินการและตรรกะมีความแยกส่วนมากขึ้นและง่ายต่อการบำรุงรักษา โค้ดภายนอกสามารถดำเนินการงานเฉพาะได้โดยเรียกใช้ฟังก์ชันโดยไม่ต้องเข้าใจรายละเอียดการใช้งานของฟังก์ชัน |
พารามิเตอร์ | พารามิเตอร์คือค่าที่ส่งไปยังฟังก์ชันหรือเมธอดเมื่อถูกเรียกใช้ พารามิเตอร์เหล่านี้ได้แก่ พารามิเตอร์อย่างเป็นทางการและพารามิเตอร์จริง ซึ่งสามารถแบ่งได้เป็นประเภทพารามิเตอร์เพื่อให้มีความยืดหยุ่นและสามารถถ่ายโอนข้อมูลได้ เป็นต้น |
การแจงนับ | การแจงนับคือแนวคิดของการรวบรวมข้อมูลอย่างต่อเนื่อง เช่น การแจงนับวิธีการโจมตี ซึ่งสามารถประกอบด้วยตัวเลือกต่างๆ เช่น การโจมตีระยะประชิด การยิง การระเบิด ฯลฯ ประเภทการแจงนับที่แตกต่างกันไม่สามารถกำหนดให้แก่กันได้ แม้ว่าค่าของพวกมันอาจจะเป็นค่าเดียวกันก็ตาม แต่ก็ไม่สามารถกำหนดได้เนื่องจากความหมายที่แตกต่างกัน |
เหตุการณ์ที่กำหนดเองและตัวแปรที่กำหนดเอง
กิจกรรมที่กำหนดเอง
ที่มุมล่างซ้ายของตัวแก้ไของค์ประกอบ เราจะพบรายการองค์ประกอบทั้งหมดเจ็ดประเภท ในประเภทฟังก์ชัน เราสามารถคลิก [สร้างฟังก์ชัน] เพื่อสร้างเหตุการณ์ที่กำหนดเองได้
ภาพรวมของอินเทอร์เฟซเหตุการณ์ที่กำหนดเอง
หมายเลขซีเรียล | รูปภาพ | คำอธิบาย |
---|---|---|
1 | ![]() |
ที่นี่เราสามารถกรอกชื่อของเหตุการณ์ที่กำหนดเองได้ |
2 | ![]() |
คลิกเครื่องหมายบวกเพื่อเพิ่มพารามิเตอร์ภายในให้กับเหตุการณ์ที่กำหนดเอง พารามิเตอร์นี้ใช้ได้เฉพาะในเหตุการณ์ที่กำหนดเองที่พารามิเตอร์นี้เกี่ยวข้องเท่านั้น |
3 | ![]() |
คลิกเครื่องหมายบวกที่มุมขวาล่างเพื่อเพิ่มค่าส่งคืนให้กับเหตุการณ์ที่กำหนดเองของเรา เมื่อเราเรียกเหตุการณ์นี้ในตรรกะอัลกอริทึมอื่น เราจะได้ข้อมูลที่ต้องการ |
คำอธิบายเหตุการณ์ที่กำหนดเอง
เมื่อแก้ไขข้อมูลพื้นฐาน เราจะรวมบล็อกข้อมูลพื้นฐานหลายบล็อกเข้าในเหตุการณ์ที่กำหนดเอง นอกจากนี้ เรายังกล่าวได้อีกว่าเรารวมตรรกะการคำนวณหลายรายการไว้ในวิธีเดียว การทำเช่นนี้มีข้อดีหลายประการ:
1. การตั้งชื่อที่ชัดเจน: การใช้เหตุการณ์ที่ห่อหุ้มไว้ เราไม่จำเป็นต้องอ่านตรรกะบล็อกดั้งเดิมที่ซับซ้อน เราสามารถเข้าใจเจตนาของตรรกะเหตุการณ์ทั้งหมดได้เพียงแค่ตั้งชื่อ
2. ลดความซับซ้อนของโครงสร้างดั้งเดิม: การห่อหุ้มการคำนวณที่ซับซ้อนในเหตุการณ์ที่กำหนดเองสามารถทำให้ตรรกะของโครงสร้างหลักกระชับและชัดเจนมากขึ้น ลดความซับซ้อนของโครงสร้างดั้งเดิม และปรับปรุงการอ่านได้
2. การใช้งานซ้ำ: เมื่อบล็อกลอจิกกราฟิกหลายบล็อกต้องการการดำเนินการเดียวกัน คุณสามารถนำเหตุการณ์ที่กำหนดเองแบบห่อหุ้มมาใช้ซ้ำเพื่อหลีกเลี่ยงการเขียนลอจิกกราฟิกเดียวกันซ้ำๆ ไม่เพียงเท่านั้น เมื่อเราปรับเปลี่ยนและดูแลเหตุการณ์ที่กำหนดเองนี้ เรายังสามารถปรับเปลี่ยนบล็อกลอจิกกราฟิกหลายบล็อกที่นำเหตุการณ์ที่กำหนดเองมาใช้ซ้ำในเวลาเดียวกันเพื่อหลีกเลี่ยงการแก้ไขโค้ดเดียวกันซ้ำๆ ในหลายตำแหน่ง
ตัวแปรที่กำหนดเอง
ภาพรวมของอินเทอร์เฟซตัวแปรที่กำหนดเอง
ในรายการประเภทองค์ประกอบ เลือกประเภท [VARIABLE] จากนั้นคลิก [CREATE VARIABLE] เพื่อสร้างตัวแปรที่กำหนดเอง
เมื่อสร้างตัวแปรที่กำหนดเอง เราสามารถตั้งชื่อตัวแปรและชนิดข้อมูลตัวแปรได้
คำอธิบายตัวแปรที่กำหนดเอง
เมื่อเราเขียนลอจิกกราฟิก บางครั้งเราอาจจำเป็นต้องกำหนดตัวแปรพารามิเตอร์ของประเภทข้อมูลตามความต้องการเฉพาะ ฟังก์ชันตัวแปรแบบกำหนดเองจะช่วยแก้ปัญหานี้
ตัวแปรที่คุณสร้างขึ้นยังสามารถใช้เพื่อส่งข้อมูลระหว่างเมธอดต่างๆ ได้อีกด้วย การเก็บข้อมูลไว้ในตัวแปรจะช่วยให้คุณส่งข้อมูลดังกล่าวเป็นพารามิเตอร์ไปยังเมธอดอื่นหรือส่งคืนจากเมธอดหนึ่งไปยังตัวเรียกได้
ตัวอย่างเหตุการณ์/ตัวแปรที่กำหนดเอง
เราจะสร้างตรรกะเพื่อสาธิตวิธีการใช้เหตุการณ์ที่กำหนดเองและตัวแปรที่กำหนดเองในตัวแก้ไขแบบดั้งเดิม
ตัวอย่างตรรกะ: เมื่อผู้เล่นฆ่าใครสักคน ขีดจำกัดสุขภาพของผู้เล่นจะลดลง 10 แต้ม และขั้นต่ำจะลดลงเหลือ 20 แต้ม
- ขั้นแรก เราสร้างตัวแปรแบบกำหนดเองชื่อ ‘CurrentMaxHp’ และตั้งค่าประเภทข้อมูลเป็น ‘int’ ในเวลาเดียวกัน เราสร้างเหตุการณ์แบบกำหนดเองชื่อ ‘DecreaseMaxHp’ เพื่อเตรียมการเบื้องต้น
-
ค้นหาและลากเหตุการณ์ ‘เมื่อผู้เล่นทำให้ฆ่า’ ออกมา แล้วเชื่อมต่อกับเหตุการณ์ที่กำหนดเอง ‘DecreaseMaxHp’ ที่เราเพิ่งสร้างขึ้น หลังจากเชื่อมต่อแล้ว เราก็ได้เสร็จสิ้นพื้นฐานเชิงตรรกะสำหรับการลดขีดจำกัดสุขภาพของผู้เล่นเมื่อผู้เล่นฆ่า
-
หลังจากเสร็จสิ้นตรรกะพื้นฐานแล้ว เราสามารถเริ่มเขียนโครงสร้างพื้นฐานของเหตุการณ์ที่กำหนดเองได้ ขั้นแรก เราจะกำหนดค่าของตัวแปรที่เราเพิ่งสร้างขึ้น
-
จากนั้นเชื่อมต่ออัลกอริทึมเพื่อตั้งค่าตัวแปรเป็น -10 ทุกครั้งที่มีการเรียกใช้เหตุการณ์
-
เพิ่มขีดจำกัดสุขภาพขั้นต่ำ เพิ่มการตรวจสอบว่าขีดจำกัดสุขภาพปัจจุบันน้อยกว่าหรือเท่ากับ 20 หมายความว่าขีดจำกัดสุขภาพปัจจุบันเท่ากับ 20
-
กำหนดค่าตัวแปรที่คำนวณใหม่ให้กับแอตทริบิวต์ขีดจำกัดชีวิตของผู้เล่น จนถึงตอนนี้ เราได้ทำตามตรรกะที่จำเป็นทั้งหมดแล้ว
-
ตรวจสอบ
ขีดจำกัดสุขภาพลดลงอย่างถูกต้องและตรวจสอบอย่างถูกต้อง