C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using Newtonsoft.Json;
namespace Oxide.Plugins
{
[Info("Runaway Boats", "0x89A", "1.2.1")]
[Description("Stops boats from sailing away on dismount")]
class RunawayBoats : RustPlugin
{
private const string _canUse = "runawayboats.use";
void Init() => permission.RegisterPermission(_canUse, this);
private void OnEntityDismounted(BaseMountable mount, BasePlayer player)
{
if (!permission.UserHasPermission(player.UserIDString, _canUse))
{
return;
}
MotorRowboat boat = mount.GetParentEntity() as MotorRowboat;
if (boat == null)
{
return;
}
StopBoat(boat);
}
private void StopBoat(MotorRowboat boat)
{
bool hasDriver = boat.HasDriver();
if ((!hasDriver && (!boat.AnyMounted() || _config.stopWithPassengers)) || (hasDriver && _config.stopIfNotDriver))
{
boat.gasPedal = 0;
}
}
#region -Configuration-
private Configuration _config;
private class Configuration
{
[JsonProperty("Stop if dismounted player is not driver")]
public bool stopIfNotDriver = true;
[JsonProperty("Stop if boat has passengers")]
public bool stopWithPassengers = true;
}
protected override void LoadConfig()
{
base.LoadConfig();
try
{
_config = Config.ReadObject<Configuration>();
if (_config == null) throw new Exception();
SaveConfig();
}
catch
{
PrintError("Failed to load config, using default values");
LoadDefaultConfig();
}
}
protected override void LoadDefaultConfig() => _config = new Configuration();
protected override void SaveConfig() => Config.WriteObject(_config);
#endregion
}
}