Guest kipter Posted October 21, 2009 Share Posted October 21, 2009 И так покопавшись в LUA коде интерфейса аддонов я думаю как и многие из вас столкнулись с серьезными проблемами! 1) Вывод информации. Как известно вся информация выводиться в чат или в другие виджеты только с типом wstring что соответствует юникоду (2 байта на символ). Но в LUA нет встроенной поддержки юникода, поэтому все строки wstring это указатели на USERDATA тип описаный на С++. Создавать средствами LUA указатели на встроенные USERDATA типы мы не можем =( А единственная функция возвращающая указатель на новую Юникод Строку из ANSI строки была отключена! debugCommon.ToWString( text ) Я попытался применить два способа, один из них сохранить фаил в Юникод Кодировке, надеясь что функции принимающие Юникод строку проглотят тогда мою строку но это было тщетно =( Второй способ я пытался написать свой конвертер из ANSI в UTF8, но сволочи Нивалы запретили использовать Hex конструкции! \0x0041 или \646\646 не пропустит! ошибка исполнения =( Вообщем если Нивал не вернут нам ToWString, то проблема будет решаема только... Дизасм -> Create DLL -> Injection DLL для добавления в наш арсенал нужных нам функций =) А как вы выводите информацию??? 2) Перемещение виджетов Вторая из насущных проблем, а именно пытался я перенести ЮнитФрейм и таргет... (Interface\Ingame\ContextPlates) Quote: local plate = mainForm:GetChildChecked( "CharacterPlate" , false ):GetPlacementPlain(); plate.posX = 360; plate.posY = 200; mainForm:GetChildChecked( "CharacterPlate" , false ):SetPlacementPlain(plate) 360 и 200 это максимальные координаты на которые мне удалось сдвинуть Юнит Фрейм, дальше он будет обрезаться! Видимо Юнит фрейм и таргет расположены на каком то родительском фрейме и неизвестно доступен ли этот фрейм из LUA. Если вы в курсе как узнавать про родительские фреймы виджета... то прошу поделиться информацией. 3) Создание новых виджетов несмотря на то что есть mainForm:CreateWidgetByDesc, виджет создается на основе "образца" наследуя его привязки к родителю. Т.е пытаясь создать CharacterPlate я получил незаполненного информацией клона,но он также не может покинуть границе родительского фрейма, также кажется что функция CreateWidgetByDesc есть только в mainForm, но она не обозначает что мы создаем виджет с привязкой к mainForm =( Но делая только лишь копии виджетов далеко не уйдешь, ведь нам нужно создавать новые виджеты для аддонов расширяющих возможности например для ДД-метра Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted October 27, 2009 Share Posted October 27, 2009 Также нет возможности размещения своих текстур, графики и звуков. Кроме того модификация имеющихся проблематична. Файлы зашифрованы неизвестным пока алгоритмом. Есть успешные опыты по добавлению / замене медиа ресурсов ? И где хранятся формы? Quote Link to comment Share on other sites More sharing options...
kosh Posted October 28, 2009 Share Posted October 28, 2009 zlib-ом пытался разжимать? Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted October 28, 2009 Share Posted October 28, 2009 О! Внатуре! Правда у файлов есть заголовок... Но это можно разобрать... Главное, обычным deflate умято! Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted October 29, 2009 Share Posted October 29, 2009 Интересно... Идеи: 1) Code: loadfile [func] function: 05868D48loadstring [func] function: 0B1FF880 Может можно заставить "загружать" строки так? 2) Как насчёт формирования строк другим методом кроме хэкса? Quote Link to comment Share on other sites More sharing options...
Guest Slicom Posted November 1, 2009 Share Posted November 1, 2009 Наткнулся на проблемку) В ScriptChatEvents попытался добавить новую строку в чат, но походу нельзя использовать дробные числа. local massage = {} massage.value1 = common.FormatInt( params.amount * 2, "%d" ) massage.value2 = common.FormatInt( blall, "%d" ) massage.msgType = "EXPERIENCE" AddNewText( massage ) blall - дробное( как мне его сделать целым? Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted November 1, 2009 Share Posted November 1, 2009 используй либо: math.ceil (x) - округление "вверх"; math.floor (x) - округление "вниз". Либо попробуй не FormatInt - а FormatFloat, это как раз для работы с дробными числами. например massage.value2 = common.FormatFloat( blall, "%.1f" ) Quote Link to comment Share on other sites More sharing options...
Guest Slicom Posted November 1, 2009 Share Posted November 1, 2009 спс большое)) Quote Link to comment Share on other sites More sharing options...
Guest Slicom Posted November 5, 2009 Share Posted November 5, 2009 Помогите найти скрипт(папку) по травничеству. По всем ремеслам нашел, кроме этого( Quote Link to comment Share on other sites More sharing options...
Guest skillcoder Posted November 5, 2009 Share Posted November 5, 2009 Выложи что нашёл, будет полезно и найдём остальное Quote Link to comment Share on other sites More sharing options...
Guest DmitriyMX Posted November 13, 2009 Share Posted November 13, 2009 Уже не выложит... коды-то "заклеили"... Quote Link to comment Share on other sites More sharing options...
kosh Posted November 13, 2009 Share Posted November 13, 2009 под остальными он имел ввиду крафтовые умения... для "собирательных" умений скрипты я думаю не нужны (там я думаю принцип лута)... Quote Link to comment Share on other sites More sharing options...
kosh Posted November 13, 2009 Share Posted November 13, 2009 все осталось и ничего не "заклеили" Quote Link to comment Share on other sites More sharing options...
SLA Posted November 22, 2009 Share Posted November 22, 2009 Вот, только что нашел о <b>WideString</b> в форуме на офсайте. Не уверен, что это то, что нужно, но всё же: преобразование из Луа-строки в WideString делает функция ToWs, например так: <b>local ws = ToWs( 'some text' )</b> Преобразование назад делается так: <b>local s = FromWs ( ws )</b> Конкатенация Луа-строк так: <b>local s2 = s .. 'xxx'</b> Прямой конкатенации WideString вроде нет. Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted November 22, 2009 Share Posted November 22, 2009 К сожалению, функция ToWs() на данный момент возвращает пустую строку, т.к. "выключена" в API. Т.е., вероятно, разработчики сделали это намеренно, до официального релиза API. Quote Link to comment Share on other sites More sharing options...
Guest max1000 Posted December 2, 2009 Share Posted December 2, 2009 В последнем из обновленных аддонов jAutoLoot файл ScriptLoot.lua не скомпилирован. Теперь можно без компиляции? Изначально, lua-скрипты, скомпилированы, чем вы исходник так чисто декомпилируете? luadec2.0_5.0_disassembler_1.0.zip так точно не умеет. Quote Link to comment Share on other sites More sharing options...
Guest skillcoder Posted December 2, 2009 Share Posted December 2, 2009 Всегда аддоны подцеплялись без компиляции. А компилились некоторые версии аддонов отого, что после патча который закомпилил базовый интерфейс - была проблема с запуском аддонов. Ничем, оттого все аддоны сделаны на базе старых скриптов. Quote Link to comment Share on other sites More sharing options...
Guest Люшен Posted December 15, 2009 Share Posted December 15, 2009 Есть рабочие декомпиляторы? Если есть, то как декомпилировать? заранее спс И как "обновить" некоторую информацию в луа-файле что бы не нужно было весь код (декомпилить, доставать)... а как бы "дополнение" до луа файла? Quote Link to comment Share on other sites More sharing options...
Guest XAML Posted December 15, 2009 Share Posted December 15, 2009 Поищи в инете. Есть официальный сайт Луа. Там есть и декомпиляторы. Не тестировал. Quote Link to comment Share on other sites More sharing options...
Mankubus Posted February 22, 2010 Share Posted February 22, 2010 А что если составлять WideString из байтов, оператором ".." каждый символ, чередуя символы обычной строки и байт локализации? Это возможно, никто не пробовал? Через string.char (···) сделать символ, вместо хекса, а потом уже плюсовать его... Quote Link to comment Share on other sites More sharing options...
kosh Posted February 22, 2010 Share Posted February 22, 2010 стринговые функции выкушены из "псевдоЛУА" АО Quote Link to comment Share on other sites More sharing options...
Mankubus Posted February 22, 2010 Share Posted February 22, 2010 Ну это вообще никуда не годится... Quote: Подключены стандартные библиотеки: coroutine, table, string, math. АН вообще верить нельзя, у них что не фича - то с говном. Quote Link to comment Share on other sites More sharing options...
Mankubus Posted February 22, 2010 Share Posted February 22, 2010 kosh, ты не совсем прав. Code: local x = string.char(72, 69, 76, 76, 79)LogInfo( x ) у меня все работает. Quote Link to comment Share on other sites More sharing options...
kosh Posted February 22, 2010 Share Posted February 22, 2010 ну попробуй тогда многобайтовую строку написать... Quote Link to comment Share on other sites More sharing options...
SLA Posted February 22, 2010 Share Posted February 22, 2010 Надо, наверное, свою библиотеку функций написать, для работы со строками. А можно ли там создавать массивы чаров (char[]) ? Quote Link to comment Share on other sites More sharing options...
Recommended Posts