JSON:
List<Tuple<string, string, string>> GetConfig()
Возвращает суффикс, его название и префаб для каждого транспортного средства в файле конфигурации.
Пример:
JSON:
List<Tuple<string, string, string>> suffixes = Vehicles.Call<List<Tuple<string, string, string>>>("GetConfig");
if (suffixes == null) return;
for (int i = 0; i < suffixes.Count; i++)
{
string suffix = suffixes[i].Item1;
string name = suffixes[i].Item2;
string prefab = suffixes[i].Item3;
}
JSON:
List<ulong> GetEntities(ulong playerID, string suffix)
Возвращает
List<ulong>
с сетевыми идентификаторами всех доступных сущностей, порожденных игроком с данным суффиксом, возвращает
null
, если ни одна не найдена.
Пример:
JSON:
List<ulong> minis = Vehicles.Call<List<ulong>>("GetEntities", player.userID, "mini");
if (minis == null) return;
BaseEntity newestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity;
BaseEntity oldestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[0])) as BaseEntity;
JSON:
Dictionary<string, List<ulong>> GetAllEntities(ulong playerID)
Возвращает
Dictionary<string, List<ulong>>
с Key в качестве суффикса и Value в качестве сетевого ID всех доступных сущностей, порожденных игроком, возвращает
null
, если ни одна не найдена.
Пример:
JSON:
Dictionary<string, List<ulong>> entities = Vehicles.Call<Dictionary<string, List<ulong>>>("GetAllEntities", player.userID);
if (entities == null) return;
JSON:
List<ulong> minis;
if (entities.TryGetValue("mini", out minis))
{
BaseEntity newestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity;
BaseEntity oldestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[0])) as BaseEntity;
}
List<ulong> boats;
if (entities.TryGetValue("boat", out boats))
{
BaseEntity newestBoat = BaseNetworkable.serverEntities.Find(new NetworkableId(boats[boats.Count - 1])) as BaseEntity;
BaseEntity oldestBoat = BaseNetworkable.serverEntities.Find(new NetworkableId(boats[0])) as BaseEntity;
}
JSON:
bool IsPlayerEntity(ulong entityID)
Проверяет, принадлежит ли данная сущность к
Vehicles
.
Пример:
JSON:
bool isPlayerEntity = Vehicles.Call<bool>("IsPlayerEntity", entity.net.ID.Value);
JSON:
string GetSuffix(ulong entityID)
Возвращает суффикс сущности, возвращает
null
, если сущность не принадлежит к
Vehicles
.
Пример:
string suffix = Vehicles.Call<string>("GetSuffix", entity.net.ID.Value);
if (string.IsNullOrWhiteSpace(suffix)) return;
JSON:
ulong GetOwnerUserID(ulong entityID)
Возвращает идентификатор пользователя игрока, породившего сущность (
не идентификатор владельца сущности), возвращает
0uL
, если сущность не принадлежит к
Vehicles
.
Пример:
JSON:
ulong playerID = Vehicles.Call<ulong>("GetOwnerUserID", entity.net.ID.Value);
if (playerID == 0uL) return;
JSON:
bool DespawnNewestEntity(ulong playerID, string suffix, bool refundFuel = false, bool notify = false)
Снимает депауэр с самого нового доступного существа, порожденного игроком с этим суффиксом, возвращает
false
, если оно не найдено.
Примеры:
JSON:
bool success = Vehicles.Call<bool>("DespawnNewestEntity", player.userID, "mini");
bool success = Vehicles.Call<bool>("DespawnNewestEntity", player.userID, "mini", true, true);
JSON:
int DespawnAllEntities(ulong playerID, string suffix = "", bool refundFuel = false, bool notify = false)
Развоплощает все сущности (опционально по суффиксу), порожденные игроком, возвращает количество развоплощенных сущностей.
Примеры:
JSON:
int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID);
int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "", true, true);
int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "mini");
int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "mini", true, true);
JSON:
bool AddEntity(ulong playerID, string suffix, ulong entityID)
Добавляет сущность в качестве последней порожденной сущности игрока с данным суффиксом, возвращает
false
, если суффикс не существует.
Пример:
JSON:
bool success = Vehicles.Call<bool>("AddEntity", player.userID, "mini", entity.net.ID.Value);
JSON:
bool RemoveEntity(ulong entityID, string suffix = "", ulong playerID = 0uL)
Удаляет сущность так, чтобы она больше не принадлежала
Vehicles
, быстрее, если указаны два необязательных аргумента, возвращает
false
, если сущность не принадлежит
Vehicles
или списку сущностей игрока для этого суффикса.
Примеры:
JSON:
bool success = RemoveEntity(entity.net.ID.Value);
bool isPlayerEntity = Vehicles.Call<bool>("IsPlayerEntity", entity.net.ID.Value);
if (!isPlayerEntity) return;
string suffix = Vehicles.Call<string>("GetSuffix", entity.net.ID.Value);
ulong playerID = Vehicles.Call<ulong>("GetOwnerUserID", entity.net.ID.Value);
bool success = Vehicles.Call<bool>("RemoveEntity", entity.net.ID.Value, suffix, playerID);
JSON:
double GetCooldownLeft(ulong playerID, string suffix, bool fetch = false)
Возвращает, сколько секунд осталось до истечения срока действия суффикса для игрока; возвращает отрицательное число, если срок действия суффикса истек; возвращает
0.0
, если суффикс не существует; возвращает
0.0
, если в разрешениях игрока нет суффикса для этого суффикса; или возвращает
-1.0
, если игрок еще не содержит суффикса для этого суффикса.
Примеры:
JSON:
double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini");
bool canSpawn = (left <= 0 && left != -1);
bool onSpawnCooldown = (left > 0.0);
bool notFound = (left == -1);
double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini", true);
bool canFetch = (left <= 0 && left != -1);
bool onFetchCooldown = (left > 0.0);
bool notFound = (left == -1);
JSON:
bool AddCooldown(ulong playerID, string suffix, bool fetch = false)
Добавляет игроку свертывание с текущей меткой времени для этого суффикса, возвращает
false
, если суффикс не существует.
Примеры:
JSON:
bool success = Vehicles.Call<bool>("AddCooldown", player.userID, "mini");
bool success = Vehicles.Call<bool>("AddCooldown", player.userID, "mini", true);
JSON:
bool ClearCooldowns(ulong playerID, string suffix = "", bool fetch = false)
Очищает спаун или кулдауны для игрока, очищает для каждого суффикса, если не указан один, возвращает
false
, если у игрока нет кулдаунов или если у игрока нет кулдауна для указанного суффикса.
Примеры:
JSON:
bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "mini");
bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "mini", true);
bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID);
bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "", true);
JSON:
string CooldownToString(double cooldown)
Возвращает отформатированную
строку
с промежутком времени.
Пример:
JSON:
double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini");
if (left == -1.0 || left > 0.0) return;
string duration = Vehicles.Call<string>("CooldownToString", left);
JSON:
bool HasPermission(string playerId, string suffix, bool fetch = false)
Проверяет, есть ли у игрока разрешение на порождение или получение данного суффикса, возвращает
false
, если суффикс не существует.
Примеры:
JSON:
bool canSpawn = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini");
bool canFetch = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini", true);
JSON:
bool CanSpawn(BasePlayer player)
Проверяет, может ли игрок спауниться или забираться в соответствии с параметрами конфигурации.
Пример:
JSON:
bool canspawn = Vehicles.Call<bool>("CanSpawn", player);
JSON:
bool CheckSurface(string suffix, Vector3 position, out bool water)
Проверяет, может ли этот суффикс быть порожден или найден на поверхности в данной позиции, возвращает
false
, если суффикс не существует, параметр
out
возвращает
true
, если проверяемая поверхность является водой.
Пример:
JSON:
//bool water;
//bool allowedSurface = CheckSurface("mini", position, out water);
//if (!allowedSurface)
//{
// if (water) player.ChatMessage("Can't spawn on water.");
// else player.ChatMessage("Can't spawn on land.");
//}
JSON:
bool TryMoveToTrainTrack(TrainCar train, Vector3 position)
Перемещает
TrainCar
на ближайший железнодорожный путь в данной позиции, возвращает
false
, если железнодорожных путей не найдено.
Пример:
JSON:
bool moved = Vehicles.Call<bool>("TryMoveToTrainTrack", train, position);
JSON:
Vector3 GetGroundPositionLookingAt(BasePlayer player, float maxDistance)
Возвращает положение поверхности на максимальном расстоянии от точки, на которую смотрит игрок. Возвращает
Vector3.zero
, если расстояние между положением поверхности и положением игрока больше максимального расстояния.
Пример:
JSON:
Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f);
if (position == Vector3.zero) return;
JSON:
void RemoveMapMarker(BaseEntity entity)
Удаляет маркер карты с частушек.
Пример:
JSON:
Vehicles.Call("RemoveMapMarker", entity);
JSON:
bool SetFuelConsumption(BaseEntity entity)
Устанавливает расход топлива сущности и/или блокирует контейнер с топливом в соответствии с ее суффиксом, возвращает
false
, если сущность не принадлежит к
Vehicles
.
Пример:
JSON:
bool success = Vehicles.Call<bool>("SetFuelConsumption", entity);
JSON:
bool SetModuleEngineFuelConsumption(VehicleModuleEngine moduleEngine)
Устанавливает расход топлива двигателя модуля, настроенный для суффикса, на котором установлен двигатель; возвращает
false
, если сущность, на которой установлен двигатель, не принадлежит к
Vehicles
.
Пример:
JSON:
bool success = Vehicles.Call<bool>("SetModuleEngineFuelConsumption", moduleEngine);
JSON:
int AddFuel(EntityFuelSystem fuelSystem)
Добавляет стартовое топливо в топливную систему сущности в соответствии с ее суффиксом, возвращает количество добавленного топлива или возвращает
0
, если в конфиге установлено значение 0, или возвращает
-1
, если сущность не принадлежит к
Vehicles
.
Пример:
JSON:
int addedFuel = Vehicles.Call<int>("AddFuel", vehicle.GetFuelSystem());
bool success = (addedFuel >= 1);
bool configNoFuel = (addedFuel == 0);
bool failed = (addedFuel == -1);
JSON:
int RefundFuel(EntityFuelSystem fuelSystem, BasePlayer player)
Возвращает игроку топливо, оставшееся в топливном баке существа, возвращает количество возвращенного топлива или возвращает
0
, если топлива не осталось.
Пример:
JSON:
int returnedFuel = Vehicles.Call<int>("RefundFuel", vehicle.GetFuelSystem(), player);
bool success = (returnedFuel >= 1);
bool empty = (returnedFuel == 0);
JSON:
List<BaseVehicle.MountPointInfo> AddMounts(string playerId, string suffix, BaseVehicle vehicle)
Добавляет точки крепления к транспортному средству в соответствии с правами игрока на этот суффикс, должен быть вызван до порождения существа, возвращает
List<BaseVehicle.MountPointInfo>
точек крепления, которые были добавлены к транспортному средству.
Пример:
JSON:
BaseEntity entity = Vehicles.Call("CreateEntity", player.userID, "mini", position) as BaseEntity;
if (entity == null) return;
BaseVehicle vehicle = entity as BaseVehicle;
if (vehicle != null)
{
List<BaseVehicle.MountPointInfo> mounts = Vehicles.Call<List<BaseVehicle.MountPointInfo>>("AddMounts", player.UserIDString, "mini", vehicle);
int mountsAdded = mounts.Count;
}
entity.Spawn();
JSON:
List<BaseEntity> AddSeats(string playerId, string suffix, BaseEntity entity)
Добавляет места в транспортное средство в соответствии с правами игрока на этот суффикс, возвращает
List<BaseEntity>
мест, которые были добавлены в транспортное средство.
Пример:
JSON:
List<BaseEntity> seats = Vehicles.Call<List<BaseEntity>>("AddSeats", player.UserIDString, "mini", entity);
int seatsAdded = seats.Count;
JSON:
List<BasePlayer> GetMountedOccupants(BaseEntity entity)
Возвращает
List<BasePlayer>
смонтированных игроков.
Пример:
JSON:
List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity);
int numMounted = mounted.Count;
JSON:
List<BasePlayer> GetParentedOccupants(BaseEntity entity)
Возвращает
List<BasePlayer>
игроков, являющихся родителями.
Пример:
JSON:
List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity);
int numParented = parented.Count;
JSON:
void DismountOccupants(List<BasePlayer> mounted)
Снимает всех игроков этого списка с транспортного средства.
Пример:
JSON:
List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity);
Vehicles.Call("DismountOccupants", mounted);
JSON:
void UnparentOccupants(List<BasePlayer> parented)
Снимает с сущности всех игроков этого списка.
Пример:
JSON:
List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity);
Vehicles.Call("UnparentOccupants", parented);
JSON:
string GetMapGrid(Vector3 position)
Возвращает сетку карты из данной позиции.
Примеры:
JSON:
string mapGrid = Vehicles.Call<string>("GetMapGrid", entity.transform.position);
string mapGrid = Vehicles.Call<string>("GetMapGrid", player.transform.position);
JSON:
BaseEntity CreateEntity(ulong playerID, string suffix, Vector3 position, float YrotationOffset = -90.0f)
Создает суффикс для данного идентификатора пользователя, возвращает
BaseEntity
или возвращает
null
, если суффикс не существует.
Пример:
JSON:
bool hasSpawnPerm = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini");
if (!hasSpawnPerm) return;
double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini");
if (left > 0.0) return;
bool canSpawn = Vehicles.Call<bool>("CanSpawn", player);
if (!canSpawn) return;
Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f);
if (position == Vector3.zero) return;
BaseEntity entity = Vehicles.Call("CreateEntity", player.userID, "mini", position) as BaseEntity;
if (entity == null) return;
entity.Spawn();
Vehicles.Call("AddEntity", player.userID, "mini", entity.net.ID.Value);
BaseVehicle vehicle = entity as BaseVehicle;
if (vehicle != null)
{
Vehicles.Call("SetFuelConsumption", entity);
Vehicles.Call("AddFuel", vehicle.GetFuelSystem());
}
Vehicles.Call("AddCooldown", player.userID, "mini");
JSON:
BaseEntity FetchEntity(ulong playerID, string suffix, Vector3 position, float YrotationOffset = -90.0f)
Находит последнюю доступную сущность, порожденную игроком с этим суффиксом, возвращает
BaseEntity
или возвращает
null
, если не найдена. Пример:
JSON:
bool hasFetchPerm = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini", true);
if (!hasFetchPerm) return;
List<ulong> minis = Vehicles.Call<List<ulong>>("GetEntities", player.userID, "mini");
if (minis == null) return;
BaseEntity entity = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity;
double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini", true);
if (left > 0.0) return;
bool canSpawn = Vehicles.Call<bool>("CanSpawn", player);
if (!canSpawn) return;
Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f);
if (position == Vector3.zero) return;
List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity);
List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity);
if (!config.AllowFetchingWhenOccupied && (mounted.Count > 0 || parented.Count > 0)) return;
if (config.DismountOccupantsWhenFetching)
{
Vehicles.Call("DismountOccupants", mounted);
Vehicles.Call("UnparentOccupants", parented);
}
object obj = Vehicles.Call("FetchEntity", player.userID, "mini", position);