Союз | Union

Объявление

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

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


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


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

Сообщений 541 страница 570 из 1147

541

http://rusfolder.com/43460735
В ССЫЛКЕ АРХИВ, А В НЕМ ТАКОЕ:
=Новые «учебники»=
1. Как создать рабочую миссию.doc
2. newkarta.pak – в этом файле готовая дополнительная миссия, созданная и взятая как пример при составлении документа под № 1 в этом списке.
3. Какие команды писать в скрипт.lua
4. Команды юнитам.txt
5. Бланки для создания миссии.rar (здесь «бланк» скрипта и «бланк» сценария, необходимые для создания своей миссии.
6. ГОТОВЫЕ СКРИПТЫ (Папка, в которой примеры готовых скриптов)
=Старые «учебники», созданные другими авторами=
7. (Asgart) mapeditor.doc (учебник по редактору карт)
8. (Reks) mapeditor.doc (учебник по редактору карт)
9. LUA v1.8 (Jukov).doc (учебник по редакторам, скриптам, хмл-файлам)
10. Lua. Учебник.doc (статья по языку Lua)

   Во всем этом изложены основы создания дополнительной миссии вручную, без редактора ресурсов. Там рассказано, из чего она состоит, что обозначает каждый ее элемент, как создать скрипт для этой миссии (довольно подробно). Прилагаются все необходимые «инструменты».
Под НОМЕРОМ 10 СЛУЧАЙНО ЗАКАЧАН ТОЛЬКО ЯРЛЫК, САМ ФАЙЛ БЫЛ УТЕРЯН, остальное в норме.

Отредактировано yersinia (2015-04-15 21:24:30)

+6

542

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

10. Lua. Учебник.doc (статья по языку Lua)

В архиве только ярлык на учебник, doc файла нет.

0

543

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

В архиве только ярлык

Да, к сожалению остался только ярлык, наверное сам файл случайно был удален.
В дополнение. только на иностранном, но при желании понять можно:
http://rusfolder.com/43464182

0

544

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

В ССЫЛКЕ АРХИВ, А В НЕМ ТАКОЕ:

Всем, кто любит спрашивать: "а можно то, а можно это" рекомендуется!!!
Очень нужная и важная работа!!! Плюсанул, но хочу и словами сказать: Огромное СПАСИБО!!!

0

545

http://rusfolder.com/43662338
Там в архиве вордовский файл, где написано, как увеличить карту.
Файл перезалит, в нем исправлена ошибка в первом "простом" пути.

Отредактировано yersinia (2015-05-16 14:55:14)

0

546

Привет! Вот нашёл в youtube видеоролик http://www.youtube.com/watch?v=jfg-nW2k8no  по созданию карт в редакторе. сам не совсем разобрался, но интересно..
Вот еще интересное видео, как в Paint.NET изменять текстуры юнитов на камуфляж. http://www.youtube.com/watch?v=xCRf8zMHOyY   http://www.youtube.com/watch?v=depjJJINEVE

0

547

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

Привет! Вот нашёл в youtube видеоролик http://www.youtube.com/watch?v=jfg-nW2k8no  по созданию карт в редакторе. сам не совсем разобрался, но интересно..

Видеоролик слишком маленький и не на русском, если есть желание научиться создавать карты то 6-ю постами  выше (№ 554) посмотрите, там всё самое нужное.

0

548

Спасибо! Посмотрю.

0

549

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

в map editor пропало много обьектов

Редактор карт показывает все объекты, которые записаны в файлах objects.xml и modobjects.xml. Они не могут пропасть или исчезнуть, если эти файлы не трогать.
Но если на компе установлено несколько разновидностей БК (МК, БК-ГЗМ, РТ), то редактор будет показывать те объекты, с какой из этих игр вы его запустили.
Если запущен редактор с того "Блицкрига", где установлена "Миссия Курск", то он будет выдавать объекты БК+МК, но не будет видеть объекты ГЗМ. И наоборот, если редактор запустить с БК-ГЗМ, то он не будет видеть МК (и открывать соответствующие карты).
Если в одном Блицкриге стоит много Модов, или имеются .пак-файлы миссий (глав, кампаний) в Дате, которые в своей структуре содержат ресурсы и файл modobjects.xml, то редактор может "дуреть", выдавая то одни, то другие ресурсы.

0

550

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

Вот пример чего у меня нет в map editor.

Очень странно. Какую версию МОДа используете, эти объекты уже очень давно. В версии 7.0 они уже точно есть. Возможно, действительно, путаетесь при создании карты в том, какое значение МОДа нужно поставить.

0

551

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

Мод 7.77

1. Карта должна делаться изначально "без всякого мода"(No any mod - в настройках создания новой, еще пустой карты). Но это только в том случае, когда она делается для ГЗМ. Редактор должен быть открыт из файла .ехе редактора в корневой папке, где установлен сам Блицкриг со всеми файлами ГЗМ в том порядке, как неоднократно описывалось на форуме. Проверь наличие всех файлов ГЗМ. Они должны быть в ДАТЕ, а не в папке МОДс.
Если это все так, а части объектов нет, есть еще 2 варианта.
Первый: изначально карта делалась как МОДовая (не знаю какой, может у тебя ГЗМ стоит в папке Модс? или что-либо другое). Тогда нужно открыть эту карту "без всякого мода", сохранить, выключить редактор и игру (если включена), а затем перегрузить эту карту в редактор.
Второй: возможно были изменены фильтры в редакторе. В этом случае нужно удалить из даты папку "" (которая не в .рак-файле!) и по новой открыть редактор. В этом случае сгенерируются стандартные фильтры, в которых прочитываются все объекты и юниты, имеющиеся в игре. Да, на всякий случай посмотри эти объекты в фильтре "Билдингс", где должно быть все, что имеется в этой папке.
2. Если изначально карта создавалась как модовая, н-р Миссии Курск, то она должна и быть закончена на этом моде. Как адаптировать (перевести) модовую карту в ГЗМ, подробно описано в соответствующем разделе.
3. Еще раз проверь в Дате игры все .рак-файлы, которые не относятся к Блицкригу и ГЗМ, возможно там имеется скрытый (запакованый) файл "modobjects.xml", с которого и считывается другая информация для юнитов. Например, такой файл имеется в главе от Тедди88 про Сталинград.

Чтобы такого избежать в дальнейшем, нужно иметь ЧИСТЫЙ Блицкриг-ГЗМ, без всяких модов, дополненительных миссий, глав... и разных патчей.

Отредактировано yersinia (2015-06-10 18:06:14)

0

552

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

Может мне переустановить Блицкриг !?

Можно переустановить, можно просто вычистить. Корневую папку трогать не надо, а в папке Data всё лишнее убрать, "мапс" и "сценариос" почистить... если в пак файлах с ГЗМ никаких самостоятельных дел не ворочали, то всё должно заработать как надо

0

553

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

Вы не знаете, что то за буквы в Obj Terrain (Л,М,П.Р).

Например эти?
http://sg.uploads.ru/t/5PbBJ.jpg

0

554

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

Переустановил Блицкриг. Ничего не изменилось. Ну та ладно

Ты игру переустановил, а записи в реестре остались.
Редактор карт хранит настройки в реестре, в этом разделе.
[HKEY_CURRENT_USER\Software\Nival Interactive\Blitzkrieg Map Editor]

Надо закрыть редактор и игру, бросить этот батник в папку Data
Для первоначальных настроек редактора запусти этот батник
https://yadi.sk/d/eHXWAZX8hD8UV
он очистит ветку реестра редактора и удалит папку Editor в Data.

Потом запускай редактор.

0

555

Ну, всё таки через пару-тройку месяцев, случится долгожданное чудо  :) и выйдет новый патч, там будет всё это, и даже немного больше  ;)

