C#:
/* SAFEZONE PRIVATE VEHICLES
Vehicles parked in safe zones can be mounted only by same player who dismounted it
If owner is offline, anyone can mount his vehicle in safezone.
» COMMANDS
none
» PERMISSIONS
none
» CONFIG
none
*/
using Oxide.Core;
namespace Oxide.Plugins
{
[Info("Safezone Private Vehicles", "David", "0.0.4")]
public class SafezonePrivateVehicles : RustPlugin
{
string[] messages = {
"YOU CAN'T MOUNT SOMEONE ELSE'S VEHICLE IN SAFE ZONE",
"YOU CAN'T PUSH SOMEONE ELSE'S VEHICLE IN SAFE ZONE"
};
string[] vehicleIngore = {
"assets/content/vehicles/trains/caboose/blackjackmachine/subents/blackjackplayerseat.prefab",
"assets/prefabs/vehicle/seats/arcadeuser.prefab"
};
void OnEntityDismounted(BaseMountable entity, BasePlayer player)
{
if (player == null || entity == null) return;
if (vehicleIngore.Contains(entity.PrefabName)) return;
if (!entity.PrefabName.Contains("vehicle")) return;
Puts(entity.PrefabName);
entity.OwnerID = player.userID;
}
object CanMountEntity(BasePlayer player, BaseMountable entity)
{
if (player == null || entity == null) return null;
if (player.InSafeZone())
{
if (vehicleIngore.Contains(entity.PrefabName)) return null;
if (!entity.PrefabName.Contains("vehicle")) return null;
if (IsOwnerOff(entity.OwnerID))
return null;
if (player.userID == entity.OwnerID)
return null;
if (OnSameTeam(player, entity.OwnerID))
return null;
player.SendConsoleCommand("showtoast", 1, messages[0]);
return false;
}
return null;
}
private object OnVehiclePush(BaseVehicle vehicle, BasePlayer player)
{
if (player == null || vehicle == null) return null;
if (player.InSafeZone())
{
if (IsOwnerOff(vehicle.OwnerID))
return null;
if (player.userID == vehicle.OwnerID)
return null;
if (OnSameTeam(player, vehicle.OwnerID))
return null;
player.SendConsoleCommand("showtoast", 1, messages[1]);
return false;
}
return null;
}
object OnHorseLead(BaseRidableAnimal animal, BasePlayer player)
{
if (player.InSafeZone())
{
if (IsOwnerOff(animal.OwnerID))
return null;
if (player.userID == animal.OwnerID)
return null;
if (OnSameTeam(player, animal.OwnerID))
return null;
player.SendConsoleCommand("showtoast", 1, messages[1]);
return false;
}
return null;
}
bool IsOwnerOff(ulong ownerID)
{
var owner = BasePlayer.FindByID(ownerID);
if (ownerID == 0 || owner == null)
return true;
else
return false;
}
bool OnSameTeam(BasePlayer player, ulong vehicleOwner)
{
var playerTeam = RelationshipManager.ServerInstance.FindPlayersTeam(player.userID);
var ownerTeam = RelationshipManager.ServerInstance.FindPlayersTeam(vehicleOwner);
if (playerTeam == null || ownerTeam == null)
return false;
if (playerTeam == ownerTeam)
return true;
else
return false;
}
}
}