Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
skadjna

Добавление в массив через +=

Всем привет. 
Столкнулся с проблемой перечисления слотов, в которые можно сунуть тот или иной предмет. Видел на форуме рекомендации добавлять в массив слоты через +=, типа

inventorySlot []+={"mySlot1","mySlot2"}; 

Но в итоге в игре предмет можно сунуть только в перечисленные выше слоты, а не в изначальные + указанные выше, из чего делаю вывод, что массив не дополняется, а перезаписывается. В чем моя проблема? Пакую Микерой, предварительно забинарив config.cpp с такими строчками (В .PBO не только конфиги)

Изменено пользователем skadjna (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0
5 часов назад, skadjna сказал:

class PP19V_Base: Rifle_Base     {         inventorySlot[] +=         {             "skd_hideweapon"         };         magazines[]=         {             "dp_mag_pp19v_60Rnd",             "dp_mag_pp19v_30Rnd"         };         recoilModifier[]={0.6,0.6,0.6};         repairCosts[]={10};         barrelArmor=9;     };


class PP19V_Base: Rifle_Base
    {
        inventorySlot[] +=
        {
            "skd_hideweapon"
        };
        magazines[]=
        {
            "dp_mag_pp19v_60Rnd",
            "dp_mag_pp19v_30Rnd"
        };
        recoilModifier[]={0.6,0.6,0.6};
        repairCosts[]={10};
        barrelArmor=9;
    };

И с переносом строки, и в одну строку это не работает. Пробелы по наблюдениям тоже роли не играют


Ты наследуешь класс от Rifle_Base, а в каком классе конкретно прописаны слоты? (по ванили или по моду я так и не понял)
Если ты моддишь класс ОТ какого-то, за основу берутся переменные этого класса. Если inventoryslot (кстати ты же не перепутал с inventoryslotS?) там отсутствует - поздравляю, ты прибавил строку к ничему, а затем этот базовый класс последним модом перекинулся на дочерние классы

Изменено пользователем XenoZD (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах



  • 0

так попробуй
inventorySlot +={"mySlot1","mySlot2"}; 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
4 часа назад, NoNameUltima сказал:

так попробуй
inventorySlot +={"mySlot1","mySlot2"}; 

Вырезка с лога:
 

class dp_PP19V: PP19V_Base
{
inventorySlot+={"skd_hideweapon"};

\LRP_Weapons_recfg\addons\firearms\pp19v\config.cpp Rapify:Rap: In File \LRP_Weapons_recfg\addons\firearms\pp19v\config.cpp: circa Line 35 Expected ]={

Попробовал 

inventorySlot+[]={"skd_hideweapon"};

Аналогично, даже через CfgConvert отказывается конвертить, ни в первом, ни во втором случае

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А попробуй без микеры. Помнится кто-то говорил она такие преобразования не переваривает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
11 часов назад, 123new сказал:

А попробуй без микеры. Помнится кто-то говорил она такие преобразования не переваривает

image.png.698c12fc51cdfb5c434d3c3b8ee366c2.png
Не-а, и так и эдак пробовал, и  "[]+=", и "+=". Без толку.  
Примечательно, что тут же на форуме в сентябре 2022 советовали такой метод. Неужели бисы его прикрыли?

Изменено пользователем skadjna (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
11 часов назад, skadjna сказал:

image.png.698c12fc51cdfb5c434d3c3b8ee366c2.png
Не-а, и так и эдак пробовал, и  "[]+=", и "+=". Без толку.  
Примечательно, что тут же на форуме в сентябре 2022 советовали такой метод. Неужели бисы его прикрыли?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

@skadjna Подскажите что вы хотите изменить? config.cpp от своего мода или изменить своим конфигом другой мод
Если свой мод то перечисление задается таким образом
 

inventorySlot[]=
		{
			"Mask",
			"Back"
		};

Если ты изменяешь чужой мод(или ванильный) то ты должен скопировать с этого мода те слоты которые прописаны и к ним уже добавить свои новые. Т.е. когда ты вызываешь в классе функцию ты ее полностью заменяешь, а не добавляешь к ней.
 

inventorySlot[]=
		{
			"Mask", // Слот который указан изначально
			"Back", // Слот который указан изначально
			"MySlot1", // Новый слот
			"MySlot1"  // Новый слот
		};


P.s
inventorySlot[]= {} - слот куда прикрепляется редактируемый объект
attachments[]= {} - слоты в самом редактируемом объекте

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
4 минуты назад, alex_good_kaban сказал:

@skadjna Подскажите что вы хотите изменить? config.cpp от своего мода или изменить своим конфигом другой мод
Если свой мод то перечисление задается таким образом
 

inventorySlot[]= { "Mask", "Back" };


inventorySlot[]=
		{
			"Mask",
			"Back"
		};

Если ты изменяешь чужой мод(или ванильный) то ты должен скопировать с этого мода те слоты которые прописаны и к ним уже добавить свои новые. Т.е. когда ты вызываешь в классе функцию ты ее полностью заменяешь, а не добавляешь к ней.
 

inventorySlot[]= { "Mask", // Слот который указан изначально "Back", // Слот который указан изначально "MySlot1", // Новый слот "MySlot1" // Новый слот };


inventorySlot[]=
		{
			"Mask", // Слот который указан изначально
			"Back", // Слот который указан изначально
			"MySlot1", // Новый слот
			"MySlot1"  // Новый слот
		};


P.s
inventorySlot[]= {} - слот куда прикрепляется редактируемый объект
attachments[]= {} - слоты в самом редактируемом объекте

Я реконфигурирую предметы из другого мода
Всё это я и так знаю. Что прикажете делать, если мне надо изменить этот параметр не для 1 предмета, а для 50, к примеру?. Лезть в конфиг каждого предмета и перечислять его inventorySlot не самое лучшее решение. Как реконфигурировать предметы я знаю, перечитайте первое сообщение в треде. Вопрос стоит не в том как добавить inventorySlot, а как дополнить массив без его перезаписи

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Ну через config.cpp вы это точно не сможете сделать. Через скрипт возможно еще попробовать но тут я вам помочь не смогу, не особо силен в скриптах. Сейчас поищу пару вырезок скину может помогут. А так да ручками править каждый слот по отдельности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

К тому же способ с "жесткой" перезаписью никоим образом не годится для базовых вещей по типу одежды или вооружения. Пример:Есть моды, которые перезаписывают Rifle_Base, например. Оружейные стойки всякие, шкафчики и тому подобное работают через создание своих слотов и перечисление этих самых слотов в том же Rifle_Base. Перезаписав в каком-то оружии inventorySlot я лишу возможности сунуть это оружие в стойку. Разве что если перечислю вообще все слоты, в которые это оружие можно пихать. А если мод не один, а 3? Нехилое количество строчек для каждой пушки выходит

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Может тогда проще сделать конфиг на базовые классы на которые ссылаются все виды оружия. Указать все слоты которые будут использоваться на сервере. И сделать его загрузку после загрузки всех модов, перечислив их в requiredAddons. Тогда будет хоть поменьше строк.

Изменено пользователем alex_good_kaban (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
Только что, alex_good_kaban сказал:

Может тогда проще сделать конфиг на базовые модели на которые ссылаются все виды оружия. Указать всё количество слотов которые будут использоваться на сервере. И сделать его загрузку после загрузки всех модов, перечислив их в requiredAddons. Тогда будет хоть поменьше строк.

Если бы это подходило я бы просто сделал 
 

class Rifle_Base
{
inventorySlot []={slot1,slot2,....};
};

Задача стоит дать inventorySlot определенному списку вооружения. Оттого и тред создан по добавлению в массив, а не перезаписи массива

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

На сколько я понял по работе с конфигами, добавить через него возможно только класс, переменные внутри класса только заменяются. Через скрипт скорее всего такое возможно сделать, но и то мне попадалась только полная замена переменной.  Из моих предложений заморочиться и написать под каждое оружие по отдельности слоты, тем более что вы хотите добавить слоты только определенному оружию. По скриптам к сожалению не помогу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 минуту назад, alex_good_kaban сказал:

На сколько я понял по работе с конфигами, добавить через него возможно только класс, переменные внутри класса только заменяются. Через скрипт скорее всего такое возможно сделать, но и то мне попадалась только полная замена переменной.  Из моих предложений заморочиться и написать под каждое оружие по отдельности слоты, тем более что вы хотите добавить слоты только определенному оружию. По скриптам к сожалению не помогу.

Вы, кажется, не поняли.
Есть способ добавления в массив, он даже упоминался тут, на сплатуне 

 
Метод есть, вопрос в том остался ли он и что нужно для его реализации.
Пожалуйста, читайте топикстартер внимательнее. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

@skadjna  Я все прекрасно понял что было написано в топикстартере. И пишу вам по факту что такого  метода я не видел ни где за последние переработанные 2000 конфигов. Да может существовать такое, не отрицаю. Исходя из этого я вам просто предложил  выше выход из ситуации прописав ручками каждый нужный конфиг. Если не устраивает, ждите дальше может кто поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Так, я пропустил половину темы как только увидел вкиды о том что += не работает
Очень даже работает, насколько я помню. Наоборот даже в какой-то момент у меня это было единственным решением

И первое что пришло бы мне в голову - что ТРЕТИЙ (или второй, который ты меняешь) мод идёт в очереди загрузки после твоего, и вот как раз он перезаписывает слоты обратно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 минуту назад, XenoZD сказал:

Так, я пропустил половину темы как только увидел вкиды о том что += не работает
Очень даже работает, насколько я помню. Наоборот даже в какой-то момент у меня это было единственным решением

И первое что пришло бы мне в голову - что ТРЕТИЙ (или второй, который ты меняешь) мод идёт в очереди загрузки после твоего, и вот как раз он перезаписывает слоты обратно

RequiredAddons настроены так, что мой мод на перезапись слотов идет последним. Об этом также говорит то, что предмет можно сунуть только в перечисленные в конфиге из мода слоты. Следовательно мод грузится когда надо, но "+=" не дописывает в массив, а перезаписывает его

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
30 минут назад, skadjna сказал:

RequiredAddons настроены так, что мой мод на перезапись слотов идет последним. Об этом также говорит то, что предмет можно сунуть только в перечисленные в конфиге из мода слоты. Следовательно мод грузится когда надо, но "+=" не дописывает в массив, а перезаписывает его


А можно увидеть весь класс из конфига? Только одну строчку вижу

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
32 минуты назад, XenoZD сказал:


А можно увидеть весь класс из конфига? Только одну строчку вижу

 

 

class PP19V_Base: Rifle_Base
    {
        inventorySlot[] +=
        {
            "skd_hideweapon"
        };
        magazines[]=
        {
            "dp_mag_pp19v_60Rnd",
            "dp_mag_pp19v_30Rnd"
        };
        recoilModifier[]={0.6,0.6,0.6};
        repairCosts[]={10};
        barrelArmor=9;
    };

И с переносом строки, и в одну строку это не работает. Пробелы по наблюдениям тоже роли не играют

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

раз ты хочешь свое добавлять ПОСЛЕ чьего то, - зависимость своему моду прописывай, от всех тех модов которые что то там перекрыли, надобавляли....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 минуту назад, NoNameUltima сказал:

раз ты хочешь свое добавлять ПОСЛЕ чьего то, - зависимость своему моду прописывай, от всех тех модов которые что то там перекрыли, надобавляли....

А как это влияет на добавление в массив, пусть даже после всего, что там может перекрывать? Метод или работает и добавляет в массив, а после перезаписывается каким-то модом,или перезаписывает весь массив, или не работает вовсе. Так вот он перезаписывает весь массив-предмет становится можно сунуть только в тот слот, что я указываю через "+="
 

inventorySlot[] +=
{             
"skd_hideweapon"
};

Предмет должен соваться за плечо и в этот слот, если всё работает как надо. Но суется только в этот слот. Делаем вывод, что "+=" не добавляет в массив, а перезаписывает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
02.04.2023 в 01:56, XenoZD сказал:


Ты наследуешь класс от Rifle_Base, а в каком классе конкретно прописаны слоты? (по ванили или по моду я так и не понял)
Если ты моддишь класс ОТ какого-то, за основу берутся переменные этого класса. Если inventoryslot (кстати ты же не перепутал с inventoryslotS?) там отсутствует - поздравляю, ты прибавил строку к ничему, а затем этот базовый класс последним модом перекинулся на дочерние классы

Т.е. += не сработает если внутри родительского кфг нет этой строчки (если она наследуется от того же Rifle_Base, например), понял, благодарю. Будем перерабатывать.
 inventoryslotS вообще первый раз вижу. Что это за параметр?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
8 часов назад, skadjna сказал:

inventoryslotS вообще первый раз вижу. Что это за параметр?


Пришлось самому перепроверять. slotS это какие слоты есть у чего-то. Например у машины или зомби. sloT это в какой слот можно положить. Тогда всё в порядке

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
Только что, XenoZD сказал:


Пришлось самому перепроверять. slotS это какие слоты есть у чего-то. Например у машины или зомби. sloT это в какой слот можно положить. Тогда всё в порядке

Я почему-то думал что за список "дырок" имеющихся у предмета отвечает Attachments. Или между ними "="?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 минуту назад, skadjna сказал:

Я почему-то думал что за список "дырок" имеющихся у предмета отвечает Attachments. Или между ними "="?

 


Я сейчас глянул лишь что в эту переменную богемы записывали и для каких классов. Чтобы на этот вопрос ответить надо идти связь переменных со скриптами искать а мне таак впадлу

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.