เนื้อหาของ คลังไอเท็มLua มี การสร้างฟังก์ชันของ mat สำหรับการใช้กับตารางเพื่อทำให้เป็นเรื่องง่าย
บทความนี้จะอธิบายการใช้งานล่วงหน้าสำหรับตารางเช่นเพิ่มและลบโดยอธิบายวิธีการค้นหาค่า
เพื่อใช้ทักษะเหล่านี้ คุณจะสร้างสคริปที่ช่วยจัดการสินค้าคงคลังของผู้เล่นในเกม
การเพิ่มค่าในแมทริค
เพื่อเพิ่มค่าใหม่ให้กับตารางให้ใช้ table.insert(array, valueToInsert) ประการที่สองสามารถเป็นค่าใด ๆ เช่นสตริง หมายเลข หรือตัวอักษรทั้งหมดเช่น Player หรือ IntValue
เพื่อฝึกซ้อมคุณจะสร้างสคริปที่เก็บรายการของผู้เล่นในตารางแล้วเพิ่มมัน เนื่องจากตัวอย่างนี้เป็นเพียงสคริปต์จึงสามารถใช้กับไฟล์หรือโครงการใด ๆ การทดสอบรหัสจะดำเนินการโดยการใช้หน้า
สร้างรายการแบบว่างที่มีชื่อว่า playerItems
playerItems = {}เพิ่มรายการสินค้าในตารางด้วยการพิมพ์ table.insert() ในช่องเริ่มต้น, พิมพ์ playerItems ตารางที่จะเพิ่ม, ไอเท็ม. ใส่อย่างน้อยสามค่า
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)ดำเนินโครงการ ในOutput ขยายสามจุด ... เพื่อดูตารางพิมพ์
การลบค่าออกจากแมทริค
เพื่อลบค่า เช่น หากผู้เล่นใช้รายการไอเท็มหรือบุคคลในรายการผู้เล่นที่ใช้งานอยู่ออกประสบการณ์ ให้ใช้ table.remove() ตามค่าตัวที่ให้ไว้ หากค่าตัวนั้นเป็นค่าตัวละคร ฟังก์ชั
การลบค่าสุดท้าย
ไอเท็มอินสแตนซ์เพื่อลบค่าสุดท้ายในรายการ ใช้ Library
ใช้ตัวอย่างการใช้รายการจากตัวอย่างก่อนหน้านี้ จากนั้น, เพื่อลบค่าสุดท้ายจากตาราง, ในกรณีนี้ "Sleeping Bag" ชนิด table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems)print(playerItems)วิดีโอสรุปการทำงานโครงการ ในหน้านี้ ค่าสุดท้าย "Sleeping Bag"
ลบโดยดัชนี
เพื่อลบค่าที่ตรงที่เฉพาะในค่าย่อในสามตัวที่สามารถเปลี่ยนแปลงได้ เช่น table.remove(arrayName, 1) .
โดยใช้ตารางเดียวกัน, ใส่ table.remove() . ในพารามิเตอร์, ใส่ชื่อของตารางและ 1 ค่าที่จะลบออก
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems, 1)ดำเนินโครงการ ตรวจสอบว่ามีค่าแรก "Potion" หรือไม่
การค้นหาค่าในรายการ
เพื่อค้นหาค่าที่เฉพาะในรายการโดยใช้ชื่อผู้เล่นชนะรางวัล ใช้ตัวให้การ table.find() เช่นกัน หรือคุณสามารถเขียนรหัสการค้นหาของคุณเองโดยใช้ for ลูปและ if
การค้นหาและการส่งคืนค่าเดียว
เพื่อค้นหาค่าในตาราง สร้างคุณสมบัติที่มีชื่อว่า findValue() ที่ผ่านตารางและหยุดให้บริการในครั้งแรกที่พบค่าตรงกัน
เมื่อพบค่า ฟังก์ชันจะใช้คำว่าง return เพื่อนำค่านั้นมาให้คืนดัชนี ด้วยค่า คุณสามารถนำออกจากรายการ
คัดลอกแผงที่มีชื่อว่า playerItems ด้านล่าง
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}จดฟังก์ชันใหม่ที่มีชื่อว่า findValue() ด้วยสองปารามิเตอร์:
whichArray - รายการที่จะค้นหา
itemName - สตริงที่เฉพาะเพื่อตรวจสอบ
local function findValue(whichArray, itemName)end
ใน findValue() ใช้ for เพื่อตรวจสอบว่ามีค่าใด ๆ ในรายการอยู่ใน itemName หรือไม่ หากค่าตรงกันใช้คำว่างเปล่า return เพื่อนำค่าที่พบใน 1> currentIndex1> กลับมา
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendทดสอบคุณสมบัติการค้นหาโดยการสร้างแปรที่มีชื่อว่า valueFound และโทร findValue() เพื่อค้นหา สิ่งที่คุณควรค้นหา ในหน้ารายการ 1>วิ่ง1> โค้ดเพื่อยืนยันว่าผลลั
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--ส่งค่าของ currentIndex ย้อนกลับreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("The value is at index " .. valueFound)
การลบค่า
หากพบค่าที่ใช้งานได้หาได้รับความสนใจ สามารถลบออกได้ ตรวจสอบว่าค่าที่พบมี if สถานะหรือไม่
ตรวจสอบว่ามีค่าอยู่ใน valueFound หรือไม่ หากเป็นเช่นนั้นให้ลบค่าโดยใช้ table.remove()
if valueFound thentable.remove(playerItems, valueFound)endพิมพ์รายการโดยใช้รหัสด้านล่าง
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endทดสอบและตรวจสอบว่ามีค่านี้ "Bread" ถูกลบออกจากรายการ ลองลบค่าอื่นโดยการเปลี่ยนปารามิเตอร์ที่สองใน findValue()
หมายเหตุว่าเนื่องจากฟังก์ชันนี้เรียกเรียกครั้งเดียวเท่านั้นจึงเฉพาะตัวอย่างแรกของ "Bread" เท่านั้นที่ถูกลบออก ส่วนต่อไปจะครอบคลุมวิธีการค้นหาและลบตัวอย่างทั้งหมด
การค้นหาและการลบทั้งหมดของมูลค่าที่กำหนด
ในขณะที่รหัสก่อนหน้านี้ยังสามารถลบรายการแรกของมูลค่าที่พบได้ แต่ส่วนนี้จะหาและลบการเกิดขึ้นทั้งหมดจากห้องเก็บข้อมูล เช่น หากผู้เล่นต้องการขายขนมปังทั้งหมดในร้านค้าในเกม
ใช้รายการชื่อ playerItems ที่มีมากกว่าสี่ค่า และชุดของ duplicates
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}เพื่อไปผ่านรายการ สร้าง for ที่เป็นลูปที่ไป กลับ ผ่าน playerItems เริ่มต้นที่ #playerItems และสิ้นสุดที่ 1 และเพิ่มขึ้นโดย -1
for index = #playerItems, 1, -1 doendในล็อป, ใช้ if สถานะเพื่อตรวจสอบว่า playerItems[index] ภายในมีค่าเท่ากับ "Bread" และถ้าเป็นเช่นนั้น, ไอเท็ม.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endendใช้รหัสด้านล่างเพื่อเพิ่มตัวเลือกที่สองสำหรับการพิมพ์รายการ
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endดำเนินสคริปต์และตรวจสอบว่ามีมูลค่าที่ชื่อว่า "ขนมปัง" หรือไม่
สรุป
สามารถนำมูลค่าออกหรือเพิ่มมายังแผงค่า แต่โปรดระวังตัวอักษรที่เปลี่ยนแปลงไปในแผงค่า โดยใช้ลูปเพื่อทำซ้ำผ่านตารางเพื่อลบตัวอย่างทั้งหมดของมูลค่า หรือเพียงตัวอักษรแรกที่พบ
คำว่าดุ return สามารถใช้เพื่อหยุดวงจร และส่งข้อมูลกลับไปที่ต้องการ
สามารถอ้างอิงได้ด้านล่างเป็นเวอร์ชันที่เสร็จสิ้นของสคริปต์
โครงการต่อไปนี้รวมถึงสคริปทั้งหมดในไดอารี่นี้ ดาวน์โหลด ที่นี่ .
หมายเหตุ: สคริปต์ทั้งหมดอยู่ใน ServerScriptService และ ปิด หากต้องการใช้สคริปต์ให้เช็คช่อง ไม่อนุญาต และรัน Studio