Давайте исправим ошибку CS0131 в вашем коде. Проблема заключается в том, что необходимо присваивать значение через свойство, а не напрямую. Вот исправленный код:Исправь ошибку Error while compiling: IncreaseWeaponMagazine.cs(29,32): error CS0131: The left-hand side of an assignment must be a variable, a property or an indexer
C#:
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("ReloadWeaponMagazine", "YourName", "1.0.0")]
class ReloadWeaponMagazine : RustPlugin
{
void OnPlayerAttack(BasePlayer player, HitInfo hitInfo)
{
if (hitInfo?.Weapon == null)
return;
var baseProjectile = hitInfo.Weapon.GetHeldEntity()?.GetComponent<BaseProjectile>();
if (baseProjectile == null)
return;
var magazine = baseProjectile.primaryMagazine;
if (magazine == null || (baseProjectile.ShortPrefabName != "rifle.ak" && baseProjectile.ShortPrefabName != "rifle.lr300"))
return;
if (magazine.contents == 30) // Проверка, что у игрока 30 патронов
{
int newContents = 38; // Новое количество патронов
var newMagazine = new ItemModProjectile.Magazine { ammoType = magazine.ammoType, contents = newContents, initialAmount = newContents };
baseProjectile.primaryMagazine = newMagazine;
baseProjectile.SendNetworkUpdateImmediate();
}
}
}
}
Этот исправленный код использует свойство для присвоения нового значения содержимому магазина. Попробуйте скомпилировать и загрузить этот исправленный плагин на сервер Rust. После этого протестируйте его работу для убедительности.
Если у вас возникнут другие вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться. Надеюсь, этот исправленный код поможет вам успешно решить проблему.