Вопросы по интерфейсу игры

Influence

Величайший
Проверенный
Медаль за активность на Форуме
За заслуги перед форумом
Преподаватель
За веру и верность форуму
Сообщения
908
Розыгрыши
0
Решения
1
Репутация
1 488
Реакции
459
Баллы
1 523
1. Как называется класс, который отвечает за окно над головой персонажа, если точнее - за ник. +
2. Где обрабатывается и краситься никнейм в зависимости от количества кармы? Я так понимаю нужно смотреть что-то связанное с User\CharInfo?
Engine.dll -> getNameColor, NWindow.dll, interface.u -> DetailStatusWnd
3. Абнормалы, я так понимаю они захардкожены где-то, вопрос в том где именно, и пытался ли кто-то добавлять свои?
Engine.dll -> искать функции по abnormal, захардкожены там же.
4. Где захардкожены соулшоты? С панельки шорткатов, при нажатии на них правой клавишей, только от соулшотов идет пакет RequestAutoSoulShot.
Код:
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
include 'MACRO/IF.INC'
;-------------------------------------------------------------------------------------
section '.data' data readable writeable
    n_NWindow db "NWindow.dll",0
  p_waddr dd ?
  p_oldValue dd ?
  p_unused dd ?
;-------------------------------------------------------------------------------------
section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
    mov eax, [fdwReason]
    .if eax = DLL_PROCESS_ATTACH
        call LoadBaseHook
        invoke DisableThreadLibraryCalls, [hinstDLL]
    .endif
    mov    eax,TRUE      
    ret
endp
;-------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------
proc LoadBaseHook      
  pushad
 
    invoke LoadLibrary,n_NWindow
    add eax, 149F09h ;return 0 offset
    add [p_waddr], eax
 
    invoke VirtualProtect, [p_waddr],5,PAGE_READWRITE, p_oldValue
 
    mov eax, [p_waddr]
    mov byte [eax], 0xE9
    mov ebx, addCond
    sub ebx, eax
    sub ebx, 05h
    mov dword [eax+01h], ebx
 
    invoke VirtualProtect, [p_waddr],5,[p_oldValue], p_unused
                   
  popad
  ret
endp
;-------------------------------------------------------------------------------------
proc addCond

  .if eax = 0603h ;HP Potion
      mov eax, 1
  .elseif eax = 15D8h ;CP Potion
      mov eax, 1
  .elseif eax = 02D8h ;MP Potion
      mov eax, 1
  .else
      xor eax, eax
  .endif  
  retn 04h
 
endp
;-------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------
proc DirectXDeviceDriverSetupA
    xor eax, eax
    ret
endp
proc DirectXDeviceDriverSetupW
    xor eax, eax
    ret
endp
proc DirectXRegisterApplicationA
    xor eax, eax
    ret
endp
proc DirectXRegisterApplicationW
    xor eax, eax
    ret
endp
proc DirectXSetupA
    xor eax, eax
    ret
endp
proc DirectXSetupIsJapan
    xor eax, eax
    ret
endp
proc DirectXSetupIsJapanNec
    xor eax, eax
    ret
endp
proc DirectXSetupW
    xor eax, eax
    ret
endp
proc DirectXUnRegisterApplication
    xor eax, eax
    ret
endp
proc DirectXSetupSetCallback
    xor eax, eax
    ret
endp
proc DirectXSetupGetVersion
    xor eax, eax
    ret
endp
proc DirectXSetupCallback
    xor eax, eax
    ret
endp
proc DirectXSetupGetFileVersion
    xor eax, eax
    ret
endp
proc DirectXLoadString
    xor eax, eax
    ret
endp
proc DirectXSetupIsEng
    xor eax, eax
    ret
endp
proc DirectXSetupShowEULA
    xor eax, eax
    ret
endp
proc DirectXSetupGetEULAA
    xor eax, eax
    ret
endp
proc DirectXSetupGetEULAW
    xor eax, eax
    ret
endp
;-------------------------------------------------------------------------------------
section '.idata' import data readable writeable
    library kernel,'KERNEL32.DLL',\
          user,'USER32.DLL'
    import kernel,\
        DisableThreadLibraryCalls, 'DisableThreadLibraryCalls',\
        LoadLibrary, 'LoadLibraryA',\
    VirtualProtect, 'VirtualProtect'
