Союз | Union

Объявление

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

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


Вы здесь » Союз | Union » Картостроение и скриптовка » "Школа картоделов"


"Школа картоделов"

Сообщений 961 страница 990 из 1223

961

Перестала запускатся карта а map editor. Наверно через обьект какой то... Как исправить ошибку, через пустой мод?? А то не могу найти план действий...

0

962

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

Перестала запускатся карта а map editor. Наверно через обьект какой то... Как исправить ошибку, через пустой мод?? А то не могу найти план действий...

Как понять через объект какой-то? Чтобы карта не запускалась на ней можно просто накосячить.

+1

963

sid, посмотрите в "Личные сообщения".
В последнем "Личном сообщении" вместо "ГЗМ-9.1" читать "ГЗМ-9.21"

Отредактировано yersinia (2020-03-22 19:22:27)

+1

964

Леонид88 написал(а):

Как понять через объект какой-то?

Это не утверждение, а предположение.

Леонид88 написал(а):

Чтобы карта не запускалась на ней можно просто накосячить

Ну зачем же так с кондачка? К людям нужно помякше, а на вопросы смотреть ширше… Неужели у вас не было косяков на лично вами нарисованных картах, а у Сида их не менее четырех полноценных...

+1

965

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

0

966

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

Ну зачем же так с кондачка? К людям нужно помякше, а на вопросы смотреть ширше… Неужели у вас не было косяков на лично вами нарисованных картах, а у Сида их не менее четырех полноценных...

Там не было никаких "наездов". Человек просто не так выразился, а имел ввиду, что такое могло случиться запросто и всё. И это случалось у всех, я думаю.
И, да, самое плохое, что, возможно, уже ничего с этим не поделать и придется начинать всё снова.
А вообще, чаще всего, такую "подлянку" подкидывает вода на картах. Имея печальный опыт, перед нанесением воды, делаю копию, которая работает, а потом продолжаю. Так есть вероятность, что не придется делать вообще с нуля, а только с какого то этапа.
Ещё, есть вероятность, что это при смене тайлов на альтернативные. Я знаю, что Sid, последнее время, много карт переделывает с новыми тайлами.
Жаль, если открыть так и не получится, но это тоже опыт. Надо делать копии. Это пока единственный вариант.

0

967

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

Это не утверждение, а предположение.

Так я и пишу что не понял что человек имеет ввиду. Намекаю чтобы уточнил.

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

Ну зачем же так с кондачка? К людям нужно помякше, а на вопросы смотреть ширше… Неужели у вас не было косяков на лично вами нарисованных картах, а у Сида их не менее четырех полноценных...

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

0

968

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

0

969

Может кому-нибудь будет полезным.

Я обычно делаю так. В папке Data/maps лежит карта, надо которой работаю, а в другом месте есть резервная папка. При каждом успешном открытии карты в редакторе сразу же, ничего не меняя и не сохраняя, копирую карту из Data/maps в резерв. Только после этого приступаю к работе. При закрытии редактора сохраняю как есть. При следующем открытии алгоритм повторяется - если карта открылась, удаляю предыдущую резервную копию, а на ее место копирую текущую версию (гарантированно рабочую).

Таким образом, даже если что-то сломается, максимум потеряются только самые последние изменения. Просто восстанавливаемся из резерва и продолжаем. Такой подход требует определенной дисциплины - нужно не забывать каждый раз делать копии. Со временем входит в привычку и уже происходит на автомате, как само собой разумеющееся.

+2

970

Декоративный поезд (с не сцепленными вагонами) отказывается становиться на рельсы:
https://i.ibb.co/25Py5qh/shot0313.jpg
Хотелось бы узнать, как с этим справляться.

0

971

Стоит сцепить вагоны. Без сцепки игра будет их ставить на некотором расстоянии. Особенность ж/д-юнитов.

0

972

Решив вспомнить былое и поиграть в свой полуторагодичной давности "Автобан", столкнулся с, казалось бы, изжитой проблемой: карта снова вылетает по непонятной причине. Я уже перепробовал все: и отодвигал юниты в подкрепах от края карты, и следил, чтобы скриптовый номер не получил куст - ничего не помогло. При этом, если сделать сохран и тут же его загрузить, вылеты прекращаются.
https://yadi.sk/d/e8gmJTEU3aEX8w

0

973

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

