Donawave | Дата: Четверг, 24.11.2011, 13:42 | Сообщение # 1 |
Генерал-майор
Группа: Администраторы
Сообщений: 388
Статус: Offline
| Содержание 1.Базовые вопросы 2.Заклинания 3.Вещи Базовые вопросыС чего мне начать, если я хочу написать аддон? - Попробуйте начать с Путеводителя для начинающих по UI. Если вы хотите увидеть все в исторической перспективе, можете прочитать также и этот Путеводитель по настройке UI (http://www.wowwiki.com/WoW_UI_Customization_Guide). Но имейте в виду, что он довольно сильно устарел. Также просмотрите Авторские источники.
С чего начать с этими XML-файлами? - Прочтите Путеводитель по интерфейсу XML – там полно полезной информации! - Также попробуйте использовать инструменты сайта Wowuides.wowinterface.com, которые помогут вам настройить графически ваши виджеты и автоматически генерировать XML.
Как мне перезагрузить мой UI? - Напечатайте /console reloadui или /script ReloadUI(); или /reload или /rl
Что такое Lua? - Посмотрите страницу Lua (http://www.wowwiki.com/Lua) – там не только объяснения, но и ссылки на материалы по этому языку.
И что потом? - Потом прочтите все, что касается настройки интерфейса, и в особнности World of Warcraft API (http://www.wowwiki.com/World_of_Warcraft_API). Кроме того, покопайтесь в других аддонах! Нет ничего лучше, чем обучение на примере. Во всех аддонах вы свободно сможете прочесть Lua и XML-файлы.
Как мне узнать, какую версию файлов .toc использовать? - В общем, они составлены из номеров версий. Т.e. версия "1.11" - это "11100". «Меньшую» версию, например, "1.11.02", нужно полностью игнорировать и номер остается "11100". Если после точки стоит одна цифра, например: "1.9", то это означает "10900". Если у вас все же что-то не получается, попробуйте забраться в игровые файлы (http://www.wowwiki.com/HOWTO:_Get_Current_Interface_Number).
Заклинания Можно ли кастовать 2 (или более) заклинаний?
Вы не можете кастовать больше одного заклинания (или использовать больше одного умения) за один раз. Первый успешный каст сработает, а все последующие касты будут попросту проигнорированы. (У вас МОЖЕТ, однако, быть функция, которая выбирает одно заклинание из набора и кастует его).
Как мне проверить расстояние до цели, если я хочу скастовать заклинание?
- Единственная возможность здесь – кнопки интерфейса. Назначьте заклинание для одной из кнопок, а затем используйте функцию IsActionInRange(slot) (http://www.wowwiki.com/API_IsActionInRange), чтобы проверить дистанцию. Если вы хотите сотворить заклинание по объекту, который не является сейчас вашей целью, вам поможет CheckInteractDistance(unit, distanceType) (http://www.wowwiki.com/API_CheckInteractDistance) – с определенными ограничениями.
Почему UnitDebuff (http://www.wowwiki.com/API_UnitDebuff) неправильно сообщает о заклинании, которое
я скастовал?
- Есть примерно 0.5-секундный интервал (зависит от времени соединения с сервером и временем реакции самого сервера) между тем, как вы произнесли заклинание и тем, как информация поступила от него. Этот интервал создает проблемы для скриптов, которые пытаются предовратить заклинания, с использованием, например Immolate, когда на цели уже есть дебафф. Если между кастами есть паузы, то скрипт работает; однако если скрипт запущен быстро, тогда это воспринимается системой как попытка кастовать Immolate дважды. Разрешению этой проблемы поможет SPELLCAST_STOP. Каждый раз, когда стоп запущен, текущее время сохраняется как переменная. Затем, когда бы вы ни попробовали кастовать заклинание, система соотносит время каста с сохраненным. Если это время больше, чем 0.5 секунды, каст удается.
Вещи Почему меня дисконнектит, когда я пытаюсь посмотреть ссылку на вещь с другого сервера? - Когда вы пытаетесь перейти по ссылке, игра сначала смотрит, нет ли этой вещи в кэше вашей клиентской программы. Если там вещи не обнаруживается, программа запрашивает кэш сервера. Если этой вещи нет и в кэше сервера, вас дисконнектит. Это происходит потому, что если вы запрашиваете какую-то редкую вещь, которая еще ни разу не появлялась на сервере и которой, следовательно, нет в кэше, то сервер считает, что вы пытаетесь выудить у него из памяти ссылки не вещи, пытаясь просто «угадать» их методом перебора.
Как мне узнать название (и т.д.) из самой вещи? - Есть пара способов получить информацию о вещи, вы можете использовать скрытую подсказку и близкий к нему метод SetXXXItem, а затем просто извлечь данные подсказки, или вы можете взять ссылку с помощью функции GetXXXItemLink, а затем использовать функцию GetItemInfo:
local link = GetContainerItemLink(1,1) -- Это выражение извлекает название из ссылки (если вам нужно только название) local justName = string.gsub((link,"^.-%[(.*)%].*", "%1") -- Это выражение извлекает ID вещи из ссылки local justItemId = string.gsub(link,".-\124H([^\124]*)\124h.*", "%1"); -- Это выражение извлекает информацию из ссылки (ПРИМЕЧАНИЕ: вернет ноль, если вещи нет в кэше клиентской программы) local itemName, itemLink, itemRarity, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc = GetItemInfo(justItemId); Заметим, что GetItemInfo выдает информацию ТОЛЬКО если вещь есть в кэше вашей клиентской программы, что и происходит в большинстве случаев.
|
|
| |