Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
skadjna

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

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

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

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

Edited by skadjna (see edit history)

Share this post


Link to post
Share on other sites

Recommended Posts

  • 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?) там отсутствует - поздравляю, ты прибавил строку к ничему, а затем этот базовый класс последним модом перекинулся на дочерние классы

Edited by XenoZD (see edit history)

Share this post


Link to post
Share on other sites



  • 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 отказывается конвертить, ни в первом, ни во втором случае

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0
11 часов назад, 123new сказал:

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

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

Edited by skadjna (see edit history)

Share this post


Link to post
Share on other sites
  • 0
11 часов назад, skadjna сказал:

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

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

Share this post


Link to post
Share on other sites
  • 0

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

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

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

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


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

Share this post


Link to post
Share on other sites
  • 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, а как дополнить массив без его перезаписи

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Edited by alex_good_kaban (see edit history)

Share this post


Link to post
Share on other sites
  • 0
Только что, alex_good_kaban сказал:

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

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

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

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0
1 минуту назад, alex_good_kaban сказал:

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

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

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

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

Share this post


Link to post
Share on other sites
  • 0
1 минуту назад, XenoZD сказал:

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

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

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

Share this post


Link to post
Share on other sites
  • 0
30 минут назад, skadjna сказал:

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


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

 

 

Share this post


Link to post
Share on other sites
  • 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;
    };

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0
1 минуту назад, NoNameUltima сказал:

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

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

inventorySlot[] +=
{             
"skd_hideweapon"
};

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

Share this post


Link to post
Share on other sites
  • 0
02.04.2023 в 01:56, XenoZD сказал:


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

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

 

Share this post


Link to post
Share on other sites
  • 0
8 часов назад, skadjna сказал:

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


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

Share this post


Link to post
Share on other sites
  • 0
Только что, XenoZD сказал:


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

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

 

Share this post


Link to post
Share on other sites
  • 0
1 минуту назад, skadjna сказал:

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

 


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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.