если сделать сохран и тут же его загрузить, вылеты прекращаются.

видимо проблема не фатальная (в ошибке скрипта), а в совокупности факторов, которые приводят к сбою выполнения алгоритма... давайте попробуем разобраться, какие шероховатости сразу бросаются в глаза, да и вообще пользуясь случаем разберем часто повторяющиеся ошибки в скриптах ГЗМ (других авторов):

- запуск функций с некорректным временем 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... вот такая особенность у долгоиграющих команд..

function SA_obhod_1()

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. тогда она будет обнулена перед выполнением вашей карты, не будет мешать на других картах и засорять память Блица... элементарная вещь, которая тратит море нервов игрокам и тестерам... глобальная переменная без такой приставки почти никогда вам не понадобится, только для развилок в кампаниях и если вы делаете серию из нескольких карт, в которых события на одной влияют на следующую (к сожалению таких серий у нас нет (?))....

function Exit2094()

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... это ЗА КАРТОЙ... возможен критический вылет...

Будьте внимательны и логичны в написании скриптов, хорошего ГЗМ!

+7

974

Может кто-то доработает эти карты и сделает к ним скрипт?  https://yadi.sk/d/L95R-rxmQmdjvQ

0

975

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

Может кто-то доработает эти карты и сделает к ним скрипт?  https://yadi.sk/d/L95R-rxmQmdjvQ

А может сами сделаете?

+1

976

Можем даже научить))

0

977

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

А может сами сделаете?

Так, я просто предложил  8-)

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

Можем даже научить))

Нет спасибо, я уже сам самообучился  :glasses:

+1

978

Прошу глянуть и оценить сделанную мной в редакторе Б1 карту.
Задумка была примерно следующей. Игрок - СССР, ИИ - Германия. Войска игрока врываются в город внизу карты, дальше необходимо выдержать контратаку и захватывать потихоньку карту при подавляющем преимуществе противника прежде всего в артиллерии. Минимум своих сил на большой карте, но с оставлением возможности захвата вражеской техники на вражеских складах/рем базах/заводах, в том числе и танков с грузовиками снабжения(все вражеское). Промучавшись с неделю в попытках понять создание скрипта, понял, что это точно не моё, и всё потихоньку стало скатываться к альтернативной истории - СССР против всех. Если кто-то решит помочь с изначальной реализацией, заранее спасибо. Если карта пригодна под ГЗМ, используйте в дальнейших обновлениях.

https://anonfiles.com/R2Q911L5oa/Revo_pak

+1

979

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

Прошу глянуть и оценить сделанную мной в редакторе Б1 карту

А ничего так. Мне нравятся большие карты.
Из недостатков.
Избыток однотипных объектов (флора, дома и т.д.), все-таки ГЗМ намного богаче и красочней БК-1.
Подавляющее количество прямых окопов. Ломано-извитые придают реалистичность. Да и расположение окопов в одну линию не соответствует давно подготовленной обороне.
Избыток каменных заборов, особенно по краям карты, а также среди природы.
Кроме небольших парков в городах, вся их территория покрыта брусчаткой, асфальтом, между домами ни кусочка земли с травкой.
Положительные моменты (лично для меня).
Огромный основополагающий кусок работы для возможной миссии.
Порадовали достаточные расстояния между населенными пунктами, кое-где между строениями - есть где развернуться и подождать (в игре). А то бывает не то, что грузовики и танки, но и пехота не может выйти из нагромождения домов и заборов. Хотя есть избыток близко расположенных домов на севере карты.
Приятно, что еще немало увлеченных этой игрой людей, которые готовы учиться и что-то делать...
В общем +.

0

980

yersinia, благодарю за указание недочетов. Учту на будущее.

0

981

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

Прошу глянуть и оценить сделанную мной в редакторе Б1 карту.

