Twój zasób obok telefonu
Eksporty i state bagi opisują, jak rozmawiać z telefonem. Tu jest kierunek odwrotny: kilka rzeczy, które powinien wiedzieć zasób, żeby wy dwaj nie walczyliście o tego samego gracza.
Żadna z nich nie wymaga zależności, eventu ani uprawnień. Cztery state bagi i jeden eksport, a większość skryptów potrzebuje jednej linijki.
1. Ktoś robi zdjęcie
Dział zatytułowany „1. Ktoś robi zdjęcie”Zdjęcie obejmuje cały kadr. Cokolwiek rysowałeś w chwili naciśnięcia migawki — podpowiedź pomocy, etykietę markera, pasek postępu, interfejs tekstowy — jest na zdjęciu, a ten zasób nie jest w stanie Ci tego uniemożliwić. Nic z naszej strony nie stoi między Twoim wywołaniem rysowania a ekranem.
Dlatego można zapytać o coś innego:
if LocalPlayer.state.phoneCamera then goto skip end -- or return, or whatever your loop wantsphoneCamera ma wartość true od momentu otwarcia wizjera aż do jego zamknięcia. Jedna linijka i Twoja podpowiedź nie trafi do albumu zdjęć obcej osoby.
Własny HUD telefonu już ustępuje miejsca: minimapa i paski zdrowia gry są ukryte, dopóki aparat jest włączony, więc to, co ktoś kadruje, jest tym, co dostaje.
2. Telefon w dłoni to nie śmieć
Dział zatytułowany „2. Telefon w dłoni to nie śmieć”Składany telefon to dwa obiekty przyczepione do dłoni peda. Skrypt, który sprząta luźne propy albo oferuje Press [E] to delete the object dla wszystkiego w pobliżu, zaproponuje usunięcie czyjegoś telefonu — i zrobi to, gdy ktoś go trzyma.
Ogólna zasada jest warta więcej niż nazwa modelu: obiekt przyczepiony do peda to nie śmieć.
if IsEntityAttached(object) then goto skip endJeśli musisz być konkretny, modele to pear_fold_base* i pear_fold_leaf*, po jednym na każde wykończenie.
3. Ped należy do telefonu, dopóki ten jest wyjęty
Dział zatytułowany „3. Ped należy do telefonu, dopóki ten jest wyjęty”mic_phone_props jest właścicielem pozy peda, gdy telefon jest w dłoni, i traktuje to poważnie: działa watchdog, który przywraca animację trzymania w ciągu pół sekundy od chwili, gdy coś innego przejmie górną część ciała. Nie potrafi stwierdzić, czyją animację ogląda.
Jeśli Twój skrypt ustawia pozę tego peda — rozmowa, scenariusz, własny task — najpierw poproś o ręce:
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 backUstąpienie przesuwa też prop: trafia do kości i z offsetem, których używa własny prop_npc_phone_02 gry, i składa się, więc każda standardowa animacja telefonu komórkowego działa, bez konieczności mierzenia czegokolwiek. SetPose(true) przywraca chwyt, kąt zawiasu i animację, które były wcześniej.
IsOut() mówi, czy w ogóle jest od czego ustępować.
4. Tryb przedmiotu zmienia znaczenie identyfikatora
Dział zatytułowany „4. Tryb przedmiotu zmienia znaczenie identyfikatora”Gdy telefony są przedmiotami, telefon należy do urządzenia, a nie do postaci. phoneDevice u gracza to przedmiot, w którym telefon się znajduje; w trybie postaci ma wartość nil.
Ma to znaczenie, jeśli przechowujesz cokolwiek powiązanego z telefonem: numer, subskrypcję, licencję. Użyj exports.mic_phone:GetDevice() i klucz według tego, bo inaczej Twoje dane podążą za osobą, mimo że to telefon został sprzedany.
5. Cztery bagi i jedna komenda, która wypisuje je wszystkie
Dział zatytułowany „5. Cztery bagi i jedna komenda, która wypisuje je wszystkie”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 onPełna lista, wraz z resztą, znajduje się w Eksporty i state bagi. phoneapi <id> wypisuje każdy z nich dla gracza w konsoli serwera, co jest szybsze niż zgadywanie, po której stronie jest błąd.
Wkładanie czegoś do telefonu
Dział zatytułowany „Wkładanie czegoś do telefonu”Powiadomienie, wiadomość, mail, faktura — wszystko to eksporty serwerowe, wszystko to jedna linijka, wszystko opisane w Eksporty i state bagi.
Cała własna aplikacja to Twoja własna aplikacja w telefonie: jedno wywołanie, bez konfiguracji telefonu, bez restartu, a działa we własnej ramce.
Czego tu jeszcze nie ma
Dział zatytułowany „Czego tu jeszcze nie ma”Nie ma haka do odmawiania otwarcia telefonu. Reguły znajdują się w Config.Open.Restrict — martwy, skuty, pływający, prowadzący pojazd i tak dalej — a zasób nie może dodać własnej. Jeśli potrzebujesz, by telefonu nie dało się otworzyć podczas Twojej minigry już dziś, uczciwe opcje to reguła w configu, która akurat pasuje do Twojego stanu, albo exports.mic_phone:Close() na starcie Twojej rzeczy. Daj znać, jeśli potrzebujesz tego haka; dodanie go to drobiazg, a nikt jeszcze o niego nie prosił.
Całość jako lista kontrolna
Dział zatytułowany „Całość jako lista kontrolna”- Czy Twój skrypt rysuje coś na ekranie? → pomiń to, gdy
phoneCamera - Czy usuwa, sprząta lub chwyta pobliskie obiekty? → pomiń przyczepione
- Czy animuje gracza? →
SetPose(false)iSetPose(true) - Czy przechowuje cokolwiek dla konkretnego telefonu? → klucz według
phoneDevice, a nie postaci - Czy musi wiedzieć, czy ktoś jest osiągalny? →
phoneOpen,onCallWith