Для доработки логики всего функционала плагина EnhancedMagazine в Rust, включая автоматическую замену ёмкости магазина на 38 патронов для оружия AK-47 при его взятии игроком, а также вывод информации об изменении ёмкости магазина в чат и логи, вам необходимо обновить код плагина следующим образом:Доработай логику всего функционала
C#:
using Oxide.Core;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("EnhancedMagazine", "YourName", "1.0.0")]
class EnhancedMagazine : RustPlugin
{
private Dictionary<ulong, Item> playerActiveWeapons = new Dictionary<ulong, Item>();
void Init()
{
LoadDefaultMessages();
}
void OnServerInitialized()
{
foreach (BasePlayer player in BasePlayer.activePlayerList)
{
foreach (Item item in player.inventory.AllItems())
{
OnPlayerItemAdded(player, item);
}
}
}
void OnPlayerItemAdded(BasePlayer player, Item item)
{
if (item.info.shortname == "rifle.ak47" || item.info.shortname == "rifle.ak47u")
{
SetWeaponMagazineSize(item, 38);
SendChatMessage(player, GetMessage("MagazineSizeChanged", player.UserIDString, item.info.displayName.english));
Puts($"Player {player.displayName} changed magazine size for {item.info.displayName.english} to 38 rounds.");
}
}
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 SendChatMessage(BasePlayer player, string message) => player.ChatMessage(message);
string GetMessage(string key, string playerId, params object[] args)
{
return lang.GetMessage(key, this, playerId).Replace("{0}", args.Length > 0 ? args[0].ToString() : string.Empty);
}
protected override void LoadDefaultMessages()
{
lang.RegisterMessages(new Dictionary<string, string>
{
{"MagazineSizeChanged", "Magazine size of {0} changed to 38 rounds."},
}, this);
}
}
}
Этот обновленный код плагина включает функционал автоматической замены ёмкости магазина на 38 патронов для оружия AK-47 при его взятии игроком, отправку сообщения об изменении ёмкости магазина в чат игрока и лог плагина, а также использование локализованных сообщений. Пожалуйста, протестируйте этот код после компиляции на вашем сервере Rust. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!