• Страница 1 из 1
  • 1
Форум » Мастерская » В помощь картоделу » Скрипты » Скрипт для ограничения переодевания
Скрипт для ограничения переодевания
Zealot
Среда, 18.02.2015, 16:55
Пост №: 1
Скрипт для ограничения переодевания игроков. Запрещает снимать каску, бронежилет, униформу. Если игрок одевает каску, бронежилет, униформу с трупа другого игрока, то ему возвращается тот элемент обмундирования, который был на момент начала миссии, инвентарь сохраняется последний.

Вставить в init.sqf:

Код
zlt_checkGear = {
    [] spawn {
       zlt_ch_run = true;
       sleep 5;
       zlt_ch_uniform  = uniform player;
       zlt_ch_headgear = headgear player;
       zlt_ch_vest = vest player;
       while {alive player} do {
          if (zlt_ch_run) then {
             if (uniform player != zlt_ch_uniform) then {
                _items = uniformItems player;
                removeUniform player;
                player addUniform zlt_ch_uniform;
                {player addItemToUniform _x} foreach _items;
             };
             if (headgear player != zlt_ch_headgear) then {
                removeHeadgear player;
                player addHeadgear zlt_ch_headgear;
             };
             if (vest player != zlt_ch_vest) then {
                _items = vestItems player;
                removeVest player;
                player addVest zlt_ch_vest;
                {player addItemToVest _x} foreach _items;
             };
          };
          sleep 1.5;
       };

    };
};

zlt_lockInvSlots = {
    waitUntil {!(isNull (findDisplay 602))};
    while {!(isNull (findDisplay 602))} do {// Keep the "uniform slot" control on lockdown. Else there are loop holes. No pun intended.
       ctrlEnable [6331, false];  
       ctrlEnable [6381, false]; // vest
       ctrlEnable [6240, false]; // headgear
       sleep 0.001;
    };   
};  

if (!isDedicated && hasInterface) then {
    [] spawn {
       waitUntil {!(isNull player)};
       player addEventHandler ["inventoryOpened", {_this spawn zlt_lockInvSlots;}];
       [] spawn zlt_checkGear;
    };
};
 

Автор темы
 
DrSl1m
Среда, 18.02.2015, 17:18
Пост №: 2
Можно скрипт упаковать в .sqf и вызывать в ините через
Код
[] execVM "zlt_checkGear.sqf";
?
Сообщение отредактировал DrSl1m - Среда, 18.02.2015, 17:18

 
Zealot
Среда, 18.02.2015, 17:34
Пост №: 3
Цитата DrSl1m ()
Можно скрипт упаковать в .sqf и вызывать в ините через Код
[] execVM "zlt_checkGear.sqf";
?
       Да.

Автор темы
 
Chief
Пятница, 20.02.2015, 09:22
Пост №: 4
Тесты скрипта выявили следующие глюки:

1) Можно задюпить разгрузки с патронами. тем самым увеличить кол-во патронов. 
2) Нельзя снять свои вещи. Например нельзя снять шапку для обозначения себя для отделения.
3) Если попробовать снять чужую вещь. то она одевается и тут же снимается, но твоя снятая одежда больше не надевается.

 
DrSl1m
Пятница, 20.02.2015, 10:14
Пост №: 5
Если миссии с внедрением этого скрипта попадут в ротацию, то имеет смысл убрать его до появления фикса.
 
freewood
Пятница, 20.02.2015, 14:20
Пост №: 6
Большая просьба, когда скрипт будет готов, оставьте его картоделам, не включайте в сборку и в обязательные условия для миссий.
 
Zealot
Пятница, 20.02.2015, 22:10
Пост №: 7
Цитата freewood ()
Большая просьба, когда скрипт будет готов, оставьте его картоделам, не включайте в сборку и в обязательные условия для миссий.
    Наверно сделаем по-другому, скрипт будет не ограничивать переодевание, а писать в логи если кто-то переодел униформу или бронежилет.

Автор темы
 
Zealot
Пятница, 20.02.2015, 22:11
Пост №: 8
Цитата DrSl1m ()
Если миссии с внедрением этого скрипта попадут в ротацию, то имеет смысл убрать его до появления фикса.
Да, лучше пока не использовать. Скрипт чисто экспериментальный.

Автор темы
 
DrSl1m
Суббота, 21.02.2015, 20:27
Пост №: 9
Может его слегка переделать?
Например, оставить невозможным снимать/менять шлем, а с разгрузкой/формой поступить иначе. Снял форму/разгрузку - она удаляется, выходит как наказание. Пытаешься снять разгрузку/форму с трупа - аналогично. Я не знаю таких ситуаций, чтобы случайно можно было снять форму или разгрузку.

 
Zealot
Пятница, 20.03.2015, 12:23
Пост №: 10
Цитата DrSl1m ()
Я не знаю таких ситуаций, чтобы случайно можно было снять форму или разгрузку.

Можно случайно мискликнуть правой клавишей и тогда разгрузка/форма поменяется с трупом. Но я подумаю, что тут еще можно сделать.

Автор темы
 
DrSl1m
Пятница, 20.03.2015, 12:51
Пост №: 11
Цитата Zealot ()
Можно случайно мискликнуть правой клавишей и тогда разгрузка/форма поменяется с трупом. Но я подумаю, что тут еще можно сделать.
Дюп может произойти, если одежда будет "прыгать", т.е. сниматься/одеваться (как это происходило со старым скриптом, игрок снимал одежду, а скрипт мгновенно возвращал её обратно, отсюда и дюп), значит, если избегать запрета на раздевание, то другие варианты должны работать вполне годно и без проблем.

 
Форум » Мастерская » В помощь картоделу » Скрипты » Скрипт для ограничения переодевания
  • Страница 1 из 1
  • 1
Поиск: