Tutti volevano salvare i dati e caricarli di nuovo ogni volta che un giocatore entra di nuovo in gioco? Da quando la persistenza dei dati è diventata inutile, ROBLOX introduce archivi di dati molto più funzionanti. La seguente guida ti consentirà di lavorare con i datastore per ROBLOX.
Passi
Metodo 1 di 3: impostazione dell'archivio dati
Passaggio 1. Configurare l'API
Ciò non comporta alcun tipo di script, ma per attivare tutte le API dell'archivio dati, è necessario prima abilitare l'accesso API. Per fare ciò, vai alla scheda Sviluppo e fai clic su "Giochi". Questo dovrebbe indirizzarti a tutti i luoghi di gioco attuali che possiedi. Trova il tuo gioco e fai clic sull'ingranaggio. Dovrebbe apparire un menu a discesa e premere semplicemente "Configura". Seleziona la casella abilitata "Abilita l'accesso di Studio ai servizi API" e salva. Ora dovresti avere accesso all'API completa.
Passaggio 2. Recuperare l'archivio dati
Utilizzare l'API Data Store per chiamare l'archivio dati, poiché sarà necessario farvi riferimento. Per iniziare, apri uno script su ROBLOX e nomina una variabile che vorremmo usare per chiamare il riferimento.
local datastore = game:GetService("DataStoreService"):GetDataStore("name")
Passaggio 3. Utilizzare la variabile secondo necessità
Hai chiamato correttamente il datastore con la variabile "datastore". Ora, ogni volta che devi recuperare il datastore, puoi semplicemente nominarlo con la sua variabile.
Tieni presente che se un datastore non è stato ancora creato, ne creerà automaticamente uno nuovo
Metodo 2 di 3: utilizzo dei metodi di archiviazione dati
Passaggio 1. OttieniAsync
Utilizzare GetAsync per restituire il valore della voce nell'archivio dati con la chiave specificata. Assicurati di dare a ogni giocatore un set di chiavi unico, poiché l'impostazione della stessa chiave a due giocatori sovrascriverà i propri dati di gioco, causando il caos tra le due parti. Se vuoi sapere come impostare una chiave univoca, continua a leggere.
- Il codice seguente produrrà nil, perché il server non è riuscito a trovare alcun valore collegato alla chiave; è importante mostrare al server esattamente cosa stiamo cercando di produrre, in modo che il server sappia cosa deve essere visualizzato.
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:GetAsync(key) end)
Passaggio 2. ImpostaAsync
Usa SetAsync per impostare il valore della chiave e sovrascrive tutti i dati esistenti archiviati per la chiave univoca.
- Se il precedente set di informazioni è importante, prendi in considerazione l'utilizzo di UpdateAsync, che verrà illustrato di seguito.
- Il codice seguente mostra come implementare entrambi i metodi ":GetAsync()" e ":SetAsync()".
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:SetAsync(key, 90) - - imposta la chiave sul valore, 90 local data_stored = datastore:GetAsync(key) -- è in grado di rilevare la modifica del valore print(data_stored) -- stampa la fine dell'output)
Passaggio 3. Utilizzare UpdateAsync per restituire il valore della chiave e aggiornarlo con un nuovo valore
Questo convalida i dati e deve quindi attendere che il server trovi il tempo per aggiornarli. Perché funzioni, dovrai passare due parametri; la prima è una stringa che prende la chiave univoca che hai impostato: "'user_'.. player.userId", e la seconda è una funzione che prenderà il vecchio valore.
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old) -- fai le cose fine) fine)
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old) local new = old o 0 -- potrebbe essere nil new = new + 1 -- aggiungi 1 al vecchio valore return new -- lo restituisce con il nuovo valore end) end)
Passaggio 4. Utilizzare IncrementAsync per incrementare il valore di una chiave e restituire il valore incrementato
Questo metodo funziona solo su numeri interi.
Metodo 3 di 3: Eventi dell'archivio dati e aggiornamento dei dati
Passaggio 1. Imposta una chiave univoca
È estremamente vitale che ogni giocatore abbia una chiave che sia unica per lui. Conserveranno quella chiave, che memorizzerà tutti i loro dati. Per fare ciò, utilizziamo l'ID del giocatore. Una volta impostato l'archivio dati, è sufficiente richiamare una funzione per caricare il lettore, quindi trovare l'ID del lettore. Il codice dovrebbe essere il seguente:
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId end)
Passaggio 2. Aggiorna i dati
Ora che hai una chiave univoca per ogni giocatore, sei pronto per aggiornare l'archivio dati e recuperare i dati. Sotto la tua chiave, vorrai aggiungere un metodo più adatto alle tue esigenze. In questo caso, utilizzeremo "UpdateAsync".
- Inizia con una funzione per aiutare il server a capire cosa intendi fare.
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old) local newValue = old o 0 -- potrebbe essere nil newValue = newValue + 50 return newValue end) end)
Passaggio 3. Congratulazioni
Hai archiviato e aggiornato correttamente i dati di un giocatore.
Avvertenze
- Quando crei per la prima volta il tuo datastore, assicurati di avere "game:GetService("DataStoreService")", con le maiuscole corrette. Non funzionerà in modo efficiente, se viene chiamato in modo errato.
- Assicurati di sapere quando usare "SetAsync" e "UpdateAsync", poiché l'utilizzo di quello sbagliato può trasformare le cose in un disastro durante il recupero dei dati. Nella maggior parte dei casi, gli sviluppatori utilizzeranno "UpdateAsync".