Ошибка 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.