;-------------------------------------------------------------------------------------
section '.edata' export data readable
    export 'DSETUP.DLL',\
        DllEntryPoint, 'DllEntryPoint',\
        DirectXDeviceDriverSetupA,'DirectXDeviceDriverSetupA',\
        DirectXDeviceDriverSetupW,'DirectXDeviceDriverSetupW',\
        DirectXRegisterApplicationA,'DirectXRegisterApplicationA',\
        DirectXRegisterApplicationW,'DirectXRegisterApplicationW',\
        DirectXSetupA,'DirectXSetupA',\
        DirectXSetupIsJapan,'DirectXSetupIsJapan',\
        DirectXSetupIsJapanNec,'DirectXSetupIsJapanNec',\
        DirectXSetupW,'DirectXSetupW',\
        DirectXUnRegisterApplication,'DirectXUnRegisterApplication',\
        DirectXSetupSetCallback,'DirectXSetupSetCallback',\
        DirectXSetupGetVersion,'DirectXSetupGetVersion',\
        DirectXSetupCallback,'DirectXSetupCallback',\
        DirectXSetupGetFileVersion,'DirectXSetupGetFileVersion',\
        DirectXLoadString,'DirectXLoadString',\
        DirectXSetupIsEng,'DirectXSetupIsEng',\
        DirectXSetupShowEULA,'DirectXSetupShowEULA',\
        DirectXSetupGetEULAA,'DirectXSetupGetEULAA',\
        DirectXSetupGetEULAW,'DirectXSetupGetEULAW'
;-------------------------------------------------------------------------------------
section '.reloc' fixups data discardable
5. В лобби, при выборе персонажа, в левом верхнем углу есть окно, с ником\хп\сп\кармой персонажа, как оно называется?
Для IL-HF не нашел его в interface.u. Ник в лобби краситься прямо в NWindow.dll
Идем в NWindow.dll по оффсету 17F027 и меняем 7E -> 7D, так же идем сюда 17F021 и меняем FF -> 00
Дальше в engine.dll идем по оффсету 181760 и меняем байты 56 8B B1 98 01 00 00 на 56 BE 00 00 00 00 90.
Дабы в окне с характеристиками персонажа, цвет никнейма так же был белым, находим класс DetailStatusWnd в interface.u, и в нем же находим переменную CrimRate, убираем ее из параметров NameColor.* = 255 - CrimRate, готово!

п.с: все вопросы связаны непосредственно с клиентом игры, interface.u и прочей хренью
п.с.с: решил переделать первый пост в мини-гайд, по мере решения появившихся вопросов, буду добавлять ответы сюда.
Актуальные вопросы выделены жирным цветом.
 
Последнее редактирование:
Ну не такое, но должна быть инфа по карме
ну это понятно, естественно что-то должно быть))
я то и сам его найду, просто мне пока что не горит, вот и апаю темку, может быть кто-то ответит, ну, а если никто не ответит, то когда найду - напишу где эта хрень зарыта :-)
 
Юзаем команду ///show windowname от админа и получаем названия всех окон!Или открываем в меню Alt+G там кнопка UI в низу и в открывшимся окне будет кнопка показать имя окон интерфейса! Оно доступно админам но можно создать шорткат на любую кнопку под простого юзера и открыть его, кнопки что юзают сервер не будут работать но функционал клиента типа релоад интерфейса или показ окон и т.д вполне будет работать! При желании можно сделать вообще редактирование клиента с дев панели! Вывести туда окно которое есть в UI окне, с загрузкой кнопок интерфейса и т.д! И по большому счету работать с интерфейсом без сервера, разумеется визуально!

А вообще открываем WoT Greal файлик Interface.u там ищем GmWnd и UIToolWnd и там будет многое по тому что я написал, это как раз те окна и в одном из них будут прописаны команды клиента на вывод интерфейса и т.д!

Кстати на основе этих окон я делал админ панель для птс сервера! Все знают что в птс все командами, эти окна что я показал тоже кнопки выводят команды, на основе их можно сделать клиент меню которая будет вызываться только админом и при этом все будет не командами а визуально! Для птс удобно, для явы не актуально! Делал для птс епилога)
 
