C#:
using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using Facepunch;
namespace Oxide.Plugins {
[Info("BoatGive", "wazzzup", "1.0.0")]
[Description("BoatGive")]
class BoatGive : RustPlugin {
void OnEntityBuilt(Planner plan, GameObject obj) {
var entity = obj.GetComponent<BaseEntity>();
if (entity != null && entity.skinID == 2218121807) {
BaseEntity boat = InstantiateEntity("assets/content/vehicles/boats/rowboat/rowboat.prefab", entity.transform.position);
NextTick(() => {
entity?.Kill();
}
);
boat.enableSaving = true;
boat.Spawn();
}
}
private BaseEntity InstantiateEntity(string type, Vector3 position) {
var gameObject = Instantiate.GameObject(GameManager.server.FindPrefab(type), position, new Quaternion());
gameObject.name = type;
SceneManager.MoveGameObjectToScene(gameObject, Rust.Server.EntityScene);
UnityEngine.Object.Destroy(gameObject.GetComponent<Spawnable>());
if (!gameObject.activeSelf) gameObject.SetActive(true);
BaseEntity component = gameObject.GetComponent<BaseEntity>();
return component;
}
void OnServerInitialized() {
cmd.AddConsoleCommand("giveboat", this, "cmdGiveBoat");
}
void cmdGiveBoat(ConsoleSystem.Arg arg) {
var player = arg?.Player() ?? null;
if (player?.net.connection.authLevel < 2) return;
if (arg.Args == null || arg.Args.Length < 1) {
SendReply(arg, "bad syntax");
return;
}
BasePlayer targetPlayer = BasePlayer.Find(arg.Args[0]);
if (targetPlayer == null) {
SendReply(arg, "error player not found for give");
return;
}
if (GiveBoat(targetPlayer)) {
SendMsg(targetPlayer, "Boat got");
}
else {
SendMsg(targetPlayer, "inventory full");
}
}
bool GiveBoat(ItemContainer container) {
var item = ItemManager.CreateByName("innertube", 1, 2218121807);
item.name = "Деревянная Лодка";
return item.MoveToContainer(container, -1, false);
}
bool GiveBoat(BasePlayer player) {
var item = ItemManager.CreateByName("innertube", 1, 2218121807);
item.name = "Деревянная Лодка";
if (!player.inventory.GiveItem(item)) {
item.Drop(player.inventory.containerMain.dropPosition, player.inventory.containerMain.dropVelocity, new Quaternion());
return false;
}
return true;
}
private string msg(string key, BasePlayer player = null) => lang.GetMessage(key, this, player?.UserIDString);
private void SendMsg(BasePlayer player, string langkey, bool title = false, params string[] args) {
string message = String.Format(msg(langkey, player), args);
if (title) message = msg("Title", player) + message;
SendReply(player, message);
}
protected override void LoadDefaultMessages() {
lang.RegisterMessages(new Dictionary<string, string>() {
{
"Title", ""
}
, {
"Boat got", ""
}
, {
"inventory full", "Inventory full"
}
,
}
, this, "en");
lang.RegisterMessages(new Dictionary<string, string>() {
{
"Title", ""
}
, {
"Boat got", ""
}
, {
"inventory full", "Инвентарь полный"
}
,
}
, this, "ru");
}
}
}