Script "tormenta" particulas (Arena, nieve, etc...)
Script para simular partículas. Se puede generar tormentas de arena, nieve, etc... No afecta al rendimiento del server .
|
// Variable global para controlar la tormenta (Inicia ACTIVADA al entrar)
waitUntil { !Mission_Sandstorm_Active }; if (!hasInterface) exitWith {}; // --- CLIENTE: Control de efectos visuales y de sonido --- while {true} do { // 1. Crear Corrección de Color // 2. Crear Emisor de Partículas // 3. Bucle de Audio (Optimizado con minutos y control de fallos) // Bucle interno de espera fraccionada para evitar bloqueos // Esperar hasta que la tormenta se apague O el jugador muera // 4. Limpieza de efectos |
***ENTRADA GENERADA CON IA******
Script de Tormenta de Arena Dinámica
Este script añade una tormenta de arena inmersiva a tu misión, gestionando de forma independiente la carga del servidor (clima) y la de los clientes (efectos visuales y de sonido).
📂 ¿Cómo ponerlo en marcha? (Instalación rápida)
El código está optimizado para funcionar en un único archivo, ya que incluye comprobaciones internas (isServer y hasInterface) para saber qué ejecutar en cada máquina.
-
Crea el archivo del script:
-
En la carpeta scripts de la raíz de tu misión, crea un archivo de texto y nómbralo
tormenta.sqf. -
Pega todo el código proporcionado dentro de este archivo.
-
-
Ejecuta el script al inicio de la misión:
-
Abre o crea el archivo
init.sqfen la carpeta de tu misión. -
Añade la siguiente línea para llamar al script al arrancar:
-
Fragmento de código
[] execVM "scripts\tormenta.sqf";
-
-
Requisito de Audio (Importante):
-
El script intenta reproducir un sonido llamado
"Sandstorm_Wind". Necesitarás tener este archivo de audio (normalmente un.oggde unos 18 segundos) definido en tu archivodescription.extbajo la claseCfgSounds. -
[class CfgSounds { sounds[] = {}; class Sandstorm_Wind { name = "Sandstorm_Wind"; sound[] = {"sound\sandstorm.ogg", 10, 1.0}; // Volumen base y tono titles[] = {}; }; };
-
⚙️ Explicación del Código: ¿Qué hace cada parte?
El script se divide en tres bloques principales que se ejecutan simultáneamente en un mismo archivo:
-
Control de la Variable Global:
-
Define la variable
Mission_Sandstorm_Active. -
Por defecto, el script inicia con la tormenta ACTIVADA (
true) al entrar a la misión.
-
-
Control del Servidor (
isServer):-
Se encarga de modificar el clima global para todos los jugadores.
-
Cuando se activa, ajusta de forma rápida la nubosidad (0.25), elimina la lluvia, añade niebla espesa y aumenta las ráfagas y la fuerza del viento.
-
Cuando se desactiva, restaura el clima despejado y detiene el viento por completo.
-
-
Control del Cliente (
hasInterface):-
Solo se ejecuta si el jugador tiene interfaz y ha cargado completamente (está vivo).
-
Efectos Visuales: Crea un filtro de corrección de color con tonos anaranjados/marrones y genera un emisor de partículas (
#particlesource) atado al jugador para simular la arena volando. -
Efectos de Sonido: Ejecuta un bucle de audio que varía el volumen y el tono del sonido
"Sandstorm_Wind". Incluye un sistema de pausas dinámicas que alterna entre pausas normales (1.5 a 3.5 minutos) y momentos de "calma chicha" (3.5 a 6 minutos) para no saturar al jugador. -
Limpieza: Si el jugador muere o la tormenta se desactiva, el script elimina las partículas, detiene el bucle de sonido y desvanece el filtro de color suavemente durante 2 segundos.
-
🎮 ¿Cómo encender y apagar la tormenta en medio de la partida?
Como la tormenta depende de una única variable global, puedes controlarla fácilmente desde un Activador (Trigger) en el editor, un script de Zeus, o al completar una tarea.
Si sigues los pasos tal y como están, el script arrancará al arrancar la partida.
-
Para apagar la tormenta:
Fragmento de códigoMission_Sandstorm_Active = false; publicVariable "Mission_Sandstorm_Active"; -
Para volver a encenderla:
Fragmento de códigoMission_Sandstorm_Active = true; publicVariable "Mission_Sandstorm_Active";NOTA: El script esta hecho con los pocos conocimiento que tengo de programación, mucha IA y prueba y error. Posiblemente haya soluciones mejores. Lo que se ha comprobado es que funciona bien y no afecta aparentemente al servidor, que responde practicamente igual con 20 jugadores, con el scripts y sin el.