Kaynağınız onun yanında
Export’lar ve state bag’ler, telefonla konuşmakla ilgilidir. Bu ise diğer yön: ikinizin aynı oyuncu için çekişmemesi adına bir kaynağın bilmesi gereken birkaç şey.
Hiçbiri bir bağımlılık, bir olay veya izin gerektirmez. Dört state bag ve bir export; çoğu script için tek bir satır yeterlidir.
1. Biri fotoğraf çekiyor
Section titled “1. Biri fotoğraf çekiyor”Bir fotoğraf, çerçevenin tamamıdır. Deklanşöre basıldığı anda çizdiğiniz her şey — bir yardım istemi, bir marker etiketi, bir ilerleme çubuğu, bir metin arayüzü — fotoğrafın içindedir ve bu kaynak onu çizmenizi engelleyemez. Çizim çağrınız ile ekran arasında bizden hiçbir şey yoktur.
Bu yüzden bunun yerine sorabileceğiniz bir şey var:
if LocalPlayer.state.phoneCamera then goto skip end -- or return, or whatever your loop wantsphoneCamera, vizör açıldığı andan kapandığı ana kadar true’dur. Tek bir satır ve istemleriniz bir yabancının fotoğraf albümünün dışında kalır.
Telefonun kendi HUD’u zaten yoldan çekilmiştir: kamera açık kaldığı sürece oyunun mini haritası ve can çubukları gizlenir; böylece birinin çerçevelediği şey, aldığı şeydir.
2. Eldeki telefon çöp değildir
Section titled “2. Eldeki telefon çöp değildir”Katlanır telefon, ped’in eline takılı iki nesnedir. Ortada duran prop’ları süpüren veya yakındaki her şeye Press [E] to delete the object sunan bir script, birinin telefonunu silmeyi önerecektir — ve o telefonu tutarken bunu yapacaktır.
Genel kural, bir model adından daha değerlidir: bir ped’e takılı bir nesne çöp değildir.
if IsEntityAttached(object) then goto skip endDaha belirli olmanız gerekiyorsa, modeller pear_fold_base* ve pear_fold_leaf*’tur; her renk/kaplama için bir tane.
3. Telefon dışarıdayken ped ona aittir
Section titled “3. Telefon dışarıdayken ped ona aittir”mic_phone_props, telefon elde olduğu sürece ped’in duruşuna sahiptir ve bunu ciddiye alır: başka bir şey üst vücudu aldıktan sonra yarım saniye içinde tutma animasyonunu geri koyan bir bekçi (watchdog) vardır. Baktığı animasyonun kime ait olduğunu ayırt edemez.
Scriptiniz o ped’e poz verdiriyorsa — bir arama, bir senaryo, kendi görevinizden biri — önce kolları isteyin:
exports.mic_phone_props:SetPose(false) -- they are yours; the phone hangs where a phone hangs-- … your animation …exports.mic_phone_props:SetPose(true) -- and backGeri çekilmek prop’u da taşır: oyunun kendi prop_npc_phone_02 prop’unun kullandığı kemiğe ve ofsete gider ve katlanır; böylece hiçbir şey ölçmenize gerek kalmadan tüm standart cep telefonu animasyonları çalışır. SetPose(true), daha önce sahip olduğu tutuşu, menteşe açısını ve animasyonu geri verir.
IsOut(), geri çekilecek bir şey olup olmadığını söyler.
4. Eşya modu bir identifier’ın anlamını değiştirir
Section titled “4. Eşya modu bir identifier’ın anlamını değiştirir”Telefonlar eşya olduğunda, bir telefon karaktere değil cihaza aittir. Oyuncu üzerindeki phoneDevice, telefonun içinde yaşadığı eşyadır ve karakter modunda nil’dir.
Bir telefona karşı herhangi bir şey saklıyorsanız bu önemlidir: bir numara, bir abonelik, bir lisans. exports.mic_phone:GetDevice() kullanın ve anahtarı ona göre belirleyin; aksi halde, telefonu satan kişi olsa bile veriniz kişinin peşinden gider.
5. Dört bag ve hepsini yazdıran bir komut
Section titled “5. Dört bag ve hepsini yazdıran bir komut”phoneOpen boolean the phone is out and on screenphoneCamera boolean a viewfinder is uponCallWith number | nil the source at the other endflashlight boolean their torch is onGeri kalanlarla birlikte tam liste Export’lar ve state bag’ler sayfasındadır. phoneapi <id>, sunucu konsolunda bir oyuncu için her birini yazdırır; bu, hangi tarafın yanlış olduğunu tahmin etmekten daha hızlıdır.
Telefonun içine bir şey koymak
Section titled “Telefonun içine bir şey koymak”Bir bildirim, bir mesaj, bir posta, bir fatura — hepsi sunucu export’larıdır, hepsi tek satırdır ve hepsi Export’lar ve state bag’ler sayfasındadır.
Kendi başına bir uygulama ise telefondaki kendi uygulamanızdır: tek bir çağrı, telefon config’i yok, yeniden başlatma yok ve kendi çerçevesinde çalışır.
Burada henüz olmayanlar
Section titled “Burada henüz olmayanlar”Telefonun açılmasını reddetmek için bir kanca (hook) yoktur. Kurallar Config.Open.Restrict içinde yaşar — ölü, kelepçeli, yüzen, araç kullanan vb. — ve bir kaynak kendi kuralını ekleyemez. Bugün mini oyununuz sırasında bir telefonun açılamaz olması gerekiyorsa dürüst seçenekler şunlardır: durumunuzla tesadüfen eşleşen bir config kuralı ya da olayınız başladığında exports.mic_phone:Close(). Kancaya ihtiyacınız varsa söyleyin; eklenmesi küçük bir iştir ve henüz kimse istemedi.
Bütünü, bir kontrol listesi olarak
Section titled “Bütünü, bir kontrol listesi olarak”- Scriptiniz ekrana çizim yapıyor mu? →
phoneCameraiken atlayın - Yakındaki nesneleri siliyor, süpürüyor veya yakalıyor mu? → takılı olanları atlayın
- Oyuncuya animasyon oynatıyor mu? →
SetPose(false)veSetPose(true) - Telefon başına bir şey saklıyor mu? → karaktere değil,
phoneDevice’a göre anahtarlayın - Birinin ulaşılabilir olup olmadığını bilmesi gerekiyor mu? →
phoneOpen,onCallWith