Перейти к содержимому


Фотография

Наследование классов


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 08 November 2015 - 17:13

Хочу сделать патч для конфига. Исходный конфиг:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

В нем есть класс:

    class rhsusf_m1025_w_m2: rhsusf_m1025_w
    {
        class Turrets: Turrets
        {
            class M2_Turret: MainTurret
            {
                class ViewOptics: ViewOptics
                {
                    initFov=
                    minFov=
                    maxFov=
                };
            };
        };
    };

Мне нужно сделать патч для этого конфига, чтобы он изменял показатели initFOV, minFOV и maxFOV.
Будет ли структура ниже правильной? Можно ли ее упростить/сократить?
 

class CfgVehicles
{
	class LandVehicle;
	class Car: LandVehicle
	{
		class NewTurret;
	};
	class Car_F: Car
	{
		class AnimationSources;
		class Turrets
		{
			class MainTurret: NewTurret
			{
				disableSoundAttenuation=1;
				class ViewOptics;
			};
		};
		class HitPoints
		{
			class HitLFWheel;
			class HitLF2Wheel;
			class HitRFWheel;
			class HitRF2Wheel;
			class HitGlass1;
			class HitGlass2;
			class HitGlass3;
			class HitGlass4;
			class HitGlass5;
			class HitGlass6;
		};
	};
	class MRAP_01_base_F: Car_F
	{
		class Sounds;
		class EventHandlers;
	};
	class rhsusf_hmmwe_base: MRAP_01_base_F
	{
	};
	class rhsusf_m998_w_2dr: rhsusf_hmmwe_base
	{
		class Turrets: Turrets
		{
		};
	};
	class rhsusf_m998_w_4dr: rhsusf_m998_w_2dr
	{
		class Turrets: Turrets
		{
		};
	};
	class rhsusf_m998_w_4dr_halftop: rhsusf_m998_w_4dr
	{
		class Turrets: Turrets
		{
		};
	};
	class rhsusf_m998_w_4dr_fulltop: rhsusf_m998_w_4dr_halftop
	{
		class Turrets: Turrets
		{
		};
	};
	class rhsusf_m1025_w: rhsusf_m998_w_4dr_fulltop
	{
		class Turrets: Turrets
		{
		};
	};
	class rhsusf_m1025_w_m2: rhsusf_m1025_w
	{
		class Turrets: Turrets
		{
			class M2_Turret: MainTurret
			{
				class ViewOptics: ViewOptics
				{
					initFov=
					minFov=
					maxFov=
				};
			};
		};
	};
};

Сообщение отредактировал ruPal: 08 November 2015 - 17:15

  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 08 November 2015 - 18:35

class LandVehicle;
	class Car: LandVehicle
	{
		class NewTurret;
	};
	class Car_F: Car
	{
		class AnimationSources;
		class Turrets
		{
			class MainTurret: NewTurret
			{
				disableSoundAttenuation=1;

Меняя этот параметр

disableSoundAttenuation=1;

в этом классе, вы меняете значение этого параметра, во всех остальных классах его наследующих, в том числе и ванильных.


Сообщение отредактировал SteelRat: 08 November 2015 - 18:36

  • 0

#3 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 08 November 2015 - 18:40

ЗЫ

Не умеете залить файл на этот форум?

Как вы считаете, ради того что бы вам помочь, я буду ставить себе в систему всякие мега ускорители? Правильно! Не буду!

 

Как вариант для конфигов и большого куска кода

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 0

#4 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 08 November 2015 - 19:34

Нет, сам стараюсь не создавать лишних проблем. На странице скачивания сразу под кнопкой есть ссылка - скачать через браузер. Файл будет на рабочем столе. К сожалению, нет возможности перезалить в ближайшие несколько дней.

 

UPD: Перезалил на Pastebin:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


Сообщение отредактировал ruPal: 08 November 2015 - 20:51

  • 0

#5 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 08 November 2015 - 23:02

Этого

class CfgVehicles {
	class LandVehicle;
	class Car: LandVehicle {
		class NewTurret;
	};
	class Car_F: Car {
		class Turrets {
			class MainTurret: NewTurret{
				class ViewOptics;
			};
		};
	};
	class MRAP_01_base_F: Car_F {};
	class rhsusf_hmmwe_base: MRAP_01_base_F {};
	class rhsusf_m998_w_2dr: rhsusf_hmmwe_base{};
	class rhsusf_m998_w_4dr: rhsusf_m998_w_2dr {};
	class rhsusf_m998_w_4dr_halftop: rhsusf_m998_w_4dr {};
	class rhsusf_m998_w_4dr_fulltop: rhsusf_m998_w_4dr_halftop {};
	class rhsusf_m1025_w: rhsusf_m998_w_4dr_fulltop {};
	
	class rhsusf_m1025_w_m2: rhsusf_m1025_w {
		class Turrets: Turrets {
			class M2_Turret: MainTurret {
				class ViewOptics: ViewOptics {
					initFov=
					minFov=
					maxFov=
				};
			};
		};
	};
};

по идее должно хватить, короче уже не куда), тут как то зря, по мне, навешали наследований одного другим, готовых классов, обычно класс с приставкой _Base и создаётся для того, что бы на его базе и создавать сами юзабельные классы, и каждый новый класс создаётся на основе базового, исключение  когда в следующем классе нужно сменить всего лишь текстуру или пару строчек. и такой подход разумен в плане, не придётся перечислять весь конфиг, что бы добраться до последнего класса).


  • 0

#6 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 09 November 2015 - 12:13

Спасибо, попробую. Меня волнует вопрос, при таком наследовании, как Выше, что означает строчка:
class
rhsusf_m998_w_4dr: rhsusf_m998_w_2dr {};

Не получим ли мы в итоге класс rhsusf_m998_w_4dr, который будет являться копией класса rhsusf_m998_w_2dr? Т. е. произойдет перезапись старого rhsusf_m998_w_4dr на новый rhsusf_m998_w_4dr, но с параметрами из rhsusf_m998_w_2dr?

 


  • 0

#7 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 09 November 2015 - 19:20

Спасибо, попробую. Меня волнует вопрос, при таком наследовании, как Выше, что означает строчка:
class
rhsusf_m998_w_4dr: rhsusf_m998_w_2dr {};

Не получим ли мы в итоге класс rhsusf_m998_w_4dr, который будет являться копией класса rhsusf_m998_w_2dr? Т. е. произойдет перезапись старого rhsusf_m998_w_4dr на новый rhsusf_m998_w_4dr, но с параметрами из rhsusf_m998_w_2dr?

 

Скажем так, таковы правила конфигурации, изменится только то, что вы измените, на пальцах эту тему достаточно проблематично освещать, только активная практика даст опыт и ответы на вопросы).


ЗЫ

Вот это

class rhsusf_hmmwe_base: MRAP_01_base_F {};

по сути тоже самое объявления класса rhsusf_hmmwe_base который вы собираетесь использовать, с разнице, указывается ещё родительский класс, ибо мы собираемся менять то что объявлено цепочкой родительских классов выше.


  • 0




Яндекс.Метрика