Ошибка CS1061 указывает на то, что методИсправь код Error while compiling: MagazineUpgradePlugin.cs(30,38): error CS1061: Type `BaseEntity' does not contain a definition for `SetFieldValue' and no extension method `SetFieldValue' of type `BaseEntity' could be found. Are you missing an assembly reference?
SetFieldValue не существует для типа BaseEntity. Вместо этого, вам следует использовать методы, предоставляемые самим типом или другими средствами, чтобы установить значение для поля. В данном случае, вы можете попробовать использовать соответствующий метод для установки значения поля "primaryMagazine". Вот обновленный код с использованием другого подхода для установки значения:
C#:
using Oxide.Core.Plugins;
using Oxide.Core;
using System.Collections.Generic;
using UnityEngine;
namespace YourPluginNamespace
{
public class MagazineUpgradePlugin : CSPlugin
{
private Dictionary<ulong, Item> playerActiveWeapons = new Dictionary<ulong, Item>();
void OnServerInitialized()
{
foreach (BasePlayer player in BasePlayer.activePlayerList)
{
Item weapon = GetWeaponByShortname(player, "rifle.ak47");
if (weapon != null)
{
SetWeaponMagazineSize(weapon, 38);
}
}
}
void OnPlayerLootItem(BasePlayer player, Item item)
{
if (item.info.shortname == "rifle.ak47")
{
SetWeaponMagazineSize(item, 38);
player.SendConsoleCommand("chat.add", 0, $"Размер магазина вашего {item.info.displayName.english} установлен на 38 патронов!");
}
}
void SetWeaponMagazineSize(Item weapon, int size)
{
BaseProjectile baseProjectile = weapon.GetHeldEntity() as BaseProjectile;
if (baseProjectile != null)
{
baseProjectile.primaryMagazine.capacity = size;
}
}
Item GetWeaponByShortname(BasePlayer player, string shortname)
{
foreach (Item item in player.inventory.containerBelt.itemList)
{
if (item.info.shortname == shortname)
{
return item;
}
}
return null;
}
}
}
В этом обновленном коде я использовал метод
SetWeaponMagazineSize, который приводит BaseEntity к BaseProjectile для установки размера магазина. Пожалуйста, попробуйте использовать этот обновленный код и проверьте, исправляет ли это ошибку CS1061.