Последнее редактирование:
1. Как называется класс, который отвечает за окно над головой персонажа, если точнее - за ник.
2. Где обрабатывается и краситься никнейм в зависимости от количества кармы? Я так понимаю нужно смотреть что-то связанное с User\CharInfo?
3. Абнормалы, я так понимаю они захардкожены где-то, вопрос в том где именно, и пытался ли кто-то добавлять свои?

UPD: абнормалы в engine.dll, искать по abnormal
UPD2: все вопросы связаны непосредственно с клиентом игры, interface.u и прочей хренью

1. UserHeadDisplayInfo в NWindow.dll
2. User::GetNameColor в Engine.dll
Код:
  if ( karma < 0 )
  {
    Red = 100 - karma / 100;
    if ( Red > 255 )
       Red = 255;
    nameColor = (Red | 0xFFFFFF00) << 16;
    goto LABEL_13;
  }

3. AbnormalDefaultEffect.dat
 
1. UserHeadDisplayInfo в NWindow.dll
2. User::GetNameColor в Engine.dll
Код:
  if ( karma < 0 )
  {
    Red = 100 - karma / 100;
    if ( Red > 255 )
       Red = 255;
    nameColor = (Red | 0xFFFFFF00) << 16;
    goto LABEL_13;
  }

3. AbnormalDefaultEffect.dat
Спасибо за помощь! Нашел все, что мне было нужно :-)

UPD: 4 и 5 вопросы актуальны
 
Последнее редактирование:
Написал бы хуть хроники какие. Если в годе то
4. Тип сосок есть в itemName.dat
5. выбор чара это флеш lobbyMenuWnd
 
Написал бы хуть хроники какие. Если в годе то
4. Тип сосок есть в itemName.dat
5. выбор чара это флеш lobbyMenuWnd
По большей части интересует от ИЛа до ХФ включительно, думаю должно быть все приблизительно одинаково.
4. Из этой темы - Пошионы/банки как соски как я понял - соски захардкодили, так как только при нажатии на них правой клавишей мыши происходит отправка пакета, остальные айтемы не реагируют. itemName.dat самым первым смотрел, ничего не нашел. Так же колупал engine и nwindow, но либо оно лежит не там, либо опыта маловато, так как тоже ничего не нарыл. В interface.u тоже не нашел, но может быть как с кармой, другие названия.
К примеру карма в interface.u - CrimRate и Criminal.
5. Спасибо, подходит для ХФ, для ИЛ нет.
 
Последнее редактирование:
Юзаем команду ///show windowname от админа и получаем названия всех окон!Или открываем в меню Alt+G там кнопка UI в низу и в открывшимся окне будет кнопка показать имя окон интерфейса! Оно доступно админам но можно создать шорткат на любую кнопку под простого юзера и открыть его, кнопки что юзают сервер не будут работать но функционал клиента типа релоад интерфейса или показ окон и т.д вполне будет работать! При желании можно сделать вообще редактирование клиента с дев панели! Вывести туда окно которое есть в UI окне, с загрузкой кнопок интерфейса и т.д! И по большому счету работать с интерфейсом без сервера, разумеется визуально!

А вообще открываем WoT Greal файлик Interface.u там ищем GmWnd и UIToolWnd и там будет многое по тому что я написал, это как раз те окна и в одном из них будут прописаны команды клиента на вывод интерфейса и т.д!

Кстати на основе этих окон я делал админ панель для птс сервера! Все знают что в птс все командами, эти окна что я показал тоже кнопки выводят команды, на основе их можно сделать клиент меню которая будет вызываться только админом и при этом все будет не командами а визуально! Для птс удобно, для явы не актуально! Делал для птс епилога)
Показ окон работает, но ///reloadui на обычном юзере не работает.
 
Если в .u файлах нет то ищи в dll.
хф клиента нет так что тут не помогу.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Как бы взять функционал включения *Автососок* в Хелиос\классик хроне, делаем под себя - убирая лишнее говно с интерфеса....
 
Немного капнул.
Код:
 return v1 && *(_DWORD *)(v1 + 476) == 38;
Выходит что нужно поставить 38 тип в etcGrp и будет он работать как соски.
п.с номер зависит от хроник ( лучше глянуть какой стоит у сосок на твоих ).
 
Немного капнул.
Код:
 return v1 && *(_DWORD *)(v1 + 476) == 38;