+1

556

Можно, но тут свои нюансы. Просто взять танк и завести на платформу нельзя, движок не позволяет. Но зато можно с помощью скрипта разыграть сцену погрузки/разгрузки техники.
Каждая платформа предназначена для перевозки только одного типа техники, который указан в названии. Чтобы техника появилась на платформе, надо "посадить" в нее людей, как только люди "выйдут" из платформы - техника исчезнет.

0

557

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

Ребят, залейте, пожалуйста, SciTE Editor, а то ссылки не рабочие.

http://scintilla.org/SciTE.html
Языковые пакеты
https://code.google.com/p/scite-files/wiki/Translations

0

558

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

Я подцепил его в map editоr и хотел проверить, но он не работает, не могу найти проблему.

Зачем второй раз прописана function Init() ?
Вот эти строки:
function Init()
RunScript("MoveCar", 3000);
end;

0

559

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

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

По поводу выложенных скриптов, точнее только некольких функций.
Элементарная логика(как прописано в функции ИНИТ):
функция DisableAvia срабатывает через 2 секунды после начала игры (комп может успеть выпустить разведчика)
функция DisplayL - срабатывает через 2 секунды - высвечивается текст что прибыл лейтенант, но его еще нет на карте, т.к. еще не сработала функция высадки подкрепления этого лейтенанта
функция Move_Truck - срабатывает через 3 секунды, дает задачу передвигаться юниту (офицеру-лейтенанту), а этого лейтенанта (проприсан в высадке подкрепа)  еще на карте нет - функция не работает, поэтому и возможные отладки погоды не работают
функция Reinf101 - только через 6 секунд на карту прибудет этот лейтенант, естественно, задания о перемещении он уже не получит, в нужную точку он не переместится, условия его перемещения работать уже не будут.
ИТОГИ ПОДВЕДЕМ: исправить время запуска функций (появления-высадки офицера, потом его перемещения и т.д.)
И еще. Если это хоть как то поможет, то пожалуйста, убери подпись Черномырдина - ............(мне она очень..... "не нравится").

Отредактировано yersinia (2015-09-10 22:11:57)

0

560

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

Не ну а сами функции правильны

Эту цитату следует понимать как: "забыл алфавит, падежов припомнил только два"? - шутка, не обижайся.
Там еще в выложенном тобою сообщении есть:
LandReinforcement(101); - лейтенант Залесский
В такой прописи скрипт работать не будет, потому что после команды (перед "лейтенант...") стоит только одно тире(дефис), а их нужно не меньше двух
Комментарий, т.е. любые буквы, слова, знаки и т.п., которые не относятся к скриптам, должны иметь вначале не менее двух знаков дефиса(тире), т.е не менее --(двух! таких знаков).
А еще для лучшего понимания, точнее ускорения обучения, открой скрипт любой рабочей миссии, самый короткий, и "представь", как он работает. Возможно, это поможет в освоении принципов написания скриптов.

0

561

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

А как сделать что бы пехота высаживалась(подкрепление) на карту сразу на марше.?

Кликаешь два раза по скваду, в выпавшей табличке последнее значение "formation" меняешь на "movement" - в игре они будут "на марше"

+1

562

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

как сделать скрипт разведки ...Какие ошибки!?

Ошибки

function Objective0()
ObjectiveChanged(0, 1);
DisplayTrace("Пошли, Семеныч, разведаем обстановку!");  --дальше идет новая функция, а в этой нет самоубийства Suicide(); и конца end;
                                                                                          функция и весь скрипт не сработает

function AlarmZone()
local A_USE_SPYGLASS = 29
QCmd(A_USE_SPYGLASS, 102 ,GetScriptAreaParams("SpugglassZone1")); --сразу задана следующая команда (QCmd), нужно первую: Cmd
                                                                                                             --команда "смотреть в бинокль", юниты посмотрят в указаную зону,
                                                                                                                не сходя с места
                                                                                                               (а в предыдущем тексте Пошли, Семеныч...

if GetNUnitsInArea(0,"SpugglassZone1")>0 then Cmd(29,102,"SpugglassZone1"); --"Если юнитов в зоне "SpugglassZone1" больше нуля..
                                                                                                                          А ведь по предыдущей
                                                                                                                          команде они должны только смотреть в эту зону,
                                                                                                                          а не перемещаться туда,
                                                                                                                          т.е. условие никогда не сработает
Suicide();
end;
end;

function Init()
RunScript("Objective0",7000);
RunScript("AlarmZone",9000);
end;

Отредактировано yersinia (2015-09-29 19:33:43)

0

563

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

взятие пленного офицера

Это как? Он уже пленный, а его ещё взять надо?  :) Или имеется ввиду взять в плен офицера?
Вообще не очень конкретно выражаете свои желания. Можно по разному устроить такое:
1. Назначить скриптовый номер юниту и сделать его "нейтральным" игроком, рядом с тем местом, где он стоит или находится в здании создать скриптовую зону и, при достижении игроком этой зоны, сделать его юнитом игрока и надписи, типа"здаёмсу-у"...
2. Не давать этому офицеру "нейтральной" принадлежности, а остальное почти всё также, тогда с большой долеё вероятности, что его грохнут, при взятии объекта или зоны.
Пленных также, можно посадить в здания, сделать зону и в скрипте прописать условие, что при нахождении в этой зоне юнитов игрока, или при истреблении в этой зоне юнитов противника, юниты, считающиеся пленными станут "принадлежать" игроку...
Вообще, это не самые сложные скрипты, главное понять чего конкретно надо.

