"Школа картоделов"
Сообщений 901 страница 930 из 1147
Поделиться9022020-04-22 14:32:59
Стоит сцепить вагоны. Без сцепки игра будет их ставить на некотором расстоянии. Особенность ж/д-юнитов.
Поделиться9032020-05-11 14:24:48
Решив вспомнить былое и поиграть в свой полуторагодичной давности "Автобан", столкнулся с, казалось бы, изжитой проблемой: карта снова вылетает по непонятной причине. Я уже перепробовал все: и отодвигал юниты в подкрепах от края карты, и следил, чтобы скриптовый номер не получил куст - ничего не помогло. При этом, если сделать сохран и тут же его загрузить, вылеты прекращаются.
https://yadi.sk/d/e8gmJTEU3aEX8w
Поделиться9042020-05-13 16:43:17
если сделать сохран и тут же его загрузить, вылеты прекращаются.
видимо проблема не фатальная (в ошибке скрипта), а в совокупности факторов, которые приводят к сбою выполнения алгоритма... давайте попробуем разобраться, какие шероховатости сразу бросаются в глаза, да и вообще пользуясь случаем разберем часто повторяющиеся ошибки в скриптах ГЗМ (других авторов):
- запуск функций с некорректным временем RunScript("Casualities_fail",0); ... выполнение функций циклично, тем самым вы предлагаете программе каждые 0 секунд пересчитать наличие юнитов у игрока... зачем же? явная перегрузка исполняющего механизма, ... понятно что программа не посчитает это каждые ноль секунд, но будет пытаться в минимальный такт исполнить функцию, бесполезную по сути... достаточно и раз в пять минут ее запустить... а так как функций якобы мега-срочных в скрипте много, это уже не хорошо, такты могут сбиваться исполняться с разной частотой и т.п....
- некоторые команды в Блице отложенного действия (не мгновенного исполнения как обычно, а исполняются с задержкой)... например
высадка подкрепа LandReinforcement(), если они указаны в функции выше строками, а ниже уже есть действия с полученными юнитами, такая функция работать корректно не будет,... рекомендовал бы, завершать функцию на этой строке, и позже, с дополнительной проверкой - манипулировать подкреплением...
-еще более вредная команда Qcmd... процессор обычно ожидает ее выполнения, и все что ниже ее рискует быть проигнорировано вовсе...
например внутренний цикл:
for a=1,5 do
Cmd(3,a,x,y)
Qcmd(3,a,x1,y2)
end
будет выполнен только для первого скрипт номера, хотя в синтаксисе ошибок нет и мы ждем того же для номеров 2-5... вот такая особенность у долгоиграющих команд..
GiveCommand(3,201,GetScriptAreaParams("201"));
GiveQCommand(3,201,GetScriptAreaParams("2010"));
GiveQCommand(8,201,GetScriptAreaParams("2040"));
GiveCommand(3,2011,GetScriptAreaParams("201"));
GiveQCommand(3,2011,GetScriptAreaParams("2011"));
GiveQCommand(8,2011,GetScriptAreaParams("2040"));
GiveCommand(3,2012,GetScriptAreaParams("201"));
GiveQCommand(3,2012,GetScriptAreaParams("2012"));
GiveQCommand(8,2012,GetScriptAreaParams("2035"));
GiveCommand(3,2013,GetScriptAreaParams("201"));
GiveQCommand(3,2013,GetScriptAreaParams("2013"));
GiveQCommand(8,2013,GetScriptAreaParams("2035"));
GiveCommand(3,2014,GetScriptAreaParams("201"));
GiveQCommand(3,2014,GetScriptAreaParams("2014"));
GiveQCommand(8,2014,GetScriptAreaParams("a3"));
GiveCommand(3,2015,GetScriptAreaParams("201"));
GiveQCommand(3,2015,GetScriptAreaParams("2015"));
GiveQCommand(8,2015,GetScriptAreaParams("b3"));
RunScript("Disembark201",1000);
RunScript("Disembark2011",1000);
RunScript("Disembark2012",1000);
RunScript("Disembark2013",1000);
RunScript("Disembark2014",1000);
RunScript("Disembark2015",1000);
RunScript("Exit201",1000);
RunScript("Exit2011",1000);
RunScript("Exit2012",1000);
RunScript("Exit2013",1000);
RunScript("Exit2014",1000);
RunScript("Exit2015",1000);
Suicide();
end;
в этой записи много обращений для вызова координаты зоны, хорошо бы защитить их от случайного задвоения временной ячейки памяти, которую может использовать процессор оперируя необьявленными переменными, по форме local x,y= GetScriptAreaParams("зона") вы получите более стабильную работу функции... доказанная полезность данного метода при управлении авиацией...
да и вообще, хорошим тоном будет обьявлять переменные в каждой функции, указывая перед ними local a,b,c,x; будем уверенны, что операции идут именно с теми переменными что нам нужны... например
a=2
function sum
b=4
z=a+b
a=3
end
переменная z у нас будет равна 6, а не 7 как нам наверное хотелось бы когда мы писали функцию sum, а если поставить первой строкой функции local a,b,z программа выдаст ошибку (оперируем переменной без значения)... и тогда легко найдется, что перепутали строки и а=3 должно быть выше...
тоже касается и глобальных переменных, наверное самая распространенная ошибка в скриптах, еще и вредная, на тестах она никак не находится, затем приводит к неправильным сработкам... Люди!!! переменная в команде SetIGlobalVar("temp.a",а); должна быть ВРЕМЕННАЯ через приставку temp. тогда она будет обнулена перед выполнением вашей карты, не будет мешать на других картах и засорять память Блица... элементарная вещь, которая тратит море нервов игрокам и тестерам... глобальная переменная без такой приставки почти никогда вам не понадобится, только для развилок в кампаниях и если вы делаете серию из нескольких карт, в которых события на одной влияют на следующую (к сожалению таких серий у нас нет (?))....
local x,y = GetObjCoord(2094);
if GetNUnitsInCircle(0,x,y,1550) >0 then
Cmd(5, 2094, x, y);
Cmd(3, 20940,GetScriptAreaParams("fail_zone"));
ChangeFormation (20940, 3);
Suicide();
elseif (GetNUnitsInScriptGroup(2094)==0) then
Suicide();
end;
end;
плохая структура проверки, сначала мы ищем координату, а потом заставляем нарисовать зону от нее, проверить наличие в ней юнита, и только потом проверяем есть ли сам юнит... хм... логично ведь наоборот, сначала проверить есть ли юнит, нет = убить скрипт, да = выполнить остальное... а так процессор рисует зону дальностью 1500 начиная от x=-1,y=-1... это ЗА КАРТОЙ... возможен критический вылет...
Будьте внимательны и логичны в написании скриптов, хорошего ГЗМ!
Поделиться9052020-06-09 19:10:33
Может кто-то доработает эти карты и сделает к ним скрипт? https://yadi.sk/d/L95R-rxmQmdjvQ
Поделиться9062020-06-09 20:10:30
Может кто-то доработает эти карты и сделает к ним скрипт? https://yadi.sk/d/L95R-rxmQmdjvQ
А может сами сделаете?
Поделиться9072020-06-09 21:45:23
Можем даже научить))
Поделиться9082020-06-10 08:38:35
А может сами сделаете?
Так, я просто предложил
Можем даже научить))
Нет спасибо, я уже сам самообучился
Поделиться9092020-08-09 22:16:45
Прошу глянуть и оценить сделанную мной в редакторе Б1 карту.
Задумка была примерно следующей. Игрок - СССР, ИИ - Германия. Войска игрока врываются в город внизу карты, дальше необходимо выдержать контратаку и захватывать потихоньку карту при подавляющем преимуществе противника прежде всего в артиллерии. Минимум своих сил на большой карте, но с оставлением возможности захвата вражеской техники на вражеских складах/рем базах/заводах, в том числе и танков с грузовиками снабжения(все вражеское). Промучавшись с неделю в попытках понять создание скрипта, понял, что это точно не моё, и всё потихоньку стало скатываться к альтернативной истории - СССР против всех. Если кто-то решит помочь с изначальной реализацией, заранее спасибо. Если карта пригодна под ГЗМ, используйте в дальнейших обновлениях.
Поделиться9102020-08-17 13:19:41
Прошу глянуть и оценить сделанную мной в редакторе Б1 карту
А ничего так. Мне нравятся большие карты.
Из недостатков.
Избыток однотипных объектов (флора, дома и т.д.), все-таки ГЗМ намного богаче и красочней БК-1.
Подавляющее количество прямых окопов. Ломано-извитые придают реалистичность. Да и расположение окопов в одну линию не соответствует давно подготовленной обороне.
Избыток каменных заборов, особенно по краям карты, а также среди природы.
Кроме небольших парков в городах, вся их территория покрыта брусчаткой, асфальтом, между домами ни кусочка земли с травкой.
Положительные моменты (лично для меня).
Огромный основополагающий кусок работы для возможной миссии.
Порадовали достаточные расстояния между населенными пунктами, кое-где между строениями - есть где развернуться и подождать (в игре). А то бывает не то, что грузовики и танки, но и пехота не может выйти из нагромождения домов и заборов. Хотя есть избыток близко расположенных домов на севере карты.
Приятно, что еще немало увлеченных этой игрой людей, которые готовы учиться и что-то делать...
В общем +.
Поделиться9112020-08-17 15:26:32
yersinia, благодарю за указание недочетов. Учту на будущее.
Поделиться9122020-08-22 20:09:41
Прошу глянуть и оценить сделанную мной в редакторе Б1 карту.
Пробежался беглым взглядом. Что ж, некоторые места получились весьма красивыми, но про однотипность объектов Вам написали абсолютно верно. Особенно отмечу, что Вам явно тяжело даются разного рода промзоны - на карте они получились совершенно пустыми и безжизненными.
Где разбросанный под заборами хлам, пролитое на асфальт масло, следы от проехавшихся по нему грузовиков? Все это можно найти во вкладе Obj Terrain. Ну, и одним тайлом все заливать действительно не следует.
Каменные ограды местами все же уместны, но вот, например, в случае с данным ж/д узлом они выглядят аляповато, особенно в сочетании с вышками:
Все-таки такая ограда - скорее атрибут крестьянского участка, нежели значимого инфраструктурного объекта.
В городе слишком часто встречаются однотипные дома. Между тем, в 40-е гг. строительство по типовым проектам лишь делало первые шаги, и оно уж точно не велось в подобном архитектурном стиле:
Крайне скучно и однообразно выглядит городской парк:
Нелишне было бы "оживить" и кладбище:
Также настоятельно рекомендую освоить Field Composer - это сделает природные локации гораздо более живыми и насыщенными.
Про окопы замечание также более, чем актуальное. От себя могу лишь добавить, что изображенные вам "стенки" из земленосных мешков за окопами, призванные изображать, видимо, позиции тяжелого вооружения, не имеют к реальной полевой фортификации никакого отношения. Во-первых, земленосные мешки всегда были в относительном дефиците. Во-вторых, никакой реальной защиты от артогя такие стенки не обеспечат.
Для более корректного изображения оборонительных позиций настоятельно рекомендую хотя бы бегло пролистать вот эти две книжки:
https://yadi.sk/i/ggX_AzVE3WVCu6
https://yadi.sk/d/7W-Ax_yy3WVCsp
Промучавшись с неделю в попытках понять создание скрипта, понял, что это точно не моё
А вот тут могу сказать только одно: глаза боятся - руки делают. Хоть криво, хоть с кучей лишних строк, но скрипт дался даже мне - человеку, бесконечно далекому от программирования и десять лет не касавшемуся никаких точных наук. Так что мучайтесь дальше. У Вас все получится.
Отредактировано VautourII (2020-08-22 20:11:51)
Поделиться9132020-08-23 13:04:39
VautourII, благодарю за подсказки. Книги прочту, благо мой английский это вполне позволяет.
Поделиться9142020-09-02 18:34:05
Здравствуйте, не работает закоментированный кусок кода(через --).
Это было выяснено опытным путем - как только эта часть становится раскоментированной, то весь скрипт не запускается
function SekretTank()
DisplayTrace ("Идет проверка на скрипт секретного танка");
DisplayTrace ("Сценарный юнит: %g", GetNUnitsInScriptGroup (902));
DisplayTrace ("Маус: %g", GetNUnitsInScriptGroup (904));
--if ((GetNUnitsInScriptGroup(902) > 0) and (GetNUnitsInScriptGroup(904) > 0)) then
--if ((GetNScriptUnitsInArea(902, ”maus”)) > 0) then
--ChangePlayer (904, 1);
--LandReinforcement (903);
--DisplayTrace ("У НЕМЦЕВ ЗАМЕЧЕН НОВЕЙШИЙ ТАНК!!! СОВЕТСКОЕ КОМАНДОВАНИЕ ПРИСЛАЛО РЕЗЕРВЫ!!!");
--end;
--else
--Suicide();
--end;
end;
Поделиться9152020-09-02 18:57:40
(GetNUnitsInScriptGroup(iScriptID,iParty)
Поделиться9162020-09-02 19:18:17
А разве 2-ой параметр обязателен?
Цитата из не оф. мануала:
GetNUnitsInScriptGroup (iScriptID [, iPlayer])
Возвращает количество юнитов в сценарной группе iScriptID. Используя необязательный параметр iPlayer, можно получать количество юнитов в сценарной группе iScriptID игрока iPlayer. Второй параметр полезно использовать, когда в сценарную группу входят пушки (в случае отстрела всего расчета пушка становится нейтральной).
Пример: a = GetNUnitsInScriptGroup(102, 1); - получить кол-во юнитов игрока 1 в сценарной группе 102.
Отредактировано Daniil1254 (2020-09-02 19:21:19)
Поделиться9172020-09-02 22:14:30
Ну если вариант с одним номером не работает, то есть смысл попробовать с номером и стороной, как все пишут)
Поделиться9182020-09-02 23:49:57
Логично), надо было сразу тогда сказать. А то выше точно такая же команда в выводе сообщения и ничего... работает как надо.
Поделиться9192020-09-03 10:26:39
Проблема была в неправильных кавычках, а неправильные кавычки пошли из мануала... Теперь скрипт уже не падает, но и делать то что мне надо не хочет. Где-то я видел английский мануал, а теперь найти не могу, можете скинуть?
Отредактировано Daniil1254 (2020-09-04 21:14:21)
Поделиться9202020-09-03 14:22:41
Где-то я видел английский манула, а теперь найти не могу, можете скинуть?
http://www.blitzkrieg.be/helpz_bk/LuaSc … ide.htm#00
Этот? Даже если не он, тоже можно попробовать почитать, если с английским нормально.
Поделиться9212020-09-03 18:24:57
Работает, я забыл раскоментировать часть с активацией функции. Для тех кому кусок кода понадобится: после подхода подкрепления не забудьте написать Suicide().
Поделиться9222020-09-04 16:14:19
Всех приветствую! Хочу обратиться за помощью к знающим - перестала открываться карта в редакторе. Прогружает тайлы и потом, где-то на половине загрузки, выкидывает на рабочий стол...
Вот сама карта: https://yadi.sk/d/l_eluS7nNAl6lA
Посмотрите, пожалуйста, что можно сделать - карта уж больно симпатичная получалась...
Поделиться9232020-09-04 17:14:11
Всех приветствую! Хочу обратиться за помощью к знающим - перестала открываться карта в редакторе. Прогружает тайлы и потом, где-то на половине загрузки, выкидывает на рабочий стол...
Вот сама карта: https://yadi.sk/d/l_eluS7nNAl6lA
Посмотрите, пожалуйста, что можно сделать - карта уж больно симпатичная получалась...
Есть вероятность косяка, из-за которого происходит вылет. Высоты есть на карте? Подкрепления какие-нибудь выставлены?
Поделиться9242020-09-04 17:37:40
Есть вероятность косяка, из-за которого происходит вылет. Высоты есть на карте? Подкрепления какие-нибудь выставлены?
Эта та самая карта - Бюр. Да, высот там полно... Ну судя по комментариям выше придется с нуля начинать...Жаль. Срок сдачи карты тебе значительно сместится теперь
Поделиться9252020-09-04 19:06:40
Эта та самая карта - Бюр. Да, высот там полно... Ну судя по комментариям выше придется с нуля начинать...Жаль. Срок сдачи карты тебе значительно сместится теперь
С высотами нужно быть КРАЙНЕ аккуратным! Особенно в самом верху и слева на краях карты. Когда ставишь там деревья, могут получиться вот такие критичные глюки. Шибко не расстраивайся. Мы почти все это проходили на своей шкуре. У меня самого одна карта почти готовая таким образом погорела... Просто сохраняйся на разных версиях, или в hml-формате. Так ещё можно будет исправить косяк.
Поделиться9262020-09-04 19:17:12
Картоделу привычка делать резервные копии нужна как воздух. Сам на этом уже несколько раз обжегся.
Поделиться9272020-09-04 21:12:05
Дааа, уже понял свою оплошность)) Что ж, впредь буду мудрее
Поделиться9282020-09-04 21:14:56
Да, это обидно. После такого, вообще можно забросить рисовать карты.
Поделиться9292020-09-13 18:35:35
Избушки бы разные взять, а то почти одинаковые в ряд смотрятся не очень. Благо, у нас их выбор большой.
Поделиться9302020-09-20 16:39:27
Хочу обратиться за помощью к знающим - перестала открываться карта в редакторе
Если проблема еще актуальна, ниже ссылка на вашу карту, которая уже открывается (ошибки исправлены).
В архиве карта в двух форматах (на всякий случай) и лог.-файл с двумя удаленными проблемными объектами. Один из них (T_Poplar05) просто глючный, а второй не знаю, откуда мог взяться - в модобъектс ГЗМ 9.21 такого объекта нет (_Ambient_Tree_3).
https://mega.nz/file/T7oQEApA#sfQjbg-Au … CB5aeAX7JA