Пробежался беглым взглядом. Что ж, некоторые места получились весьма красивыми, но про однотипность объектов Вам написали абсолютно верно. Особенно отмечу, что Вам явно тяжело даются разного рода промзоны - на карте они получились совершенно пустыми и безжизненными.
https://i.ibb.co/mTc5YWB/1.png https://i.ibb.co/3sGYZ8k/2.png https://i.ibb.co/Z287qLK/3.png https://i.ibb.co/31mccG4/4.png https://i.ibb.co/cxF7YMj/5.png https://i.ibb.co/PDQcNqb/image.png
Где разбросанный под заборами хлам, пролитое на асфальт масло, следы от проехавшихся по нему грузовиков? Все это можно найти во вкладе Obj Terrain. Ну, и одним тайлом все заливать действительно не следует.
Каменные ограды местами все же уместны, но вот, например, в случае с данным ж/д узлом они выглядят аляповато, особенно в сочетании с вышками:
https://i.ibb.co/rt7cmvk/image.png
Все-таки такая ограда - скорее атрибут крестьянского участка, нежели значимого инфраструктурного объекта.
В городе слишком часто встречаются однотипные дома. Между тем, в 40-е гг. строительство по типовым проектам лишь делало первые шаги, и оно уж точно не велось в подобном архитектурном стиле:
https://i.ibb.co/RNZzkLm/image.png https://i.ibb.co/Tkstm1Z/2.png
Крайне скучно и однообразно выглядит городской парк:
https://i.ibb.co/XLDXmJL/image.png
Нелишне было бы "оживить" и кладбище:
https://i.ibb.co/nDk35sp/image.png
Также настоятельно рекомендую освоить Field Composer - это сделает природные локации гораздо более живыми и насыщенными.
Про окопы замечание также более, чем актуальное. От себя могу лишь добавить, что изображенные вам "стенки" из земленосных мешков за окопами, призванные изображать, видимо, позиции тяжелого вооружения, не имеют к реальной полевой фортификации никакого отношения. Во-первых, земленосные мешки всегда были в относительном дефиците. Во-вторых, никакой реальной защиты от артогя такие стенки не обеспечат.
https://i.ibb.co/KwdJJmv/image.png https://i.ibb.co/HHv7zVG/2.png
Для более корректного изображения оборонительных позиций настоятельно рекомендую хотя бы бегло пролистать вот эти две книжки:
https://yadi.sk/i/ggX_AzVE3WVCu6
https://yadi.sk/d/7W-Ax_yy3WVCsp

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

Промучавшись с неделю в попытках понять создание скрипта, понял, что это точно не моё

А вот тут могу сказать только одно: глаза боятся - руки делают. Хоть криво, хоть с кучей лишних строк, но скрипт дался даже мне - человеку, бесконечно далекому от программирования и десять лет не касавшемуся никаких точных наук. Так что мучайтесь дальше. У Вас все получится.

Отредактировано VautourII (2020-08-22 20:11:51)

+3

982

VautourII, благодарю за подсказки. Книги прочту, благо мой английский это вполне позволяет.

0

983

Здравствуйте, не работает закоментированный кусок кода(через --).
Это было выяснено опытным путем - как только эта часть становится раскоментированной, то весь скрипт не запускается
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;

0

984

(GetNUnitsInScriptGroup(iScriptID,iParty)

0

985

А разве 2-ой параметр обязателен?
Цитата из не оф. мануала:

GetNUnitsInScriptGroup (iScriptID [, iPlayer])
Возвращает количество юнитов в сценарной группе iScriptID. Используя необязательный параметр iPlayer, можно получать количество юнитов в сценарной группе iScriptID игрока iPlayer. Второй параметр полезно использовать, когда в сценарную группу входят пушки (в случае отстрела всего расчета пушка становится нейтральной).
Пример: a = GetNUnitsInScriptGroup(102, 1); - получить кол-во юнитов игрока 1 в сценарной группе 102.

Отредактировано Daniil1254 (2020-09-02 19:21:19)

0

986

Ну если вариант с одним номером не работает, то есть смысл попробовать с номером и стороной, как все пишут)

0

987

Логично), надо было сразу тогда сказать. А то выше точно такая же команда в выводе сообщения и ничего... работает как надо.

0

988

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

Отредактировано Daniil1254 (2020-09-04 21:14:21)

0

989

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

Где-то я видел английский манула, а теперь найти не могу, можете скинуть?

http://www.blitzkrieg.be/helpz_bk/LuaSc … ide.htm#00
Этот? Даже если не он, тоже можно попробовать почитать, если с английским нормально.

0

990

Работает, я  забыл раскоментировать часть с активацией функции. Для тех кому кусок кода понадобится: после подхода подкрепления не забудьте написать Suicide().

0


Вы здесь » Союз | Union » Картостроение и скриптовка » "Школа картоделов"