0

564

Приветствую! Такой вопрос: можно ли прописать снайпера так, чтобы он стрелял не по всем подряд юнитам игрока, а только лишь по тем, которые имеют заданный ID? Реально ли вообще? Пробовал сделать так:
GiveCommand(1, SniperID, VictimID);
Здесь SniperID - ID снайпера, VictimID - ID жертвы.
Но после выполнению функции снайпер начинает лупить по всем подряд, кто находится в зоне поражения, а жертву не трогает почему-то.
Это нужно, чтобы реализовать уничтожение снайпером ком. состава, когда, например, снайпер лежит в засаде и не отсвечивает до тех пор, пока рядом с ним (в радиусе его обстрела) не появляется офицер противника.
Офицер может быть не один, между ним и снайпером могут находиться другие юниты. Важно, чтобы первый выстрел был строго по офицеру. Дальнейшие действия роли не играют. Может кто-нибудь в той или иной мере сталкивался с такой задачей? Поделитесь секретом, пожалуйста :rolleyes:

0

565

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

можно ли прописать снайпера так, чтобы он стрелял... только лишь по тем, которые имеют заданный ID? Реально ли вообще?

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

примерный скрипт

RunScript("bronebojchik",2000); ---время должно быть небольшим, чтобы наш   
                                   бронебойщик не успевал отвлекаться
                                   на другие цели

function bronebojchik()
if (GetNUnitsInScriptGroup(100)>0)then ---если бронебойщики №100 не убиты, то
Cmd(1,100,200);                           стрелять только по врагу №200
end;

if (GetNScriptUnitsInArea(200,"vidno")==0)then -- если в зоне "vidno"
Cmd(9,100);                                        врага №200 нет, то отставить
end;                                               все действия

if (GetNUnitsInScriptGroup(100)==0)or
       (GetNUnitsInScriptGroup(200)==0)then ---если наших бронебойщиков убили
Suicide();                                  или они уничтожили всех врагов №200 
end;                                        то функция убивается
end;

Зону "vidno" нарисовать на карте круглой, которая соответствует дальности стрельбы нашего юнита №100. Это в том случае, если он сидит в окопе или в доме.
Если он на открытой местности, то по идее будет сам передвигаться по всей карте, приближаясь к врагу №200.
   Если не сложно, проверь скрипт на пробной карте.

Отредактировано yersinia (2015-11-04 16:30:25)

0

566

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

Если не сложно, проверь скрипт на пробной карте.

Проверил, как Вы советовали. Эффект тот же. Дело в том, что снайпер отказывается атаковать юнита с определенным ID. Вместо этого начинает палить во всех подряд. Вот мой скрипт:

Код:
function Init()	
	RunScript("Test", 3000);
end;

function Test()
	DisplayTrace("Старт!");	
	LandReinforcement(1);    -- Снайпер появляется на карте
	RunScript("Kill", 5000);	
	Suicide();
end;

function Kill()
	local n;
	
	if (GetNUnitsInScriptGroup(100,1) == 0)then 
	    Suicide();    -- Снайпер убит
	end; 
	
	DisplayTrace("Kill!");
	
	n = GetNScriptUnitsInArea(200,"ZoneTest0");
	DisplayTrace("n = %g", n);	
	
	if (n ~= 0) then
	    DisplayTrace("Снайпер!");
	    Cmd(1, 100, 200);    -- В зоне поражения присутствует юнит с номером 200. Огонь!
	end;
end;

Если юнит с ID = 200 присутствует в зоне ZoneTest0 сразу же после запуска ф-ции Kill, снайпер стреляет. Только не в того, в кого нужно.
Если юнита №200 в зоне нет, снайпер молчит. До тех пор, пока №200 не входит в зону. При этом огонь открывается также, как и в предыдущем случае, по всем подряд.

0

567

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

LandReinforcement(1);    -- Снайпер появляется на карте

Данный скрипт читается программой так(высвечивающиеся надписи пропускаются):

