RU/Resource:Race
Мод "race" организует спринтовые или свободные гонки для одного или более игроков. Он поддерживает карты из обеих MTA:Race и MTA:SA DM, которые были созданы в редакторе.
В самой игре
Играть на моде race достаточно легко. Если имеются чекпоинты, езжайте от одного к следующему и попытайтесь приехать первым в указанное время. Если же их нет, просто катайтесь в свое удовольствие.
В гонках вы можете встретить три типа пикапов, влияющих на ваше транспортное средство:
- Пикапы починки: этот пикап выглядит, как гаечный ключ. Если вы его возьмете, здоровье вашего транспортного средства будет установлено на максимальное значение.
- Пикапы оксида азота: красная бутыль NOS ("нитро"). После ее взятия, нажмите клавишу, отвечающую за выстрел (по умолчанию - левая кнопка мыши), чтобы временно ускорить разгон машины.
- Пикапы смены транспортного средства: эти отображают над собой имя транспортного средства, заключенного внутри. Как только вы его берете, ваш транспорт меняется на указанный.
И напоследок, если во время гонки вы застрянете, введите команду /kill в чате, чтобы умереть и переродиться на предыдущем чекпоинте.
Конвертирование карт MTA:Race
Используйте массовый конвертер для конвертирования всех карт MTA:Race в формат карт MTA:SA одним кликом.
Синтаксис карт
Вы можете с легкостью создавать гоночные карты, используя новый синтаксис редактора карт MTA:SA. Синтаксис карт указан ниже для справки.
.map-файл
<map> <!-- Один или более --> <spawnpoint posX="X" posY="Y" posZ="Z" rotation="Вращение в градусах" vehicle="ID транспортного средства" id="ID спавна" [ paintjob="ID винила" upgrades="разделенный запятыми список тюнинговых запчастей" ] /> <!-- Ноль или более --> <checkpoint posX="X" posY="Y" posZ="Z" color="#FF0000" id="текстовый или числовой ID чекпоинта" nextid="ID следующего чекпоинта" [ size="размер чекпоинта" vehicle="ID транспортного средства для смены существующего" type="checkpoint/ring/cylinder/arrow/corona" paintjob="ID винила" upgrades="разделенный запятыми список тюнинговых запчастей" ] /> <!-- Ноль или более --> <object posX="X" posY="Y" posZ="Z" rotX="в градусах" rotY="в градусах" rotZ="в градусах" model="ID модели" id="ID объекта" /> <!-- Ноль или более --> <pickup posX="X" posY="Y" posZ="Z" type="repair|nitro|vehiclechange" id="ID пикапа" [ vehicle="ID транспортного средства" paintjob="ID винила" upgrades="разделенный запятыми список тюнинговых запчастей" ] /> </map>
meta.xml
<meta> <info type="map" gamemodes="race" name="Имя карты" author="Автор карты" description="Описание карты" version="Номер версии карты"/> <race src="Map file.map"/> <settings> <setting name="#имяОпции" value="значениеОпции"/> ... </settings> </meta>
<setting> отвечает за опции синтаксиса MTA:Race. Например, в синтаксисе MTA:Race будет соответствовать <setting name="#time" value="4:0"/> в синтаксисе DM.
Аддоны
"Аддон" Race ничем не отличается от любого другого ресурса-скрипта, за исключением того, что имеет addon="race" в секции <info> своего meta.xml файла. Это сделано просто для того, чтобы Race мог его идентифицировать и положить его вам в меню /config. Аддоны сообщаются через Race события. Список действующих Race событий и их назначений приведен далее.
События, доступные для версии 0.8.3
Заметка: Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.
Сервер
Имя | Source | Параметры |
onPlayerReachCheckpoint | player | int checkpoint, int time_ |
onPlayerPickUpRacePickup | player | int/string pickupID, string pickupType, int vehicleModel |
onMapStarting | table mapInfo, table mapOptions, table gameOptions |
onPlayerFinish | player | int rank, int time |
onPostFinish |
onPollStarting | table poll |
onRaceStateChanging | string newStateName, string oldStateName |
onPlayerRaceWasted | player | vehicle playersVehicle |
Клиент
onClientMapStarting | table mapinfo |
onClientPlayerFinish | player |
onClientPlayerOutOfTime | player |
onClientMapStopping |
onClientScreenFadedOut |
onClientScreenFadedIn |
События конкретно для версии 0.8.3
Заметка: Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.
onRaceStateChanging
Срабатывает, когда ресурс race начинает что-то делать.
Параметры
string newState, string oldState
- newState: старое значение
- oldState: новое значение
Возможные значения:
- undefined
- NoMap
- LoadingMap
- PreGridCountdown
- GridCountdown
- Running
- MidMapVote
- SomeoneWon
- TimesUp
- EveryoneFinished
- PostFinish
- NextMapSelect
- NextMapVote
- ResourceStopping
Source
Root element (корневой элемент).
onPlayerReachCheckpoint
Срабатывает, когда игрок подбирает любой чекпоинт, кроме последнего.
Параметры
int checkpoint, int time
- checkpoint: количество подобранных игроком чекпоинтов. Первый чекпоинт имеет номер 1.
- time: время, прошедшее со старта гонки, в миллисекундах.
Source
Source - игрок, подобравший чекпоинт.
onPlayerFinish
Срабатывает, когда игрок подбирает последний чекпоинт (т.е. завершает гонку)
Параметры
int rank, int time
- rank: ранк игрока. 1 означает выигрыш гонки, 2 - что он пришел вторым, и т.д.
- time: время, прошедшее со старта гонки, в миллисекундах.
Source
Source - игрок, завершивший гонку.
onPlayerPickUpRacePickup
Параметры
int/string pickupID, string pickupType, int vehicleModel
- pickupID: номер пикапа при синтаксисе MTA:Race (начиная с 1) или атрибут "id" пикапа в случае синтаксиса DM.
- pickupType: тип пикапа. Может быть "nitro", "repair" или "vehiclechange".
- vehicleModel: если тип пикапа - vehiclechange, то это - модель нового транспортного средства, которую он устанавливает.
Source
Source - игрок, подобравший пикап.
Данные элементов
Следующая element data присваивается каждому из игроков:
- race rank: позиция игрока в гонке на данный момент. 1 = первый, 2 = второй и т.д. Обновляется с интервалом в 1 секунду.
- race.checkpoint: номер чекпоинта, к которому направляется игрок. Когда игрок спавнится, значение этого параметра - 1, после подбора первого чекпоинта - 2 и т.д.
- race.finished: true, если игрок финишировал, false, если он все еще в гонке.
Эта сугубо серверная element data устанавливается root element (корневому элементу) ресурса:
- info: содержит таблицу со следующими подтаблицами: mapInfo, mapOptions и gameOptions.
Супер продвинутые данные элементов
Вы также можете задавать игроку element data для смены его статусов повреждаемости и прозрачности рендеринга:
e.g. setElementData( thePlayer, "overrideCollide.uniqueblah", 0, false ) -- Выключить повреждаемость игроку setElementData( thePlayer, "overrideCollide.uniqueblah", nil, false ) -- Включить игроку повреждаемость по умолчанию setElementData( thePlayer, "overrideAlpha.uniqueblah", 120, false ) -- Alpha игрока на '120 максимум' setElementData( thePlayer, "overrideAlpha.uniqueblah", nil, false ) -- Alpha игрока на значение по умолчанию
Заменяйте 'uniqueblah' на что угодно (до 15 символов в длину)
Экспортируемые серверные функции
int |
getTimePassed |
int |
getPlayerRank | player thePlayer |
boolean |
isPlayerFinished | player thePlayer |
vehicle |
getPlayerVehicle | player thePlayer |