Воскресенье, 27.07.2025, 21:43:15


Главная страница
Регистрация
Вход
WAR3.3dn.ru Приветствую Вас Гость | RSS  
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Avatar  
FAQ по DotA и немного оптимизации
MaroderDate: Понедельник, 06.11.2006, 12:19:11 | Message # 1
Админ №1
Group: Админы
Posts: 141
Reputation: 3
Status: Offline
1 Q: Как сделать что бы из нескольких вещей собиралась одна?
A: Допустим у нас есть 2 вещи - Х и Y. Вот так будет выглядеть триггер для объеденения вещи X и Y в вещь Z

Code
Event - Unit Acquries an Item
Condition - Or - Any (Condition) are True
Condition:
(Item-type of(Item Being Manipulated) Equal to X)
(Item-type of(Item Being Manipulated) Equal to Y)
Action - If (All Condition are True) then do (Then Action) else do
(Else Action)
If - Conditions:
((Hero Manipulating Item) has an item of type X)
((Hero Manipulating Item) has an item of type Y)
Then - Action:
Remove (Item carried by (Hero Manipulating Item) of type X)
Remove (Item carried by (Hero Manipulating Item) of type Y)
Create Z and give it to (Hero Manipulating Item)
Else - Action: ---

2 Q: Как отследить нахождение в инвентаре сразу двух одинаковых вещей?
A: Если у нас есть 2 вещи типа Х, то если мы уберем 1 вещь типа
Х, то вторая вещь типа Х останется лежать. Так и делаем, из двух Х делаем Z.

Code
Event - Unit Acquries an Item
Condition - (Item-type of(Item Being Manipulated) Equal to X)
Action -
Turn off (This Trigger)
Remove (Item carried by (Hero Manipulating Item) of type X)
If (All Condition are True) then do (Then Action) else do
(Else Action)
If - Conditions:
((Hero Manipulating Item) has an item of type X)
Then - Action:
Remove (Item carried by (Hero Manipulating Item) of type X)
Create Z and give it to (Hero Manipulating Item)
Else - Action: ---
Create X and give it to (Hero Manipulating Item)
Turn off (This Trigger) (пишется не в Else, а после IF)

Самое интересное в том, что если не выключать триггер во время его работы, то ничего не получится. Вещь будет моргать в инвентаре. Ведь действие Create X and give it to (Hero Manipulating Item) Равно Событию
Unit Acquries an Item

3 Q: Если я покупаю вещь, которая является последней для двух
комплектов, что будет?
A: Соберется та вещь, которая будет стоять выше в триггерах. Т.е. Если считать сверху. Вначале создан триггер что бы собирать вещь XZ, а потом что бы собирать вещь YZ. Значит при покупке вещи Z, соберется XZ.

4 Q: Как сделать что бы после покупки героя в таверне, он становился
недоступным для всех игрков?
A: Делается при помощи действия

Code
Player - Set Training/Construction Availability of unit

Здесь можно разрешить\запретить использовать юнита для игрка.

5 Q: Как сделать героя прозрачным?
A: С помощью Действия Animation - Change Unit Vertex Coloring. Первые 3 цифры (100% по умолчанию), это цвета юнитов. А последняя (0% по умолчанию), это его прозрачность. Ее мы и меняем, для того что бы сделать юнита прозравным, или даже неведимкой при 100%.

6 Q: Мне очень понравилась способность Omnislash. Как сделать такую же?
A: Незнаю как делали создатели DotA, но я сделал по своему. Суть в том, что каждые 0.1 секунду, мы берем случайного юнита из группы вражеских юнитов вокруг героя, мнгновенно перемещаем туда героя с соответственными спец. эффектами, проигрываем анимацию Attack, и тригерно наносим урон. Подробнее можно посмотреть в карте примере, где все хорошо описано. В примере, способность сделана только для 1 героя. Для двух или более героев, нужно знать jass, хоть минимум, поэтому я не стал делать универсальный OmniSlash. Так же, без jass, требуется довольно много, для одного спелла переменных.

7 Q: Мне бы хотел заглянуть в саму доту. Что и как в ней устроено. Но при открытии возникает ошибка, и ничего не запускается. Что делать?
A: Это означает что на карте стоит защита. Снять ее можно несколькими способами. Существует также программы, называемые Deprotector'ы. Можешь поискать ее в любом поисковике. Например www.yandex.ru.

Оптимизация.

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

I Самая большая утечка - UnitGroup. Устраняется двумя способами.
Code
1) Перед использованием группы пишется в Custom Script'e
следущее: set bj_wantDestroyGroup = true. Тогда сразу же после
первого использования группы она уничтожится.
2) Создавать группу, а потом ее уничтожать.
Set group = (Unit in (Playble Map Area))
--- Действия с этой группой ---
call DestroyGroup (udg_group)

II Вторая утечка, малозагрязняющая память, но самая
частосовершаемая мапперами - точка. При любом действием с точкой (Создание юнита "где-то", Создание эффекта "Где-то", Перенос юнита "Куда-то" и т. д.). Он остается в памяти и не удаляется. Этого можно избежать следующим путем. Мы будем давать "ссылку" на точку, а потом убирать эту "ссылку" из памяти. Допустим создаем юнита в центре карты. Нужно: Переменную Loc типа point.

Code
Set Loc = (Center of(Playble Map Area))
Create 1 footman in Loc ....
call RemoveLocation (udg_Loc) -(писать в Custom Script)

Это и есть самые основные утечки в варе. Если ты будешь избегать хотя бы их, то карта станет заметно меньше грузится. И не будет "Зависать" со временем.


Администратор сайта и форума

Post edited by Avatar - Четверг, 16.11.2006, 23:20:57
 
VedunDate: Четверг, 16.11.2006, 15:51:46 | Message # 2
Уровень 2
Group: Пользователи
Posts: 24
Reputation: 1
Status: Offline
Гм... Где-то я эту статью видел... А вот где - не помню.
Это кто написал?
 
strikeDate: Четверг, 05.07.2007, 20:10:04 | Message # 3
Уровень 1
Group: Не проверенные
Posts: 4
Reputation: 0
Status: Offline
кто в клан ко мне пойдёт?
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2007Хостинг от uCoz