Tu recurso junto a él
Exports y state bags trata de cómo hablar con el teléfono. Esto es la otra dirección: el puñado de cosas que un recurso debería saber para que los dos no os peleéis por el mismo jugador.
Nada de esto necesita una dependencia, un evento ni un permiso. Cuatro state bags y un export, y la mayoría de scripts necesitan una sola línea.
1. Alguien está haciendo una foto
Sección titulada «1. Alguien está haciendo una foto»Una fotografía es el encuadre entero. Lo que estuvieras dibujando cuando saltó el obturador (un aviso de ayuda, una etiqueta de marcador, una barra de progreso, una UI de texto) sale en la foto, y este recurso no puede impedir que lo dibujes. Nada nuestro se interpone entre tu llamada de dibujo y la pantalla.
Así que, en su lugar, hay algo que puedes preguntar:
if LocalPlayer.state.phoneCamera then goto skip end -- or return, or whatever your loop wantsphoneCamera es true desde el momento en que se abre un visor hasta que se cierra. Una línea y tu aviso se queda fuera del álbum de fotos de un desconocido.
El HUD del propio teléfono ya se aparta: el minimapa y las barras de salud del juego se ocultan mientras la cámara está abierta, así que lo que alguien encuadra es lo que obtiene.
2. El teléfono que tiene en la mano no es basura
Sección titulada «2. El teléfono que tiene en la mano no es basura»El teléfono plegable son dos objetos unidos a la mano del ped. Un script que recoge props sueltos, u ofrece Pulsa [E] para borrar el objeto para cualquier cosa cercana, ofrecerá borrar el teléfono de alguien, y lo hará mientras lo tiene en la mano.
La regla general vale más que un nombre de modelo: un objeto unido a un ped no es basura.
if IsEntityAttached(object) then goto skip endSi necesitas ser concreto, los modelos son pear_fold_base* y pear_fold_leaf*, uno por acabado.
3. El ped pertenece al teléfono mientras está fuera
Sección titulada «3. El ped pertenece al teléfono mientras está fuera»mic_phone_props controla la pose del ped mientras el teléfono está en la mano, y va en serio: hay un watchdog que vuelve a poner su animación de sujeción en menos de medio segundo si cualquier otra cosa toma el torso. No sabe de quién es la animación que está viendo.
Si tu script pone en pose a ese ped (una llamada, un scenario, una tarea tuya), pide primero los brazos:
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 backRetirarse también mueve el prop: va al hueso y al offset que usa el propio prop_npc_phone_02 del juego, y se pliega, así que todas las animaciones de móvil de serie funcionan sin que tengas que medir nada. SetPose(true) devuelve el agarre, el ángulo de la bisagra y la animación que tenía antes.
IsOut() dice si hay algo de lo que retirarse.
4. El modo ítem cambia lo que significa un identificador
Sección titulada «4. El modo ítem cambia lo que significa un identificador»Cuando los teléfonos son ítems, un teléfono pertenece al dispositivo en lugar de al personaje. phoneDevice en el jugador es el ítem en el que vive, y es nil en modo personaje.
Importa si guardas algo asociado a un teléfono: un número, una suscripción, una licencia. Usa exports.mic_phone:GetDevice() y usa eso como clave, o tus datos seguirán a la persona cuando lo que vendió fue el teléfono.
5. Cuatro bags, y un comando que los imprime todos
Sección titulada «5. Cuatro bags, y un comando que los imprime todos»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 onLa lista completa, con el resto, está en Exports y state bags. phoneapi <id> imprime todos ellos para un jugador en la consola del servidor, que es más rápido que adivinar qué lado está mal.
Meter algo en el teléfono
Sección titulada «Meter algo en el teléfono»Una notificación, un mensaje, un correo, una factura: todo son exports de servidor, todo una línea, todo en Exports y state bags.
Una app entera tuya es tu propia app en él: una llamada, sin config del teléfono, sin reinicio, y se ejecuta en su propio frame.
Lo que todavía no está
Sección titulada «Lo que todavía no está»No hay hook para impedir que se abra el teléfono. Las reglas viven en Config.Open.Restrict (muerto, esposado, nadando, conduciendo, etc.) y un recurso no puede añadir una propia. Si hoy necesitas que un teléfono no se pueda abrir durante tu minijuego, las opciones honestas son una regla de config que coincida con tu estado, o exports.mic_phone:Close() cuando empiece lo tuyo. Dilo si necesitas el hook; es pequeño de añadir y nadie lo ha pedido todavía.
Todo junto, como checklist
Sección titulada «Todo junto, como checklist»- ¿Tu script dibuja en pantalla? → sáltatelo mientras
phoneCamera - ¿Borra, recoge o agarra objetos cercanos? → sáltate los que están unidos
- ¿Anima al jugador? →
SetPose(false)ySetPose(true) - ¿Guarda algo por teléfono? → usa
phoneDevicecomo clave, no el personaje - ¿Necesita saber si alguien está localizable? →
phoneOpen,onCallWith