Выходит что нужно поставить 38 тип в etcGrp и будет он работать как соски.
п.с номер зависит от хроник ( лучше глянуть какой стоит у сосок на твоих ).
Возможно это сработает для god+, но в ил-хф этот параметр, что у сосок, что у других предметов равен нулю :-)
 
Последнее редактирование:
Возможно это сработает для god+, но в ил-хф этот параметр что у сосок что у других предметов равен нулю :-)
Напиши конкретно что хочешь сделать с сосками...тупа вывести под них пару слотов и авто влючение?
 
Напиши конкретно что хочешь сделать с сосками...тупа вывести под них пару слотов и авто влючение?
нет, хочу сделать возможность использовать не только соски, и интересует именно ПКМ
отвечу на будущее - нет, это не для ацп, затея именно в возможности подсовывать любые айтемы

Была надобность выпилить покраску никнейма в красный цвет в зависимости от кармы.
Может быть кому-то тоже будет нужно. В данном случае применимо к папке систем тестового сервера люцеры 3.
Идем в NWindow.dll по оффсету 17F027 и меняем 7E -> 7D, так же идем сюда 17F021 и меняем FF -> 00
Дальше в engine.dll идем по оффсету 181760 и меняем байты 56 8B B1 98 01 00 00 на 56 BE 00 00 00 00 90.
Дабы в окне с характеристиками персонажа, цвет никнейма так же был белым, находим класс DetailStatusWnd в interface.u, и в нем же находим переменную CrimRate, убираем ее из параметров NameColor.* = 255 - CrimRate, готово!
Теперь в лобби\игре\окне статов у нас будет белый никнейм.
Зачем мне всё это? Так надо :-)

с сосками разобрался, в ближайшее время постараюсь выложить пачт для любителей АЦП, с включением хп\цп\мб банок через ПКМ, как соулшоты
п.с. если у кого-то есть интересные идеи по патчингу клиента, желательно хроники от ИЛ до ХФ (но можно и выше\ниже), пишите в ЛС, вошел в азарт :-)
 
Последнее редактирование модератором:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Привет, гц с решением своего вопроса -Красава!
Меня интересует такой же вариант под классик (хелиос).
Но все же меня интересует твой вариан ( не под всю панель, а только под определенные: 3-от 1 до 5 ячейки)
или же в скайп вечерком отпишу...

п.с. Запили под ИТ+ макросы как на Хелиосе (имитация бота - мягко говоря))
 
Привет, гц с решением своего вопроса -Красава!
Меня интересует такой же вариант под классик (хелиос).
Но все же меня интересует твой вариан ( не под всю панель, а только под определенные: 3-от 1 до 5 ячейки)
или же в скайп вечерком отпишу...

п.с. Запили под ИТ+ макросы как на Хелиосе (имитация бота - мягко говоря))
Спасибо.
Там все зависит не от панели шорткатов, а конкретно от ID предмета.
Макросами возможно займусь, неплохая идея :)

Собственно продолжение темы по соулшотам
Код:
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
include 'MACRO/IF.INC'
;-------------------------------------------------------------------------------------
section '.data' data readable writeable
    n_NWindow db "NWindow.dll",0
  p_waddr dd ?
  p_oldValue dd ?
  p_unused dd ?
;-------------------------------------------------------------------------------------
section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
    mov eax, [fdwReason]
    .if eax = DLL_PROCESS_ATTACH
        call LoadBaseHook
        invoke DisableThreadLibraryCalls, [hinstDLL]
    .endif
    mov    eax,TRUE     
    ret
endp
;-------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------
proc LoadBaseHook     
  pushad
 
    invoke LoadLibrary,n_NWindow
    add eax, 149F09h ;return 0 offset
    add [p_waddr], eax
 
    invoke VirtualProtect, [p_waddr],5,PAGE_READWRITE, p_oldValue
 
    mov eax, [p_waddr]
    mov byte [eax], 0xE9
    mov ebx, addCond
    sub ebx, eax
    sub ebx, 05h
    mov dword [eax+01h], ebx
 
    invoke VirtualProtect, [p_waddr],5,[p_oldValue], p_unused
                  
  popad
  ret
endp
;-------------------------------------------------------------------------------------
proc addCond

  .if eax = 0603h ;HP Potion
      mov eax, 1
  .elseif eax = 15D8h ;CP Potion
      mov eax, 1
  .elseif eax = 02D8h ;MP Potion
      mov eax, 1
  .else
      xor eax, eax
  .endif 
  retn 04h
 
