Page 1 of 1
Русские названия в buy-sell
Posted: 2008-01-04 10:55:33
by Denton
Ввожу в buy\sell список названия вещей которые хочу продать или купить. Сохраняю конфигурацию. До перезапуска все работает хорошо. Перезапускаю инжу, а вместо русских надписей пустота, только пробелы видны если такие были в словах. Открываю вручную файл injection.xml смотрю список байлиста, там видно что предметы "думали сохраниться" но вместо русских названий:
Code: Select all
<shoplist name="pants">
<shopitem name="" want="-1"/>
<shopitem name=" " want="-1"/>
</shoplist>
Включил голову, попытался ввести тут вручную названия, при этом выключив инжу. Ввел, сохранил. Запускаю инжект, открываю байлист, а там вместо русских названий бред какой-то: "PїP*PєPuC"
С этим можно бороться? Версия 702.11 PaWn
Posted: 2008-01-04 12:59:00
by omi4
руский там быть не может
Сервер у тебя RunUO, там процедура немного инная чем запись названий. Как покупать и продавать я тут писал... в поиск
Posted: 2008-01-04 14:30:01
by Denton
Вычислил что 0x0E76 = 3702, подставил в xml
Code: Select all
<shoplist name="pants">
<shopitem name="1023702" want="-1"/>
</shoplist>
В игре жму buy\sell открывается лист покупки-продажи инжектовский, там пишется all 1023702.
Подхожу к торговцу, жму продать, пишет что предмет 1023702 продан в количестве 0 шт.
P.S. На моем сервере эмулятор Пол97
Posted: 2008-01-04 19:23:38
by omi4
как боротся с pol97 не знаю, ни разу не играл на таких
по ответу сервера похоже что там механизьм похожий на рунку или там рунка(так бывает, пол переделать может только тот у кого исходник... а эмулировать любой)
попробуй указать конкретное кол-во
Posted: 2008-01-04 19:51:48
by Denton
Точное количество не работает тоже.
Тут получается что английские названия сохраняются нормально, при перезапуске все остается как и было, с вендорами можно работать если продаю\покупаю предмет не переведенный на рус. яз.
А вот с родным языком косяк

Posted: 2008-01-04 20:32:42
by omi4
инжект использует файл libexpat.dll который по умолчанию русским не пользуется.
на днях гляну что можно сделать, если возможно без правок в самой инже обойтись, то поправлю.
Posted: 2008-01-05 16:30:08
by omi4
посмотрел
править libexpat.dll очень не просто. Проще править сам инжект.
Однажды его уже правили, фильтр сообщений понимает русский.
так что увы
Posted: 2008-01-06 18:07:29
by Grin
Posted: 2008-01-06 18:31:10
by omi4
если не трудно покажи как сделал.
Posted: 2008-01-06 19:58:35
by Grin
"расширил" таблицу возможных символов, но расширять ASCII было лень по этому насильно указал, что файлы все xml файлы в ISO-8859-1 кодировке;) ну и функцию конвертирования сответственно взял от ASCII а так очень бредовая штуковина...
Там осталось еще в инже подкоректировать.
Posted: 2008-01-06 20:22:35
by Grin
в общем такая ситуация... isprint далек от знания русского алфавита...
проверяет рисуется ли символ по своей таблице. Надо патчить и лаунчер и сам инжект.
Code: Select all
.text:00409DA3
.text:00409DA3 loc_409DA3: ; CODE XREF: sub_409C80+6Dj
.text:00409DA3 ; sub_409C80+7Bj
.text:00409DA3 ; DATA XREF: ...
.text:00409DA3 push ecx ; default
.text:00409DA3 ; jumptable 00409CFB cases 1-3,6-25
.text:00409DA4 call _isprint
.text:00409DA9 add esp, 4
.text:00409DAC test eax, eax
.text:00409DAE jz short loc_409E0C
.text:00409DB0 mov eax, [esp+30h+var_14]
.text:00409DB4 mov edx, [esp+30h+var_10]
собствено или нопится или перепрыгаиваем на 00409DB0 и вуля, это в лаунчере, тоже самое и в инжекте там точно тоже самое.
Posted: 2008-01-06 21:48:45
by grundick
О МАЙ ГАД

Posted: 2008-01-07 18:53:57
by CuHTpoH
Oh my God, it's assembler ))
Posted: 2008-01-07 18:55:22
by Grin
как догадался?
Posted: 2008-01-08 02:49:04
by omi4
путь с расширением таблицы все равно бы уперся в iso. Я пытался как раз ее расширить и удалить iso код.. только видимо для меня это еще рано.
Posted: 2008-01-08 10:46:36
by Grin
не уперся бы он в исо, есть файл asciitab.h в нем лежит инфа о каждом символе, ее надо расширить до 256 значений и на допубет что бы парсер выбрал кодировка US-ASCII, имея исходники это не сложно, кодировку подставить можно в наглую в Createparser.
Posted: 2008-01-17 00:04:56
by Denton
Заменил дллку expat.dll - не вышло, по прежнему русские названия становятся пустыми
Posted: 2008-01-17 01:07:26
by Grin
а вот обманываешь...
вопервых если ты владелец версий 5** то тебе еще и libexpat подменять надо, это раз
во вторых... все зависет от локализаии инжекта, не в давался в подробности на пмомент компиляции или в момент загрузки создается таблица символов, от туда выползают характеристики оных... в плане печатается символ или нет... склонин считать что таблица заполняется в момент загрузки, самый простой способ ее отключить это убить isprint как показано выше как в лаунчере так и в инжекте...