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


Фотография

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

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

#1021 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 09 January 2018 - 20:24

fn_createLoot = {




_pos = _this select 0;
_marker =_this select 1;
_pos set [2,0];
_name ="fn_createLoot" +  (str _marker);
_str = ([diag_activeSQFScripts,{(_x select 0) == _name}]call BIS_fnc_conditionalSelect)select 0;
  if(_str == _name)exitWith{};
scriptName _name;
_array = [
"Land_CerealsBox_F",
"Land_Can_V1_F",
"Land_Can_V2_F",
"Land_Can_V3_F",
"B_AssaultPack_khk",
"B_Kitbag_rgr",
"Land_Ricebox_F",
"Land_TacticalBacon_F",
"Land_Camping_Light_F",
"Land_BakedBeans_F",
"B_FieldPack_khk",
"Land_BottlePlastic_V2_F",
"Land_Canteen_F",
"B_OutdoorPack_blk",
"Land_Bandage_F",
"Land_Basketball_01_F",
"Land_CanisterFuel_F",
"Land_Football_01_F",
"Land_Suitcase_F",
"B_TacticalPack_rgr",
"Land_GamingSet_01_console_F",
"Land_CarBattery_02_F",
"Land_GamingSet_01_camera_F",
"Land_FMradio_F",
"arifle_Katiba_F",
"arifle_Katiba_C_F",
"arifle_Mk20_F",
"arifle_Mk20C_F",
"Land_PowderedMilk_F",
"Land_CarBattery_01_F",
"Land_Laptop_F",
"Land_MobilePhone_old_F",
"Land_GamingSet_01_controller_F",
"Land_HandyCam_F",
"Land_MobilePhone_smart_F"
];
_deleteobjs = nearestObjects [_pos,_array,300];
if((count _deleteobjs) != 0 )then{
  {
 _done = _x spawn{
  uisleep 1;
  if(!isnull _this)then{
    deletevehicle _this
   };
  };
  waitUntil {scriptDone _done};
    }foreach _deleteobjs
};

_buildings = nearestObjects [_pos, ["building"],300];
      {
       _done =  [_x,_array] spawn{
          uisleep 5;
        {
          _pos = _x;
          _classname = selectRandom (_this select 1);
          if(_classname isKindOf "Bag_Base" or _classname isKindOf ["Rifle", configFile >> "CfgWeapons"])then{
            _holder = createVehicle [ "GroundWeaponHolder_Scripted",[0,0,0], [], 0, "CAN_COLLIDE"];
                _holder setpos _pos;
             if(_classname isKindOf ["Rifle", configFile >> "CfgWeapons"])exitWith{
               _ammo = getArray (configFile >> "CfgWeapons" >> _classname >> "magazines");
               _holder addMagazineCargoGlobal [ selectRandom _ammo,3];
               _holder  addWeaponCargoGlobal [_classname, 1];
            };
             _holder  addBackpackCargoGlobal [_classname, 1];
            }else{
            _item = _classname createVehicle [0,0,0];
            _item setpos _pos
          }

         }foreach ((_this select 0) buildingpos -1)
       };
       waitUntil {scriptDone _done};
      }foreach _buildings;
      ["лут заспавнился","hint"]call bis_fnc_mp;

    };

  • 0

#1022 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 09 January 2018 - 21:00

запускаю долгий поиск и собирание в массив
 

