Данная тема содержит ответы на самые
частозадаваемые вопросы картостроителей-новичков и не только.
Крайне
настоятельно рекомендуется ознакомится с ней перед тем как задавать свой
вопрос.
Для удобства FAQ был разделен на тематические разделы:
-
1.
Первое знакомство с WE (самые первые вопросы, возникающие при
открытие редактора)
- 2.
Тригеры и Редактор объектов
(скрещивание нескольких предметов в один; респаун крипов; мультиборд и
т.д. )
- *
JASS (небольшой FAQ по языку JASS, тем не менее мы
надеемся расширить его в ближайшее время)
- *
Ландшафт
(теоритический минимум по создаю рельефа к картам а также много всего
полезного для професионального дизайнера)
- 3.
Разное (множество
полезной информации про работу с MPQ, протектом/депротектом карт и
т.д.)
- 4.
Формулы WE (расчет получаемого героем опыта, расчет
брони, урон юнита)
- 5.
Авторы-составители, а также
благодарности Также тут принимаются идеи по развитию FAQ'а и
добавлению новых вопросов. Итак...
1. Первое знакомство с
WE.1.1 После установки патча WorldEditor просит
вставить CD - как от этого избавиться?Или найти Nocd, или скачать
Daemon Tools. Это программа-эмулятор является универсальным Nocd для всех
версий Warcraft'a и WorldEdit'a.
Для установки необходимо установить
саму программу. Далее правый клик на появившуюся иконку в правом нижнем
углу, пункт меню Virtual Cd\Dvd-rom=>Set Number Of Devices=>1 drive,
далее пункт меню Virtual Cd\Dvd-rom=>Device 0=> Mount Image/ В
открывшемся диалоге ищем файл warcraft.mds (есть в архиве с
утилитой).
1.2 Как сделать героя, который будет прокачиваться
дальше 10 уровня?Необходимо зайти в Дополнительно=> Игровые
константы=> Максимальный уровень героя и поставить нужный уровень.
Теперь при прокачке герой будет качаться до уровня, указанного
вами.
1.3 Как сделать чтобы герой не получал опыт находясь вдали
от битвы?Убрать галочку в игровых константах из параметра Опыт
героя – Общее распределение (Global Experience) и поставить галочку
напротив "Использовать нестандартные игровые константы".
1.4 Как
запретить игрокам менять исходные параметры в списке при создании
игры?Заходим в Сценарий=> Свойства игрока\клана и ставим
галочку напротив "Фиксировать параметры игроков".
1.5 Как мне
сделать, чтобы игроки начинали только на своих стартовых позициях и с
заданной расой?Зайдите в "Свойства игрока" (Главное меню=>
Сценарий=> Свойства игрока) поставьте галочку "Фикс исх. позиция".
Затем перейдите на закладку "Кланы" и поставьте две галочки
:"Нестандартные кланы" и "Фикс. параметры клана".
1.6 Камень
Включён\Выключен - Что это?Это кривой перевод=) Кнопочка включает
проигрывание голосов и анимаций у войск, они с вами говорят и умирают со
звуком, если вы их удаляете из карты в WE.
1.7 Как увеличить
лимит еды?"Игровые Константы" (Главное Меню=>
Дополнительно=> Игровые Константы), поставить галочку напротив
"Использовать нестандартные игровые константы" и изменить значение поля
"Ограничение пищи" на нужное значение.
1.8 Как сделать, чтобы
герой прокачивался на крипах больше пятого уровня?Для этого
зайдите в игровые константы и найдите поле Hero XP Gained – Creep
Reduction Table. Номер строки соответствует уровню героя (т.е. первая
строка - первый уровень, вторая - второй и тд.). Число это процент опыта,
получаемого на каждом уровне. Если чисел меньше чем уровней, то игра будет
использовать последнее указанное в списке значение для всех остальных
уровней.
1.9 Как сделать из негероя героя?Стандартными
средствами это невозможно, да и по сути в этом нет необходимости -
достаточно создать героя на основе стандартного и уже потом добавить ему
необходимые свойства.
На самом деле это вполне
возможно, если вы владеете навыками редактирования файлов в HEX-редакторе,
для этого нужно всего лишь изменить первую букву идентификатора юнита на
заглавную, например заменить идентификатор 'hfoo' на 'Hfoo' - тогда
обучный футмен станет футменом-героем, но для большинства эти манипуляции
недоступны, поэтому ответ на вопрос является простым и, вообще говоря,
неправильным. Подробнее об этом можно прочитать в этой
статье.2. Тригеры и Редактор
объектов.2.1 Как сделать так, чтобы в начале игры на
стартовой локации не появлялся городской центр и рабочие? Откройте
окно Trigger Editor и и триггере Melee Initialization удалите действие
Melee Game - Create starting units (for all players)
Если Вы делаете не
Melee карту(то есть катру не на расстройку), то рекомендуется удалить весь
тригер.
2.2 Как сделать скрещивание предметов? Как сделать
складывание зарядов в предметах?Самый простой вариант: создаем в
редакторе объекта все части предмета и скрещенный предмет и создаем
триггер:
Код:
Скрещивание:
Событие:
Боевая единица - A unit Получает предмет
Условие:
((Hero manipulating item) has (Часть 1)) равно to Да*
((Hero manipulating item) has (Часть 2)) равно to Да*
Действие:
Предмет - Remove (Item carried by (Hero manipulating item) of type Часть 1)
Предмет - Remove (Item carried by (Hero manipulating item) of type Часть 2)
Hero - Create Скрещенный предмет and give it to (Hero manipulating item)
*Boolean Comparison
Складывание зарядов:
Событие:
Боевая единица - A unit Получает предмет
Условие:
Or - any (Condition) are true
Условия:
(Item type of(Item begin manipulated)) равно <тип предмета1>*
(Item type of(Item begin manipulated)) равно <тип предмета2>*
(Item type of(Item begin manipulated)) равно <тип предмета3>*
Действия:
Set it**=(Item type of(item begin manipulated))
For each (Integer A) from 1 to 6 do (Actions)
Цикл - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
(Item type of(Item carried by (Triggering unit) in slot (Integer A))) равно it
(Item carried by (Triggering unit) in slot (Integer A)) не равно (Item begin manipulated)
То - действия
Предмет - Set charges remaining in (Item carried by (Triggering unit) in slot (Integer A)) to ((Charges remaining in (Item carried by (Triggering unit) in slot (Integer A)) + (Charges remaining in (Item begin manipulated)))
Предмет - Remove (Item being manipulated)
Иначе - действия
*Тип предмета, данный тригер униветсален, и может складывать заряды всех типов предметов, указанных в условии
**Переменная типа "Тип предмета"
2.3
Как сделать, чтоб при взятии предмета (например меч), у юнита в руке
появился меч?Необходимо взять cпособность (Ability) сфера Молний
поменять ей модель на нужную и указать параметре Графика особый объект
воздействия нужную точку приложения эффекта.
Цитата:
Цитата:
overhead
- над головой, не приклепляется к анимации head - голова,
приклепляется к анимации chest - туловище origin - обычно у
ног юнита hand - рука (может быть left и right) foot -
ноги weapon (Для героев) - оружие sprite, medium, large - для
зданий
|
Однако
помните, что далеко не у всех моделей есть все эти точки, они описываются
именно в моделях.
2.4 Как сделать юнита неуязвимым или
невыбираемым?Либо дать юниту способность
«Неуязвимый(нейтральный)». Либо использовать действие: Боевая единица -
Make Invulnerable/vulnerable.
Для невыбираемости дать ему способность
"Москиты" (Locust), но не геройскую, а именно способность самих москитов.
Также эта способность сделает юнита неуязвимым.
2.5 Почему
лидерборды\мультиборды\диалоги не хотят создаваться при запуске
карты?Некоторые функции не могут выполняться прямо после запуска
какрты. Поставьте перед ними действие Wait 0.01 seconds или перенесите
действие в триггер с событием Timer - Elapsed time is 0.01 seconds, второе
предпочтительнее.
2.6 Как создать в карте свои
квесты?Нужно использовать действие: Quest - Create Quest –
используется для создания новых квестов, также могут понадобиться эти
действия:
Код:
Задание - Mark Quest as Completed – Квест выполнен
Задание - Mark Quest as Failed – Квест провален
И
уже в зависимости от произошедших событий вызывать их.
2.7 Как
триггерами проиграть звук?Для того, чтобы триггером програть звук,
нужно сначала добавить его в список. Чтобы это сделать, откройте Редактор
Звука, в списке слева найдите нужный звук и, нажав кнопку Use As Sound,
добавьте его в список.
2.8 Я сделал декорацию с моделью башни,
но она почему то все время меняет анимацию.В левой стороне, в окне
предпросмотра файла модели найдите вашу башню и посмотрите там название
нужной анимации. Потом создайте триггер:
Код:
Событие:
Map initialization
Действие:
Декорация - Play (ваша башня)'s (нужная анимация) animation
2.9
Можно ли сделать так, чтобы при покупке в магазине предмета или юнита, он
изчезал совсем? Т.е. не перезаряжался и со временем снова появлялся, а
совсем исчезал: купил - и всё, он твой, и ни у кого другого его не
будет.Да, есть целый набор триггеров для этих целей:
Код:
Нейтральное здание - remove item-type (*) убирает предмет
Нейтральное здание - add item-type (*) добавляет предмет
Нейтральное здание - remove unit-type (*) убирает юнита
Нейтральное здание - add unit-type (*) добавляет юнита
*в
скобках там написано:
(from marketplace) из одного магазина
(from
all marketplace) из всех магазинов.
Есть некоторые особенности
устройства механизма продажи - чтобы свободно манипулировать
юнитами/предметами - добавлять или убирать их по желанию во время игры,
необходимо выполнить ряд действий-требований:
Магазину, в котором будут
размещаться предметы, необходимо добавить способность "Продажа предметов"
(она находится в редакторе способностей, в папке Особые\Войска\... ; её
равкод - 'Asid' а иконка похожа на шахматную доску с зелеными клетками
вместо белых)
Все предметы, которые вы будете убирать во время игры,
должны быть добавлены в магазин триггерно, действием описанным выше. Таким
образом, изначально в редакторе объектов имеет смысл оставлять только те
предметы, которые будут все время неизменно присутствовать в магазине на
протяжении всей игры.
Аналогично нужно поступить и с продаваемыми
войсками, с той лишь разницей, что добавлять нужно способность "Продажа
войск", она расположена рядом со способностью "Продажа
предметов".
2.10 Как сделать декорацию с моделькой
"мертвого" юнита?Создаём разрушаемый объект(например на базе
бочонка) и даём ему модель юнита, труп которого требуется поставить. Далее
ставим эту декорацию на карту, выбираем и нажимаем Enter. В появившемся
окне указываем количество жизней 0.
2.11 Что такое тригерная
магия?Это нестандартные способности, часть действий которых
выполняется с помощью тригеров. Как правило тригер запускается с событие A
unit начинает применять способность (для активных спелов) и A unit
приобретает способность (для пассивных магий). Далее уже в условиях стоит
отловить то, с какой именно способность было произведено действие (условия
из разделов Ability comparison и Hero Skill comparison). Также в
триггерной магии часто используется даммикаст.
Рекомендуется
ознакомится со следующими статьями:
Триггерные ЗаклинанияСоздание простого stomp спеллаПомните, что
создание тригерной магии на JASS куда более качественное.
2.12
Что такое "даммикаст"?Дамми каст - тригерное наложение заклинания.
Юнит - кастер имеет способность москиты (что делает его не уязвимым и
невыбираемым), не имеет атаки и файл модели заданный под щифтом ".mdl"
(что делает его невидимым). Далее данному юниту дается приказ кастовать
способность. Вот простой пример даммикаста:
Код:
Боевая единица - Create 1 DammiCaster for Игрок 1 (красный) at (Position of (Triggering unit)) facing Стандартная оринтация зданий degrees
Боевая единица - Add Молот бурь* to (Last created unit)
Боевая единица - Add a x.xx** second Общий Expiration timer to (Last created unit)
Боевая единица - Order (Last created unit) to Горный Король (Альянс) - Молот бурь TargetUnit
*или
другая любая способность. помните, что приказ должен соответсвовать
способности, на которой была созданна нестандартная способность, например
если мы хотим сделать даммикаст нестандартной способности на базе ледянной
звезды - то мы должны приказывать даммикастеру кастовать
звезду.
**через х.хх секунд даммикастер исчезнет
2.13 Что
такое JASS?Внутренний язык програмирования, используемый в
WarCraft. Возможности написания скриптов на JASS куда более полноценны чем
на редакторе триггеров. По сути триггеры являются надстройкой для
JASS.
Статьи по данной теме:
Текстовые скриптыОсваиваем JASSСоздание магии на JASS2.14 У меня проблема: Я
сделал триггер, в котором каждые 5 секунд генерируются случайное число. Но
каждый раз когда я запускаю карту последовательность этих чисел всегда
одинаковая. Например 78,62,29,6... Как сделать, чтобы каждый раз
генерировались разные числа?Файл=> Параметры=> Проверка
карты=> Фиксировать случайный разброс - уберите галочку напротив
данного параметра.
2.15 Если я копирую много триггеров из другой
карты, мне нужно создавать все переменные вручную?Нет. Они
создаются автоматически, если поставить галочку в пункте меню Файл=>
Параметры=> Общие=> напротив "Автом. Создавать неизв. переменные во
время вставки триггеров". После этого просто копируем триггеры - переменые
создадутся автоматически.
2.16 Как делать
ролики?Основной инструмент - это действие Спецэффекты - Cinematic
mode. По сути лишает игрока возможности делать что либо. Дальше уже идет
работа с камерой и т.д.
В этой статье достаточно подробно
рассматривается этот вопрос.
2.17 Я видел, как в роликах у
юнитов поворачивалась голова, как это сделать?Нужно использовать
действие: Анимация - Lock body-part facing, также может понадобиться
действие: Анимация - Reset body-part facing, чтобы отменить поворот
головы.
2.18 Возможно ли в варе проиграть анимацию задом
напередДа! Достаточно указать скорость анимации меньше 0.
Вот статья.
2.19 Как отменить ролик по нажатию
Esc?Создать переменную типа Boolean и дать ей значение нет
(False), в триггере самого ролика перед действием поставить Wait, и если
наша переменная равна True - пропустить все действия. Потом вызвать
триггер, который сделает все пост роликовые действия. Затем создать
триггер:
Код:
Событие:
Player skips cinematic
Действие:
set (наша переменная) = Да (true)
Триггер - turn off (This Trigger)
Триггер - Run (Построликовый триггер) (Ignoring Conditions)
2.20
Как в редакторе объектов ставить отрицательные значения?Файл=>
Параметры=> Общие=> поставить галочку напротив "Разрешить
использование в редакторе объектов отрицательных значений".
Выбрать
необходимое поле, зажать Shift и нажать Enter (или двойной клик мышкой).
Теперь можно воодить отрицательное значение.
На основе этого возможно
сделать ауру, отнимающщую броню, отрицательную регенерацию здоровья и
многое другое=)
2.21 Что такое custom script (custom code)
карты?Чтобы увидеть Custom script карты нужно щелкнуть по самой
верхней строке в списке триггеров, на месте, где находятся обычно
отображается сам триггер, в большинстве случаев будет пустое поле - это и
есть поле "своего кода", весь JASS код в нем выполняется в до
инициализации тригеров и после обьявления глобальных переменных. Часто
именно в него требуется вписать код многих наработок.
2.22 Как
реализован выбор каких-то параметров игры, через выводящиеся на экран
кнопки (как при нажатии F10)?Чтобы это сделать нужно создать
переменную типа Диалог, после чего заполнить диалог кнопками, действием:
Диалог - Create Dialog Button и обязательно поместить наши кнопки в
переменные - без этого они будут бесполезными.
После использовать
действие: Диалог - Show/Hide. Также следует создать тригер с событием
Dialog Button Click в условие которого с помощью Dialog Button Compastion
отлавливать какая именно кнопка была нажата и запускать соответствующие
действия.
2.23 Как из обычного здания сделать Таверну или
Магазин, чтоб на карте обозначалось "домиком"?Характеристики=>
Нейтральное здание: пиктограмма показана на миникарте - поставить Да
(True).
2.24 Я сделал герою способность, чтобы он проглатывал
врагов, но когда я загружаю карту, и выбираю эту способность, то игра
вылетает и появляется ошибка. Почему?Необходимо так же давать
способности "пассажир" и "еда". Рекомендую посмотреть к примеру как это
сделано у кодоя.
2.25 Как изменить по ходу игры дистанцию
атаки?Два вариант: добавить юниту улучшение "Длинноствольные
мушкеты" или поставить в Редакторе обьктов юниту большую дистанцию атаки,
и ограничить ее дистанцией получения приказа (дистанция атаки не может
быть больше последней). Тригерно устанавливать дистанцию получения
приказа: Боевая единица - Set Asquisition Range.
2.26 Как
вывести текст не в левом нижнем углу экрана?Это возможно только с
использованием JASS.
Код:
function DisplayTimedTextToPlayer takes takes player toPlayer, real x, real y, real duration, string message returns nothing
где x и y координаты текста относительно экрана
2.27
Я не понимаю, где менять физический размер декораций?Размера у них
нет, есть только "текстура пути". Pathing texture определяет где по этой
модели можно ходить, а где нет, где можно летать над ней, а где нет, где
можно плавать, а где нет. Pathing Texture представляет собой изображение,
в котором каждый пиксель отвечает за игровую клетку. Однако при
использование нового формата карт место tga файла в архив помещается txt
фаил, содержащий информацию про проходимость - war3map.wpm
Вот статья о редактирование карты путей:
ACPL Method.
2.28 Мне нужно поместить в
инвентарь к герою больше 6 предметов. Как?Стандартными средствами
это не возможно. Можно использовать наработки DimonT'a
вот и
вот,
Sergey'я -
вот, NETRAT'a -
вот.
2.29 Как сделать чтобы юнит завис в
воздухе? Как сделать эффект матрицы?Либо действием Pause Unit (или
Pause All Units), либо действием Set Unit Animation Speed to 0.0%
По
этому вопросу есть пара отличных роликов, наглядно иллюстрирующих
спецэффект во всей красе:
The
VisionRox BattleБолее детально вопрос обсуждался в
этой
теме.
2.30 Как сделать респаун (respawn) крипов (creeps), т.е.
как сделать, чтобы крипы возрождались после смерти через некоторое
время?
Построить систему тригеров, которые бы отлавливали убийство
юнита, а потом через некоторое время проводить необходимы действия. Вот
готовые нароботки -
JASS/
Триггеры.
2.31 Как отключить читы в сингл
плеере?Это невозможно так как при вводе строки-чита триггер с
событием, отлавливающем ввод строки просто несрабатывает. Однако
существует возможность отловить следствие чита, к примеру проверяя не
стала ли какая либо местность видна игроку, проверяя ресурсы игрока и т.д.
2.32 Что такое равкод (ID объекта)?Уникальный
идентификатор типа объекта (не порядковый, а именно типа, напимер,
тип-пехотинец представлен в виде 'hfoo', глобальные переменные,
сгенерированые редактором тоже включают в себя равкод объекта, и его
порядковый номер на карте, например gg_unit_hfoo_0013), представлен 4-мя
символами. В триггерах и JASS может быть передан как целоисчисленное
значение, обозначающее тип объекта, например local integer BuffId =
'B000'
Что бы узнать его нужно нажать Ctrl+D в редакторе объектов или в
меню "Вид" поставить галочку напротив пункта "Показать названия
переменных".
3. Разное.3.1 Есть ли какое
нибудь ограничение на размер карты в мультиплеере?Да - это 4.1-4.2
мб. В сингплеере ограничение на размер карты отсутствует.
3.2
Карты из кампании - где их можно найти?ROC: в war3.mpq \ Maps \
Campaign
TFT: в war3xlocal.mpq \ Maps \ FrozenThrone \
Campaign
3.3 Как ускорить процесс загрузки и работы World
Editor'a?Во-первых зайдите в меню Файл=> Параметры => Общие
и уберите галочку рядом с надписью "При запуске создавать новую
карту"
Цитата:А также:
- не открывайте несколько карт одновременно
и не запускайте какие либо сторонние программы;
- зайдите в меню
окно и отключите не нужные вам панели, особое торможение вызывает список
кистей. Повторите эти действия для окна редактора объектов и редактора
тригеров;
- также можно зайти в Диспечер задач и поставить
процессу worldedit.exe приоритет повыше. Не рекомендуется ставить
приоритет реального времени - это может привести к огромным лагам, так как
на этом уровне работает ОС и Антивирусы;
- настроить меню вид,
отключив ненужные параметры, зажать Ctrl и колесиком мышки приблизить
дальную границу камеры;
- если у вас слабая видеокарта будет иметь
смысл уменьшение качества анимации и текстур;
- Gem (Камень) может
вызывать торможение так как дополнительно нагружает память и процессор.
3.4 Как сделать, чтобы созданный мною герой, при вызове
его игроком строился только один раз?Необходимо: открыть игровые
константы, найти строки "Технологии зависимости(эквиваленты) - герои" -
где вы должны прописать своих героев, если они не стандартные, "Технологии
зависимости(эквиваленты) - алтарь" - здесь вы указываете ваш алтарь если
он не стандартный, далее в строках "центр поселения" указываете ваши
ратуши, если они не стандартные.
Затем заходим в свойства героя в
редакторе объектов и проставляем необходимые требования... В итоге - всё
работает. Также предлагаю вам прочитать эту статью по игровым
константам:
Gameplay ConstantsХотя, можно обойтись и без
констант: запустить дефолтный (melee) триггер Режим сражения - Limit
Heroes to 1 per Hero-type (for all players)
3.5 Как
импортировать свою картинку вместо миникарты?Сохраните картинку в
формате 32 бита с расширением .tga, импортруйте изображение с помощью
Import Manager'a, два раза кликните на файл в окне импорта и сотрите весь
путь до названия файла. Далее само название поменяйте на
war3mapPreview.tga
Для замены игровой миникарты необходимо заменить
файл war3mapMap.blp, причем возможны 2 варианта.
- импортируется
blp-текстура размером 2х2 пикселя, в таком случае игра не может ее открыть
и полностью перекрывает обзор миникарты (если не задан war3mapPreview, то
вместо миникарты на стандартном загрузочном экране будет знак вопроса на
синем фоне, а в игре окно миникарты будет пусто и мертво, на нем даже
ping-и не будут отображаться)
- импортируется blp-текстура размером
256х256 пикселей, в таком случае просто фоновая картинка ландшафта будет
замещена нашей текстурой, оставаясь фоновой (поверх видны иконки и
ping-и)
3.6 Как сделать загрузочный экран со своим импортированным
изображением?
Ставим в Сценарий=> Экран загрузки карты загрузочный
экран "Титры". далее импортировать текстуры...
Вот
статьи:
Custom loading screensПодробнее о загрузочном экранеАнимированый загрузочный экран 3.7 Как
сделать что бы импортированная пиктограмка не становилась иногда "зеленым
квадратом"?Кроме обычной (BTN) иконки нужно закачивать и её
"нерабочую" версию (DisBTN). А помогут вам разобраться в этом безобразии
следующая статья:
Импорт файловСовсем неправильный импорт3.8 Филосовский
вопрос - что такое карта?Карта - это MPQ архив, который содержит
файлы определенного формата, отвечающие за рельеф, скрипты, нестандартные
обьекты и т.д.
Программы, работающие с MPQ архивами:
WinMPQMPQ MasterСтатья, описывающая назначения файлов
в данном архиве:
w3m and w3x filis format
3.9 Как сделать
подключение к игре своего MPQ архива, как в некоторых модах?Для
этого вам, скорее всего, понадобятся знания какого-нибудь компилируемого
языка программирования. Для того чтобы подключить свой архив, вам придется
изменить имя стандартного архива war3patch.mpq, затем изменить имя у
архива вашего мода на war3patch.mpq. Для отключения мода - вернуть назад
имя своего архива и восстановить имя для стандартного архива
war3patch.mpq. Таким образом, для полноценного мода вам понадобится
внешняя программа, которая на время игры будет делать описаные изменения с
именами файлов, а после завершения игры, возвращать все на
место.
3.10 Как протектить/депротектить карту и что это вообще
за процесс?Протект карты - это удаление/изменение файлов в архиве
карты, которые не нужны для самой игры, но необходимы для редактора. Цель
- что бы карту нельзя было открыть/изменить.
Самые простые методы -
удаление файла war3map.wtg и файла (listfile) в MPQ архиве карты. Впрочем,
на данный момент существует утилита, способная почти полностью
восстановить файл (listfile), так же есть некоторая неподтвержденная
информация о скрипте, способном восстанавливать файл wtg. С файлом
триггеров wtg предлагается сделать хитрее - заменить его файлом триггеров
из другой карты, в таком случае карта будет открываться, однако при
попытке ее сохранить, редактор перепишет заново файл скрипта, а
оригинальный будет утерян. Так же, многие программы-оптимизаторы делают
карту не открываемой в редакторе.
Для депротекта используем данные
утилы:
X-deprotectDeprotecterТакже опытные картостроители могут
легко взломать катру через WinMPQ или MPQ Master.
Вот темы, в
которых рассматривался вопрос депротекции и взлома карт:
Взлом w3x
файловДепротект Карт3.11 Моя карта долго грузится,
что делать?Оптимизировать. При оптимизации в отличие от депротекта
целью является снизить вес карты и скорость ее загрузки, при этом
неоткрываемость карты в редакторе является лишь следствием.
Также стоит
удалить ненужный импорт. Вот программы, которые оптимизируют
карты:
TOTVexorians Map Optimizer
Warcraft III Widgetizer3.12 Что такое
slk?Это так называемый формат экспорта данных MS Excel. В Warcraft
III slk таблицы используются для хранения данных о войсках, заклинаниях,
декорациях, разрушаемых объектах, улучшениях. Там хранятся данные о всех
характеристиках, кроме текстовых данных. По возможностям редактирования
SLK намного эффективневнее простого Редактора Объектов.
Slk
оптимизация - это вид оптимизации, при котором данные ваших из ваших
файлов w3u, w3o, w3d, w3a еtc. записываю в Slk таблицы, из которых
удаляются данные о всех неиспользуемых объектах. Данный слк помещается в
карту, незначительно увеличивая её размер, но при этом повышая скорость
загрузки карты многократно. SLK оптимизация реализована в Warcraft III
Widgetizer'е.
4. Формулы WE.4.1 Снижение
полученного урона за единицу брони:Damage Reduction = Multiplier *
Armor / (1 + Multiplier * Armor);
где Multiplier - это значение из
Gameplay Constants - Combat - Armor Damage Reduction Multiplier, по
умолчанию равное 0.06
4.2 Минимальное и максимальное повреждение
юнита:Min = Damage Base + Number of Dice (количество
костей)
Max = Damage Base + Number of Dice * Sides per Die (кол-во
костей*урона с каждой кости)
4.3 Формулы для подсчета требований
опыта для следующего уровня, наград опыта за убийство героя и наград опыта
за убийство крипа:В таблице констант относительно требований
опыта для получения уровня встречаются следующие константы:
Герою
требуется опыта: таблица (NeedHeroXP) - обозначим за BASE
Герою
требуется опыта: предыдущее значение фактора (NeedHeroXPFormulaA) -
обозначим за A
Герою требуется опыта: фактор уровня
(NeedHeroXPFormulaB) - обозначим за B
Герою требуется опыта: фактор
константы (NeedHeroXPFormulaC) - обозначим за C
Следует отметить
что в поле NeedHeroXP может содержаться массив чисел, в этом случае в
качестве требований опыта берутся эти числа, в том порядке в котором они
записаны. Если этих чисел нехватает, то последнее из них берется в
качестве числа BASE и дальнейшие требования высчитываются по описанной
ниже формуле. Если поле пустое, то используется одно стандартное значение
200.
Не указанные в таблице NeedHeroXP требования находятся по
рекурсивной формуле, то есть требование опыта для текущего уровня
находится исходя из требований предыдущего:
Требования(для уровня N) =
Требования(для уровня N-1) * A + B * N + С
Пример:
Пусть заданы значения
BASE = 100
A = 2
B =
50
C = 9
Тогда таблица требований опыта будет выстраиваться
следующим образом:
2 уровень 100
3 уровень 359 = 100 * 2 + 50 * 3 +
9
4 уровень 927 = 359 * 2 + 50 * 4 + 9
5 уровень 2113 = 927 * 2 + 50
* 5 + 9
6 уровень 4535 = 2113 * 2 + 50 * 6 + 9
...
Если мы хотим
посчитать эти значение не-рекурсивно, а формулой общего вида, то в
качестве параметра S в формуле следует использовать число 2, а в качестве
параметра BASE использовать последнее заданное в таблице значение
100.
Стандартная таблица опыта имеет параметры:
BASE = 200
A
= 1
B = 100
C = 0
и выглядит следующим образом:
2 уровень
200
3 уровень 500 = 200 * 1 + 100 * 3
4 уровень 900 = 500 * 1 + 100
* 4
5 уровень 1400 = 900 * 1 + 100 * 5
6 уровень 2000 = 1400 * 1 +
100 * 6
7 уровень 2700 = 2000 * 1 + 100 * 7
8 уровень 3500 = 2700 *
1 + 100 * 8
9 уровень 4400 = 3500 * 1 + 100 * 9
10 уровень 5400 =
4400 * 1 + 100 * 10
Если мы хотим посчитать эти значение не-рекурсивно,
а формулой общего вида, то в качестве параметра S в формуле следует
использовать число 2, а в качестве параметра BASE использовать последнее
заданное в таблице значение 200.
Почему я так много внимания уделил
этой формуле? Потому что она широко используется в этой
игре.
Таблица наград опыта за убийство героев рассчитывается по той
же формуле, по умолчанию имеет параметры:
BASE(GrantHeroXP) =
100,120,160,220,300
A(GrantHeroXPFormulaA) =
1
B(GrantHeroXPFormulaB) = 0
C(GrantHeroXPFormulaC) = 100
Тогда
стандартная таблица наград опыта имеет вид:
1 уровень 100
2 уровень
120
3 уровень 160
4 уровень 220
5 уровень 300
6 уровень 400 =
300 * 1 + 100
7 уровень 500 = 400 * 1 + 100
8 уровень 600 = 500 * 1
+ 100
9 уровень 700 = 600 * 1 + 100
10 уровень 800 = 700 * 1 +
100
Если мы хотим посчитать эти значение не-рекурсивно, а формулой
общего вида, то в качестве параметра S в формуле следует использовать
число 5, а в качестве параметра BASE использовать последнее заданное в
таблице значение 300.
Таблица наград опыта за убийство крипа
рассчитывается по той же формуле, по умолчанию имеет
параметры:
BASE(GrantHeroXP) = 25
A(GrantHeroXPFormulaA) =
1
B(GrantHeroXPFormulaB) = 5
C(GrantHeroXPFormulaC) = 5
Тогда
стандартная таблица наград опыта имеет вид:
1 уровень 25
2 уровень
40 = 25 * 1 + 5 * 2 + 5
3 уровень 60 = 40 * 1 + 5 * 3 + 5
4 уровень
85 = 60 * 1 + 5 * 4 + 5
5 уровень 115 = 85 * 1 + 5 * 5 + 5
6 уровень
150 = 115 * 1 + 5 * 6 + 5
7 уровень 190 = 150 * 1 + 5 * 7 + 5
8
уровень 235 = 190 * 1 + 5 * 8 + 5
9 уровень 285 = 235 * 1 + 5 * 9 +
5
10 уровень 340 = 285 * 1 + 5 * 10 + 5
...
Если мы хотим
посчитать эти значение не-рекурсивно, а формулой общего вида, то в
качестве параметра S в формуле следует использовать число 1, а в качестве
параметра BASE использовать последнее заданное в таблице значение
25.
4.4 Вот еще несколько интересных формул.Советуем
ознакомиться.
Полярные координатыРасчет
баланса криповГенератов кодов для вложеной карты5.
Авторы.Основной FAQ -
ZlaYa1000.
Новая редакция
-
ADOLF.
Также выражается благодарность
NETRAT'у,
Mefist'y,
>>CHAOS_DIM@N<<'y,
Iron'у,
Riddick'y,
FellGuard'у,
Dead_knight'у и
Dark_Skaarj'у, а также всем пользователям XGM за ответы на вопросы,
ну и конечно людям, задававшим эти вопросы
Взято с
xgm.ru, редактировано
Lord of
Death.