Вот полный код плагина EnhancedMagazine с добавлением пермишна и функционалом для его использования:Скинь полный код
C#:
using Oxide.Core;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("EnhancedMagazine", "YourName", "1.0.0")]
class EnhancedMagazine : RustPlugin
{
private const string permissionName = "enhancedmagazine.use";
private const int targetAmmoCount = 38;
void Init()
{
LoadDefaultMessages();
permission.RegisterPermission(permissionName, this);
}
void OnServerInitialized()
{
foreach (BasePlayer player in BasePlayer.activePlayerList)
{
UpdatePlayerAmmo(player);
}
}
void OnUserPermissionGranted(string id, string perm)
{
BasePlayer player = BasePlayer.FindByID(ulong.Parse(id));
if (player != null && perm == permissionName)
{
UpdatePlayerAmmo(player);
}
}
void UpdatePlayerAmmo(BasePlayer player)
{
foreach (Item item in player.inventory.AllItems())
{
if (item.info.shortname == "rifle.ak47" || item.info.shortname == "rifle.ak47u")
{
int currentAmmoCount = GetAmmoCount(item);
int ammoToAdd = targetAmmoCount - currentAmmoCount;
if (ammoToAdd > 0)
{
AddAmmo(item, ammoToAdd);
SetWeaponMagazineSize(item, targetAmmoCount);
}
}
}
}
void GivePermission(BasePlayer player)
{
if (!permission.UserHasPermission(player.UserIDString, permissionName))
{
permission.GrantUserPermission(player.UserIDString, permissionName);
UpdatePlayerAmmo(player);
}
}
[ChatCommand("giveenhancedmagazinepermission")]
void cmdGivePermission(BasePlayer player, string command, string[] args)
{
if (player.IsAdmin)
{
if (args.Length == 1)
{
BasePlayer targetPlayer = BasePlayer.Find(args[0]);
if (targetPlayer != null)
{
GivePermission(targetPlayer);
player.ChatMessage($"Permission granted to {targetPlayer.displayName}.");
}
else
{
player.ChatMessage("Player not found.");
}
}
else
{
player.ChatMessage("Syntax: /giveenhancedmagazinepermission <playername>");
}
}
else
{
player.ChatMessage("You don't have permission to use this command.");
}
}
int GetAmmoCount(Item weapon)
{
BaseProjectile baseProjectile = weapon.GetHeldEntity() as BaseProjectile;
if (baseProjectile != null)
{
var magazine = baseProjectile.primaryMagazine;
if (magazine != null)
{
return magazine.contents;
}
}
return 0;
}
void AddAmmo(Item weapon, int amount)
{
BaseProjectile baseProjectile = weapon.GetHeldEntity() as BaseProjectile;
if (baseProjectile != null)
{
var magazine = baseProjectile.primaryMagazine;
if (magazine != null)
{
magazine.contents += amount;
weapon.MarkDirty();
}
}
}
void SetWeaponMagazineSize(Item weapon, int size)
{
BaseProjectile baseProjectile = weapon.GetHeldEntity() as BaseProjectile;
if (baseProjectile != null)
{
var magazine = baseProjectile.primaryMagazine;
if (magazine != null && magazine.capacity != size)
{
magazine.capacity = size;
weapon.MarkDirty();
}
}
}
void LoadDefaultMessages()
{
// В данном коде сообщения не выводятся в чат игроков
}
}
}
Этот код плагина EnhancedMagazine содержит функционал для выдачи пермишна игрокам, проверки его наличия и автоматического обновления количества патронов на оружиях после выдачи пермишна. Скопируйте этот код, скомпилируйте и загрузите на ваш сервер Rust для его использования. Если у вас возникнут дополнительные вопросы или понадобится дальнейшая помощь, не стесняйтесь обращаться!