TEHGAM / Team_Tactics

Team Tactics
http://www.tehgam.com
3 stars 3 forks source link

Порождение ботов на задании (только изучение) #4

Open Opressor-3000 opened 9 years ago

Opressor-3000 commented 9 years ago

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

tym32167 commented 9 years ago

@AlNazir, делай лучше для каждой задачи отдельный тикет. Так и тебе самому проще будет.

Tourorist commented 9 years ago

Да, наверное если эти два скрипта особо не связаны, то можно и разделить на две задачи.

Opressor-3000 commented 9 years ago

Десант рисуется в миссии, а пехота в грузовиках нет.

a11archer commented 9 years ago

Я так понял это относится к скрипту защиты города?

Opressor-3000 commented 9 years ago

Это относится ко всем заданиям в миссии. Проблема описана NARRAMом на форуме. Боты возрождаются очень близко от точки задания буквально под боком. Надо что бы пехота на Темпасе, Камыше, Мариде и Варсуки возрождались за 1-2 км, десантные вертолеты 2-2,5 км, боевые вертолеты и истребители >3 км. Арчи говорил про точку на площади которой боты должны выполнить задачу найти и уничтожить. @tym32167 @a11archer @Tourorist

a11archer commented 9 years ago

Я кажется понял. В скрипте защиты (po3_task_m15_defendTown.sqf) _locRadis = _location select 2; нигде не встречается! Надо бы новую версию патруля брать. Это незаконченная версия.

Все, как я понял. Построив алгоритм появляется в одной точке +/- 4 метра рядом с командиром отряда.

a11archer commented 9 years ago

Функция получения позиции работает по маркерам и обьектам возвращая лишь 2D или 3D координату. По этой точке работают другие скрипты. Выходит что надо добавлять код.

Opressor-3000 commented 9 years ago

Это последняя версия и Roy86 (создатель Patrol Ops 3.1) больше не будет ее поддерживать.

Да, миссия не доделанная мы это с Norad-ом давно поняли и нам надо «вдохнуть в нее новую жизнь» так что нам очень нужна помощь с этим. Плиииз @a11archer

a11archer commented 9 years ago

Я почитал лицензию на патрули, там сказано что модифицировать скрипты запрещается лицензией разработчика. То что они сами не будут далее обновлять свой труд ни о чем не говорит. Это лицензия на пользование скриптами, а не открытая, как MIT или GPL. Есть ли указание что EightySix меняет лицензионную политику?

MPSF PO3 Edition - MultiPlayer Scripting Framework by EightySix Version Release 3.1.1 PERMITTED FOR PUBLIC RELEASE WITHOUT MODIFICATION

Opressor-3000 commented 9 years ago

А давай мы напрямую свяжемся с Roy86 и поговорим с ним. @a11archer @tym32167 @Tourorist

a11archer commented 9 years ago

Ок, лучше связаться, спросить не против ли он что мы будем редактировать её для своих нужд и на каких условиях. Думаю ему сотню раз такой вопрос задавали. Тем более что следующего релиза ждать бессмысленно. Меня беспокоит что Roy86 не один её делал и EightySix очень много скриптов сделал к ней без права на изменение. В любом случае по первому же требованию я готов все изменения удалить. Это лишь для собственного пользования (мы можем поставить миссию в спуллер чтобы это не считалось публичным выпуском). Пока вроде на миссию вообще нет ссылки на форумах что может считаться что её вовсе не опубликовывали.

a11archer commented 9 years ago

Касательно скрипта порождения ИИ рядом с точкой: _position = [PO3_TASK__POS,0,0,false] call PO3_fnc_ getPos;, где значения соответственно:

[_3dposition,_radius,_direction,?,?]

Вот так вызывается функция которая возвращает место где порождаются вражеские юниты. Она 3D ([19473.3,15453.7,0] к примеру, координаты мне вывела для города Nifi). Радиус от позиции и угол отклонения этого радиуса не воспринимает т.к. всё кроме 3dposition игнорируется.

a11archer commented 9 years ago

Там при защите города вроде как создается группа СВОИХ: _grp = [ _position, (PO3_side_3 select 0), "EN_PatrolGroup0",20] call PO3_fnc_createGroup;

Ищу может есть сдвиг от города в PO3_fnc_createGroup задан. а на самом деле все сразу передается в squadSpawner где принимается

a11archer commented 9 years ago

Нашел её в fnc\creator\fn_createGroup.sqf

Returns: Group ID of units

Автор этого скрипта опять тот же RoyEightySix.

a11archer commented 9 years ago

Внутри функции написано что от позиции радиус размещения 20 метров.:

Syntax: ["<position>,<side>,<type>,<radius>,<stance>,<strength>] spawn PO3_fnc_createGroup

radius - Number - (OPTIONAL) The maximum radius from the position they will be spawned at.

Где 20 это радиус внутри которого создается отряд.

a11archer commented 9 years ago

Похоже на правду, попробую в отладчике сделать 500 + random 200:

_grp = [ _position, (PO3_side_3 select 0), "EN_PatrolGroup0",500 + random 200] call PO3_fnc_createGroup;

Чтобы на нашей позиции не появлялись.

a11archer commented 9 years ago

Опа: _return = _this call PO3_fnc_squadSpawner;

Уводит в другую функцию : cox_patrol-ops-3-01-nato.Altis\fnc\creator\ fn_squadSpawner.sqf

Opressor-3000 commented 9 years ago

@roy86 и RoyEightySix это два разных человека? Я думал что один и тот же.

a11archer commented 9 years ago

У нас с паблика есть сюда ссылка, поэтому мы не можем менять код миссии. Нужно закрытый репозиторий для этого исходя из лицензии Eightysix. самое оптимальное - все обработать "для себя" и залить обратно исходную миссию (это разрешается)

Opressor-3000 commented 9 years ago

Давай просто свяжемся с @roy86. Надо написать ему, а лучше пригласить в ТС. Только переводчик нужен.

Кто у нас хорошо английский знает.

a11archer commented 9 years ago

Может пока рано? Для начала выясним что и почему мы хотим поменять. Я минуту назад нашел ошибку:

a11archer commented 9 years ago

То есть мы меняем, меняем, а потом в итоге миссия не публикуется как а выкладывается на одном сервере.

а конкретно в коде: _position = if(_radius > 0) then { [_position,_radius,random 360] call PO3_fnc_getPos переменные уходят "вникуда". мы дорабатываем функцию как задумано Eightysix.

a11archer commented 9 years ago

Ха, они её уже сделали но не использовали для этой цели. она лишь узнает позицию по заданному углу и расстоянию от точки как я ранее описывал в ТС.

a11archer commented 9 years ago

видимо ошибка в функции fn_squadSpawner.sqf. В строке 26 _position = if(_radius > 0) then { [_position,_radius,random 360] call PO3_fnc_getPos }else{ _position call PO3_fnc_getPos }; надо заменять на _position = if(_radius > 0) then { [_position,_radius,random 360] call PO3_fnc_getPosRadius}else{ _position call PO3_fnc_getPos };

a11archer commented 9 years ago

переносится в ветку AI-spawn-patch

a11archer commented 9 years ago

что-то больно много где это 20 всплывает.

Opressor-3000 commented 9 years ago

Ты можешь связаться с разработчиком PO3. Просто спроси на каких условиях он согласен дать нам разрешение на редактирование. @a11archer

a11archer commented 9 years ago

нет. у меня нет времени и на работу в миссии и на связь с ним. Может Браконьер может спросить у них разрешения.... я пытаюсь у себя править. это лицензия не запрещает.

a11archer commented 9 years ago

ну вот что это за [400,500], их PO3fnc getPos тоже ведь игнорирует...


// =========================================================================================================
//  Create Hostiles
// =========================================================================================================

_spawnAmbush = {
    private["_position","_b","_ingress","_grp"];

    _position = _this select 0;
    _b = _this select 1;
    _ingress = [_position ,[400,500],random 360,false] call PO3_fnc_getPos;

Radis это тоже какой-то массив... пытаюсь понять какой.

a11archer commented 9 years ago

ведь есть же Location Radis _locRadis = _location select 2; !!!

a11archer commented 9 years ago

вообщем чем глубже изучаю тем больше кажется что мы порождаем баги пытаясь улучшить общую функцию PO3_fn_getPos, она влияет на все и сразу...

a11archer commented 9 years ago

Кстати я видел что вертолеты (кайман) уже и так высаживает ботов. касательно грузовиков не уверен. Просто иногда на сервере синхронизация тупит и они не высаживаются.

Tourorist commented 9 years ago

Разрешение получил, путаницу с запретом на редактирование разяснил

Happy for you to modify Patrol Ops 3 provided it is clearly stated that it is an adaption/modification of the original (you've met this condition).

The scripts saying "Do Not Modify" is only a warning for inexperienced coders as the code in that area feeds a lot of scripts that may break during alterations. It is a warning only and the scripts are permitted to be modified under the license.

@AlNazir @a11archer

a11archer commented 9 years ago

Вложенность (рекурентный вызов) функций не позволяет понять алгоритм полностью. Увы. Описания некоторых переменных нету а они передаются в десятки функций. А отладчика посмотреть почему и куда пошла обработка нету. Не могу ознакомиться толком.