Классы
Статы, идеальное соотношение · Умения и вехи, как получить · Души · Сравнение классов
Воин · Жрец · Некр · Лучник · Шаман · Мист · Бард · Инж · Демон
Игровой процесс
Как одеваться · Драконий облик · Наследие Богов · Фарм золота
Прохождения локаций
Мониторинг серверов и редактор аддонов
Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.
Подсказки из игры на вашем сайте
Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.
SLA
Пользователь-
Постов
1 641 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Магазин
Галерея
Весь контент SLA
-
Ура Ждём-с
-
+1. Вот именно, если по другому нельзя сделать, то можно сделать именно так.
-
Quote: Не, конечно, можно тупо заранее посчитать количество символов в txt-шнике Так и сделано в GuildGui1b, но это ОЧЕНЬ ОЧЕНЬ приблизительный метод. Потому, что все буквы имеют разную ширину - буква щ в три раза шире буквы i. В WinAPI, например, существует специальная функция, которой указываешь строку, шрифт, размер шрифта, и она возвращает числа, ширину и высоту строки в пикселях... Сомневаюсь, что что-то такое есть в АО. Очевидно, тут дело в тегах XBD-файлов. Потому, что Lua-код, формирующий тултип, вообще не занимается такими подсчётами. Quote: У меня не стоит ГилдГуи. Как оно себя ведет на разных разрешениях и при разных размерах шрифта? Да там sizeY = math.ceil (dlina/80) * 25 с огромным запасом место дано, поэтому не обрезается. А вычисление это, вообще, лишнее. Если бы знать, как выглядит XDB контейнера тултипа, то нужно просто сделать нормальный "резиновый" контейнер, и всё. P.S. Обновление GuildGui1b уже залито P.S. @Vomitus Стоит попробовать то, что предложил Carnifex несколькими постами выше. А то, его дельное предложение осталось незамеченным во вчерашней бурной дискуссии... Он говорит, в gPotato переводчиками работают гуманитарии, которые, как и положено гуманитариям, при переводе "не замечают" html-тегов, и портят их ) Так, в игре иногда проскакивают сообщения с "видимыми" html-тегами (в русской версии тоже иногда бывает). И Carnifex видел среди них тег </br>. Возможно, и я тоже видел </br> где-то в АО. Так что, имхо, стоит попробовать предложенный им вариант.
-
200-символьные строки можно заменить на: Code: string.rep(" ",200)
-
Carnifex говорит, ему приходилось видеть в игре <br/>. Предлагает попробовать <br/>, при том, что весь текст нужно обернуть в <html> и </html>, и выставить multiline true. Имхо, стоит попробовать.
-
As far as I know, both <br> and <br/> don't work.
-
2. PhanTime в русской версии работает. А в EU/US версиях он сейчас НЕ работает. Но не потому, что что-то не так с аддоном, а потому, что современные EU/US версии получают сообщения чата БЕЗ времени отправки. Это баг АО. А они нужны аддону PhanTime, чтобы получить текущее время. Так что, как только разработчики починят иностранные АО, PhanTime тут же начнёт работать... Скорее всего, исправят в патче 1.1.01. Кстати, начиная с версии АО 1.1.03, PhanTime получает текущее серверное время уже НЕ из сообщений чата, а с помощью новой специальной функции. 3. Пробовали починить список Друзей с помощью аддона, специально написанного для этой цели. Но не вышло. Так что, опять же, ждите патч 1.1.01. P.S. Выпуск патча 1.1.01 в Европе будет настоящим праздником )) И не только потому, что там будут исправлено всё то, о чём я написал выше, но и потому, что в API добавятся две ОЧЕНЬ полезные функции - FromWString() и ToWString(). English: AO 1.1.01 patch day in Europe will be a true occasion )) Not only because there will be fixed Friend-list, and working PhanTime, but also, because there will be added two VERY useful functions in API - FromWString() and ToWString().
-
АГРОМЕТР СДЕЛАТЬ МОЖНО МОЖНО, причём, уже довольно давно. И я не понимаю, почему до сих пор никто не взялся за это. С тех пор, как переделали механику умения "Тихоня", НЕ осталось никаких заклинаний и умений, влияние которых на аггро невозможно было бы вычислить средствами аддонов. То есть, теперь, ВСЁ можно сделать средствами аддона. Просто нужно знать, как различные заклинания воздействуют на агро (в этом помогут многочисленные асы Аллодов, достаточно спросить здесь, или на оф.форуме АО), а всё остальное - дело техники Сделайте, кто-нибудь, агрометр, пожалуйста Всё ОЧЕНЬ просто. Если не знаете, с чего начать разработку агрометра, то загляните в код аддонов AgrCount и DarkDPSMeter.
-
Уже есть, как минимум, 2-3 такие системы. А может и гораздо больше, т.к. крупные гильдии делают такие системы сами для себя. Конечно, было бы здорово сделать одну хорошую, универсальную ДКП-систему, и выложить для общественности. Рекомендую посмотреть, что сделал Abagor: 1) aGAI - аддон для сбора информации. 2) Avatar Info Export - программа для экспорта данных аддона aGAI, и примеры PHP-скриптов для сайтов гильдий.
-
SpamProtect - аддон для защиты от спама. Позволяет добавить в Игнор любого, кто пишет что-то в чат. В русской версии АО это не актуально, т.к. у нас нет спамеров. А вот, для иностранцев, это актуально, и ещё как. P.S. Carnifex, I got your PM, but I was very busy to answer. I will help you to post SpamProtect on UI9, today or tomorrow.
-
В некотором смысле, ТАКОЙ АДДОН ЕСТЬ ) Это GuildGui1b, отремонтированную версию которого я сегодня выложу на сайт. Кнопка "Экспортировать" в нижнем-левом углу главного окна GuildGui1b, экспортирует таблицу с подробными данными по членам гильдии, в формате CSV (Comma Separated Values) в файл Allods Online\Personal\Logs\Mods.txt Из этого файла, таблицу можно скопировать в отдельный текстовый файл, сохранить его с расширением .csv и открыть его в любом табличном процессоре (как Microsux Excel, OpenOffice Calc, и др.), где уже можно делать с ним всё что угодно - сортировать по любой колонке, и т.д., и т.п., на что фантазии хватит. Ну а экспорт в отдельный файл технически невозможен, поэтому, приходится делать это через Mods.txt. Но и то хорошо
-
Я как раз починил и навернул GuildGui1b, сегодня выложу его.
-
Раньше были аж два таких аддона - AutoLoot и AutoPickupLoot. Но начиная с какой-то версии АО, они перестали работать. Починить их невозможно. Перестали работать потому, что разработчики отняли у нас почти все функции, связанные с "автоматизацией игрового процесса". Поэтому, технически невозможно сделать очень многие полезные аддоны (например, переодевание персонажа одним нажатием кнопки), имхо маразм. Жаль.
-
Был у нас аддон AucCenter, но поломался.
-
Ну и я тогда отпишусь, что нашёл: social.GetFriendList() social.GetIgnoreList() В АО 1.1.04, эти функции больше НЕ возвращают массив таблиц, а возвращают список ID-номеров (friendId или IgnoreId), в точности как это делает guild.GetMembers() в патче 1.1.03. social.GetFriendInfo( friendId ) social.GetIgnoreInfo( IgnoreId ) Две новые функции, появившиеся в АО 1.1.04. Они возвращают информацию о друзьях/игнорах по friendId/IgnoreId, в точности как это делает guild.GetMemberInfo() в патче 1.1.03. Возвращаемые таблицы аналогичны тем, какие в патче 1.1.03 возвращали social.GetFriendList() и social.GetIgnoreList(). В таблицах social.GetIgnoreInfo(), добавилось IgnoreId. В таблицах social.GetFriendInfo() добавилось не только friendId, но и ещё два поля - isMutual (взаимная ли дружба, true = вы в списке друзей друга, false = вас в его списке нет) и sex (таблица с полями raceSexName, name, sex): sex.raceSexName - строка ("Каниец", "Канийка", "Эльф", "Эльфийка", "Гибберлинг", и т.д.) sex.name - строка (вариантов не много - "Мужчина" или "Женщина") sex.sex - число (1 = мужчина, 2 = женщина, третьего не дано). Забавно, что Гибберлинги всегда мужчины ) guild.GetOwnAllods() Этой функции больше нет. На её месте, появились несколько новых функций, т.к. именно эта часть игры API была полностью переработана в АО 1.1.04. Но мы не знаем их названий, т.к. нет API API 1.1.04.zip: API 1.1.04, выдранный через лог _G, как в старые добрые времена... =)) Здесь далеко не всё, конечно, и самого интересного, как раз, нет. Но всё же, на всякий случай, список функций в аттачменте: . File: API_1.1.04.zip
-
Нет, к сожалению, этот запрет распространяется на весь чат, без никаких исключений. Но поскольку европейские спамеры за 5 минут написали win32-программы, спамящие в чат через хук клавиатуры, то от этого ограничения API страдают одни лишь аддоны, и мы с вами. Пора уже попросить разработчиков, чтобы сняли ограничение. К тому же, в последних версиях появилась какая-то защита от спама на стороне сервера (именно с этого и нужно было начинать, а не урезать нам API). P.S. Сейчас в чат нельзя написать даже *информативное* сообщение, которое никто не видит, кроме самого игрока. Разработчики хотели отрубить палец, а оттяпали руку по самое плечо. Да и рука оказалась здоровая, болезнь была в голове.
-
Панель воина починили в патче 1.1.04
-
This trick works only in AO 1.1.00, and it will stop working in the next major patch (AO 1.1.01). Because only mission.GetAvatarConfigSection() have access to those User.cfg sections which are created by the game itself. And in AO 1.1.01 it will be replaced with its stripped-down version, userMods.GetAvatarConfigSection(), which can access ONLY those User.cfg sections which are created by addons. But anyway, thanks for the code, I have made some corrections (because it works only in AO 1.1.00, and because my char had an empty "dnd" section), and added it to R11 update
-
ОБНОВЛЕНИЕ R11 / UPDATE R11: RU: -- В версии АО 1.1.00, если позиция/размер окна Чата отличаются от стандартных (т.е. пользователь двигал окно Чата), то при старте игры, ChatBarAO находит положение окна Чата, и прикрепляется к нему. Спасибо Carnifex за код. P.S. Уж извините, но начиная с версии АО 1.1.01, технически невозможно получить координаты окна Чата, так что этот код работает только в АО 1.1.00. EN: -- In AO 1.1.00 (which is current EU/US version), if Chat window resides in non-standard position/size (i.e. user have moved his Chat window), then when you enter the game, ChatBarAO finds the position of the Chat window, and attaches to it. Thanks to Carnifex for code. P.S. Sorry, but starting form next major patch (AO 1.1.01) it will be technically impossible to get the Chat window position, so this code works only in AO 1.1.00.
-
ОБНОВЛЕНИЕ R6 / UPDATE R6: RU: -- Отремонтировано для АО 1.1.04. Теперь, аддон снова отображается НАД интерфейсом игры. Конечно, сохранена обратная совместимость с предыдущими версиями игры. EN: -- Fixed for AO 1.1.04. Now addon is displayed on the TOP of game interface again. Of course, backward compatibility with previous game version is preserved.
-
Всё написано здесь: Как устанавливать аддоны (Инструкция)
-
ОБНОВЛЕНИЕ R13 / UPDATE R13: RU: -- Добавлена автоматическая СИНХРОНИЗАЦИЯ времени, потому, что через несколько часов игры, часы начинали заметно отставать из-за лагов клиента игры. (Синхронизация происходит раз в минуту в версиях АО 1.1.03+, или с каждым сообщением в чате в более старых версиях). Возможно, стоит подумать о похожем механизме для корректировки таймера. -- Отремонтировано для АО 1.1.04. Теперь, аддон снова отображается НАД интерфейсом игры. (Приоритет главной формы в АО 1.1.04+ стал 4000, а в более старых версиях 1000, хотя, раньше было везде 800). EN: -- Added authomatic time SYNCHRONIZATION, because after a few hours of playing, the clock began to noticeably lag behind because of the game client lags. (Synchronization occurs once per minute in AO 1.1.03+, or with every chat message in older game versions). Perhaps I should think about a similar mechanism for timer adjustment. -- Fixed for AO 1.1.04. Now addon is displayed on the TOP of game interface again. (MainForm priority in AO 1.1.04+ is now 4000, and in older game versions it is 1000. Although earlier it was 800 everywhere). IMPORTANT NOTE: The clock is NOT STARTING in current (1.1.00.*) EU/US game versions. This is NOT our fault, the addon itself is technically fully functional, but this is a bug in AO client. All chat messages arrive WITHOUT timestamps, and you can see that you currently don't have timestamps in Chat window, even if you enable timestamps in Chat configuration. Sorry, waiting for the next version, where this bug will be fixed.
-
HOW-TO: LibDnD.lua - Drag&Drop Library It so happened that the Drag&Drop code, posted once here, has grown into a large separate library. Many people copied it, almost everyone have changed it by adding different functionality, and so different modifications of this code have populated in many addons. In most cases, people was adding a multiple widgets support in a single addon, and the position saving to User.cfg. So I have made a separate library LibDnD, with all those features (Btw, it is attached to the upper post). Here is a list of new features, in addition to all that was in previous versions: VERY easy to use! Can work with multiple widgets in a single addon. Can save widgets positions into the config file(optional). When dragging, keeps the movable panel in the screen area edges(optional). On initialization, and on game resolution changes, brings all moving widgets to the screen area.You can set the Padding, that the panel locked to screen area, could be partially pushed off the screen area(optional). Even easier to use, Drag&Drop works after a single command.This command has only 2 required params - ID and Widget - others are optional.Some minor tweaks and some protection against user mistakes, invisible until you "eat a pound of salt" on the Drag&Drop in the AO.Free bonus - GetConfig() and SetConfig() functions. The library moved to a separate file LibDnD.lua.Since library functionality (or rather, the demands on it) has more or less well established, the existing functions syntax will not change in the future. Although it will be a little more extended. But backward compatibility will be always maintained (advanced params that will appear in future versions, will be optional, so they can be omitted). In the next version, for example, I will remove the restrictions requiring that the moving panel was necessarily positioned as WIDGET_ALIGN_LOW. Basic LibDnD usage example I hope everybody knows that LibDnD.lua should be included in AddonDesc.(UIAddon).xdb, in <ScriptFileRefs> section: Code: <Item href="LibDnD.lua" /> DnD:Init() is initializing the widget for Drag&Drop. It is required only once, during an addon initialization, or anytime later. (Although, nothing terrible will happen if you do it 500 times in a row, even if using the same ID and different widget names each time - just the same ID will be reinitialized with the new widgets and parameters). Code: DnD:Init( MY_DND_ID, wtMainPanel ) -- Done, Drag&Drop is ALREADY working ) Features 1) Using DnD:Init() you can register AS MANY widgets AS YOU WANT in a single addon, using different IDs for each. 2) Moving widget (wtMoving) MUST be positioned as WIDGET_ALIGN_LOW (by X and by Y), but in future versions of this library, this restriction will be removed. 3) If you think that function OnDragTo() should move something more than one panel, then you probably badly designed the hierarchy of widgets:) It is better to make so, that all you have to move, is wrapped in a single panel, which we will be moving. Otherwise, it is hard to standardize this process. Syntax of DnD:Init() DnD:Init( ID, wtReacting, wtMovable, fUseCfg, fLockedToScreenArea, Padding ) Required params: 1) ID - number between 2 and 999. ID of the reacting widget, must be unique in ALL addons scope (!) If your ID, accidentally, matches with the ID of another addon, then both addons will be dragging together. So, try not to use someone else's IDs. 2) wtReacting - link to Widget. Widget, to which binds the reaction, i.e. the widget at WHICH YOU WILL HOLD A MOUSE PRESSED to drag wtMovable. It can be wtMovable itself, the widget which you want to be movable, but not necessarily (!) it can by anything, for example a WINDOW TITLE, which is a "child" of wtMovable WINDOW. Optional params (can be nil, or you can even omit them all): 3) wtMovable - link to Widget (nil = wtReacting). Widget, WHICH WILL BE MOVING while are you dragging the wtReacting widget. If it is not wtReacting itself. For example, this can be a panel, which is "parent" to wtReacting (commonly MainPanel). Or you can pass here the same widget which you have passed in wtReacting. Or nil, which is equivalent to wtReacting. 4) fUseCfg - true/false (nil = false). To save the position into config file User.cfg, or not. If true, then it will be saved in a very compact way, in the section, named after the addon, using only 2 variables, one for X and second for Y. (Also read below about the two bonus functions GetConfig () and SetConfig () ). 5) fLockedToScreenArea - true/false (nil = true). If true, the widget is not even partially movable off the screen edges. It will always stay entirely on the screen (although there is a Padding option, described below). But if false, then you can drag it off screen almost entirely, the same way as you can drag any window off-screen in Microsux Windows OS. 6) Padding - table consisting of 4 numbers {Top,Right,Bottom,Left} (nil = {0,0,0,0} ). If fLockedToScreenArea=true, then Padding is enabled. If you want to alter the "invisible Drag&Drop edges" of your widget, to make it partially (at some depth) draggable off the screen edges, you can fill in the table. For example, it is done in "PhanTime" and "HonorInfo" addons, where the edges of the panel has an 8 pixels wide "shadow". In those addons, this table is filled with negative numbers, this way: {-8,-8,-8,-8}. DnD:Init() usage examples Window widget (wtWindow), which you can drag by holding its Title widget (wtTitle), which is a "child" of a Window: Code: DnD:Init( ID, wtTitle, wtWindow ) Widget is draggable by itself, AND it saves its position between game sessions (Creates a section in User.cfg, named after the addon): Code: DnD:Init( ID, wtPanel, wtPanel, true )-- or DnD:Init( ID, wtPanel, nil, true ) This widget don't save its position into config, AND you can drag it off screen almost entirely: Code: DnD:Init( ID, wtPanel, nil, false, true ) This one also don't save its position, but it have an 8 pixels width "shadow" painted on all four sides of its background texture, and this "shadow" can be dragged off the screen edge (this is done in addons "PhanTime" and "HonorInfo"): Code: DnD:Init( ID, wtMainPanel, nil, nil, nil, {-8,-8,-8,-8} ) Making 3 different widgets draggable in one addon: Code: DnD:Init( ID1, wtTrayButton )DnD:Init( ID2, wtMainWindow ) DnD:Init( ID3, wtConfigWindow ) DnD:Enable() function Syntax: DnD:Enable( wtWidget, fEnable ) 1) wtWidget - link to Widget It can be wtReacting or wtMovable, it is not important, because both variants works. 2) fEnable - true/false. If true, then widget will respond to Drag&Drop. But if false, then Drag&Drop will be denied for this widget (that is, the widget will be "locked", it will ignore all attempts to drag). You are not necessarily have to use this function, because all widgets that are registered in the system by DnD:Init(), by default are ACTIVE. But if you, for some reason, want to "lock" the widget, then DnD:Enable() function exists exactly for this purpose. It changes the status of widget, permanently allowing or disallowing its Drag&Drop. You can "lock" the widget using DnD:Enable( YourWidget, false ), and it will ignore all attempts to drag. If later you need to unlock it again (to make it draggable again), then do this by using DnD:Enable( YourWidget, true ). You may need this function, if you want to upgrade your addon with full support of AddonManager special events. More info about it can be found here: AddonManager support in other addons DnD:IsDragging() function If your addon have a draggable buttons (such is, for example, in "DarkDPSMeter" and "GuildGui1b" addons), then DnD:IsDragging() is a useful function for you. So, to AVOID the button "click" while you are dragging it, insert the following line at the beginning of the button click event reaction: Code: if DnD:IsDragging() then return end Bonus: GetConfig() and SetConfig() functions Usage: Get the complete addon config as a TABLE (if it exists in User.cfg), or nil (if not exists): Code: Config = GetConfig() Get the "Name" variable from config (if this variable exists in User.cfg) or nil (if not exists). Variable name can be a string or a number, and its value can be anything, even a table. Code: MyOption = GetConfig( Name ) Save the "Name" variable with "Value" value into config file. The same rules apply to variable name and its value, as described in previous example. Code: SetConfig( Name, Value ) If you pass only ONE parameter, and it is a TABLE, then all its variables will be carefully MERGED into config section. That is, merged. It do NOT foolishly overwrite one table over another. Code: SetConfig( { ["A"] =5, [100] ={1,10,100}, ["Yes"] =true } ) You don't need to pass a config section name into those 2 functions, because they always use the section named after the addon. SampleLibDnD.zip There is a working example of using the library, including the library itself LibDnD.lua. You can download it thom the attachment in the upper post. P.S. This text will be periodically updated along with the library.
-
ОБНОВЛЕНИЕ R10 / UPDATE R10: RU: -- Отремонтировано для АО 1.1.04. Кнопки передвинуты на 24 пикселя ниже (Нивал издевается над нами). Повышен приотитет главной формы в версиях АО 1.1.04+. -- Для обратной совместимости с EU/US версиями игры, добавлены корректировки координат и приоритета панели кнопок, чтобы панель находилась в правильных местах в каждой из предыдущих версий (1.1.00, 1.1.01, 1.1.02, 1.1.03). Например, в современной иностранной АО 1.1.00, панель отображается левее, т.к. у них ещё нет кнопок эмоций. EN: -- Fixed for AO 1.1.04. Buttons are moved 24 pixels lower, because Chat window moved 24 pixels down in AO 1.1.04 (Nival is mocking at us). MainForm priority is now higher in AO 1.1.04+. -- For backward compatibility with EU/US versions, I have added a multiple position and priority corrections, for button bar to appear in correct position in every previous version of the game (1.1.00, 1.1.01, 1.1.02, 1.1.03). For example, in current EU/US AO 1.1.00, button bar is now moved to left side, because they don't have an Emotion buttons yet in their game version.
-
No, this is not EU/US compatibility problem, this problem exists in all AO versions. You have this problem, because you have your chat window in non-standard position (you have MOVED your chat windew upper). Sorry, it is impossible to track the current chat window position via API. To fix this, you can move your chat window back to its default position. P.S. Yes, there is "ScriptLocal_chat" section in User.cfg, but all "ScriptLocal_*" sections are unreachable for user addons... I'm not sure, maybe it is worth to add Drag&Drop to this panel, but then most people (99% users never change the position of their chat window) will have an accedential drag problems. Not sure. But when this panel will be redesighed (I'm planning to make it smaller, and give it a look like ChatBar for WoW), of course it will be drggable.
