Для решения ошибки CS1061, где указывается отсутствие определения для
GetComponent
в типе
GameObjectRef
, вам нужно изменить способ доступа к компонентам объекта. Вместо использования
GetComponent
, вы можете обратиться к объекту через методы доступа к его компонентам. Ниже приведен исправленный код плагина с использованием другого метода доступа к компонентам:
C#:
using Oxide.Core;
using Oxide.Core.Plugins;
using System;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("RecoilControl", "YourName", "1.0.0")]
class RecoilControl : RustPlugin
{
void OnServerInitialized()
{
foreach (var itemDefinition in ItemManager.itemList)
{
if (itemDefinition.Shortname.Contains("pistol") || itemDefinition.Shortname.Contains("rifle"))
{
ModifyRecoil(itemDefinition);
}
}
}
private void ModifyRecoil(ItemDefinition itemDefinition)
{
var heldEntityPrefab = itemDefinition.GetComponent<ItemModEntity>()?.entityPrefab;
if (heldEntityPrefab != null)
{
var heldEntity = heldEntityPrefab.Get().GetComponent<HeldEntity>();
if (heldEntity != null)
{
var recoil = heldEntity.recoil;
if (recoil != null)
{
recoil.minYaw *= 0.5f; // Уменьшаем отдачу по горизонтали
recoil.maxYaw *= 0.5f;
recoil.minPitch *= 0.5f; // Уменьшаем отдачу по вертикали
recoil.maxPitch *= 0.5f;
}
}
}
}
}
}
В этом исправленном коде я использовал методы доступа к компонентам объекта через
Get()
и
GetComponent
, чтобы получить доступ к
HeldEntity
и параметрам отдачи. Теперь код должен корректно уменьшать отдачу по вертикали и горизонтали для всех пистолетов и винтовок в игре Rust.
Пожалуйста, добавьте этот исправленный код в ваш плагин на сервере Rust и протестируйте его. Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться!