Союз | Union

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Союз | Union » Картостроение и скриптовка » Делаем карту (с грехом пополам)


Делаем карту (с грехом пополам)

Сообщений 601 страница 630 из 687

601

Кто-нибудь может выложить учебник по LUA Jukov'а? А то живых ссылок на форуме не осталось. Заранее благодарю.

0

602

VautourII написал(а):

Кто-нибудь может выложить учебник по LUA Jukov'а? А то живых ссылок на форуме не осталось. Заранее благодарю.

https://yadi.sk/d/nraaa7CTzXad3
Тут не только ЛУА... возможно, многое из этого у Вас есть, но, скинул всё, на всякий случай

0

603

Доделал карту про усташей и партизан. Жду критику. https://yadi.sk/d/wSrfxkIP33ijcb

+4

604

VautourII написал(а):

Жду критику

В первом задании "Защитить поезд". Партизанов в окопах около 8 - 10 взводов, плюс около 5 пулеметов, плюс миномет, плюс Дзот. Пехотных наступающих злодеев около 16 взводов. Для успеха боя при стандартном соотношении наступающих к обороняющимся в укреплениях 3:1, задание очень сложно выполнимо.
Дальше. Из всех злодеев остался только 1, который застрял в оградах города (вылезти никаким образом не может), дальше игра останавливается.  Залез в скрипты, там прописано условие выполнения первого задания: если хотя бы один юнит из поезда будет в городе (зона "station"), то задание выполнено; а вот невыполнение этого задания не предусмотрено.
Поэтому, если поезд стопорится (уничтожен движущий его локомотив), то он никогда не попадет в город - игра прервется при невыполнении первого же задания, потому что условие начала (высвечивания) следующего - это нахождения к.-либо части поезда в вышеуказанной зоне.
Нужно ввести какое-то условие инициации следующего задания даже при условии невыполнения первого задания (например, добавить второе условие (через "or"), в котором написано, что количество обеспечивающих прохождение поезд злодеев меньше двух (одного оставить на случай "застревания между заборами города)).
Или, если это задумано, то при невыполнении прописать функцию "Поражение".
А карта хорошая, красивая... Спасибо за труды.

Отредактировано yersinia (2016-12-17 17:13:51)

0

605

Еще, к первому заданию "поезд".
Немецкому поезду ни в стартовых командах, ни в скриптах не дано задание "переместиться в зону "station".
Хотя там и есть функция и команда
RunScript("Trainmove1",0); и далее (в этой функции) Cmd(0,3331,12526,9482), где 3331 это локомотив, но инициацию функции через 0(ноль) секунд прописывать нельзя, она не сработает; нужно задать хоть какой-то промежуток времени, с учетом появления подкрепа на карте, минимум 2 - 6 - 10 секунд.
Есть нюанс. Если пулеметно-зенитная платформа не будет стрелять (врагов уже не будет), то поезд все-таки поедет в город, но это практически в игре невозможно. А как только данная платформа дала первый залп, то автоматически задание локомотиву "переместиться" анулируется.
А так, как он "Плеер 2", хоть и наш (игрока), но "браться" не может, то он в любом случае не сможет попать в город.
Отсюда вывод: первое задание в принципе невыполнимо, а дальше игра останавливается.
Далі буде (дальше будет).

Примечание. Нельзя инициировать (РанСкрипт) функцию через 0 секунд - ни условия, ни сама функция сработать через 0(ноль) единиц времени не смогут. Нужно задать хоть какой-либо временной интервал (хотя бы 1 сотую секунды).

Отредактировано yersinia (2016-12-17 17:44:16)

0

606

yersinia написал(а):

VautourII написал(а):

    Жду критику

В первом задании "Защитить поезд". Партизанов в окопах около 8 - 10 взводов, плюс около 5 пулеметов, плюс миномет, плюс Дзот. Пехотных наступающих злодеев около 16 взводов. Для успеха боя при стандартном соотношении наступающих к обороняющимся в укреплениях 3:1, задание очень сложно выполнимо.
Дальше. Из всех злодеев остался только 1, который застрял в оградах города (вылезти никаким образом не может), дальше игра останавливается.  Залез в скрипты, там прописано условие выполнения первого задания: если хотя бы один юнит из поезда будет в городе (зона "station"), то задание выполнено; а вот невыполнение этого задания не предусмотрено.
Поэтому, если поезд стопорится (уничтожен движущий его локомотив), то он никогда не попадет в город - игра прервется при невыполнении первого же задания, потому что условие начала (высвечивания) следующего - это нахождения к.-либо части поезда в вышеуказанной зоне.
Нужно ввести какое-то условие инициации следующего задания даже при условии невыполнения первого задания (например, добавить второе условие (через "or"), в котором написано, что количество обеспечивающих прохождение поезд злодеев меньше двух (одного оставить на случай "застревания между заборами города)).
Или, если это задумано, то при невыполнении прописать функцию "Поражение".
А карта хорошая, красивая... Спасибо за труды.

Отредактировано yersinia (Сегодня 17:13:51)

Сам неоднократно проходил это место. При грамотном управлении пехотой (т.е. перемещении "перебежками" штурмовать-залечь) проходится без проблем, тем более, что партизаны отходят, потеряв определенное кол-во юнитов. Поезд у меня тоже всегда ездил до станции стабильно. А функция поражения в "Traindestroy" прописана. Видимо, я задал слишком большую фору до прибытия поезда, и поэтому у Вас создалось впечатление, что скрипты не работают. На всякий случай еще раз протестирую...

0

607

VautourII написал(а):

...поэтому у Вас создалось впечатление, что скрипты не работают...

Очень даже может быть. Это было только первое впечатление, "на вскидку"...
Вполне допускаю, что был не прав. ...
Очень давно не играл, всё критикую, исправляю, экспериментирую...

0

608

Только что снова прогнал это место. Поезд до станции едет, задание выполняется, если раздолбать больше половины - игрок терпит поражение.

0

609

Msv написал(а):

карта в стадии балансировки. Пробуйте, пишите что не так. )) Для любителей оборонительных миссий.

Решил отвлечься от картоделанья, прошёл Вашу карту. Карта отлично прорисована, сюжет довольно интересный, интересно играть. Выявленные ляпы: 1). Наличие танков Pz.Kpfw. III Ausf. M, данные танки не могут находится в этом периоде времени, потому как в войска начали поступать в конце 1942 года; 2). StuG III Ausf. G и StuH 42 Ausf. G оналогично; 3). Наличие СС-менов с панцершреками (при обороне последнего населённого пункта). Данные юниты и сквады замените и будет замечательно.
Мне понравилось как установлены направления атак, непредсказуемо для игрока, не знаешь как организовать оборону, по этому приходится или занимать круговую или выстраивать эшелонированную. Совет с атаками (это чисто моё мнение, как супер критику не воспринимайте), можно сделать развитие прорыва, если юниты или сквады прорываются в заданную зону, приходит дополнительное подкрепление с задачей: продолжить прорыв в заданном направлении.
function Ataka1()
if (GetNUnitsInArea(0,"Zona7")>=2)then
LandReinforcement(200);
GiveCommand(3,1005,GetScriptAreaParams("Zona9"));
RunScript("Othod1",3000);
Suicide();
end;
end; как пример.
Можно сделать ещё команды на отход с позиций, время июнь месяц, приказ №227 "Ни шагу назад" ещё не вышел.
Удачи Вам в картостроении, с Новым годом.

+1

610

Спс за отзыв. Карту пока отложил, праздники )))). Через недельку постараюсь заняться доведением до ума.

+1

611

По просьбе одного товарища я сделал не больной мануал по созданию и скриптованию миссии.

Вот ссылка https://yadi.sk/d/UF3agVI_pFsWb

+4

612

Подскажите пожалуйста, есть ли возможность в .xml заменить один тайл на другой? Так получилось, что, не зная свойства тайлов, я закрасил значительную часть африканской карты mud ground'ом.

Отредактировано VautourII (2017-01-26 20:16:38)

0

613

VautourII написал(а):

Подскажите пожалуйста, есть ли возможность в .xml заменить один тайл на другой?

А не проще на самой карте поменять тайлы и сохранить в BZM-файле, один на другой накладывается без проблем?

0

614

Столкнулся со следующей проблемой: бомберы союзника вылетают только один раз. Время ожидания - 0, общее кол-во бомберов - 6 штук. Вот кусок скрипта:

function Bomb()
Cmd(19,3,2,GetScriptAreaParams("bomb"));
RunScript("Bomb2",5000);
Suicide();
end;

function Bomb2()
Cmd(19,3,2,GetScriptAreaParams("bomb2"));
RunScript("Bomb3",5000);
Suicide();
end;

function Bomb3()
Cmd(19,3,2,GetScriptAreaParams("bomb3"));
RunScript("AG1",5000);
RunScript("Scoutheli",0);
Suicide();
end;

0

615

VautourII написал(а):

общее кол-во бомберов - 6 штук

Вылетают по 2 штуки, я так понимаю? И да, время перезарядки 0 будет считаться как 30(то есть по стандарту), так что нужно поставить вместо нуля единицу.

Ещё замечу, что второй параметр в Cmd желательно ставить равным 10000

+1

616

ИС 3 написал(а):

Ещё замечу, что второй параметр в Cmd желательно ставить равным 10000

Почему-то если пишу 10000, скрипт не работает... В остальном же проблема решена, благодарю. Еще хотелось бы спросить: каков наилучший вариант "отключения" типа авиации после вылета? Те варианты, которые использованы в миссии "Крит" и 2-й миссии югославской главы HRA у меня отчего-то не работают.

Отредактировано VautourII (2017-02-26 02:34:57)

0

617

VautourII написал(а):

Еще хотелось бы спросить: каков наилучший вариант "отключения" типа авиации после вылета?

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

if GetNUnitsOfType("avia_attack",1) == 0 -- соответственно вместо единички нужный номер игрока
and GetNUnitsOfType("avia_bomber",1) == 0
and GetNUnitsOfType("avia_fighter",1) == 0
and GetNUnitsOfType("avia_scout",1) == 0
and GetNUnitsOfType("avia_lander",1) == 0 then

А если время между вылетами небольшое, и самолёты смогут непрерывно находиться в воздухе, то лучше сделать запрет типа авиации через дождь.

0

618

ИС 3 написал(а):

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

    if GetNUnitsOfType("avia_attack",1) == 0 -- соответственно вместо единички нужный номер игрока
    and GetNUnitsOfType("avia_bomber",1) == 0
    and GetNUnitsOfType("avia_fighter",1) == 0
    and GetNUnitsOfType("avia_scout",1) == 0
    and GetNUnitsOfType("avia_lander",1) == 0 then

А если время между вылетами небольшое, и самолёты смогут непрерывно находиться в воздухе, то лучше сделать запрет типа авиации через дождь.

Проблема в том, что у меня по сюжету после прибытия десантников игрока в воздухе постоянно висит авиация "союзника". Видимо, следует поставить условием их вылета  GetNUnitsOfType("avia_lander",0) == 0?

Отредактировано VautourII (2017-02-26 16:47:44)

0

619

VautourII написал(а):

Проблема в том, что у меня по сюжету после прибытия десантников игрока в воздухе постоянно висит авиация "союзника". Видимо, следует поставить условием из вылета  GetNUnitsOfType("avia_lander",0) == 0?

Авиация союзника никаким образом не влияет на авиацию игрока, то есть для каждого игрока номер 0, 1, 2, 3 и т.д. авиация работает независимо. В GetNUnitsOfType прописывается именно номер игрока, а не стороны.

0

620

ИС 3 написал(а):

Авиация союзника никаким образом не влияет на авиацию игрока, то есть для каждого игрока номер 0, 1, 2, 3 и т.д. авиация работает независимо. В GetNUnitsOfType прописывается именно номер игрока, а не стороны.

Выше вы написали:

ИС 3 написал(а):

сработает, если в небе не будет других самолётов той же стороны.

Или имелся в виду игрок? В любом случае, скрипт вида
function Paras1()
EnableAviation(0, 2);
SetIGlobalVar("ParadropSquad.ScriptID",1000);
Cmd(22,10011,0,GetScriptAreaParams("dropzone1"));
RunScript("Parasinzone",10000);
DisableAviation(0, 2);
Suicide();
end;
должным образом не работает: игрок может вызвать транспортники по их возвращении.

0

621

VautourII написал(а):

Выше вы написали:

Да, имел в виду игрока, пардон.

VautourII написал(а):

должным образом не работает: игрок может вызвать транспортники по их возвращении.

Попробуй DisableAviation написать сразу следующей строчкой после вызова десанта, то есть так:

Cmd(22,10011,0,GetScriptAreaParams("dropzone1"));
DisableAviation(0, 2);
RunScript("Parasinzone",10000);

Если не получится, то тогда лучше запустить после функцию с проверкой, как я описал выше.

0

622

Опытным путем установил, что авиация "союзника" засчитывается как авиация стороны 0, поэтому при наличии в воздухе его транспортников условие GetNUnitsOfType("avia_lander",0) == 0 не выполняется. Решил проблему, поставив условием кол-во самолетов в воздухе, меньшее, чем численность "звена" у игрока.

+1

623

VautourII написал(а):

Опытным путем установил, что авиация "союзника" засчитывается как авиация стороны 0, поэтому при наличии в воздухе его транспортников условие GetNUnitsOfType("avia_lander",0) == 0 не выполняется. Решил проблему, поставив условием кол-во самолетов в воздухе, меньшее, чем численность "звена" у игрока.

А если один или несколько самолетов из звена собьют?

0

624

dima32rus написал(а):

А если один или несколько самолетов из звена собьют?

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

0

625

VautourII написал(а):

В любом случае, скрипт вида
function Paras1() ...не работает: игрок может вызвать транспортники по их возвращении

- (см. пост 623)
Странно, должно работать, а ведь и не работает - специально создал проверочную карту и... ноусер.
А кто-нибудь разобрался со скриптовым номером для авиации - вторым числом в команде: Cmd(22(или другой тип самолетов),ВОТ ЗДЕСЬ,0,GetScriptAreaParams
Замечено, что можно ставить любое число, я даже пробовал -1, все равно срабатывает.

0

626

yersinia написал(а):

А кто-нибудь разобрался со скриптовым номером для авиации - вторым числом в команде: Cmd(22(или другой тип самолетов),ВОТ ЗДЕСЬ,0,GetScriptAreaParams
Замечено, что можно ставить любое число, я даже пробовал -1, все равно срабатывает.

Скорее всего этот параметр просто присваивает id самолётам в звене.

0

627

yersinia написал(а):

Замечено, что можно ставить любое число, я даже пробовал -1, все равно срабатывает.

Любое, кроме номера размещенного на карте объекта/юнита. У меня, например, фугас имел номер 10000, и поэтому самолеты с этим числом в команде не вылетали.

0

628

Подскажите пожалуйста, как размещать "стрелки" заданий на карте с неравными сторонами.

0

629

VautourII написал(а):

Подскажите пожалуйста, как размещать "стрелки" заданий на карте с неравными сторонами.

Карт с неравными сторонами лучше не делать вообще. Потому что, по непонятным причинам движка, при выходе из игры исчезают все  "прелести" такие как воронки и места уничтоженной техники. если выйти, а потом снова войти в игру, уже не увидите, какую площадь отбомбили или обстреляли из артиллерии. карта будет чистой от этих объектов.
Меня так научили выяснять координаты стрелочек на карте и я считаю этот способ лучше других:
Для этих целей у меня установлен Irfan wiewer. Нужно в редакторе нажать кнопку Create
http://s7.uploads.ru/t/ZX4B0.jpg
при этом в том месте где карта создастся много файликов, открываем Ирфан вьюером файл TGA в котором есть слово LARGE, наводим курсор на нужное место и зажимаем ЛКМ. На месте курсора будет крестик, а в самом верху окна координаты,
http://s4.uploads.ru/t/S2xC8.jpg
которые и нужно вписать в "хмель" (ну, наверняка и сами уже знаете куда)

+2

630

Здравствуйте, я тут начал изучать редактор. Начал "рисовать" карту (небольшую пока что -10х10). И у меня вопрос:"в каком фильтре ("свиток" вкладка "объекты") находится подбитая техника ?"

0


Вы здесь » Союз | Union » Картостроение и скриптовка » Делаем карту (с грехом пополам)