Перейти к содержанию

StDIABLO

Пользователи
  • Публикаций

    580
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Сообщения, опубликованные StDIABLO



  1. 4) Добавление на карту объектов, которых нет в редакторе, по их класс-нейму. В редакторе работает //Game Logic - Objects - Game Logic ==> init field: tower = createVehicle ["Land_Cargo_Tower_V1_F", getPos this, [], 0, ""];   tower setDir 190; tower call BIS_fnc_boundingBoxMarker; //последняя функция должна добавлять маркер объекта на карту

     

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

     

    1)или поставить 101 editor http://www.armaholic.com/page.php?id=20821 (показывает все равно не все объекты пришлось доделывать напильником)

    2)или менять класс прямо через текстовый редактор в mission.sqm

    3)или создавать объекты уже не в редакторе, а при запуске миссии самим сервером. (Благо эффект от createVehicle глобальный) самая лучшая реализация для расстановки ВСЕГО НА КАРТЕ, кроме самих клиентов)

     

    ps не забывай удалять из памяти ненужные объекты

    //Game Logic - Objects - Game Logic ==> init field:
    tower = createVehicle ["Land_Cargo_Tower_V1_F", getPos this, [], 0, ""];  
    tower setDir 190; 
    tower call BIS_fnc_boundingBoxMarker; //последняя функция должна добавлять маркер объекта на карту
    deleteVehicle this; //вроде так
    


  2. 5) Добавить неуничтожаемость встроенному объекту на карте. В редакторе вроде бы работает //разместить юнит Game Logic над необходимым объектом //Game Logic - Objects - Game Logic ==> init field: (nearestBuilding this) allowDamage false;

     

    просто обзываешь здание на карте и в юнит скф (в разделе для сервера) 

    <название дома> allowDamage false;

    Простое правило -> меньше обьектов не нужных для клиентов - лучше работает. 

    В твоем случае

    1)клиенту совершенно не нужен этот объект гейм логик для работы.

    2) все что написано в разделе init field ->выполняется всеми клиентами, а т.к эффект уже глобальный - это можно сделать только 1 раз но на сервере. и всем будет хорошо.


  3. воот эт портянка :)

    Проверять лениво, но научу как сделать (я считаю эту позицию правильной).

    Смотри разбиваешь все свои команды на global/local (с помощью wiki смотришь какой эффект от операции для сервера и клиента картинки ниже)

    в init sqf делаешь 2 блока кода

    1 блок кода - код который выполняет ТОЛЬКО сервер (тут все твои команды и функции в итоге которые дают effects_global.gif)

    if (isServer) then {
    sleep 0.01;
    //твой код содержащий ТОЛЬКО глобальный эффект
    //или код для обработки скриптов и прочего говнокода что ты придумал
    };

    2 блок - БЛОК кода ТОЛЬКО ДЛЯ клиентов (тут все твои команды и функции в итоге которые даютeffects_local.gif локальный эффект)

    if (!isDedicated) then {
    sleep 0.01;
    //твой код содержащий ТОЛЬКО локальный эффект
    //и евент хендлеры и прочее говно для синхронизации с сервером.
    };

    В чем суть фокуса, глобальный эффект уже подразумевает синхронизацию действия со всеми клиентами и сервером, а т.к в большинстве случаев на сервере больше ресурсов для обработки (математических, логических, триггерных) ситуаций, все эти задачи правильнее всего "вешать" на сервер. А клиенту давать или addEventHandler (в случае если эффект локальный effects_local.gif) или ничего (в случаях если это так надо или глобального эффекта effects_global.gif ).

    Ну собственно вот и вся магия. (Поправьте если не так)


  4. [member=almost], тут все относительно.... имхо дискриминация для тех кто на SFM будет :)

     

    А если никому не говорить как ты летаешь - вообще никто и неузнает


  5. Я еще раз повторяю!! Я НЕЗАСТАВЛЯЮ ВСЕХ ПЕРЕХОДИТЬ НА АФМ. Я ПРОШУ СДЕЛАТЬ ТАК ЧТОБЫ ЭТО БЫЛО ДОБРОВОЛЬНО, МОЖЕШЬ ЛЕТАТЬ НА АФМ-  ЛЕТАЙ, неможешь - летай на SFM (как сейчас)


  6. [sarcasm][member=Arcued],неее ты не прав, мы за третий вид большими стрелками над головами противников и чтобы был наконецто autoaim.[/sarcasm]

     

    ТАкже я нехочу ДЛЯ ВСЕХ AFM, я хочу только для себя.

     

    А по существу, я знаю позицию ГУП  по этому вопросу. Впринципе те задачи которые они передомной поставили - сейчас (1.52) не реализуемые, но придет время..... 


  7. [b][member=krech][/b],не складывай яблоки и мотоциклы. Имхо AFM стоит того чтобы потратить 20 часов на обучение полетам (самому же потом приятно будет летать). Например - полетай с SFM на самолетах DCS и AFM тамже. Совершенно разное управление, машину начинаешь чувствовать, что она управляется тобой, а не ездит по рельсам.


  8. Для  начала 

     

    http://wogames.info/tutorials/article/11-o-proekte/

     

    Weekly Open Games — это проект для людей, которым интересен хардкорный тип игры. Мы стараемся максимально эффективно использовать структуру, слабые и сильные стороны, а также технику и вооружение различных сторон конфликта, но не ставим перед собой цель провести 100% сбалансированного боестолкновения. Командная игра, командное взаимодействие — фундамент нашего проекта.

     

     

    Использование SFM на такого рода проектах я считаю аркадой. Осталось только ОГРОМНУЮ стрелку над противником рисовать и 3тий вид включить,  да начнется деградирование.

     

    Вот ты говоришь что SFM - читы ( см выше "в 2 раза выше шансы на победу"), а я говорю что AFM дает преимущество перед SFM, но чтобы этим преимуществом пользоваться надо учиться летать заново на вертушках.

     

    Ну вот простой пример, на низких высотах с АФМ летать В РАЗЫ ПРОЩЕ (привет скриптам ПВО где не больше 30 метров полет), с АФМ можно летать и больше 180 и делать развороты какие хочется. Посадка с пролета - вообще делается закрытыми глазами.  Да, теперь нельзя нажимать  X Q чтобы победить  лететь нормально, приходится постоянно дрочить Q и Z, чтобы не было проблем на поворотах и разворотах и следить за оборотами винта, но это ж проблема летчика и опыта летчика. 

     

    Я ж не требую чтобы у всех был включен AFM - для начала сделать его добровольным.


  9. @Mutagen, Если ты думаешь что с SFM проще победить то отключай, (можно еще и читов включить для уверенной победы, если ты играешь ради победы и фапаешь на нее не включай AFM) тебе никто не запретит! А вообще с АФМом вертушка становится более маневренной. Такчт я вот не так уверен в превосходстве SFM.


  10. Привет техотдел,

     

    Хотел спросить почему так получилось что у ВСЕХ игроков на сервере WOG A3 сделан принудительная СТАНДАРТНАЯ модель управления полетов? Почему бы не дать пользователю выбор какую систему управления использовать пользователю? 

     

    Сколько летаю на AFM проблем ниодной не видел. Впринципе даж с клавы можно играть или с гейпада. 

     

    Скажите о проблемах которые стоят на пути полноценного включения AFM на серваке?


  11. Парни нужен примерчик:

    1) Как создать интерфейс? (для начала окошко с кнопками, полем ввода или полоской ввода)

    2) Как к этим кнопкам привязвыать действие?

    3) При нажатии например на ctrl+r  появлялось это окошко

     

    Есть у кого?


  12. Собстна инит

    enableSaving [false, false];
    enableSentences false;
    //[] execvm "briefing.sqf";
    //only for this missiom
    winside=0;
    publicVariable "winside";
    if (isServer) then{
    //рандомим машину
    _r= round(random 5);
    _obj = ([p_1,p_2,p_3,p_4,p_5,p_6] select _r);
    device setDir (getDir _obj);
    device setPosASL (getPosASL _obj);
    {deleteVehicle _x} forEach [p_1,p_2,p_3,p_4,p_5,p_6];
    
    [] spawn { //чек машины в маркерах
    _timeRU=120;
    _timeUS=120;
    while {alive device} do {
    	if ([device,"ru"] call WMT_fnc_IsTheUnitInsideMarker) then {
    		_timeRU = _timeRU - 5;
    		};
    	if ([device,"us"] call WMT_fnc_IsTheUnitInsideMarker) then {
    		_timeUS = _timeUS - 5;
    		};
    	if  (_timeRU<5) then {
    		winside =1;
    		publicVariable "winside";
    		};
    	if  (_timeUS<5) then {
    		winside =2;
    		publicVariable "winside";
    		};
    	sleep 5;
    	};
    winside =3;
    publicVariable "winside";
    };
    
    };
    
    /*
    [] spawn { //us
    
    };
    _trg = createTrigger ["EmptyDetector", getMarkerPos "us",false];
    _trg setTriggerArea [250, 400, 0, false];
    _trg setTriggerActivation ["ANY", "PRESENT", true];
    _trg setTriggerStatements [
    "device in thisList", "_vicUS = [] execVM 'CheckUS.sqf'; sleep 5;", ""];
    */
    
    
    if (!isDedicated) then{
    "winside" addPublicVariableEventHandler {
    	switch (_this select 0) do {
    		case 0: { };
    		case 1: { [EAST, "ВС РФ Захватили машину"] call WMT_fnc_EndMission; };
    		case 2: { [WEST, "USAF Захватили машину"] call WMT_fnc_EndMission;};
    		case 3: { [sideEnemy, "Машина уничтожена - ничья"] call WMT_fnc_EndMission;};
    		default {};
    		};
    	};
    };
    

    Попробовал, чот миска не хочет рубиться после нахождения  120 сек на базе, хотя вроде все верно сделал. Есть идеи?


  13. Если я правильно понимаю - то в а2 все триггеры глобальные

    Пруф ниже

     

    https://community.bistudio.com/wiki/createTrigger

     

    createTrigger [type, position, makeGlobal] Parameters: [type, position, makeGlobal]: Array type: String position: Position2DPosition3D or Object makeGlobal (optional)Boolean - locality flag, true - trigger is global effects_global.gif, false - trigger is local effects_local.gif (available since Arma 3 v1.43.129935)

  14. Ну создание триггера локального ТОЛЬКО серверу изи -> (работает только в A3 если чо)

    if (isServer) then{
    _vicUS = 0;
    _trg = createTrigger ["EmptyDetector", getMarkerPos "us",false];
    _trg setTriggerArea [250, 400, 0, false];
    _trg setTriggerActivation ["ANY", "PRESENT", true];
    _trg setTriggerStatements [
    "car in thisList", "_vicUS = [] execVM 'CheckUS.sqf';", ""];};

    код CheckUS.sqf у меня пока не готов но все впереди.

     

    Чтото типа 

     

    если timeus > 5  тогда  timeus  = timeus -5 ; sleep 5

    иначе  вызываем процедуру победы синей стороны.

     

    Получется триггер чекает машину в зоне (вродебы каждые 0.5 сек) если в зоне и время нахождения в зоне пока не подошло к концу  (например timeus задать 1200 сек) вычитает время и ждет дальше подошло время - вызываем процедуру победы синей стороны (пока не написал). И вроде ВЕСЬ код (возможно кроме процедуры победы) будет выполнятся ТОЛЬКО на сервере.


  15. @swatSTEAM, А зачем эвент хендлер игрокам? Я как  думал (поправь если не так):

     

    Задача на миске захватить и удержать: (прям белый снег вспомнился :) только там без триггера нахождение в зоне считается, через равноудаленность от объекта)

     

    Мозг мне подсказывает что лучше создать триггер (через инит локальный серверу) в его инициализации написать ANY + car in thisList. В активации -> вызов sqf которая чекает сколько времени простоял объект car в триггерной зоне.

    Если простоял достаточно - просто вызываю конец миссии через функцию wmt.

     

    т.е все вычисления на серве получаются, да и вообще клиенты не знают о триггере как объекте. 


  16. Парни что лучше?

     

    1) Создание триггеров в 2д редакторе (прям в миске)

     

    или 

     

    2)  Создание такого триггера?

    if (isServer) then{_trg = createTrigger ["EmptyDetector", getMarkerPos "us",false];бла бла бла;
    };
    

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


  17. нанообходы, эхх я просто сделал скрипт замутить на проверку в зоне триггера если вышел за пределы - превратился в петушка или собачку или кролика. Можно не так извращенно,  а просто отнимать бк. 

     

    Всегда считал что проходы за картой - это недочеты картодела. Если картодел разрешил находится за картой - значит так можно.Конечно нагружает нмного комп клиента, но раз в 5 минут можно прочекать, за пределами ли боец или нет.


  18. Хотелось бы добавить модуль для блокировки техники (setVehicleLock) и чтобы мог открыть технику только КО.

     

    Например я ставлю отряд ставлю урал синхронизирую урал с группой. И модуль блокирует технику для всех кроме КО к которому приписана эта техника.

     

    Удобно с точки картодела - не обязательно расставлять пехоту рядом с техникой (можно поставить в гаражи и красиво это оформить), ни один из отрядов не останется без техники из за несогласованности других отделений (Например 1 отряд вместо 1 урала взял 2) и 1 отделение без техники осталось.

×

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

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.