LandReinforcement(1);    --
Снайпер появляется на карте А ПОД №1 ПРОПИСАН НОМЕР СНАЙПЕРА 100? если снайпер имеет №100, а в свитке "подкрепления"
он прописан как 1, то этот снайпер будет существовать изначально, без всякой высадки подкрепа.
....запустить функцию Kill
Далее:
function Kill()
local n;     
-- задана переменная локальная, ей не присвоено никакого значения, она пока никак не работает

if (GetNUnitsInScriptGroup(100,1) == 0)then  -- если юнитов в группе №100 Врага(1 - значение единица-враг!!) №100 равно нулю, то далее 

функция убивается и ничего в нижепрописанных командах не происходит- функция уже убита(!)
Но если скриптовый №100 это твой снайпер, то зачем его обозначать как №100 вражеский?
(т.е. второе значение после запятой как 1?). Получается, зачем эта функция вообще нужна,
если она заведомо убивается и ничего никогда не делает).

Затем:
n = GetNScriptUnitsInArea(200,"ZoneTest0");
--переменной присваивается значение: количество юнитов №200 в зоне "ZoneTest0"

Далее: if (n ~= 0) then
--если n(количество юнитов 200 в даной зоне) ...
А потом идет непонятный знак: ~= 0, он означает: "равно не равно нулю" (как в украинском анекдоте: так чи срав чи ні?) в смысле:так равно или не равно?

и далее команда:№100 атаковать № 200.
Эта команда сработает, если ммеется юнит №100 игрока (0-ноль, а не 1один) и юнит № 200, а также не "убъется" функция в первоначальном условии - "если юнитов врага (1) №100 равно нулю".

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

Отредактировано yersinia (2015-11-05 22:47:12)

0

568

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

LandReinforcement(1);    -- Снайпер появляется на карте А ПОД №1 ПРОПИСАН НОМЕР СНАЙПЕРА 100? если снайпер имеет №100, а в свитке "подкрепления"
                                                                                    он прописан как 1, то этот снайпер будет существовать изначально, без всякой высадки подкрепа.

Сейчас специально проверил - снайпер высаживается как подкреп.

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

local n;      -- задана переменная локальная, ей не присвоено никакого значения, она пока никак не работает

Этой переменной не нужно начальное значение. Перед ее использованием в функции ей всегда присваивается значение (строка n = GetNScriptUnitsInArea(200,"ZoneTest0")).

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

if (GetNUnitsInScriptGroup(100,1) == 0)then  -- если юнитов в группе №100 Врага(1 - значение единица-враг!!)

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

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

А потом идет непонятный знак: ~= 0, он означает: "равно не равно нулю" (как в украинском анекдоте: так чи срав чи ні?) в смысле:так равно или не равно?

Это означает "не равно". Т.е. условие будет истинным, если количество юнитов №200 в зоне ZoneTest0 не равно нулю.

Я наверное, немного неправильно озвучил начальные условия задачи. Отсюда и непонятки. Исправляюсь.
Дано: Снайпер под управлением компьютера №100. Офицер под управлением игрока №200. Отряд пехоты под управлением игрока (скриптовый номер не назначен).
Задача: Реализовать уничтожение офицера №200 снайпером №100, как только тот появится в зоне его видимости. При этом одновременно в зоне поражения могут находиться другие юниты игрока (отряд пехоты).
Нужно, чтобы снайпер под управлением компьютера определил наличие нужного юнита на дистанции поражения и попытался его уничтожить. Невзирая на всех остальных.

0

569

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

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

Да, это меняет дело... будем работать... интересная задача...

0

570

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

будем работать... интересная задача...

Я тут грешным делом подумал сделать вот как. В определенные моменты времени снайпер "сканирует" зону на наличие в ней интересных ему юнитов противника (офицеры, генералы  т.д.). Если юнит в зоне поражения присутствует, то он убивается через команду DamageObject(iScriptID,0). Игроку в этот момент выводится сообщение о том, что снайпер уничтожил одного из его подопечных. Игрок уже сам просчитывает обстоятельства происшествия и прочесывает местность. Если за некоторый промежуток времени снайпера нашли, его уничтожают. Если нет, снайпер уходит - исчезает через команду DeleteReinforcement(iScriptID). Типо сменил позицию. Получается, конечно, через одно место. Но зато работать будет. И еще один минус данного метода - нет выстрела, юнит убивается сам. Но пока это единственное результативное действие, которое мне видится...

0


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