AI Core
Криминал и гонкиai-streetraces

ai-streetraces для разработчиков

У ai-streetraces нет экспортов. Его вызов полиции, причины операций и приватные события.

У ai-streetraces нет экспортов и state bags. Гонки живут только в памяти сервера, а деньги, вызовы и пункт меню идут через AI Core.

Вызов полиции

Когда начинается обратный отсчёт гонки, она может отправить один вызов (по настройке панели Alert chance) через dispatch.alert из lib: заголовок "Street race", сообщение "(count) vehicles lining up for an illegal race" («(count) машин выстраиваются для нелегальной гонки»), на линии старта, с первым гонщиком в качестве source, иконка flag-checkered. Вызов попадает в тот скрипт оповещений, который запущен.

Деньги

Все деньги проходят через счёт из настройки панели Money account с такими причинами операций:

ПричинаКогда
streetrace:<raceId>Ставка списывается при создании или присоединении.
streetrace:refundСтавка возвращается (ушёл до старта, гонка отменена, слишком мало гонщиков, остановка ресурса).
streetrace:wonПобедитель получает банк.
streetrace:splitВремя вышло; каждый оставшийся гонщик получает долю.

Как открыть меню из другого скрипта

Сервер открывает меню гонки клиентским событием ai-streetraces:client:openMenu (это делает /race). Используйте его, чтобы поместить меню в своё приложение телефона или точку взаимодействия.

Сторона: сервер -> клиент · Аргументы: нет

// сервер
emitNet("ai-streetraces:client:openMenu", source);

Меню показывает только то, что игрок может сделать сейчас (создать гонку до метки, принять приглашение, начать, отменить, уйти или сдаться), и каждый выбор проверяется на сервере, поэтому открывать его кому угодно безопасно.

Приватные события и колбэки

Собственный контракт скрипта (resource/common/race.ts). Сервер при каждом вызове проверяет транспорт, расстояние, деньги и состояние гонки. Они могут меняться между версиями: не вызывайте и не слушайте их из других ресурсов.

ИмяНаправлениеЧто передаёт
ai-streetraces:createclient callback(buyIn, finishX, finishY): создать гонку от позиции игрока до финиша.
ai-streetraces:joinclient callback(raceId): присоединиться к гонке, в которую игрока пригласили (платит ставку).
ai-streetraces:leaveclient callback(): покинуть гонку; если хозяин уходит до старта, гонка отменяется.
ai-streetraces:beginclient callback(): хозяин завершает время присоединения сейчас.
ai-streetraces:finishclient callback(): гонщик доехал до финиша.
ai-streetraces:client:stateserver -> racer(race, serverNow): снимок гонки, в которой участвует игрок.
ai-streetraces:client:racerserver -> racers(racer, pot): гонщик присоединился.
ai-streetraces:client:racerLeftserver -> racers(racerId, pot): гонщик ушёл.
ai-streetraces:client:startserver -> racers(startAt, serverNow): идёт обратный отсчёт; старт в startAt (по часам сервера).
ai-streetraces:client:endedserver -> racer(): гонка для этого игрока закончилась.
ai-streetraces:client:inviteserver -> players near a new race(invite, serverNow).
ai-streetraces:client:uninviteserver -> invited players(raceId): гонка больше не принимает гонщиков.

На этой странице