AI Core
Crimen y carrerasai-streetraces

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:

MotivoCuándo
streetrace:<raceId>Se cobra una apuesta al crear o al unirse.
streetrace:refundSe devuelve una apuesta (abandonó antes de la salida, cancelada, pocos pilotos, recurso detenido).
streetrace:wonEl ganador recibe el bote.
streetrace:splitSe 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.

NombreDirecciónQué transporta
ai-streetraces:createcallback de cliente(buyIn, finishX, finishY): crear una carrera desde la posición del jugador hasta la meta.
ai-streetraces:joincallback de cliente(raceId): unirse a una carrera a la que el jugador fue invitado (paga la apuesta).
ai-streetraces:leavecallback de cliente(): abandonar la carrera; si el anfitrión abandona antes de la salida, se cancela.
ai-streetraces:begincallback de cliente(): el anfitrión termina ya el tiempo para unirse.
ai-streetraces:finishcallback de cliente(): el piloto ha llegado a la meta.
ai-streetraces:client:stateservidor -> piloto(race, serverNow): una instantánea de la carrera en la que está el jugador.
ai-streetraces:client:racerservidor -> pilotos(racer, pot): se ha unido un piloto.
ai-streetraces:client:racerLeftservidor -> pilotos(racerId, pot): un piloto ha abandonado.
ai-streetraces:client:startservidor -> pilotos(startAt, serverNow): corre la cuenta atrás; salida en startAt (reloj del servidor).
ai-streetraces:client:endedservidor -> piloto(): la carrera ha terminado para este jugador.
ai-streetraces:client:inviteservidor -> jugadores cerca de una carrera nueva(invite, serverNow).
ai-streetraces:client:uninviteservidor -> jugadores invitados(raceId): la carrera ya no admite pilotos.

En esta página