[] spawn {FFA_MOST = (nearestObjects[getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition"), [], 10000]) call compile preprocessFileLineNumbers("server\functions2\fnc_fnc_most.sqf");};

хочу собрать все мосты в массив, но это долго и затратно
решил обмануть судьбу: один раз просканировать, скопировать и уже готовый массив добавить в миссию
 

FFA_MOST =  [135221: ibrmost1.p3d,135187: ibrmost1.p3d,135195: ibrmost1.p3d,135201: ibrmost1.p3d,134896: ibrmost1.p3d,135204: ibrmost1.p3d,...] 

но тут проблема: при считывании этого массива игра выдает ошибку

2018/01/09, 19:42:31 Error in expression < exitwith {FFA_MOST =  [135221: ibrmost1.p3d,135187: ibrmost1.p3d,135195: ibrmos>
2018/01/09, 19:42:31   Error position: <.p3d,135187: ibrmost1.p3d,135195: ibrmos>
2018/01/09, 19:42:31   Error Missing ]
2018/01/09, 19:42:31 File mpmissions\__cur_mp.lingor\config.sqf, line 69

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


  • 0

#1023 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 сообщений

Отправлено 09 January 2018 - 21:30

Dimon UA, боюсь, что ничего лучше чем расстановка маркеров и поиск в пределах небольшого радиуса от них, или даже напрямую обращения по ID, нету.


  • 0

#1024 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 09 January 2018 - 21:40

не понимаю - как можно обратиться к обьекту по его айди?

интересно а есть ли варианты как-нить выдернуть обьекты и занести в массив  из аддона острова? 

 

глупо конечно: для того чтобы найти все мосты нужно сканировать абсолютно всё: каждую комаху

 

Не понятно: когда в игре массив создается - он игрой читается, когда я тот же массив прописываю - уже не читается. Мне кажется есть какой-то способ подружить массив обьектов с его считыванием игрой


Сообщение отредактировал Dimon UA: 10 January 2018 - 04:51

  • 0

#1025 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 09 January 2018 - 22:01

 

запускаю долгий поиск и собирание в массив
 

[] spawn {FFA_MOST = (nearestObjects[getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition"), [], 10000]) call compile preprocessFileLineNumbers("server\functions2\fnc_fnc_most.sqf");};

хочу собрать все мосты в массив, но это долго и затратно
решил обмануть судьбу: один раз просканировать, скопировать и уже готовый массив добавить в миссию
 

FFA_MOST =  [135221: ibrmost1.p3d,135187: ibrmost1.p3d,135195: ibrmost1.p3d,135201: ibrmost1.p3d,134896: ibrmost1.p3d,135204: ibrmost1.p3d,...] 

но тут проблема: при считывании этого массива игра выдает ошибку

2018/01/09, 19:42:31 Error in expression < exitwith {FFA_MOST =  [135221: ibrmost1.p3d,135187: ibrmost1.p3d,135195: ibrmos>
2018/01/09, 19:42:31   Error position: <.p3d,135187: ibrmost1.p3d,135195: ibrmos>
2018/01/09, 19:42:31   Error Missing ]
2018/01/09, 19:42:31 File mpmissions\__cur_mp.lingor\config.sqf, line 69

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

нужен массив из мостов обектов?

нужен массив из мостов обектов?и в целом какая цель просто вопрос не оч понятен что с чем дружить и на какой карте=))просто то что ты добовляешь в миску для нее не значит ни какой инфы кроме как набора букв в массиве. тебе надо глобально вернуть все мосты если он есть как объекты(классы) в конфиге можно  через "worldsize * sqrt 2"

 вот напримере так:

-----"bridge_base_F" придумаyный класс----

_мосты =  nearestObjects [[0,0,0],["bridge_base_F"],worldsize * sqrt 2];

Сообщение отредактировал lopster102: 09 January 2018 - 22:13

  • 0

#1026 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 сообщений

Отправлено 09 January 2018 - 22:05

не понимаю - как можно обратиться к обьекту по его айди?

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


А далее пользуемся альтернативным синтаксисом №3 команды

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

.

 

Мне кажется есть какой-то способ подружить массив обьектов с его считыванием игрой

Вряд ли. Это не простой массив, содержащий числа или строки, а массив ссылок на объекты, которые только для удобства восприятия выглядят как "135221: ibrmost1.p3d".
 
P. S.
Кстати, если не ошибаюсь, то 135221 -- ID.


Сообщение отредактировал Schatten: 09 January 2018 - 22:09

  • 0

#1027 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 09 January 2018 - 22:13

nearRoads видит мост как обьект - всем спасибо: вопрос решен


Сообщение отредактировал Dimon UA: 09 January 2018 - 22:15

  • 0

#1028 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 сообщений

Отправлено 09 January 2018 - 22:14

Dimon UA, а не дорожное полотно на нём?


  • 0

#1029 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 09 January 2018 - 22:16

Dimon UA, а не дорожное полотно на нём?

ну там обьект и есть кусок моста сразу уже с дорожным полотном - одно целое


  • 0

#1030 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 сообщений

Отправлено 09 January 2018 - 22:19

_мосты =  nearestObjects [[0,0,0],["bridge_base_F"],worldsize * sqrt 2];

Лучше так:

_worldHalfSize = worldSize / 2;

_bridges = nearestObjects [[_worldHalfSize, _worldHalfSize], ["bridge_base_F"], (sqrt 2) * _worldHalfSize];

 

 

Dimon UA, а не дорожное полотно на нём?

ну там обьект и есть кусок моста сразу уже с дорожным полотном - одно целое

 

Ясно.


Сообщение отредактировал Schatten: 09 January 2018 - 22:23

  • 0

#1031 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 09 January 2018 - 22:23

 

_мосты =  nearestObjects [[0,0,0],["bridge_base_F"],worldsize * sqrt 2];

Так ты меньше четверти карты просканируешь.

да тут прикол -  что на лингоре мост не имеет класса


  • 0

#1032 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 сообщений

Отправлено 09 January 2018 - 22:25

да тут прикол -  что на лингоре мост не имеет класса

Тогда по ID. Или nearRoads видит?


  • 0

#1033 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 09 January 2018 - 22:27

 

 

_мосты =  nearestObjects [[0,0,0],["bridge_base_F"],worldsize * sqrt 2];

Так ты меньше четверти карты просканируешь.

да тут прикол -  что на лингоре мост не имеет класса

 

не ну в целом просто интересно че там у тебя творится=))как бы в чем твоя идея была?


  • 0

#1034 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 09 January 2018 - 22:45

не ну в целом просто интересно че там у тебя творится=))как бы в чем твоя идея была?


  • 0

#1035 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 09 January 2018 - 22:50

не ну в целом просто интересно че там у тебя творится=))как бы в чем твоя идея была

