การเปลี่ยนแปลงค่าในหลาย

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

เนื้อหาของ คลังไอเท็มLua มี การสร้างฟังก์ชันของ mat สำหรับการใช้กับตารางเพื่อทำให้เป็นเรื่องง่าย

บทความนี้จะอธิบายการใช้งานล่วงหน้าสำหรับตารางเช่นเพิ่มและลบโดยอธิบายวิธีการค้นหาค่า

เพื่อใช้ทักษะเหล่านี้ คุณจะสร้างสคริปที่ช่วยจัดการสินค้าคงคลังของผู้เล่นในเกม

การเพิ่มค่าในแมทริค

เพื่อเพิ่มค่าใหม่ให้กับตารางให้ใช้ table.insert(array, valueToInsert) ประการที่สองสามารถเป็นค่าใด ๆ เช่นสตริง หมายเลข หรือตัวอักษรทั้งหมดเช่น Player หรือ IntValue

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

  1. สร้างรายการแบบว่างที่มีชื่อว่า playerItems


    playerItems = {}
  2. เพิ่มรายการสินค้าในตารางด้วยการพิมพ์ table.insert() ในช่องเริ่มต้น, พิมพ์ playerItems ตารางที่จะเพิ่ม, ไอเท็ม. ใส่อย่างน้อยสามค่า


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. ดำเนินโครงการ ในOutput ขยายสามจุด ... เพื่อดูตารางพิมพ์

การลบค่าออกจากแมทริค

เพื่อลบค่า เช่น หากผู้เล่นใช้รายการไอเท็มหรือบุคคลในรายการผู้เล่นที่ใช้งานอยู่ออกประสบการณ์ ให้ใช้ table.remove() ตามค่าตัวที่ให้ไว้ หากค่าตัวนั้นเป็นค่าตัวละคร ฟังก์ชั

การลบค่าสุดท้าย

ไอเท็มอินสแตนซ์เพื่อลบค่าสุดท้ายในรายการ ใช้ Library

  1. ใช้ตัวอย่างการใช้รายการจากตัวอย่างก่อนหน้านี้ จากนั้น, เพื่อลบค่าสุดท้ายจากตาราง, ในกรณีนี้ "Sleeping Bag" ชนิด table.remove(playerItems)


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. วิดีโอสรุปการทำงานโครงการ ในหน้านี้ ค่าสุดท้าย "Sleeping Bag"

ลบโดยดัชนี

เพื่อลบค่าที่ตรงที่เฉพาะในค่าย่อในสามตัวที่สามารถเปลี่ยนแปลงได้ เช่น table.remove(arrayName, 1) .

  1. โดยใช้ตารางเดียวกัน, ใส่ table.remove() . ในพารามิเตอร์, ใส่ชื่อของตารางและ 1 ค่าที่จะลบออก


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. ดำเนินโครงการ ตรวจสอบว่ามีค่าแรก "Potion" หรือไม่

การค้นหาค่าในรายการ

เพื่อค้นหาค่าที่เฉพาะในรายการโดยใช้ชื่อผู้เล่นชนะรางวัล ใช้ตัวให้การ table.find() เช่นกัน หรือคุณสามารถเขียนรหัสการค้นหาของคุณเองโดยใช้ for ลูปและ if

การค้นหาและการส่งคืนค่าเดียว

เพื่อค้นหาค่าในตาราง สร้างคุณสมบัติที่มีชื่อว่า findValue() ที่ผ่านตารางและหยุดให้บริการในครั้งแรกที่พบค่าตรงกัน

เมื่อพบค่า ฟังก์ชันจะใช้คำว่าง return เพื่อนำค่านั้นมาให้คืนดัชนี ด้วยค่า คุณสามารถนำออกจากรายการ

  1. คัดลอกแผงที่มีชื่อว่า playerItems ด้านล่าง


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. จดฟังก์ชันใหม่ที่มีชื่อว่า findValue() ด้วยสองปารามิเตอร์:

    • whichArray - รายการที่จะค้นหา

    • itemName - สตริงที่เฉพาะเพื่อตรวจสอบ


      local function findValue(whichArray, itemName)
      end
  3. ใน findValue() ใช้ for เพื่อตรวจสอบว่ามีค่าใด ๆ ในรายการอยู่ใน itemName หรือไม่ หากค่าตรงกันใช้คำว่างเปล่า return เพื่อนำค่าที่พบใน 1> currentIndex1> กลับมา


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. ทดสอบคุณสมบัติการค้นหาโดยการสร้างแปรที่มีชื่อว่า valueFound และโทร findValue() เพื่อค้นหา สิ่งที่คุณควรค้นหา ในหน้ารายการ 1>วิ่ง1> โค้ดเพื่อยืนยันว่าผลลั


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --ส่งค่าของ currentIndex ย้อนกลับ
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("The value is at index " .. valueFound)

การลบค่า

หากพบค่าที่ใช้งานได้หาได้รับความสนใจ สามารถลบออกได้ ตรวจสอบว่าค่าที่พบมี if สถานะหรือไม่

  1. ตรวจสอบว่ามีค่าอยู่ใน valueFound หรือไม่ หากเป็นเช่นนั้นให้ลบค่าโดยใช้ table.remove()


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. พิมพ์รายการโดยใช้รหัสด้านล่าง


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. ทดสอบและตรวจสอบว่ามีค่านี้ "Bread" ถูกลบออกจากรายการ ลองลบค่าอื่นโดยการเปลี่ยนปารามิเตอร์ที่สองใน findValue()

    หมายเหตุว่าเนื่องจากฟังก์ชันนี้เรียกเรียกครั้งเดียวเท่านั้นจึงเฉพาะตัวอย่างแรกของ "Bread" เท่านั้นที่ถูกลบออก ส่วนต่อไปจะครอบคลุมวิธีการค้นหาและลบตัวอย่างทั้งหมด

การค้นหาและการลบทั้งหมดของมูลค่าที่กำหนด

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

  1. ใช้รายการชื่อ playerItems ที่มีมากกว่าสี่ค่า และชุดของ duplicates


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. เพื่อไปผ่านรายการ สร้าง for ที่เป็นลูปที่ไป กลับ ผ่าน playerItems เริ่มต้นที่ #playerItems และสิ้นสุดที่ 1 และเพิ่มขึ้นโดย -1


    for index = #playerItems, 1, -1 do
    end
  3. ในล็อป, ใช้ if สถานะเพื่อตรวจสอบว่า playerItems[index] ภายในมีค่าเท่ากับ "Bread" และถ้าเป็นเช่นนั้น, ไอเท็ม.


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. ใช้รหัสด้านล่างเพื่อเพิ่มตัวเลือกที่สองสำหรับการพิมพ์รายการ


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. ดำเนินสคริปต์และตรวจสอบว่ามีมูลค่าที่ชื่อว่า "ขนมปัง" หรือไม่

สรุป

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

คำว่าดุ return สามารถใช้เพื่อหยุดวงจร และส่งข้อมูลกลับไปที่ต้องการ

สามารถอ้างอิงได้ด้านล่างเป็นเวอร์ชันที่เสร็จสิ้นของสคริปต์

โครงการต่อไปนี้รวมถึงสคริปทั้งหมดในไดอารี่นี้ ดาวน์โหลด ที่นี่ .

หมายเหตุ: สคริปต์ทั้งหมดอยู่ใน ServerScriptService และ ปิด หากต้องการใช้สคริปต์ให้เช็คช่อง ไม่อนุญาต และรัน Studio