18.07.2005, 21:31 | #1 | ||
Мастер
Регистрация: 03.04.2007
Адрес: Сайтама
Сообщений: 391
Репутация: 92
|
Создание карт, модов для WarCraft 3
Прежде чем задать вопрос прочитайте следующее: Полезные ссылки, программы и прочее..., Оглавление "Библиотеки Творцов" Данная тема предназначена для решения каких либо проблем или помощи в создании карт и модов для игры Warcraft 3. Немного о наборе инструментов, которые понадобятся нам в создании и редактировании: WorldEditor Скрытый текст: Автор: Blizzard Entertainment Тип: Редактор мира Warcraft 3 Способ распространения: На диске с игрой Язык: Русский Версия: 1.21b О программе: Официальный редактор карт для вара очень удобен и вполне не сложен. Редактор похож на своего предшественника StarEdit (редактор мира StarCraft), но он все равно отличается большой функциональностью и интерфейсом. Больше информации можно узнать на WikpediaАльтернативные редакторы:Прочие программы:
Полезные ссылки: Последний раз редактировалось Emix; 04.01.2011 в 10:42. |
||
|
13.06.2009, 12:42 | #2601 | ||
Новичок
Регистрация: 13.06.2009
Сообщений: 10
Репутация: 0
|
Я хочу сделать мод -ar(allrandom) как в доте(игроком выдаются случайные герои). И не понимаю как это сделать. В принципе можно сделать область с юнитами, и из этой области выдавать игрокам героев... Но проблема в том, что герои повторяются при таком способе. Как сделать так, чтобы герои не повторялись? Заранее спасибо. |
||
|
13.06.2009, 13:00 | #2602 | ||
overdigger
Регистрация: 02.09.2006
Сообщений: 4,526
Репутация: 1171
Предупреждения: 1
|
задай какую-нибудь переменную, например Х. Присвой ей при введение мода -аэр рандомное число от 1 до 10 (если у тебя десять героев). А потом пропиши несколько условий - если х=1, то выпадет первый герой, если х=2, то второй... (как он "выпадет" решай сам - можно сделать всех героев нейтрально пассивными и просто менять владельца юнита на игрок 1 и переносить в нужный регион его)
|
||
|
13.06.2009, 13:18 | #2603 | ||
Новичок
Регистрация: 13.06.2009
Сообщений: 10
Репутация: 0
|
Спасибо большое, сейчас попробую, если будут проблемы, отпишу сюда ещё раз.
Добавлено через 23 минуты Проблема... Вот мой триггер: Событие: Игрок 1 (красный) types a chat message containing -ar as Точное совпадение Условия: Действия: Set X = (Random integer number between 1 and 4) If (X равно 1) then do (Create 1 Паладин for Игрок 1 (красный)) else do (Do nothing) If (X равно 2) then do (Create 1 Верховный Маг for Игрок 1 (красный)) else do (Do nothing) If (X равно 3) then do (Create 1 Горный Король for Игрок 1 (красный)) else do (Do nothing) If (X равно 4) then do (Create 1 Чародей Крови for Игрок 1 (красный)) else do (Do nothing) Проблема в том, что герои не выпадают рандомно. Полюбому при введении -ar первым выпадает Чародей Крови, при повторном введении так же Чародей Крови, Дальше выпадает Горный Король, потом три раза Верховный Маг и 4 раза Паладин. Потом всё по повторной. В чём проблема? Последний раз редактировалось NY_city; 13.06.2009 в 13:42. Причина: Добавлено сообщение |
||
|
13.06.2009, 13:51 | #2604 | ||
overdigger
Регистрация: 02.09.2006
Сообщений: 4,526
Репутация: 1171
Предупреждения: 1
|
NY_city, это уже проблемы вара... не знаю... добавь ещё какие-нибудь переменные, например, сначала выбирается 1 из 2ух, по какой системе будет проводиться рандомное деление, а потом уже включай или такой триггер как выше, или точно такой же, только поменяй цифры местами. Вот тогда точно не будет закономерности, по крайней мере будет очень сложно уловить её.
а вообще чтоб не было багов - нужно на джассе делать, но я его не знаю, очень сложный язык программирования |
||
|
13.06.2009, 15:50 | #2605 | ||
Новичок
Регистрация: 03.05.2009
Адрес: Планета Земля
Сообщений: 75
Репутация: 2
|
Dark ocean, в верхней строке меню выбери "Дополнительно -> Игровые константы..." откроется Диалоговое окно, ставь галочку "использовать нестандартные настройки". Найди пункт - "Максимальный уровень героя" и ихмени значение. Там же есть и многое другое.
ВАСЕКС, Много уважаемый вы не ответили на заданный вопрос, человек спросил, как сделать чтоб герои не повторялись. NY_city, Самый простой выход из этой ситуации, он подойдёт и к твоему способу с регионом так и к способу с рандомом. После выбора одного из героев попросту ремовь его/ убирай из региона. Или создай переменную логического типа к примеру "InGame1,InGame2..4" и после того как рандомом выбран герой этого типа задавай переменной значение тру. А в условие выбора помимо проверки "если рандомное число равно 1" добавь проверку логической переменной "если InGame1 = ложь", помни что в твоём примере рандомом число задаётся в начале и далее если тебе дважды попадётся чародей то выбор просто не произойдёт, для исправления ситуации можно было бы добавить ещё одну логическую переменную, которая проверяла в конце триггера выбран ли персонаж для игрока и если нет, чтоб запускался триггер с самого начала для данного игрока, ну тут по разному можно сделать думаю сам разберёшься
__________________
Тот кто хочет от жизни много - рискует остаться нисчем, но и тот кто желает малого обречен на долгую скучную жизнь. ----- Не бойся свиста пуль вокруг, своей ты не услышишь |
||
|
14.06.2009, 14:05 | #2607 | ||
Новичок
Регистрация: 25.05.2008
Сообщений: 55
Репутация: 5
|
Don'Laonda, огромное спасибо! Все получилось.
Хотелось бы еще спросить, как сделать так, чтобы на определенном участке время от времени появлялись те, или иные юниты? |
||
|
14.06.2009, 19:06 | #2608 | ||
Новичок
Регистрация: 03.05.2009
Адрес: Планета Земля
Сообщений: 75
Репутация: 2
|
Цитата:
Цитата:
Открой редактор триггеров, еслитам на русском то должен разобраться быстро. Создай там новый триггер с любым названием. Создай ему событие Время(Time) - pereodic - event Здесь надо задать через сколько сек. будут появляться юниты. далее условие его мы пропускаем, в твоём вопросе про условия ничего не было. Действия Здесь нам надо создать действие Боевая Еденица (unit) - create unit facing angle. Этот триггер создает юнита в заданной области с поворотом на указанный градус. есть ещё один триггер, который позволяет создавать юнита лицом к региону, но его лучше не использовать т.к. там используется функция BJ и выходят горячо любимые утечки памяти. Так в этом действии первая цыфра отвечает за кол-во создаваемых юнитов. Далее можно выбрать тип юнита Следующий пункт отвечает за пренадлежность к чьейто армии (№ игрока) В следущем поле надо задать регион в котором будет создаваться юнит (предварительно размести регин в нужном тебе месте) ну а последний параметр отвечает за поворот юнита. Ещё кое-что добавлю, предусматривая будущее. Возможно ты уже заметил, что если создавать юнитов владелец которых - нейтрально враждебный. То макс уровень который можно за них получить - 5, а дальше каxч не идёт. Дело в том, что в игровых константах есть пункт "Набранный героем опыт: таблица сокращения монстров: 80,70,60,50,0" Можно либо задать другие числа, без нуля в конце, либо просто убрать "0" и кач будет идти нормально, дальше 5ого уровня.
__________________
Тот кто хочет от жизни много - рискует остаться нисчем, но и тот кто желает малого обречен на долгую скучную жизнь. ----- Не бойся свиста пуль вокруг, своей ты не услышишь Последний раз редактировалось Don'Laonda; 14.06.2009 в 19:17. |
||
|
14.06.2009, 22:10 | #2609 | ||
Новичок
Регистрация: 13.06.2009
Сообщений: 10
Репутация: 0
|
Событие:
Игрок - Игрок 1(красный) types a chat message containing -ar as Точное совпадение Условия: Действия: Боевая единица - Create 1 (Unit-type of (Random unit from (Units in Herozone <gen>))) for Игрок 1 (красный) at (Center of Spawnzone <gen>) facing Стандартная ориентация зданий degrees Set unit = (Last created unit) Wait 0.50 seconds Боевая единица - Create 1 (Unit-type of (Random unit from (Units in Herozone <gen>))) for Игрок 2 (синий) at (Center of Spawnzone <gen>) facing Стандартная ориентация зданий degrees Set unit = (Last created unit) Wait 0.50 seconds Боевая единица - Create 1 (Unit-type of (Random unit from (Units in Herozone <gen>))) for Игрок 3 (сине-зелёный) at (Center of Spawnzone <gen>) facing Стандартная ориентация зданий degrees Set unit = (Last created unit) Wait 0.50 seconds Боевая единица - Create 1 (Unit-type of (Random unit from (Units in Herozone <gen>))) for Игрок 4 (фиолетовый) at (Center of Spawnzone <gen>) facing Стандартная ориентация зданий degrees Set unit = (Last created unit) Собственно, вот весь триггер. Благодарность в карте объявлю, можешь не беспокоиться за это =) |
||
|
15.06.2009, 09:59 | #2610 | ||
Новичок
Регистрация: 24.08.2006
Сообщений: 49
Репутация: 1
|
Растояние
Люди помагите? Немогу сделать так что бы если один юнит отошел от другово на 300(метров кажеться) то он стал уязвимым, а если ближе чем на 301 то станет неузвимым,как это сделать?
__________________
На 20 % круче |
||
|
15.06.2009, 10:28 | #2611 | ||
Новичок
Регистрация: 03.06.2009
Сообщений: 1
Репутация: 0
|
Цитата:
Добавлено через 6 минут Вобщем я сделал свою анимацию в mdlvis редакторе назвал ее hand (все нормально в этом редакторе моделий она работает отлично). Но если запехнуть этого юнита на карту и поставить чтоб он каждые 7 сек воспроизводил анимацию hand он просто стоит ровно пострунки и зади появляется его скилет (на земле). Че мне делать? Последний раз редактировалось TwinHeadDrag; 15.06.2009 в 10:34. Причина: Добавлено сообщение |
||
|
15.06.2009, 13:18 | #2612 | ||
Новичок
Регистрация: 25.05.2008
Сообщений: 55
Репутация: 5
|
Don'Laonda
Цитата:
Сейчас делаю карту с уклоном в РПГ, поэтому хочу освоить появление на определенных участках тех, или иных юнитов. Они могут быть, как и нейтрально враждебными, так и принадлежащие игроку. И, еще, по поводу нейтрально враждебных... Хочется, чтобы юниты появлялись непросто с определенным интервалом времени, а именно после того, как юнит был убит. То есть убили юнитов и через некоторое время (минут через 5) они на том-же месте появились. |
||
|
16.06.2009, 02:15 | #2613 | ||||
Новичок
Регистрация: 03.05.2009
Адрес: Планета Земля
Сообщений: 75
Репутация: 2
|
Цитата:
Боевая единица - Move unit instantly (move(Random unit from(Units in(REGION в котором много героев))) instantly to (center of(REGION где надо чтоб аоявился))) set unit = unit in rect(spavnzone); Боевая единица - Change owner of (переменная'Unit') to Игрок and Сменить цвет. В результате будет случайный герой вылезать из региона с героями в регион старта игры, и поскольку он телепартируется из региона с героями в регион старта, то следущий игрок не сможет выбрать этого героя. Нельзя в переменную засунуть перетаскиваемого юнита, поэтому если тебе нужно чтоб юнит был в переменной присваевай к ней юнита который токо что залез в регион, если несколько игроков, пускай герои появляются в других регионах. Здесь переменная ещё нужна для смены владельца. Добавлено через 11 минут Цитата:
Можно прописать и триггерами. Ставь событие каждые 1 сек. и сверяй пропускай условие в событиях найди (IF then else) и сделай: {Если (позиция 1ого юнита) - (позиция второго юнита)<=300 сделать юнита неуязвимым Иначе Сделать уязвимым} Добавлено через 13 минут Цитата:
Если да, то заходи в мдлвис и во всех кадрах скрывай обьет этот. Это можно сделать выбрав нужный обьект из списка справа, затем нажать на "скрыть" это сразу под окошком с обьектами модели. Сори сейчас не могу точно написать названия, тут нету мдлвиса, но думаю если ты сам делал анимки то разберёшся. Добавлено через 18 минут Цитата:
Представь теперь что мы затащили моба в город и убили его там и теперь он там будет ресаться) Картина не из приятных. Советую создть регионы - ареалы, где будут обитать животные. В целом триггер такой же как я и писал выше, вот только здесь надо будет использовать жасс код... т.к. на стандартных триггерах это сделать достаточно проблематично, дело в том что из неск убитых в итоге будет респаться 1... Вот, лично я делаю для каждого типа юнита свои арелаы и свой триггер. Все ниже написанные команды надо просто скопировать как текст и вставить в customscript - это действие в триггерах. И так Событие Unit- A unit Dies Условие Тип умершего юнита = "тип нашего зверюги" Действия {далее в строки записанны действия, которые нужно скопировать и вставить в Custom script, то что в фигурных скобках это коментарий} {Назначаем локальные перменные} local unit u {Далее снова строка кустом скрипта, здесь задаём локальнйо переменной значение - умерший юнит} set u = GetTriggerUnit() {далее идёт wait - это обычное действие, которое можно выбрать из списка, я поставил ожидание - 2 сек. это для того что бы юнит не исчезал мнгновенно, пускай проиграется анимация смерти + полежит немного труп.} wait 2.00 seconds {Стираем этого юнита из игры. На сколько мне известно это убирает юнита из ОЗУ, тем самым уменьшаем нагрузку на комп} call RemoveUnit ( u ) {Снова обычное действие - wait, на сей раз ставим кол-во секунд которые надо подождать прежде чем "воскресить" юнита, ты говорил что надо 5 мин.. 5 мин = 300 сек.} wait 300.00 seconds {Следующее действие решил не писать через скрипт, в твоём случае можно использовать простое действие - создание юнита в рандомной точке региона} Боевая Еденица - Create 1 "тип нашего зверюги" for Player# at (Random point in (РЕГИОН-АРЕАЛ)) facing Default building facing (270.0) degrees {Далее снова кустом скрипт, в нём мы обнуляем локальную переменную, чтобы она не занимала места в озу} set u = null должно получиться что-то типа: Если ты ничего не понял... ищи статьи по жассу/Триггерам и вникай.
__________________
Тот кто хочет от жизни много - рискует остаться нисчем, но и тот кто желает малого обречен на долгую скучную жизнь. ----- Не бойся свиста пуль вокруг, своей ты не услышишь Последний раз редактировалось Don'Laonda; 17.06.2009 в 01:36. Причина: Добавлено сообщение |
||||
|
16.06.2009, 07:45 | #2614 | ||
Новичок
Регистрация: 09.06.2009
Сообщений: 30
Репутация: 2
|
Don'Laonda, бреееед, вот запаузь игру или погамай с кем нить и подожди пока залагает, и хз как себя поведёт 60 секундный таймер. Та и зачем переменнаяя? У тебя всё юзается в 1 месте...
|
||
|
16.06.2009, 11:46 | #2615 | ||
Новичок
Регистрация: 13.06.2009
Сообщений: 10
Репутация: 0
|
Многоуважаемый Don'Laonda... Я чделал триггер так как ты сказал, и действитеьно, герои не повторяются! Но... Появлению героев присуща закономерность. Получается, что 1 игроку постоянно попадается Паладин, второму Горный Король, третьему Верховный Маг, четвёртому Чародей Крови. И по-любому это так будет. У меня новая проблема....
|
||
|
16.06.2009, 19:23 | #2616 | ||
Новичок
Регистрация: 03.05.2009
Адрес: Планета Земля
Сообщений: 75
Репутация: 2
|
Цитата:
Таймер ведёт себя очень даже коректно с бошльшими числами, а вот с долями сек он глючит. Далее насчёт переменной, обрати внимание на таймер 2 секунды из-за него уже и используется локальная переменная, представь что мы убили в течении 2 секунд 10 мобов, отремовится только 1, а 9 останутся в озу... вот те и возможные лаги. °Silenser°, теперь ты обьясни мне, где ты там лаги увидел? думаешь сильно засирают игру регионы? которые вроди как образуются из-за создания юнита в рандомной точке региона? Я не стал морочить мозг новичку в триггерах, т.к. у него моб ресается каждые 5 минут, да и не думаю что там карта 480х480 (сори забыл макс размер). Так что акстись. То что ты зовёшь боредом = помощь, знаешь лучше - пиши лучше, а не жалуйся. да и я сомневаюсь что данная карта ориентирована на сеть, вот в сети то лаги могут появится там к ним чувствительность высокая) да и то на современых компах эти лаги разглядеть сложно. Если Dark ocean, делает карту для сети и если он доделает её вообще, помогу с борьбой против утечек ну или ты поможешь, критик вы нашь песполезный. Цитата:
Одинаковые значения в рандоме происходят из-за того что рандом - это простое арефметическое действие с определёнными числами, напиши версию варика ещё, мб в старых был такой глюк, у меня вот самый старый - 1.20с, на нём рандом прекрасно работает, но бывают загоны что начинает повторять в таких ситуациях я делаю, как написанно выше, протести карту у френдов на компах ещё. Есть ещё 1. If Then Else если используешь и у тебя в елсе ничо нету ставь там Do Nothing , иначе сами условия работают косячно. В общем, как кто-то писал выше... проблема рандома = проблема вара, мб кто поумнее меня чо напишет)
__________________
Тот кто хочет от жизни много - рискует остаться нисчем, но и тот кто желает малого обречен на долгую скучную жизнь. ----- Не бойся свиста пуль вокруг, своей ты не услышишь Последний раз редактировалось Don'Laonda; 16.06.2009 в 21:09. |
||
|
17.06.2009, 01:34 | #2618 | ||
Новичок
Регистрация: 03.05.2009
Адрес: Планета Земля
Сообщений: 75
Репутация: 2
|
°Silenser°, вот кстати да, у меня там действия не в том порядке на скрине)
Надо вайт 1ый опустить на действие ниже.
__________________
Тот кто хочет от жизни много - рискует остаться нисчем, но и тот кто желает малого обречен на долгую скучную жизнь. ----- Не бойся свиста пуль вокруг, своей ты не услышишь |
||
|
17.06.2009, 07:58 | #2619 | ||
Новичок
Регистрация: 09.06.2009
Сообщений: 30
Репутация: 2
|
Don'Laonda, 60 секундный удалить надо
|
||
|
|