топчик арма 2=) ну там все посложней....


Сообщение отредактировал lopster102: 09 January 2018 - 22:50

  • 0

#1036 OFFLINE   AlexDem

AlexDem

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 10 January 2018 - 16:04

Вопрос небольшой... 

Вот допустим есть сервер, к которому есть доступ с открытой консолью.

Получаем админа, заходим зевсом. Создаем какой то объект командой _veh = "C_Offroad_01_F" createVehicle [100,100,0];

На карте появляется машинка, но Зевсом с ней ничего нельзя поделать, ни поменять ни передвинуть. Она недоступна для изменения. Как спавнить объекты, чтобы потом Зевс мог их менять? Ну кроме того, чтобы просто их из инвентаря достать?


  • 0

#1037 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 10 January 2018 - 16:40

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


  • 1

#1038 OFFLINE   LumenG

LumenG

    Рядовой

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

Отправлено 10 January 2018 - 18:02

Доброго времени суток. Я думаю, все уже знают про модификацию Лайф, в конкретном случае АлтисЛайф.
Существует слот полиции, медиков и гражданский слот. В гражданском слоте можно делать группировки с "лицензиями", которые дают возможность носить определенное оружие только членам данных группировок и т.д. Так вот, для слота полиции (синего слота) можно прописать наручники, т.е. возможность связывать людей в зоне, где нельзя связать гражданскому слоту. Возник вопрос, как прописать такую же возможность гражданской группировке? Ибо в случае с синим слотом эта возможность на весь слот, а как сделать это только одной группировке в гражданском слоте?


  • 0

#1039 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 11 January 2018 - 19:40

fn_createLoot = {




_pos = _this select 0;
_marker =_this select 1;
_pos set [2,0];
_name ="fn_createLoot" + (str _marker);
_str = ([diag_activeSQFScripts,{(_x select 0) == _name}]call BIS_fnc_conditionalSelect)select 0;
if(_str == _name)exitWith{};
scriptName _name;
_array = [
"Land_CerealsBox_F",
"Land_Can_V1_F",
"Land_Can_V2_F",
"Land_Can_V3_F",
"B_AssaultPack_khk",
"B_Kitbag_rgr",
"Land_Ricebox_F",
"Land_TacticalBacon_F",
"Land_Camping_Light_F",
"Land_BakedBeans_F",
"B_FieldPack_khk",
"Land_BottlePlastic_V2_F",
"Land_Canteen_F",
"B_OutdoorPack_blk",
"Land_Bandage_F",
"Land_Basketball_01_F",
"Land_CanisterFuel_F",
"Land_Football_01_F",
"Land_Suitcase_F",
"B_TacticalPack_rgr",
"Land_GamingSet_01_console_F",
"Land_CarBattery_02_F",
"Land_GamingSet_01_camera_F",
"Land_FMradio_F",
"arifle_Katiba_F",
"arifle_Katiba_C_F",
"arifle_Mk20_F",
"arifle_Mk20C_F",
"Land_PowderedMilk_F",
"Land_CarBattery_01_F",
"Land_Laptop_F",
"Land_MobilePhone_old_F",
"Land_GamingSet_01_controller_F",
"Land_HandyCam_F",
"Land_MobilePhone_smart_F"
];
_deleteobjs = nearestObjects [_pos,_array,300];
if((count _deleteobjs) != 0 )then{
{
_done = _x spawn{
uisleep 1;
if(!isnull _this)then{
deletevehicle _this
};
};
waitUntil {scriptDone _done};
}foreach _deleteobjs
};

_buildings = nearestObjects [_pos, ["building"],300];
{
_done = [_x,_array] spawn{
uisleep 5;
{
_pos = _x;
_classname = selectRandom (_this select 1);
if(_classname isKindOf "Bag_Base" or _classname isKindOf ["Rifle", configFile >> "CfgWeapons"])then{
_holder = createVehicle [ "GroundWeaponHolder_Scripted",[0,0,0], [], 0, "CAN_COLLIDE"];
_holder setpos _pos;
if(_classname isKindOf ["Rifle", configFile >> "CfgWeapons"])exitWith{
_ammo = getArray (configFile >> "CfgWeapons" >> _classname >> "magazines");
_holder addMagazineCargoGlobal [ selectRandom _ammo,3];
_holder addWeaponCargoGlobal [_classname, 1];
};
_holder addBackpackCargoGlobal [_classname, 1];
}else{
_item = _classname createVehicle [0,0,0];
_item setpos _pos
}

}foreach ((_this select 0) buildingpos -1)
};
waitUntil {scriptDone _done};
}foreach _buildings;
["лут заспавнился","hint"]call bis_fnc_mp;

};

Сообщение отредактировал lopster102: 11 January 2018 - 20:55

  • 0

#1040 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 13 January 2018 - 06:11

кто подскажет что может еще сажать фпс на сервере. запускаю сервер и с каждой минутой начинает использовать памяти все больше и больше что можно с этим поделать или это стандартное поведение сервера?никаких ошибок нету в скриптах


  • 0




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