Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Динамическая подгрузка и удаление областей карты (Скрипт подгружающий юнитов при приближении игрока) |
Динамическая подгрузка и удаление областей карты |
› Вторник
› 09.12.2014
› 14:55
› Сообщение #
А трупы кто-то увозит втихую?:)
Запоминать - так всех, с учетом их дэмэджа, и восстанавливать так же. Мои 5 копеек по поводу групп. Если зон не очень много и они не динамические, можно в пределах одной зоны создавать одну группу, к которой и причислять всех спавнящихся юнитов. Минус может быть в том, что в нестандартной ситуации они собьются в кучу. А вообще для чего это? Если для какой-то определенной миссии, а не для универсального применения для конкретной карты, то достаточно описать создание нужных юнитов в скрипте, который и запустить в некий момент приближения игрока к зоне. Еще вариант: вне доступности прятать юниты через hideobject. Некоторый выигрыш в ресурсах это дает (возможно, это то же самое, о чем писал bosoy07, но ролик я не смотрел) Сообщение отредактировал andrucio - Вторник, 09.12.2014, 15:00
|
› Вторник
› 09.12.2014
› 15:04
› Сообщение #
Цитата А вообще для чего это? Если для какой-то определенной миссии, а не для универсального применения.... |
› Воскресенье
› 14.12.2014
› 00:16
› Сообщение #
Привет народ интересная тема у вас тоже щас работаю над этим.Причина проста не ненавижу тормоза и лаги в игре.
Проблема еще у меня большая не знаю энглиша и не знаю скриптописания приходится разбиратся логическим методом и проверками в редакторе. Последнее время играл в дейз и собрал свою сборку с Боты DZAI и WAI Beta - очень цивильные проги скриптов - если их доработать в динамичную подгрузку можно будет делать интересные игры. Прошу помоч мне разобрать эти скрипты. Боты DZAI - http://www.fayloobmennik.net/4359417 WAI Beta - http://www.fayloobmennik.net/4359425 Первый скрипт с которого все начинается до него я все понимаю на карте отреспились маркеры а это установки под которыми респятся (тригеры и боты). ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* Chernarus static spawn configuration Last updated: 3:37 PM 12/24/2013 */ #include "spawn_markers\markers_chernarus.sqf" //Load manual spawn point definitions file. if ((DZAI_maxHeliPatrols > 0) or {(DZAI_maxLandPatrols > 0)}) then { "DZAI_centerMarker" setMarkerPos [7652.9634, 7870.8076]; "DZAI_centerMarker" setMarkerSize [5500, 5500]; }; waitUntil {sleep 0.1; !isNil "DZAI_classnamesVerified"}; //Wait for DZAI to finish verifying classname arrays or finish building classname arrays if verification is disabled. if (DZAI_staticAI) then { #include "spawn_areas\areas_chernarus.sqf" //Load spawn area definitions file. //marker name, [minimum AI, max additional AI], [markers for manual spawn points] (leave as empty array to use nearby buildings as spawn points), equipType (optional, required if number of AI groups is defined), number of AI groups (optional) ["DZAI_Kamenka",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Komarovo",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Balota",[0,1],[],0] call DZAI_static_spawn; ["DZAI_BalotaAirstrip",[1,1],['Balota1','Balota2','Balota3','Balota4','Balota5'],1] call DZAI_static_spawn; ["DZAI_Cherno1",[1,2],[],1] call DZAI_static_spawn; ["DZAI_Cherno2",[1,1],[],0] call DZAI_static_spawn; ["DZAI_Cherno3",[1,1],[],0] call DZAI_static_spawn; ["DZAI_Cherno4",[2,1],[],1] call DZAI_static_spawn; ["DZAI_Elektro1",[1,1],[],0,2] call DZAI_static_spawn; ["DZAI_Elektro2",[1,2],[],1] call DZAI_static_spawn; ["DZAI_Elektro3",[1,2],[],0] call DZAI_static_spawn; ["DZAI_Skalisty",[0,1],['Skalisty1','Skalisty2','Skalisty3'],1] call DZAI_static_spawn; ["DZAI_Kamyshovo",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Tulga",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Rog",[2,2],['CastleRog','CastleRog2','Rog3','Rog4'],1] call DZAI_static_spawn; ["DZAI_Pusta",[0,1],[],0] call DZAI_static_spawn; ["DZAI_ThreeValleys",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Solnichniy",[0,1],[],0] call DZAI_static_spawn; ["DZAI_SolnichniyFactory",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Nizhnoye",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Orlovets",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Berezino",[2,1],[],1] call DZAI_static_spawn; ["DZAI_Berezino2",[0,2],[],1] call DZAI_static_spawn; ["DZAI_Berezino3",[2,1],[],1] call DZAI_static_spawn; ["DZAI_Berezino4",[2,1],[],1] call DZAI_static_spawn; ["DZAI_Khelm",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Olsha",[0,1],[],1] call DZAI_static_spawn; ["DZAI_NEAF",[2,2],['NEAF1','NEAF2','NEAF3','NEAF4','NEAF5'],2] call DZAI_static_spawn; ["DZAI_Krasnostav",[1,1],[],2] call DZAI_static_spawn; ["DZAI_Gvozdno",[0,2],[],2] call DZAI_static_spawn; ["DZAI_Pavlovo",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Bor",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Msta",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Staroye",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Dolina",[0,1],[],0] call DZAI_static_spawn; ["DZAI_OrlovetsFactory",[0,1],[],1] call DZAI_static_spawn; ["DZAI_DubrovkaNW",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Dubrovka",[0,2],[],1] call DZAI_static_spawn; ["DZAI_Polana",[1,2],[],1] call DZAI_static_spawn; ["DZAI_Mogilevka",[0,2],[],1] call DZAI_static_spawn; ["DZAI_Nadezhdino",[0,2],[],0] call DZAI_static_spawn; ["DZAI_Zub",[2,2],['CastleZub','CastleZub2','Zub3','Zub4'],1] call DZAI_static_spawn; ["DZAI_Kozlovka",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Drozhino",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Zelenogorsk",[1,1],[],1,2] call DZAI_static_spawn; ["DZAI_GreenMountain",[0,3],[],2] call DZAI_static_spawn; ["DZAI_Shakhovka",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Guglovo",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Vyshnoye",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Pulkovo",[0,1],[],0] call DZAI_static_spawn; ["DZAI_Sosnovka",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Myshkino",[0,2],[],1] call DZAI_static_spawn; ["DZAI_Pustoshka",[1,2],[],1] call DZAI_static_spawn; ["DZAI_Vybor",[1,2],[],2] call DZAI_static_spawn; ["DZAI_Pogorevka",[0,2],[],1] call DZAI_static_spawn; ["DZAI_Rogovo",[0,1],[],1] call DZAI_static_spawn; ["DZAI_Gorka",[0,2],[],2] call DZAI_static_spawn; ["DZAI_NovySobor",[2,1],[],2] call DZAI_static_spawn; ["DZAI_StarySobor",[2,0],[],2,2] call DZAI_static_spawn; ["DZAI_Kabanino",[1,2],[],1] call DZAI_static_spawn; ["DZAI_Lopatino",[0,2],[],2] call DZAI_static_spawn; ["DZAI_DevilsCastle",[2,2],['DevilsCastle','DevilsCastle2','Devils3','Devils4'],1] call DZAI_static_spawn; ["DZAI_Grishino",[1,2],[],2] call DZAI_static_spawn; ["DZAI_NWAF2",[3,0],[],3] call DZAI_static_spawn; ["DZAI_NWAF3",[3,0],[],3] call DZAI_static_spawn; ["DZAI_NWAF4",[2,1],['NWAF4_1','NWAF4_2','NWAF4_3','NWAF4_4'],2] call DZAI_static_spawn; ["DZAI_NWAF5",[2,1],['NWAF5_1','NWAF5_2','NWAF5_3','NWAF5_4'],2] call DZAI_static_spawn; ["DZAI_NWAF6",[2,1],['NWAF6_1','NWAF6_2','NWAF6_3','NWAF6_4'],2] call DZAI_static_spawn; ["DZAI_NWAF7",[2,1],['NWAF7_1','NWAF7_2','NWAF7_3','NWAF7_4'],2] call DZAI_static_spawn; }; #include "custom_markers\cust_markers_chernarus.sqf" #include "custom_spawns\cust_spawns_chernarus.sqf" diag_log "Chernarus static spawn configuration loaded."; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Потом идет то в чем мне тяжко разобратся это скрипт респа тригера - помогите его разобрать. /*Syntax: [ _spawnMarker, //Circular marker defining patrol radius. [_minAI,_addAI], //(Optional, default [1,1]) Minimum and maximum bonus amount of AI units per group. _positionArray, //(Optional, default []): Array of markers defining possible spawn points. If omitted or left empty, nearby buildings within 250m radius will be used as spawn points. _equipType, //(Optional, default 1): Number between 0-3. Defines AI weapon selection and skill parameters. _numGroups //(Optional, default 1): Number of AI groups to spawn using the above parameters. ] call DZAI_static_spawn; */ private ["_spawnMarker","_minAI","_addAI","_positionArray","_equipType","_numGroups","_patrolDist","_trigStatements","_trigger","_abort"]; _spawnMarker = _this select 0; if ((getMarkerColor _spawnMarker) == "") exitWith {diag_log format ["DZAI Error: Static spawn marker %1 does not exist!",_spawnMarker];}; if ((markerAlpha _spawnMarker) > 0) then {_spawnMarker setMarkerAlpha 0}; _abort = false; if ((count _this) > 1) then { _minAI = (_this select 1) select 0; _addAI = (_this select 1) select 1; if ((_minAI + _addAI) < 1) then { _abort = true; }; } else { _minAI = 1; _addAI = 1; }; if (_abort) exitWith { diag_log format ["DZAI Error: Zero AI amount for spawn area %1. Spawn area not created.",_spawnMarker]; objNull }; _positionArray = if ((count _this) > 2) then {_this select 2} else {[]}; _equipType = if ((count _this) > 3) then {_this select 3} else {1}; _numGroups = if ((count _this) > 4) then {_this select 4} else {1}; _patrolDist = (getMarkerSize _spawnMarker) select 0; _trigStatements = format ["_nul = [%1,%2,%3,thisTrigger,%4,%5,%6] call fnc_spawnBandits;",_minAI,_addAI,_patrolDist,_positionArray,_equipType,_numGroups]; _trigger = createTrigger ["EmptyDetector", getMarkerPos(_spawnMarker)]; _trigger setTriggerArea [600, 600, 0, false]; _trigger setTriggerActivation ["ANY", "PRESENT", true]; _trigger setTriggerTimeout [10, 15, 20, true]; _trigger setTriggerText _spawnMarker; _trigger setTriggerStatements ["{isPlayer _x} count thisList > 0;",_trigStatements,"_nul = [thisTrigger]spawn fnc_despawnBandits;"]; //Pre-initialize trigger if all variables already provided if ((count _positionArray) > 0) then { _spawnPositions = []; { //if ((((getMarkerPos _x) select 0) != 0)&&{(((getMarkerPos _x) select 1) != 0)}) then { if ((getMarkerColor _x) != "") then { _spawnPositions set [(count _spawnPositions),(getMarkerPos _x)]; deleteMarker _x; }; } forEach _positionArray; if ((count _spawnPositions) > 0) then { 0 = [_trigger,[],_patrolDist,_equipType,_spawnPositions,[_minAI,_addAI]] call DZAI_setTrigVars; if (DZAI_debugLevel > 1) then {diag_log format ["DZAI Extended Debug: Found marker positions: %1 (spawnBandits).",_spawnPositions];}; }; }; deleteMarker _spawnMarker; _trigger ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// В тригере прописана функция спавна бандитов - скрипт спавна бандитов /* spawnBandits Usage: [_minAI, _addAI, _patrolDist, _trigger, _numGroups (optional)] spawn spawnBandits; Description: Called through (mapname)_config.sqf when a static trigger is activated by a player. Last updated: 8:38 AM 10/23/2013 */ private ["_minAI","_addAI","_patrolDist","_trigger","_equipType","_numGroups","_grpArray","_triggerPos","_locationArray","_positionArray","_startTime ","_tMarker","_totalSpawned","_debugMarkers","_triggerStatements","_respawnLimit","_groupsActive"]; if (!isServer) exitWith {}; _startTime = diag_tickTime; _minAI = _this select 0; //Mandatory minimum number of AI units to spawn _addAI = _this select 1; //Maximum number of additional AI units to spawn _patrolDist = _this select 2; //Patrol radius from trigger center. _trigger = _this select 3; //The trigger calling this script. _positionArray = _this select 4; //Array of manually-defined spawn points (markers). If empty, nearby buildings are used as spawn points. _equipType = if ((count _this) > 5) then {_this select 5} else {1}; //(Optional) Select the item probability table to use _numGroups = if ((count _this) > 6) then {_this select 6} else {1}; //(Optional) Number of groups of x number of units each to spawn _grpArray = _trigger getVariable ["GroupArray",[]]; _groupsActive = count _grpArray; _debugMarkers = ((!isNil "DZAI_debugMarkersEnabled") && {DZAI_debugMarkersEnabled}); if (_groupsActive == _numGroups) exitWith { _triggerStatements = (triggerStatements _trigger); _triggerStatements set [1,""]; _trigger setTriggerStatements _triggerStatements; _trigger setTriggerArea [750,750,0,false]; _trigger call DZAI_updStaticSpawnCount; if (_debugMarkers) then { _nul = [_trigger] spawn DZAI_updateSpawnMarker; }; if (DZAI_debugLevel > 0) then {diag_log format ["DZAI Debug: Maximum number of groups already spawned at %1. Exiting spawn script (spawnBandits)",(triggerText _trigger)];}; }; _trigger setTriggerArea [750,750,0,false]; //Expand trigger area to prevent players from quickly leaving and start respawn process immediately _triggerPos = ASLtoATL getPosASL _trigger; //If trigger already has defined spawn points, then reuse them instead of recalculating new ones. _locationArray = _trigger getVariable ["locationArray",[]]; if ((count _locationArray) == 0) then { //If no markers specified in position array, then generate spawn points using building positions (search for buildings within 250m. generate a maximum of 150 positions). if ((count _positionArray) == 0) then { private["_nearbldgs","_spawnPoints"]; _spawnPoints = 0; _nearbldgs = _triggerPos nearObjects ["HouseBase",250]; if ((count _nearbldgs) > 0) then { _ignoredObj = missionNamespace getVariable ["dayz_allowedObjects",[]]; { scopeName "bldgloop"; _pos = ASLtoATL getPosASL _x; if (!((typeOf _x) in _ignoredObj) && {!(surfaceIsWater _pos)}) then { _locationArray set [(count _locationArray),_pos]; _spawnPoints = _spawnPoints + 1; }; if (_spawnPoints >= 150) then { breakOut "bldgloop"; }; } count _nearbldgs; }; if (DZAI_debugLevel > 1) then {diag_log "DZAI Extended Debug: Spawning AI from building positions (spawnBandits).";}; } else { { if (((getMarkerColor _x) != "") && {!(surfaceIsWater _pos)}) then { _locationArray set [(count _locationArray),_pos]; deleteMarker _x; }; } count _positionArray; if (DZAI_debugLevel > 1) then {diag_log "DZAI Extended Debug: Spawning AI from marker positions (spawnBandits).";}; }; } else { //If spawn points are already defined, use previously calculated positions if (DZAI_debugLevel > 1) then {diag_log "DZAI Extended Debug: Spawning AI from previously calculated positions (spawnBandits).";}; }; if (DZAI_debugLevel > 0) then {diag_log format["DZAI Debug: Processed static trigger spawn data in %1 seconds (spawnBandits).",(diag_tickTime - _startTime)];}; _startTime = diag_tickTime; _totalSpawned = 0; _respawnLimit = missionNamespace getVariable ["DZAI_respawnLimit"+str(_equipType),5]; //Spawn groups for "_j" from 1 to (_numGroups - _groupsActive) do { private ["_unitGroup","_spawnPos","_totalAI"]; _totalAI = (_minAI + round(random _addAI)); _spawnPos = if ((count _locationArray) > 0) then {_locationArray call DZAI_findSpawnPos} else {[(ASLtoATL getPosASL _trigger),random (_patrolDist),random(360),false] call SHK_pos}; //If non-zero unit amount and valid spawn position, spawn group, otherwise add it to respawn queue. _unitGroup = grpNull; if ((_totalAI > 0) && {(count _spawnPos) > 1}) then { _weapongrade = _equipType call DZAI_getWeapongrade; _unitGroup = [_totalAI,_unitGroup,_spawnPos,_trigger,_weapongrade] call DZAI_setup_AI; _totalSpawned = _totalSpawned + _totalAI; if (_patrolDist > 1) then { 0 = [_unitGroup,_triggerPos,_patrolDist] spawn DZAI_BIN_taskPatrol; } else { [_unitGroup, 0] setWaypointType "HOLD"; _unitGroup setFormDir (random 360); }; if (DZAI_debugLevel > 1) then {diag_log format ["DZAI Extended Debug: Spawned group %1 (weapongrade: %2) with %3 units.",_unitGroup,_weapongrade,_totalAI];}; } else { _unitGroup = createGroup (call DZAI_getGroupSide); _dummy = _unitGroup call DZAI_protectGroup; _unitGroup setVariable ["GroupSize",0]; _unitGroup setVariable ["trigger",_trigger]; 0 = [0,_trigger,_unitGroup,true] call fnc_respawnHandler; if (DZAI_debugLevel > 1) then {diag_log format ["DZAI Extended Debug: No units spawned for group %1. Added group to respawn queue.",_unitGroup];}; }; //Set group variables and add it to trigger's group array _unitGroup setVariable ["unitType","static"]; _unitGroup allowFleeing 0; _grpArray set [count _grpArray,_unitGroup]; }; _triggerStatements = (triggerStatements _trigger); if (!(_trigger getVariable ["initialized",false])) then { 0 = [_trigger,_grpArray,_patrolDist,_equipType,_locationArray,[_minAI,_addAI]] call DZAI_setTrigVars; _trigger setVariable ["respawnLimit",_respawnLimit]; } else { if (DZAI_debugLevel > 1) then {diag_log format ["DZAI Extended Debug: Trigger group array updated to: %1.",_trigger getVariable "GroupArray"]}; _trigger setVariable ["isCleaning",false]; }; _triggerStatements set [1,""]; _trigger setTriggerStatements _triggerStatements; _trigger call DZAI_updStaticSpawnCount; if (DZAI_debugLevel > 0) then {diag_log format["DZAI Debug: Spawned %1 new AI groups (%2 units total) in %3 seconds at %4 (spawnBandits).",_numGroups,_totalSpawned,(diag_tickTime - _startTime),(triggerText _trigger)];}; if (_debugMarkers) then { _nul = [_trigger] spawn DZAI_updateSpawnMarker; }; //diag_log format ["DEBUG :: Check original trigger statements: %1",_trigger getVariable "triggerStatements"]; true ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Мне надо разобратся в этих скриптах - создать скрипты респа воздушного патруля,наземной техники,статики, и построек - которые будут погружатся при входе в тригер а при выходе удалятся. Добавлено (13.12.2014, 13:51) Добавлено (13.12.2014, 13:59) Добавлено (13.12.2014, 14:33) Добавлено (14.12.2014, 00:16)
09392281
|
› Воскресенье
› 14.12.2014
› 20:12
› Сообщение #
ВВС-2, посмотри здесь, пока только основа. Если есть возможность проверь в МП
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Воскресенье
› 14.12.2014
› 23:28
› Сообщение #
ВВС-2, прятать простыни под спойлер религия не позволяет? Тема достаточно интересная, а ты ее левым кодом забил
|
› Среда
› 17.12.2014
› 20:51
› Сообщение #
Извеняйте исправлюсь незнал как сппойлер делать ,щас разобрался,а как изменить уже написаное - возможно?
Добавлено (16.12.2014, 15:49) Добавлено (16.12.2014, 16:05) Добавлено (16.12.2014, 16:07) Добавлено (17.12.2014, 20:32) Добавлено (17.12.2014, 20:51)
09392281
|
› Суббота
› 20.12.2014
› 11:06
› Сообщение #
ВВС-2,
Цитата в массиве "DSL_spawn_triggers" - //["DSL_Pustoshka", [["spawn1", "spawn2"], 30], 3, [3,6], 0, 0] ///радиус спавна до входа в область тригера (например 1000м) у тебе это сделанно в размере маркера - когда делаеш карту маркер на карте увеличевается и мешает нормальн. созданию друг маркеров (можно запутатся в маркерах); - радиус спавна до входа в область тригера (например 1000м) //будет учитываться если маркер в форме иконки Цитата нужен (ini t=) коммандира группы который спавнется радиус патрулирования местности например - (50м) высоту респауна бота например (17.5м) для постановки на вышку или здание удаление трупа наприм (30мин) Это всё настраивается самостоятельно в файле DSL_setGroupMission, он запускается сразу после создания группы: Код if(isServer or isDedicated)then{ private ["_group", "_center", "_radius"]; _group = _this select 0; _center = _this select 1; _radius = _this select 2; 0 = [_group, _center, _radius / 2] call BIS_taskPatrol; }; Сейчас там запускается BIS_taskPatrol, его можно заменить на BIS_taskDefend (есть в архиве, боты будут так же патрулировать, время от времени присаживаясь на перекур; вроде бы самостоятельно занимают свободную статикческую технику поблизости - не уверен нужно проверять). Можно и UPSMON прикручивать, в общем всё что душе угодно, влияющее на жизненный цикл группы, только не вздумай подключать все сразу) Цитата ZoRRo прив пытаюсь разобратся как работают твои скрипты - сложновато без знания енглиша в инете много описания скриптовых програм и как писать скрипты и тригеры но все на енглише. ивать на несколько скриптов а сделать 2 скрипта (DSL_spawnAI.sqf,DSL_removeAI.sqf).Просьба для всех деревянных писателей скриптов не мог бы сделать пример в 2х экземплярах. 1й экземпляр это - на карте поставить тригер и прописать ему рес и деспавн 1го юнита(с патрулированием) и в скриптах спавна все действия подписать по РУССКИ и желательно не разб 2й экземпляр это - поставить маркер на карте и привязать через скрипт к нему респ тригера с респом и деспавном юнита. И если я еще не достал тя своей херней очень надо такойже респ под тригеров техники с ботами. Просто понять принцип - я далеко с етими знаниями не уйду без енглиша но простенкое смогу слепить :). -Я тоже английского не знаю используй, переводчик -Посмотрю какие файлы можно спрятать, спрячу в функции, остальные такие как DSL_setGroupMission - лучше оставить отдельными файлами. -На второй экземпляр заморачиваться сейчас не буду, может быть добавлю пойзже доболнительную функцию, которая будет обрабатывать уже созданные в редакторе триггеры помимо маркеров, но это дело сейчас десятое. -Тот кто умеет читать, прочтет, кто не понимает смысла написанного должен сначала понимать язык. По русски ничего комментировать в скриптах не буду, ибо: Вот список исправлений на следующую версию (0.53) сообщю как обновлю:
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Суббота
› 20.12.2014
› 13:55
› Сообщение #
Это так
А это -Комментарии захламляют непосредственный код, ухудшают его читаемость -Комментарии лгут Комменты (именно комменты, в кратком виде) пишутся в первую очередь для себя и отмечают ключевые позиции и блоки в коде для облегчения редактирования. Для других пишутся ридми |
› Понедельник
› 22.12.2014
› 18:49
› Сообщение #
Цитата Комменты (именно комменты, в кратком виде) пишутся в первую очередь для себя и отмечают ключевые позиции и блоки в коде для облегчения редактирования. Для других пишутся ридми andrucio, cогласен. Но комментарии бывают самыми разными от случая к случаю. Вот статейка с хабра про это: Добавлено (22.12.2014, 18:49) Цитата нужен (ini t=) коммандира группы который спавнется (17.5м) для постановки на вышку или здание;////удаление трупа наприм (30мин) радиус патрулирования местности например - (50м) Код ["DSL_Pustoshka", [["spawn1", "spawn2"], 30], 3, [3,6], 0, 0] Относительно групп, как видищь здесь просто передаются параметры - сколько групп создавать и какое среднее количество юнитов в составе И доступа к настройке отдельно взятой группы здесь нет, альтернатива будет выглядить примерно так: Код ["DSL_Pustoshka", 30 (количество генерируемых точек (общий параметр для всех отрядов)), [ [[предопределённые маркеры для респауна если есть], [мин юнитов, макс юнитов], индекс выборки скинов отряда, индекс выборки вариантов снаряжения для отряда, инит лидера, радиус патрулирования, и т.д], ..... ] ] Согласен ? Так появится возможность настройки отдельно взятой группы. радиус патрулирования - этот параметр является зависимым от другого параметра ( что есть истинное зло ) - радиуса самой локации в которой группа действут по логике вещей. По этому нужно проследить чтобы этот параметр не превышал радиуса зоны и отряд, если даже и покинул область, возвращался обратно. В общем каждая ноаая возможность налагает свои ограничения. Для всех кто в теме: если есть ещё какие мысли по возможной функциональности в будущем пишите на ранних этапах - сейчас, пока не ушли слишком далеко. Потом это будет править очень трудоёмко а возможно, в некоторых отдельных случаях- невозможно. Код //["DSL_Pustoshka", [["spawn1", "spawn2"], 30], 3, [3,6], 0, 0,[( init=)коммандира] ,[(спавна до входа в область например 1000м)],[(патрулирования( 50м)],[(респауна от маркера например -(50м)],[высоту(17.5м)],[удаление трупа наприм (30мин)]] call DSL_spawn_triggers; Пожалуйста, если получается большой текст при написании сообщения - разделяй абзацами по смыслу, перечисления пиши по пунктам чтобы воспринималось просто, и чтобы не искать в сплошном тексте отдельные элементы.
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Суббота
› 27.12.2014
› 14:15
› Сообщение #
ZoRRo - Привет - еще раз спасибо за то что взялся за эту нелегкую работу.
Я сейчас после работы тяжко глобально мозги напрягать в том что тяжело дается на выходные выйду все продумаю. Просто все основные характеристики хотелось бы вывести в основной массив - ["DSL_Pustoshka", [["spawn1", "spawn2"], 30], 3, [3,6], 0, 0]. Чтоб многие начинающие игроделы могли легко разобратся и самому очень удобно - ставиш маркер на карте и в массиве все выставляеш . Супер сделал добавочные маркеры( "spawn1") - большой город можно забить по полной. Вот эту бы прогу года 3 назад дак цены ей небылобы - когда арма2 вышла я начинал знакомство со скриптами с карт (WAR-3-Front-RUS ,EvolutionRED_v093hf3) - спс слону за эти карты. Поповоду потрулирования(радиусы) - все будет работать через инит лидера - поетому наверно нужен только инит . Хотя все упсомоны и прочие такие скрипты очень напрягают процесор когда груп очень много надо еще простинкий скрипт патрулирования .(я забыл что у нас динам подгрузка) Примерно я думаю так : ["DSL_Pustoshka", [["spawn1", "spawn2"], 30], 3, [3,6], 0, 0,[ 0 = [nul=[this,"area0"] execVM "scripts\upsmon.sqf"] [радиус респа от маркера],[ радиус спавна до входа в область тригера (например 1000м)], [высоту(17.5м)],[удаление трупа наприм (30мин)]]. И можно будет описать все установки на руском языке в отдельном документе. (респауна от маркера например -(50м) - да респ юнитов от маркера - например ставлю упсомон на патрул 250м - и следовательно выставляю респ от маркера 250м. И НАДО ЗАБЫЛ КАК ПРАВИЛЬНО ПОМОЙМУ - DIR - направление стоящего пеха (в какую сторону он смотрит) это для стоящих пехов например на блок посту. Сегодня очень устал мозг неработает попоже все взвешу и отпишусь . И ДЛЯ ВСЕХ КТО В ТЕМЕ ПОДМОГАЙТЕ СОВЕТАМИ И ДЕЛОМ .ПРОГА УПРОСТИТ СОЗДАНИЕ МИССИЙ ОНИ БУДУТ БЕЗ ЛАГ И ТОРМОЗОВ. И извеняйте за мой лексикон и я же сулик - все моя пора уходить. Добавлено (27.12.2014, 13:57) Добавлено (27.12.2014, 14:15)
09392281
|
| |||
Чат сайта |