Классы
Статы, идеальное соотношение · Умения и вехи, как получить · Души · Сравнение классов
Воин · Жрец · Некр · Лучник · Шаман · Мист · Бард · Инж · Демон
Игровой процесс
Как одеваться · Драконий облик · Наследие Богов · Фарм золота
Прохождения локаций
Мониторинг серверов и редактор аддонов
Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.
Подсказки из игры на вашем сайте
Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.
SLA
Пользователь-
Постов
1 641 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Магазин
Галерея
Весь контент SLA
-
Блин, я только сейчас это прочитал. В самом деле, эта функция нами не использовалась, я её перепутал с ConfirmDropAttempt. Нужно протестировать, как будет работать mission.DNDConfirmPickAttempt() с новой формулой ID, о которой я только что написал здесь: UI9 → Develop → Патч 2.0.01 - Ремонтируем Drag&Drop
-
Патч 2.0.01 - Ремонтируем Drag&Drop Итак, в патче 2.0.01, во всех аддонах поломалось перетаскивание окон (Drag&Drop). Все заметили, да? Не найдя никаких изменений в документации API 2.0.01, я пытался выяснить, что же случилось, экспериментируя с LibDnD. Но так и не разобрался. И наверное, пришлось бы декомпилировать пару-тройку LUAC-файлов, если бы не нашёлся доброжелатель, который передал от разработчиков игры, что же именно случилось с Drag&Drop. Оказывается, они просто поменяли формулу, по которой вычисляется ID для функции mission.DNDRegister(). Поскольку, старый код Drag&Drop гарантированно вызывает конфликты с перетаскиванием иконок в АО 2.0.01, то нам придётся починить Darg&Drop во всех (без исключения!) живых аддонах, которые его используют. Через неделю, я сделаю ревизию всех аддонов, и если найду такие, в которых Drag&Drop не будет отремонтирован их авторами, то отремонтирую и перезалью эти аддоны сам. А теперь, три варианта ремонта аддонов: A) LibDnD для пользователей Если вы НЕ разработчик, а обычный пользователь, который просто хочет быстро починить свои аддоны, не дожидаясь их обновления на сайте, то для вас есть быстрый способ (авторы аддонов, этот способ НЕ для вас, для вас есть кое-что получше, вы см. вариант B). Если в папке аддона есть файл LibDnD.lua, то просто замените его на этот: LibDnD-QuickFixForUsersOnly.zip А если файла LibDnD.lua в аддоне нет, тогда либо просто дождитесь, пока аддоны обновятся на сайте, либо побудьте чуть-чуть программистом, и посмотрите вариант C. LibDnD для разработчиков аддонов А для вас, друзья, есть интересный квест , который займёт всего 10-15 минут, и сделает код ваших аддонов проще, а работу с Drag&Drop надёжнее и стабильнее - новая версия LibDnD! Почему именно сейчас? Потому, что она не совместима с предыдущими версиями, а вводить такие кардинальные изменения удобно именно в такие моменты, когда код аддонов нужно обновлять в любом случае. То есть, сейчас именно такой момент. Я давно хотел сделать некоторые существенные изменения в LibDnD, но никак не доходили руки, к тому же, в самое последнее время, я был очень занят. И тут подвернулся такой удобный случай - патч 2.0.01, поломавший старый код Drag&Drop. Не упускать же шанс! Пришлось в ускоренном темпе переписать и протестировать новый код LibDnD. Что нового? Функции DnD:Reg() и DnD:Unreg() отправились на свалку истории =)) Но мы не будем по ним скучать, правда? Именно так, они больше не нужны, т.к. теперь, регистрация виджетов происходит автоматически, при показе/сокрытии виджетов. То есть, теперь, для полноценной работы всей системы Drag&Drop, достаточно всего лишь одного-единственного вызова DnD:Init() где-нибудь в инициализации аддона - сбылась моя давняя мечта Кроме того, специально для поддержки "AddonManager", добавилась удобная и надёжная функция DnD:Enable(). Теперь, обо всём по порядку: Возьмите новую версию файла LibDnD.lua отсюда: HOW-TO: LibDnD.lua (Библиотека Drag&Drop) (LibDnD.lua находится в архиве SampleLibDnD_2010-11-28.zip, прицепленном к первому сообщению темы) А теперь, откроем код вашего аддона, и пробежимся по списку типичных мест обитания DnD:Reg() и DnD:Unreg(). Всё просто как 1-2-3: 1) "SCRIPT_TOGGLE_UI" (Что это?). Если у вашего аддона есть виджеты, но всё ещё нет реакции на это событие, то ПОЖАЛУЙСТА добавьте его. А если она у вас уже есть, и её содержимое отличается от нижеприведённого примера, то смело сотрите всё содержимое этой функции, и замените его на одну-единственную строку: Code: mainForm:Show( params.visible ) 2) "U_EVENT_TOGGLE_DND" (Что это?). Если у вас есть реакция на это событие, то она, вероятно, имеет примерно такой вид: Code: if params.target == common.GetAddonName() then if params.state then DnD:Reg( MyWidget1 ) DnD:Reg( MyWidget2 ) else DnD:Unreg( MyWidget1 ) DnD:Unreg( MyWidget2 ) end end Замените всё это на примерно такой код: Code: if params.target == common.GetAddonName() then DnD:Enable( MyWidget1, params.state ) DnD:Enable( MyWidget2, params.state ) end 3) Теперь, у вас остались только те вызовы DnD:Reg() и DnD:Unreg(), которые используются при показе/сокрытии виджетов: Code: DnD:Unreg( MyWidget1 )MyWidget1:Show( false ) MyWidget2:Show( true ) DnD:Reg( MyWidget2 ) Смело стирайте из своего аддона все эти DnD:Reg() и DnD:Unreg(), так как этих двух функций больше нет в LinDnD. Должно получиться как-то так: Code: MyWidget1:Show( false )MyWidget2:Show( true ) Как видите, всё совсем не трудно, и аддон, прямо на глазах, становится проще и красивее C) Другие, нестандартные реализации поддержки Drag&Drop Ваш аддон всё ещё не использует LibDnD? - Тогда мы идём к вам! Куча нестандартных Dnd_Core.lua и других файлов, каждый из которых не похож ни на один другой - это довольно неудобно, когда случаются такие казусы, как например, патч 2.0.01. Единый стандарт - это очень удобно. Если это возможно, то рекомендую, всё же, перейти на LibDnD. Она уже достаточно хорошо отшлифована, и умеет обходить многие "подводные камни". Если же вам чего-то не хватает в LibDnD - предлагайте идеи улучшения этой библиотеки, там ещё есть над чем поработать. Если я вас не уговорил , то вот, что нужно сделать, чтобы починить Drag&Drop в вашем коде: 1) Найти примерно такой код: Code: mission.DNDRegister( <Anything>, DND_WIDGET_MOVE * DND_CONTAINER_STEP + ID, true ) и заменить на примерно такой: Code: if mission.GetLocalTimeHMS then -- AO 2.0.01+ mission.DNDRegister( <Anything>, ID * DND_CONTAINER_STEP + DND_WIDGET_MOVE, true ) else -- AO 1.1.02-2.0.00 mission.DNDRegister( <Anything>, DND_WIDGET_MOVE * DND_CONTAINER_STEP + ID, true ) end 2) Найти примерно такой код: Code: <Anything> = math.mod( params.srcId, DND_CONTAINER_STEP ) и заменить на примерно такой: Code: if mission.GetLocalTimeHMS then -- AO 2.0.01+ <Anything> = ( params.srcId - DND_WIDGET_MOVE ) / DND_CONTAINER_STEP else -- AO 1.1.02-2.0.00 <Anything> = math.mod( params.srcId, DND_CONTAINER_STEP ) end Зачем разработчики игры изменили формулу Разработчики игры изменили формулу: DND_WIDGET_MOVE * DND_CONTAINER_STEP + ID на такую: ID * DND_CONTAINER_STEP + DND_WIDGET_MOVE Зачем? Чтобы расширить диапазон ID-номеров. Поскольку DND_CONTAINER_STEP и DND_WIDGET_MOVE - это константы, и они равны 1000 и 14 соответственно, а рядом с DND_WIDGET_MOVE есть другие константы, равные 13 и 15, то это значит, что по старой формуле, доступен был диапазон 0-999 (по формуле, он превращался в 14000-14999). Но знайте, что пока в EU/US не выпущена АО 2.0.01, мы по прежнему НЕ можем использовать числа больше 999 в вызовах функции DnD:Init(), чтобы сохранить обратную совместимость с современными EU/US версиями АО. По новой формуле, диапазон значений становится, как бы, "неограниченным", т.к. он больше не зажат между 14000 и 14999, и максимальное значение ID теперь ( MAX_NUMBER - 14 ) / 1000. Здесь, MAX_NUMBER - это максимальное возможное значение number в Lua, насколько знаю, это IEEE 64-Bit Float, то есть 2^52. Значит, максимальный ID теперь не 999, а примерно ( 2^52 - 14 ) / 1000 ~= 4.50359963 * 10^12. Четыре с половиной триллиона. Неплохо, правда? Нам этого хватит на всё третье тысячелетие, ну а потом, попросим добавки.
-
RU: Библиотека и описание обновлены до версии 2010-11-28. -- Отремонтировано для АО 2.0.01. Естественно, сохранена и обратная совместимость с EU/US версиями. -- Убраны функции DnD:Reg() и DnD:Unreg() - они больше не нужны. Совсем! Получается, что теперь, для *полноценной* работы всей этой системы, достаточно лишь одного вызова DnD:Init() - сбылась моя давняя мечта -- Добавлена функция DnD:Enable(), которая может понадобиться для поддержки "AddonManager" (здесь подробнее). Подробнее об этом релизе написано здесь: Патч 2.0.01 - Ремонтируем Drag&Drop UPD 2010-12-08: -- Добавлена обработка события EVENT_DND_DRAG_CANCELLED. -- Теперь, виджеты, передаваемые в функцию DnD:Enable(), распознаются с помощью GetInstanceId(), то есть, теперь они распознаются ВСЕГДА, даже если виджет хранился не в глобал-переменной, а был заново взят с помощью GetChildChecked(). -- Реакции на события EVENT_DND_DRAG_TO, EVENT_DND_DROP_ATTEMPT, EVENT_DND_DRAG_CANCELLED теперь регистрируются ТОЛЬКО на время перетаскивания виджета, и только если этот виджет принадлежит аддону, зарегистрирован для Drag&Drop, и не выключен вызовом DnD:Enable(). По окончании перетаскивания, регистрация этих трёх событий снова отключается. Тем самым, избавляя всю систему от лишней нагрузки. UPD 2010-12-10: -- Добавил функцию DnD:IsDragging(), для предотвращения НАЖАТИЯ на кнопку при её перетаскивании (только для перетаскиваемых кнопок). По просьбе Ciuine. EN: Library and description was updated to version 2010-11-28. -- Repaired for AO 2.0.01. Of course, backward compatibility with EU/US versions preserved. -- Removed DnD:Reg() and DnD:Unreg() functions - they are no longer needed. Forever! Exactly, now, for a *full-featured* work of the entire system, we need only a single call of DnD:Init() function - my long-cherished dream became true -- Added DnD:Enable() function, which may be required to support "AddonManager" (more info). More info about this release is here: Patch 2.0.01 - Repairing Drag&Drop UPD 2010-12-08: -- Added EVENT_DND_DRAG_CANCELLED event handler. -- Now, widgets, passed to DnD:Enable() function, are recognized by GetInstanceId(), that is, they are now recognized ALWAYS, even if the widget wasn't stored in global-variable, and was re-taken by GetChildChecked() instead. -- EVENT_DND_DRAG_TO, EVENT_DND_DROP_ATTEMPT, EVENT_DND_DRAG_CANCELLED events handlers now registers ONLY when widget is dragging, and only if this widget belongs to the addon, is registered for Drag&Drop, and is not locked by DnD:Enable(). At the end of dragging, these three events are unregistered again. Thereby eliminating the unnecessary overload on the entire system. UPD 2010-12-10: -- Added DnD:IsDragging() function, to avoid button CLICK while the button is dragging (for draggable buttons only). By Ciuine request.
-
airon90, произошла фатальная ошибка интерпретации вопроса Встречный вопрос - что такое VF ?
-
Уже нигде и никогда. Забудьте. Даже Японская и Китайская АО начнутся, как минимум, с патчей 1.1.02. P.S. Это как спрашивать, почему Микрософт снял с продажи Windows'98, и можно ли где-нибудь приобрести этот Windows'98. Приобрести его нельзя, но можно кое-где скачать, правда, работать на современном железе этот Windows'98 уже никогда не сможет.
-
А в чём проблема вообще? Я не понимаю. Офицер, технически, НЕ может распустить гильдию, потому, что эта функция доступна только Лидеру - это понятно. Ну а в чём проблема-то? Вводишь в чате команду /gquit и всё, ты больше не в гильдии, свободный как ветер. Перед этим, редактируешь "Новость дня" (Офицерам эта функция доступна), пишешь там: Quote: Уважаемые согильдийцы, в связи с тем, что гильдия умерла, все дружно вводим в чате команду /gquit . Затем, пишем в приват персонажу ЛидерНовойГильдии, и он принимает вас в ряды новой гильдии "НоваяГильдия"). Или я чего-то не понимаю?
-
Quote: Юзаем mission.DNDConfirmPickAttempt() с евентом EVENT_DND_PICK_ATTEMPT, как и описано в АПИ Так ведь, и раньше юзали его, без этого Drag&Drop не работал бы. Дело не в этом. Сейчас напишу топик об этом в Форуме разработчиков. Топик будет большой, но исправление аддонов будет лёгким. Quote: Если начать перетаскивать окно, и делать это медленно, то потом можно перетащить итем или скилл с панельки и с ним потащится ваше окно. Ага, это помому, что Drag&Drop в аддоне стартует, но собственные события EVENT_DND_DRAG_TO в аддон НЕ приходят. А если начать тащить аддон медленно (чтобы при первом же перемещении, новые координаты находились на территории самого перетаскиваемого окна), то в добавок к этому, и EVENT_DND_DROP_ATTEMPT уже никогда не придёт. И аддон так и останется навечно в "перетаскиваемом" состоянии. Поэтому, и бегает за иконками, как бездомный щенок. Сейчас всё напишу, как это вылечить.
-
Already uploaded. You can find it in the upper post of this topic: HOW-TO: Addon compatibility with EU/US versions Get API-1102-2001.7z file from this post. Btw, you can bookmark this topic too, because I will constantly update this post (and API archive as well) when new AO versions comes out. P.S. In AO 2.0.01, there is a built-in ability to post an item links to chat message! There is a new event EVENT_CHAT_MESSAGE_WITH_OBJECTS, and new functions mission.SetChatInputData() and TextView:GetValuedText().
-
Так стало после патча 2.0.01. Решение этой проблемы уже, как бы, есть, но мне нужно ещё кое-что потестировать, косвенно связанное с этой проблемой. Сегодня напишу в форуме разработчиков, как это исправить.
-
Yes, here it is (690 Mb): http://dlb.allods.ru/Patch_AllodsOnlineRU_2.0.00.34_2.0.01.10_.patch.zip Also, you can bookmark this page (you will always find all future manual patches here): http://allods.mail.ru/update.php#patch
-
Ага, причём, во всех аддонах сразу. Уже занимаюсь этим.
-
Нечаянно, мне попался вот такой забавный пост в блогах на gPotato.eu (на английском): Everyone knows that Yasker LOVES cats Суть поста в том, что игрок Империи попробовал играть на стороне Лиги, и его возмутил тот факт, что оказывается, лигийцы МОГУТ убивать кошек и собак. И постоянно это делают... Поддерживаю автора поста, так как меня лично, тоже возмущают малолетние виртуальные живодёры. Очевидно, живодёрствовать им позволяет досадный игровой "баг", который должен быть рано или поздно исправлен. ЖЕЛЕЗНЫЙ КУЛАК ЯСКЕРА Каждый, под флагом Империи, автоматически дружественен к Кошачьей фракции.
-
Квесты в бане ("The Kanian Bathhouse" и "Ivanov's Night") появились в EU/US версиях вместе с патчем 1.1.02: http://en.forum.gpotato.eu/?CD=ALLODS_EN_F001&TC=0000000000&MD=VT&US=Y&AS=Y&TNO=1127828
-
Ага, точно, только проверка if family then тоже вызовет точно такую же ошибку. Вот так должно работать без ошибки: Code: if mount.SetSkin then Код исправил, и номером версии функции выставил завтрашнее число - 2010-11-27.
-
RU: 2010-11-26 -- Обновил функцию GetGameVersion(), для определения версии АО 2.0.01. -- Обновил архив с документацией по API (API-1102-2001b.7z) , добавив документацию из АО 2.0.01. EN: 2010-11-26 -- Updated GetGameVersion() function, to detect AO 2.0.01. -- Updated API documentation archive (API-1102-2001b.7z) , added docs from AO 2.0.01.
-
Делая обновление AoTextureViewer (оно ещё НЕ готово!), я нашёл в русской версии клиента , много текстур, сделанных специально для КИТАЙСКОЙ версии игры (а Ciuine заметил такой же прикол и в европейских версиях тоже). Наверное, все в курсе того, как китайская цензура воюет с Близзард, заставляя их убирать из ВоВ всю наготу, кровь и кости. То же самое ждёт АО на китайском рынке В общем, в ресурсах игры, появилось очень много "альтернативных" текстур, закрывающих в игре всю наготу, кровь, кости и черепа. Особенно забавно то, как тщательно разработчики подошли к этому процессу - черепа, например, убраны даже из элементов одежды, таких как застёжки на поясах, и брошки на плащах. Но и это ещё не всё! Цензуре подверглись и все иконки заклинаний и предметов! Только представьте, насколько сильно изменились панели заклинаний Воина и Некроманта, после того, как с иконок была убрана вся кровь и черепа ))
-
Code: [Russian] Ступень Уровень До уровня Бонус Характеристика Время (ч): If you will show "Exp" as 4000/5000 and/or percentage (just like the original Patronage tooltip), then "До уровня" is OK. But if you will show it just as a single number, like 4000, then it is better to translate "Exp" as "Опыт". Because "До уровня" is literally "To Next Level", while "Опыт" is literally "Experience". Also, "Характеристика" is very good translation for "Stat", but if you think this word is too long, then you can use "Стат" instead.
-
Quote: I just recently discovered that fresh installs of the game have more .chn variants, and this confused me as they are not in game. Upon examining a series of these .chn variants I came to the conclusion that they are "China" variants, removal of blood/undead/etc.. Yes, they are preparing the game for the upcoming Chinese localization. I have already discovered a lot of those Chinese textures, because I'm currently working on AoTextureViewer update. It is quite funny, they are removing all nudity, blood, bones and skulls almost completely! It changes even the spell icons, so, for example, Warrior's and Summoner's icon sets have changed dramatically, without all its blood and skulls )
-
Code: [Russian] Скрыть Бары Друзей / Врагов Показ. Здоровье Показ. Здоровье Цели Показ. Классы Показ. Имена Показ. Раны Показ. PvP But if those strings are too long, then here is a shorter variant: Code: [Russian] Скрыть Бары Друзей / Врагов Здоровье Здоровье Цели Классы Имена Раны PvP P.S. Guys, I'm currently very busy in real life. But I already miss you all very much, and soon I will return with a long awaited AoTextureViewer update
-
Нет, мои недописанные аддоны, увы, к чату отношения не имеют =) Кстати, а нельзя ли эти сообщения просто отключить в настройках чата? Если ничего не путаю, в настройках чата, много всяких каналов, которые можно включать/выключать.
-
Вполне возможно, когда-нибудь в будущем. Для этого, придётся написать аддон, содержащий альтернативную карту, наподобие Cartographer, к томк же, собирающий данные обо всех доступных квестах (эти данные игроки должны будут отправлять создателю аддона, чтобы он пополнял БД квестов, и выпускал обновления аддона).
-
It is so called "ValuedText" format, which has SGML-compatible syntax, very similar to HTML. Its content must be encoded as UTF-16LE (it is called "Unicode" in MS Notepad), with BOM mark. Capabilities: - Align text horizontally (alignx="left" or "center" or "right") - Align text vertically (aligny="top" or "middle" or "bottom") - Set font size (fontsize="12") - Set font face (fontname = "AllodsWest" (it is default) or fontname = "AllodsSystem"). UPD: Attention! In Eastern AO localizations, there is only one font - "Allods", and it is really Arial Unicode MS renamed to Allods.ttf. - Set font color (color="0xAARRGGBB" or predefined colors like class="tip_green" or tags <tip_green></tip_green>) - Set font outline width (outline="1") - Set font outline color (outlinecolor="0xAARRGGBB") - Set font shadow offset (shadow="1") - Make parahraphs (<p></p>) - Make breaks (<br/>) - Insert icon images (syntax is unknown, sorry) - Define places for Lua variables insertion (<r name="Name"/>) - Etc? For example, here is a string, with font color set to opaque white (you can define ANY color with ANY degree of transparency): Code: <body color="0xFFFFFFFF" alignx="center" fontsize="10" outline="1"><r name="value"/></body> Predefined colors are: - tip_red - tip_white - tip_golden - tip_green - tip_blue - tip_grey - tip_purple - Etc? UPD: More predefined colors: Friendly Neutral Aggressive LogColorBlue LogColorBrown LogColorCian LogColorGold LogColorGreen LogColorLightGreen LogColorMagenta LogColorOrange LogColorPink LogColorWhite LogColorYellow
-
Ох, это займёт у вас целую вечность Готов поспорить, вы не доведёте эту работу до конца. BIN-файлы - это всего лишь файлы с данными, ужатые GZ-компрессией. У этих файлов есть "суффиксы", которые описывают, что внутри, например, "UITexture", "Texture" - это текстуры, и их формат, как бы, расшифрован (кроме текстур ландшафтов - я просто не брался за них пока), внутри каждого такого BIN-файла, находятся DDS-файл без заголовка (заголовок DDS-файла обрезан). И в этом заключается проблема - не известен ни кодек, ни размеры текстуры, поэтому, в моём AoTextureViewer, используется эвристический анализ, он обычно угадывает кодек и размеры, но, нередко ошибается с пропорциями текстуры, а иногда, и с кодеком (кстати, я обновлю его на днях, как раз освободился, и теперь, займусь исключительно AoTextureViewer - давно пора). "Geometry" - 3D-модели (НЕ расшифрованы), и "SkeletalAnimation" - анимации (НЕ расшифрованы). Кто расшифрует? Есть у меня такая мечта - расшифровать их, и написать AoModelViewer , но в мои ближайшие планы это никак не входит, т.к. "в данный момент, есть более приоритетные задачи" Сразу обрадую, что у этих типов файлов тоже не будет заголовков внутри, поэтому, понадобится изобрести эвристический анализ, чтобы "угадывать" параметры моделей и анимаций... Сайт AllodsDatabase.com наняли профессионалов, чтобы расшифровать их (для 3D-превьюшек на сайте), и они тоже пользуются каким-то эвристическим анализом, который иногда даёт сбои. Полюбоваться на эти сбои можно на их сайте, очень часто, текстуры натянуты на 3D-модели неправильно. Все заголовки хранятся в виде XDB-файлов, зашитых в файл Bin.pak\Bin\pack.bin. Этот файл - что-то вроде монолитной базы данных, и до сих пор, все, кто брался за его расшифровку (включая меня), обломали зубы. Очевидно, профессионалы из AllodsDatabase.com тоже. Меняемся - с вас спецификация моделей, или анимаций, или расшифровка pack.bin, с меня спецификация текстур
-
http://allods.gamechu.jp/ still offline
-
Нет, в механике игры, "Уворот" и "Промах" - это два разных типа урона. Причём, "Промах" случается только в каких-то особых случаях, а "Увороты" постоянно. Например, я вообще не помню (не замечал?), чтобы когда-нибудь, произошёл хоть один "Промах", но люди говорят, что бывают условия, когда он происходит.
