ai-streetraces para desarrolladores
ai-streetraces no tiene exports. Su alerta policial, sus motivos de registro y sus eventos privados.
ai-streetraces no tiene exports ni state bags. Las carreras solo viven en la memoria del servidor, y el dinero, las alertas y la entrada del menú pasan por AI Core.
Alerta policial
Cuando empieza la cuenta atrás de una carrera, puede enviar una alerta (según el Alert chance del panel) con dispatch.alert de la lib: el título "Street race", el mensaje "(count) vehicles lining up for an illegal race", en la línea de salida, con el primer piloto como source, icono flag-checkered. Llega al script de alertas que esté en uso.
Dinero
Todo el dinero se mueve en la Money account del panel con estos motivos de registro:
| Motivo | Cuándo |
|---|---|
streetrace:<raceId> | Se cobra una apuesta al crear o al unirse. |
streetrace:refund | Se devuelve una apuesta (abandonó antes de la salida, cancelada, pocos pilotos, recurso detenido). |
streetrace:won | El ganador recibe el bote. |
streetrace:split | Se acabó el tiempo límite; cada piloto que sigue en carrera recibe una parte. |
Abrir el menú desde otro script
El servidor abre el menú de carreras con el evento de cliente ai-streetraces:client:openMenu (lo que hace /race). Úsalo para poner el menú en tu propia app de teléfono o punto de interacción.
Lado: Servidor -> cliente · Argumentos: ninguno
// servidor
emitNet("ai-streetraces:client:openMenu", source);El menú solo muestra lo que el jugador puede hacer ahora (crear hasta el punto de ruta, aceptar una invitación, empezar, cancelar, abandonar o rendirse), y cada elección se comprueba en el servidor, así que abrirlo para cualquiera es seguro.
Eventos y callbacks privados
El contrato propio del script (resource/common/race.ts). El servidor comprueba el vehículo, la distancia, el dinero y el estado de la carrera en cada llamada. Pueden cambiar entre versiones: no los dispares ni los escuches desde otros recursos.
| Nombre | Dirección | Qué transporta |
|---|---|---|
ai-streetraces:create | callback de cliente | (buyIn, finishX, finishY): crear una carrera desde la posición del jugador hasta la meta. |
ai-streetraces:join | callback de cliente | (raceId): unirse a una carrera a la que el jugador fue invitado (paga la apuesta). |
ai-streetraces:leave | callback de cliente | (): abandonar la carrera; si el anfitrión abandona antes de la salida, se cancela. |
ai-streetraces:begin | callback de cliente | (): el anfitrión termina ya el tiempo para unirse. |
ai-streetraces:finish | callback de cliente | (): el piloto ha llegado a la meta. |
ai-streetraces:client:state | servidor -> piloto | (race, serverNow): una instantánea de la carrera en la que está el jugador. |
ai-streetraces:client:racer | servidor -> pilotos | (racer, pot): se ha unido un piloto. |
ai-streetraces:client:racerLeft | servidor -> pilotos | (racerId, pot): un piloto ha abandonado. |
ai-streetraces:client:start | servidor -> pilotos | (startAt, serverNow): corre la cuenta atrás; salida en startAt (reloj del servidor). |
ai-streetraces:client:ended | servidor -> piloto | (): la carrera ha terminado para este jugador. |
ai-streetraces:client:invite | servidor -> jugadores cerca de una carrera nueva | (invite, serverNow). |
ai-streetraces:client:uninvite | servidor -> jugadores invitados | (raceId): la carrera ya no admite pilotos. |
ai-streetraces
Carreras callejeras de punto a punto hasta un punto de ruta del mapa con apuesta de entrada, donde el primer piloto en llegar a la meta se lleva el bote.
Mundo y herramientas
Viviendas, cerraduras de puertas, muchas funciones pequeñas, cuerpos dormidos, tamaño del personaje y herramientas de administración.