endp
;-------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------
proc DirectXDeviceDriverSetupA
    xor eax, eax
    ret
endp
proc DirectXDeviceDriverSetupW
    xor eax, eax
    ret
endp
proc DirectXRegisterApplicationA
    xor eax, eax
    ret
endp
proc DirectXRegisterApplicationW
    xor eax, eax
    ret
endp
proc DirectXSetupA
    xor eax, eax
    ret
endp
proc DirectXSetupIsJapan
    xor eax, eax
    ret
endp
proc DirectXSetupIsJapanNec
    xor eax, eax
    ret
endp
proc DirectXSetupW
    xor eax, eax
    ret
endp
proc DirectXUnRegisterApplication
    xor eax, eax
    ret
endp
proc DirectXSetupSetCallback
    xor eax, eax
    ret
endp
proc DirectXSetupGetVersion
    xor eax, eax
    ret
endp
proc DirectXSetupCallback
    xor eax, eax
    ret
endp
proc DirectXSetupGetFileVersion
    xor eax, eax
    ret
endp
proc DirectXLoadString
    xor eax, eax
    ret
endp
proc DirectXSetupIsEng
    xor eax, eax
    ret
endp
proc DirectXSetupShowEULA
    xor eax, eax
    ret
endp
proc DirectXSetupGetEULAA
    xor eax, eax
    ret
endp
proc DirectXSetupGetEULAW
    xor eax, eax
    ret
endp
;-------------------------------------------------------------------------------------
section '.idata' import data readable writeable
    library kernel,'KERNEL32.DLL',\
          user,'USER32.DLL'
    import kernel,\
        DisableThreadLibraryCalls, 'DisableThreadLibraryCalls',\
        LoadLibrary, 'LoadLibraryA',\
    VirtualProtect, 'VirtualProtect'
;-------------------------------------------------------------------------------------
section '.edata' export data readable
    export 'DSETUP.DLL',\
        DllEntryPoint, 'DllEntryPoint',\
        DirectXDeviceDriverSetupA,'DirectXDeviceDriverSetupA',\
        DirectXDeviceDriverSetupW,'DirectXDeviceDriverSetupW',\
        DirectXRegisterApplicationA,'DirectXRegisterApplicationA',\
        DirectXRegisterApplicationW,'DirectXRegisterApplicationW',\
        DirectXSetupA,'DirectXSetupA',\
        DirectXSetupIsJapan,'DirectXSetupIsJapan',\
        DirectXSetupIsJapanNec,'DirectXSetupIsJapanNec',\
        DirectXSetupW,'DirectXSetupW',\
        DirectXUnRegisterApplication,'DirectXUnRegisterApplication',\
        DirectXSetupSetCallback,'DirectXSetupSetCallback',\
        DirectXSetupGetVersion,'DirectXSetupGetVersion',\
        DirectXSetupCallback,'DirectXSetupCallback',\
        DirectXSetupGetFileVersion,'DirectXSetupGetFileVersion',\
        DirectXLoadString,'DirectXLoadString',\
        DirectXSetupIsEng,'DirectXSetupIsEng',\
        DirectXSetupShowEULA,'DirectXSetupShowEULA',\
        DirectXSetupGetEULAA,'DirectXSetupGetEULAA',\
        DirectXSetupGetEULAW,'DirectXSetupGetEULAW'
;-------------------------------------------------------------------------------------
section '.reloc' fixups data discardable
п.с. спасибо Альфу за пример dsetup
Код выше не проверялся на совместимость с защитами и тд. и тп. и с всем вытекающим из этого, так что если не будет работать - обращайтесь к
разработчикам самих защит.
Ну, а так, все что раньше включалось через ПКМ, так и включается, добавилось 3 вида банок.
п.с. на fasm'е писал первый раз, джаст фо фан, так что строго не судить, а лучше подсказать более изящные решения, если кто захочет конечно, или если есть смысл :-)
upd: добавил скомпилированный dsetup.dll
 

Вложения

  • dsetup.rar
    dsetup.rar
    899 байт · Просмотры: 61
Последнее редактирование модератором:
Вот это реально крутая тема, давно хотел для себя научиться, банально 4 панель в эпилог добавить. Не костыль с панелькой грации, а полноценную выдвижную панельку.
 
Назад
Сверху Снизу