Membuat Perubahan pada Matriks

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Konten array sering harus diubah, seperti ketika perlu menghapus item dari inventaris pemain. Lua memiliki fungsi pra-dibangun untuk digunakan dengan tabel untuk membuat ini lebih mudah.

Artikel ini akan menyoroti fungsi pra-dibangun untuk tabel seperti add dan remove saat menjelaskan cara mencari nilai.

Untuk menerapkan keterampilan ini, Anda akan membuat script yang membantu mengelola inventaris pemain dalam game.

MenambahkanNilai ke Arrays

Untuk menambahkan nilai baru ke matri, gunakan table.insert(array, valueToInsert) . Parameter kedua dapat menjadi apa pun nilai seperti string, angka, atau seluruh objek, seperti Player atau IntValue .

Untuk berlatih, Anda akan menciptakan script yang menyimpan item pemain di tabel, lalu tambahkan ke itu. Karena contoh ini hanya sebuah script, itu dapat digunakan dengan file atau proyek apa pun. Menguji kode akan dilakukan menggunakan Jendela Keluar.

  1. Buat array kosong bernama playerItems .


    playerItems = {}
  2. Tambahkan item inventaris ke array dengan mengetik table.insert() . Dalam huruf, ketik playerItems, tabel untuk ditambahkan, diikuti oleh string untuk setiap item. Sisipkan setidaknya tiga nilai.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. Jalankan proyek. PadaOutput, ekspor tiga titik ... untuk melihat tabel cetak.

MenghapusNilai dari Arrays

Untuk menghapus nilai, seperti jika seorang pemain menggunakan item atau seseorang dalam daftar pemain aktif meninggalkan pengalaman, gunakan table.remove() . Tergantung pada parameter yang disediakan, fungsi ini dapat menghapus nilai terakhir dari tabel, atau di indeks tertentu.

MenghapusNilai Terakhir

Terkadang, sebuah script perlu menghapus item tertentu. kejadian, menghapus item pertama dalam inventaris pemain, atau memilih pemain pertama dalam daftar. Untuk menghapus nilai terakhir dalam matriks, gunakan table.remove(arrayName) . Dalam kasus penggunaan ini, satu-satunya parameter yang dibutuhkan adalah tabel itu sendiri.

  1. Gunakan array item dari contoh sebelumnya. Kemudian, untuk menghapus nilai terakhir dari tabel, dalam hal ini "Sleeping Bag" , jenis table.remove(playerItems)


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. Jalankan proyek. Di jendela Keluar, nilai terakhir, "Sleeping Bag", seharusnya tidak dicetak.

Menghapus dengan Index

Untuk menghapus nilai di titik tertentu dalam array, masukkan parameter kedua untuk menghapus, seperti table.remove(arrayName, 1) .

  1. Menggunakan tabel yang sama, ketik table.remove() . Dalam parameter, masukkan nama tabel dan 1, nilai untuk dihapus.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. Lari proyek. Periksa bahwa nilai pertama, "Ramuan" telah dihapus.

MencariNilai dalam Array

Untuk menemukan nilai spesifik dalam array, seperti nama pemain yang menang, gunakan fungsi table.find(). Alternatifnya, Anda dapat menulis fungsi pencarian Anda sendiri menggunakan for루프 dan if pernyataan.

Menemukan dan Mengembalikan Nilai Tunggal

Untuk menemukan nilai dalam matri, buat fungsi bernama findValue() yang pergi melalui matri dan berhenti saat pertama kali menemukan nilai yang cocok.

Setelah menemukan nilainya, fungsi akan menggunakan kata kunci return untuk mengembalikan indeks nilai tersebut. Dengan indeks, Anda dapat menghapusnya dari array.

  1. Kopi array bernama playerItems di bawah ini.


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Kode fungsi baru bernama findValue() dengan dua parameter:

    • whichArray - array untuk dicari.

    • itemName - string khusus untuk diperiksa.


      local function findValue(whichArray, itemName)
      end
  3. Dalam findValue(), gunakan for loop untuk memeriksa apakah nilai dalam array cocok dengan itemName . Jika nilai cocok, gunakan kata kunci return untuk mengembalikan nilai yang ditemukan di 1> currentIndex1> .


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Uji fungsi pencarian dengan menciptakan variabel bernama valueFound dan memanggil findValue() . Melewati array untuk mencari, dan nilai apa yang harus dicari. Jalankan kode untuk mengonfirmasi bahwa hasil yang diharapkan adalah indeks 2.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --Mengirim nilai currentIndex kembali
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("The value is at index " .. valueFound)

MenghapusNilai

Jika nilai ditemukan menggunakan fungsi temukan, itu dapat dihapus. Periksa apakah nilai ditemukan dengan if statement.

  1. Periksa apakah nilai berada di dalam valueFound ; jika demikian, hapus nilai menggunakan table.remove().


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. Cetak daftar menggunakan kode di bawah ini.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. Mainkan dan periksa bahwa nilai pertama "Bread" dari array telah dihapus. Coba menghapus nilai lain dengan mengubah parameter kedua dalam findValue() .

    Perhatikan bahwa karena fungsi ini dipanggil sekali, hanya contoh pertama dari "Bread" yang dihapus. Bagian berikut akan menjelaskan cara menemukan dan menghapus semua contoh.

Menemukan dan Menghapus Semua Nilai Tertentu

Sementara kode sebelumnya hanya dapat menghapus instans pertama dari nilai yang ditemukan, snippet kode ini akan menemukan dan menghapus semua opsi dari array. Misalnya, jika, katakan, seorang pemain ingin menjual semua roti mereka di toko dalam game.

  1. Gunakan array bernama playerItems dengan setidaknya empat nilai dan set dari duplikat .


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Untuk pergi melalui array, buat for loop yang pergi mundur melalui playerItems , dimulai dari #playerItems , dan meningkatkan oleh -1.


    for index = #playerItems, 1, -1 do
    end
  3. Dalam loop, gunakan if statement untuk memeriksa apakah nilai di dalam playerItems[index] sama dengan "Bread" , dan jika demikian, hapus item.


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. Gunakan kode di bawah ini untuk menambahkan loop yang mencetak array.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. Jalankan script dan periksa bahwa semua nilai bernama "Roti" dihapus.

Sintesis

Nilai dapat dihapus atau ditambahkan ke matriks, tetapi hati-hati dengan indeks bergeser melakukannya. Gunakan loop untuk mengulang melalui tabel untuk menghapus semua instans dari nilai, atau hanya satu instans pertama yang ditemukan.

Kata kunci return dapat digunakan untuk menghentikan loop, dan mengirimkan informasi kembali ke mana perlu.

Versi lengkap dari script dapat diacak di bawah ini.

Proyek berikut mencakup semua script dalam tutorial ini. Unduh di sini .

Catat semua script berada di ServerScriptService dan dinonaktifkan . Untuk menggunakan script, di dalamnya, batalkan pemeriksaan Kebetulangan dan lari Studio.