Başka bir telefondan geçiş
Zaten bir telefonu olan bir şehrin içinde yılların birikimi vardır: insanların ezberlediği numaralar, konuşmalar, fotoğraflar, @handles. Hepsini kaybetmek telefon değiştirmenin gerçek bedelidir ve çoğu sunucunun bunu hiç yapmamasının sebebi de budur. Bu sistem eski telefonun tablolarını okur ve bizimkilere yazar.
Dört telefondan geçilebilir ve dördü de aynı şekilde test edilir: kendi tabloları kurulum paketlerinin getirdiği şemadan oluşturulur, içlerine küçük bir şehir yazılır, içe aktarma gerçekten çalıştırılır ve sahiplendiği her satır sonradan kontrol edilir.
| Hangisinden | Tabloları | Her şeyi neye göre anahtarlar |
|---|---|---|
| lb-phone | phone_* | telefon numarası; phone_phones bir numarayı bir sahibe çevirir |
| Quasar Smartphone Pro | qs_phone_* | bir scope_id — bir kişi değil, bir telefon |
| NPWD | npwd_* | framework identifier’ı ve numaraları zaten users içinde |
| qb-phone | player_contacts, phone_messages… | citizenid, ki QBCore’da bu telefonun sahibidir |
Üç söz
Section titled “Üç söz”Eski telefona asla dokunmaz. Bizim olmayan bir tabloya tek bir ifade bile yazmaz. lb-phone’un verisi sonrasında tam olarak olduğu gibidir, geri dönüş yolunu basit yapan da budur: bizim satırlarımızı silin.
Prova gerçektir. DryRun varsayılan olarak açıktır. Gerçek bir çalıştırmanın okuduğu her şeyi okur, yazacağı her satırı hesaplar, hiçbirini yazmaz ve sayıyı yazdırır. Aynı koddur — kestirmeden giden bir prova, hiçbir şeyin provası olurdu.
İki kez olamaz. Gerçek bir çalıştırma veritabanında bir makbuz bırakır. Sonraki açılış onu bulur ve durur, çünkü unutulmuş tek bir config satırı aksi halde şehirdeki her konuşmayı ikiye katlardı.
Yapmak
Section titled “Yapmak”-- shared/config/import.luaConfig.Import = { From = 'lb-phone', -- or false, which is where it starts DryRun = true, -- read the count first Numbers = 'keep', -- their old numbers move across Crypto = 'cash', -- sell their coins at their own price}Bir kez yeniden başlatın ve konsolu okuyun:
[mic_phone import] lb-phone — REHEARSAL, nothing was written[mic_phone import] contacts 482[mic_phone import] messages 19104[mic_phone import] numbers 137[mic_phone import] photos 2210[mic_phone import] social 96[mic_phone import] · a phone whose owner is not in `users` any more was skipped (×8)[mic_phone import] · lb-phone does not say whether an alarm repeats, so its alarms arrive as one-off alarmsSonra DryRun = false yapın, bir kez daha yeniden başlatın ve ardından From = false ayarlayın.
Tablolar bu veritabanında değilse bunu söyler ve hiçbir şey yapmaz; yani yanlış telefonu söylemenin size maliyeti konsolda bir satırdır.
Neler geçer
Section titled “Neler geçer”Aşağıdaki her şey lb-phone içindir, ki dördünün en kapsamlısıdır. Diğerlerinin neyi farklı yaptığı daha aşağıdadır.
| lb-phone’dan | Neye dönüşür |
|---|---|
phone_phones | users içindeki numara, pil, telefonun ayarları |
settings.apps değeri | Ana Ekran — aynı dock, aynı sayfalardaki aynı uygulamalar |
phone_phone_contacts | kişiler, favoriler ve resimleriyle |
phone_message_* | konuşmalar, gruplar ve okunmamış sayıları |
phone_phone_calls | son aramalar, her taraf için bir satır, cevapsız aramalar dahil |
phone_photos | kitaplık, fotoğraflar ve videolar |
phone_mail_* | posta, okunmuş ve okunmamış |
phone_maps_locations | kayıtlı yerler |
phone_marketplace_posts, phone_yellow_pages_posts | ilanlar |
| Instagram, Twitter, TikTok, Tinder | Instapic, Twixel, Klipz, Flinder — handle’lar, isimler, resimler, bio’lar, gönderiler, takipler ve mavi tik |
phone_darkchat_* | darknet: oda, içinde kimlerin olduğu, ne söylendiği |
phone_notes, phone_clock_alarms | notlar ve alarmlar — lb-phone’un alarmları tekrar edip etmediğini söylemez, bu yüzden tek seferlik alarm olarak gelirler |
phone_crypto | aşağıdaki Kripto bölümüne bakın |
Resimler her iki telefonda da URL’dir, dolayısıyla hiçbir şey indirilmez ya da yeniden yüklenmez. Bir oyuncunun fotoğrafları ilk gün çalışmaya devam eder, çünkü hiçbir zaman iki telefonun da değildi.
Neler geçmez ve neden
Section titled “Neler geçmez ve neden”Rapor bunların her birini, birinin fark etmesine bırakmak yerine yüksek sesle söyler.
- Duvar kâğıtları ve zil sesleri. Onlarınki kendi dosyalarının adını taşır, bizimki kendi dosyalarımızınkini. Yanlış bir resim, varsayılan olandan daha kötüdür.
- Sosyal ağ şifreleri. Aşağıya bakın — hesaplar gelir, şifreler gelemez.
- Uçak modu, bilerek. Birinin açık bıraktığı bir anahtarı içe aktarmak, çalışmayan bir telefonu ve nedenini anlayamayan bir oyuncuyu içe aktarmaktır.
- Fotoğraf albümleri. Her resim kitaplıktadır; albümler yeniden oluşturulmaz.
Diğer üçü ve her birinde neyin farklı olduğu
Section titled “Diğer üçü ve her birinde neyin farklı olduğu”Quasar Smartphone Pro
Section titled “Quasar Smartphone Pro”Dördünün en iyi yapılanı ve eşleme üç yerde yaklaşık değil, tam olarak yapılır:
- Okunmamış sayıları kopyalanmaz, yeniden sayılır. Quasar
last_read_message_idsaklar; bizimki bir sayı saklar. Yani sayı hesaplanır — o konuşmada son okuduğundan sonra kaç mesaj geldi — ki bu, kendi sayaçları sapmış olsa bile doğrudur. - Son aramalar zaten
incoming,outgoingvemissedder, ki bunlar bizim üç kelimemizdir. - Bir fotoğraf video olduğunu bilir, süresi ve kapak resmiyle birlikte, bu yüzden video olarak gelir.
Notlar (sabitlenmiş olanlar sabit kalır), alarmlar, takvim girdileri ve hatırlatıcılar da gelir: vadesi olan açık bir hatırlatıcı bir takvim girdisi olur, tarihi olmayan olan kelimelerini bir not olarak korur ve tamamlanmış olan geride bırakılır. Quasar bir alarmı yalnızca hafta sonları tekrarlayabilir, bu telefon yapamaz; bu yüzden onlar tek seferlik alarm olarak gelir.
Sabitlenmiş ve sessize alınmış konuşmalar ikisini de korur. Posta, içinde bulunduğu klasörle gelir — taslaklar ve çöp geride bırakılır, çünkü kimsenin göndermediği bir taslak taşımaya değmez. Gelmeyenler: Quasar’ın kendi şeklindeki bir JSON blob’unda yaşayan ayarları ve ana ekranı ile bizimkiler olmayan App Store id’leri.
Bilmeniz gereken bir şey: Quasar bir karakterin birden fazla telefona sahip olmasına izin verir ve bu telefon karakter başına bir numara tutar. İlk gelen numara onundur; diğerleri raporda adlandırılır ve hiçbir şeyin üzerine yazılmaz.
En kolayı, yüksek sesle söylemeye değer bir sebeple: NPWD numarayı zaten users.phone_number içinde tutar, ki bu, bu telefonun okuduğu aynı sütundur. Varsayılan bir NPWD sunucusunda taşınacak bir şey yoktur ve rapor çalışıyormuş gibi yapmak yerine bunu söyler.
Konuşmaları bir id ile değil, içindeki numaraların bir dizisiyle adlandırılır; bu yüzden birleştirme (join) o dizi üzerinden yapılır. Twitter profil adı @handle olur; Match’in hiç kullanıcı adı yoktur, dolayısıyla bir Flinder hesabı karakterin numarasıyla anahtarlanır. Fotoğrafların kendi tarihleri yoktur, bu yüzden kitaplık çekilme sırasına göre tarihlenir. Notları da aynı şekilde gelir, yazılma sırasına göre tarihlenir. İlanlar fiyat taşımaz ve sıfır fiyatla gelir.
qb-phone
Section titled “qb-phone”En eskisi ve bize en az benzeyeni — ama kimlik bedavadır, çünkü QBCore’da bu telefon zaten qb-phone’un her şeyi anahtarladığı citizenid değerini kullanır.
Asıl iş konuşmalardır. qb-phone’un konuşması yoktur: phone_messages, kişi başına numara başına bir satırdır ve tüm yazışma, her taraftan ayrı yazılan bir JSON dizisidir. Yani aynı konuşma iki kez var olur ve iki kopyanın aynı fikirde olması gerekmez. Bu yüzden her numara çifti, hangi tarafta daha fazlası varsa oradan bir kez oluşturulur — onları birleştirmek bir sıra uydururdu ve ikisini de içe aktarmak herkese her mesajı iki kere verirdi. Zaman damgası olmayan bir konuşma sırasını korur ve birer dakika arayla dizilir.
Numaralar bir sütunda değil, players.charinfo içinde JSON olarak yaşar; bu yüzden oradan okunur ve bu telefonun tuttuğu yere yazılır. Tweet’leri bir hesap değil bir isim taşır, bu yüzden isimlerinden karakter başına bir Twixel hesabı oluşturulur.
Numaralar
Section titled “Numaralar”Numbers = 'keep' bütün işin amacıdır: birinin kartvizitindeki ve herkesin kişilerindeki numara hâlâ ona ulaşır.
Bir numara yalnızca boş bir sütuna yazılır. Bir karakterin burada zaten bir numarası varsa ve bu farklı bir numaraysa, bu bir çakışmadır: sayılır, raporda adlandırılır ve hiçbir şeyin üzerine yazılmaz. Eski numaraları eski biçimlerini de korur — bu telefonun 555-###-#### biçimi yerine 1234567890 — bu kozmetiktir ve yalnızca o andan sonra dağıtılan numaraları etkiler.
Numbers = 'ours' onları rahat bırakır ve bu telefonun kendi numaralarını dağıtmasına izin verir. Eski kişileri kimseyi göstermez, bu yüzden yalnızca yeniden başlayan bir şehir içindir.
Sosyal ağ hesapları
Section titled “Sosyal ağ hesapları”Şifreleri bir sütunda düz metindir. Bizimkiler oyuncunun tarayıcısında oluşturulan bir PBKDF2 hash’idir ve birinden diğeri hesaplanamaz — yani şifre geçmeyen tek şeydir ve yolda hiçbir yerde saklanmaz.
Hesap içe aktarılmış olarak işaretlenmiş gelir. Sahibi uygulamayı ilk açtığında telefon Bu hesap eski telefonunuzdan geldi. Bunun için bir şifre seçin der ve seçilen yeni şifre olur.
Bu, bir şifreden daha iyi bir sebeple güvenlidir: satır bir sahibi adlandırır ve sunucu kimin sorduğunu söylenmeden bilir. Hiç bizim olmamış bir şifreyle kanıtlanan bir şey yoktur.
Kripto
Section titled “Kripto”İki uydurma piyasa arasında dürüst bir döviz kuru yoktur, bu yüzden ne olacağını tahmin ettirmek yerine siz seçin:
'cash'— eski telefonun kendi fiyatından sat ve cüzdana bir hareket olarak yaz. Kimse kazanmaz, kimse kaybetmez ve üzerinde anlaşılması gereken bir şey yoktur.'skip'— bırak. Varlıkları kendi tablolarında kalır ve elle halledilebilir.- bir tablo — varlıkların coin olarak kalması gerektiğinde kendi eşlemeniz:
Crypto = { qbit = 'santo', lifeinvader = 'vine' },Ters giderse
Section titled “Ters giderse”Eski telefonun hiçbir şeyine dokunulmadı, yani:
- Yanlış giden adım her neyse bizim satırlarımızı silin — rapor onları adlandırır.
- Makbuzu silin:
DELETE FROM mic_phone_json WHERE owner = '@import'. Config.Import.Again = trueyapın ve yeniden başlayın.
Skip, raporun yazdırdığı adlarla tek tek adımları dışarıda bırakır:
Skip = { 'photos', 'crypto' },