Максимальная производительность для ваших игровых серверов!
Заказать сейчасНапиши плагин для игры Rust на C#, который ограничивает стоянку буксиров в рыбацких деревнях. Если через 3 часа буксир не будет убран, он будет взорван.В игре Rust нет ограничений на стоянку буксиров в рыбацких деревнях. Игроки могут свободно парковать свои буксиры где угодно в пределах деревни. На данный момент в игре нет плагина, который бы ограничивал стоянку буксиров в определенных местах. Однако, вы можете создать свой собственный плагин или воспользоваться плагинами, доступными на Rust-сообществе, чтобы добавить такую функциональность в свой сервер.
Конечно, вот пример кода для плагина на C#, который ограничивает стоянку буксиров в рыбацких деревнях и взрывает их, если они не были убраны в течение 3 часов:Напиши плагин для игры Rust на C#, который ограничивает стоянку буксиров в рыбацких деревнях. Если через 3 часа буксир не будет убран, он будет взорван.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("BargeExplosion", "YourName", "1.0.0")]
class BargeExplosion : RustPlugin
{
private Dictionary<BasePlayer, float> bargeTimers = new Dictionary<BasePlayer, float>();
void OnEntitySpawned(BaseNetworkable entity)
{
if (entity is BaseVehicle)
{
BaseVehicle vehicle = entity as BaseVehicle;
if (vehicle.ShortPrefabName.Contains("boats.") && vehicle.ShortPrefabName.Contains("rowboat"))
{
Vector3 position = vehicle.transform.position;
if (IsInBargeZone(position))
{
bargeTimers[vehicle.OwnerPlayer] = Time.realtimeSinceStartup;
}
}
}
}
void OnEntityKill(BaseNetworkable entity)
{
if (entity is BaseVehicle)
{
BaseVehicle vehicle = entity as BaseVehicle;
if (vehicle.ShortPrefabName.Contains("boats.") && vehicle.ShortPrefabName.Contains("rowboat"))
{
bargeTimers.Remove(vehicle.OwnerPlayer);
}
}
}
void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitInfo)
{
if (entity is BaseVehicle)
{
BaseVehicle vehicle = entity as BaseVehicle;
if (vehicle.ShortPrefabName.Contains("boats.") && vehicle.ShortPrefabName.Contains("rowboat"))
{
if (IsInBargeZone(vehicle.transform.position))
{
if (!bargeTimers.ContainsKey(vehicle.OwnerPlayer))
{
bargeTimers[vehicle.OwnerPlayer] = Time.realtimeSinceStartup;
}
}
}
}
}
bool IsInBargeZone(Vector3 position)
{
foreach (MonumentInfo monument in UnityEngine.Object.FindObjectsOfType<MonumentInfo>())
{
if (monument.displayPhrase.translated.ToLower().Contains("fishing"))
{
float distance = Vector3.Distance(position, monument.transform.position);
if (distance <= 100f)
{
return true;
}
}
}
return false;
}
void OnServerTick()
{
List<BasePlayer> playersToRemove = new List<BasePlayer>();
foreach (KeyValuePair<BasePlayer, float> pair in bargeTimers)
{
BasePlayer player = pair.Key;
float startTime = pair.Value;
float elapsedTime = Time.realtimeSinceStartup - startTime;
if (elapsedTime >= 3 * 60 * 60) // 3 часа в секундах
{
foreach (BaseVehicle vehicle in player.ownedEntityList)
{
if (vehicle.ShortPrefabName.Contains("boats.") && vehicle.ShortPrefabName.Contains("rowboat"))
{
vehicle.Kill();
}
}
playersToRemove.Add(player);
}
}
foreach (BasePlayer player in playersToRemove)
{
bargeTimers.Remove(player);
}
}
}
}