C#:
using System;
using UnityEngine;
using System.Collections.Generic;
namespace Oxide.Plugins
{
[Info("UberGun", "Synvy", "1.0.0")]
[Description("Allows players with permission to shoot rockets from the Snowball Gun!")]
public class UberGun : RustPlugin
{
#region Initialize
private const string _perm = "ubergun.use";
private string rocket_basic = "assets/prefabs/ammo/rocket/rocket_basic.prefab";
private void Init()
{
permission.RegisterPermission(_perm, this);
}
#endregion Initialize
#region Hooks
private void OnWeaponFired(BaseProjectile weapon, BasePlayer player, ItemModProjectile ammo, ProtoBuf.ProjectileShoot projectiles)
{
if (player != null && HasPerm(player.UserIDString, _perm) && IsHoldingSnowballGun(player))
{
var rocket = GameManager.server.CreateEntity(rocket_basic, player.eyes.position, new Quaternion());
if (rocket_basic != null)
{
rocket.creatorEntity = player;
rocket.SendMessage("InitializeVelocity", player.eyes.HeadForward() * 2000f);
rocket.OwnerID = player.userID;
rocket.Spawn();
rocket.ClientRPC(null, "RPCFire");
}
var heldWeapon = weapon.GetItem();
heldWeapon.condition = heldWeapon.info.condition.max;
if (weapon.primaryMagazine.contents <= 0)
{
weapon.primaryMagazine.contents = weapon.primaryMagazine.capacity;
weapon.SendNetworkUpdateImmediate();
}
}
return;
}
#endregion Hooks
#region Helpers
private bool HasPerm(string id, string perm) => permission.UserHasPermission(id, perm);
private bool IsHoldingSnowballGun(BasePlayer player)
{
var heldItem = player.GetActiveItem()?.info.shortname ?? "null";
return heldItem == "snowballgun";
}
#endregion Helpers
}
}