Перейти к содержанию

Ассемблер. Код выбора хоткея.


Рекомендуемые сообщения

Всем привет. Народ, помогите с кодом выбора хоткея для трейнера. То есть, в трейнере есть конкретный хоткей (например Y), который изменяет в памяти игры какие-то данные. Хочется сделать выбор этой самой клавиши. То есть, чтобы каждый игрок выбирал этот хоткей под себя. Чтобы выглядело примерно так

f84cba9dc79d.jpg

Использую Game Trainer Studio. Вот сохраненный им работающий пример исходника:

Что-то не нашел спойлер, сори.

Вот так он выглядит в работе

87d376ce56eb.jpg

Или собственный проект Game Trainer Studio для этого кода. Проект он сохраняет в собственном формате. Помогите добавить сюда этот чертов выбор! Сам в программировании ни бум-бум, если что.

; #########################################################################;;  This Is My Trainer Template Created For The Game Trainer Studio (Xeta);;  This Is Based On A MASM Example.;; #########################################################################   .386   .model flat, stdcall  ; 32 bit memory model   option casemap :none  ; case sensitive   include trainer.inc   ; local includes for this file; #########################################################################.data; ### Constants Below; ### Constants Above; ### Bytes BelowHotKey00000 db 001h            db 001h            db 001h; ### Bytes Above; ### Button Messages Below; ### Button Messages Above   WindCap db "Skype™",0   szDisplayName db 'Trainer-1',0.codestart:   invoke GetModuleHandle, NULL   mov hInstance, eax   invoke GetCommandLine   mov CommandLine, eax   invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT   invoke ExitProcess,eax; #########################################################################WinMain proc hInst     :DWORD,             hPrevInst :DWORD,             CmdLine   :DWORD,             CmdShow   :DWORD   ;====================   ; Put LOCALs on stack   ;====================   LOCAL wc   :WNDCLASSEX   LOCAL msg  :MSG   LOCAL Wwd  :DWORD   LOCAL Wht  :DWORD   LOCAL Wtx  :DWORD   LOCAL Wty  :DWORD   ;==================================================   ; Fill WNDCLASSEX structure with required variables   ;==================================================   invoke LoadIcon,hInst,500    ; icon ID   mov hIcon, eax   szText szClassName,"Trainer_Class"   mov wc.cbSize,         sizeof WNDCLASSEX   mov wc.style,          CS_HREDRAW or CS_VREDRAW \                or CS_BYTEALIGNWINDOW   mov wc.lpfnWndProc,    offset WndProc   mov wc.cbClsExtra,     NULL   mov wc.cbWndExtra,     NULL   m2m wc.hInstance,      hInst   mov wc.hbrBackground,  COLOR_BTNFACE+1   mov wc.lpszMenuName,   NULL   mov wc.lpszClassName,  offset szClassName   m2m wc.hIcon,          hIcon   invoke LoadCursor,NULL,IDC_ARROW   mov wc.hCursor,        eax   m2m wc.hIconSm,        hIcon   invoke RegisterClassEx, ADDR wc   ;================================   ; Centre window at following size   ;================================   mov Wwd, 325 ; Dialog Width   mov Wht, 214 ; Dialog Height   invoke GetSystemMetrics,SM_CXSCREEN   invoke TopXY,Wwd,eax   mov Wtx, eax   invoke GetSystemMetrics,SM_CYSCREEN   invoke TopXY,Wht,eax   mov Wty, eax   invoke CreateWindowEx,WS_EX_LEFT,               ADDR szClassName,               ADDR szDisplayName,               WS_MINIMIZEBOX or WS_OVERLAPPED or WS_SYSMENU,               Wtx,Wty,Wwd,Wht,               NULL,NULL,               hInst,NULL   mov   hWnd,eax   invoke ShowWindow,hWnd,SW_SHOWNORMAL   invoke UpdateWindow,hWnd   ;===================================   ; Loop until PostQuitMessage is sent   ;===================================   StartLoop:       invoke GetMessage,ADDR msg,NULL,0,0       cmp eax, 0       je ExitLoop       invoke TranslateMessage, ADDR msg       invoke DispatchMessage,  ADDR msg       jmp StartLoop   ExitLoop:   return msg.wParamWinMain endp; #########################################################################WndProc proc hWin   :DWORD,             uMsg   :DWORD,             wParam :DWORD,             lParam :DWORD    LOCAL var    :DWORD    LOCAL caW    :DWORD    LOCAL caH    :DWORD    LOCAL color  :DWORD    LOCAL hDC    :DWORD    LOCAL Rct    :RECT    LOCAL Ps     :PAINTSTRUCT    LOCAL buffer1[128]:BYTE    LOCAL buffer2[128]:BYTE    LOCAL lfnt   :LOGFONT    LOCAL psd    :PAGESETUPDLG    LOCAL pd     :PRINTDLG    LOCAL RectB     :RECT   .if uMsg == WM_COMMAND        MOV EAX, wParam       .if wParam == 499       .elseif wParam == 500       ButtonJump_Jump500:Invoke ExitProcess, 0       .endif   .elseif uMsg == WM_CTLCOLORSTATIC        JMP @WM_CTLCOLOREDIT   .elseif uMsg == WM_CTLCOLOREDIT        @WM_CTLCOLOREDIT:   .elseif uMsg == WM_DRAWITEM   .elseif uMsg == WM_CREATE           Invoke Protection        MOV HotKeyMiniToggle, TRUE        szText font1,'MS Sans Serif'        invoke CreateFont,8,5,0,0,500,0,0,0, \                          DEFAULT_CHARSET,0,0,0,\                          DEFAULT_PITCH,ADDR font1        mov hFont, eax       Invoke SetTimer, hWin, 1, 100, 0 ; HotKey Timer       Invoke SetTimer, hWin, 2, 300, 0 ; EditBox Timer 1       Invoke SetTimer, hWin, 3, 300, 0 ; EditBox Timer 2       Invoke SetTimer, hWin, 4, 100, 0 ; EditBox Freeze Timer       szText bTxt1,"Close"       invoke PushButton,ADDR bTxt1,hWin,120,136,94,28,500   .elseif uMsg == WM_TIMER           Invoke Protection       .If wParam == 1 ;   ### Timer Below ###Invoke GetKeyState, VK_Ymov HotBuffer1, eax            .if HotBuffer1 > 1Invoke TrainerEngine, NULL, Offset WindCap, 000CCFF8h, Offset HotKey00000, 3.endif       .Endif ;        ### Timer Above ###       .If wParam == 2 ;   ### Timer Below ###       .Endif ;        ### Timer Above ###       .If wParam == 3 ;   ### Timer Below ###       .Endif ;        ### Timer Above ###       .If wParam == 4 ;   ### EBFreeze Timer Below ###       .Endif ;            ### EBFreeze Timer Above ###   .elseif uMsg == WM_HOTKEY   .elseif uMsg == WM_PAINT       invoke BeginPaint,hWin,ADDR Ps         mov hDC, eax         invoke Paint_Proc,hWin,hDC       invoke EndPaint,hWin,ADDR Ps       return 0   .elseif uMsg == WM_DESTROY       invoke PostQuitMessage,NULL       return 0    .endif    invoke DefWindowProc,hWin,uMsg,wParam,lParam    retWndProc endp; ########################################################################TopXY proc wDim:DWORD, sDim:DWORD   shr sDim, 1      ; divide screen dimension by 2   shr wDim, 1      ; divide window dimension by 2   mov eax, wDim    ; copy window dimension into eax   sub sDim, eax    ; sub half win dimension from half screen dimension   return sDimTopXY endp; #########################################################################Paint_Proc proc hWin:DWORD, hDC:DWORD   LOCAL btn_hi   :DWORD   LOCAL btn_lo   :DWORD   LOCAL Rct      :RECT   invoke GetSysColor,COLOR_BTNHIGHLIGHT   mov btn_hi, eax   invoke GetSysColor,COLOR_BTNSHADOW   mov btn_lo, eax   return 0Paint_Proc endp; ########################################################################OnDrawItem proc uses ebx idCtl:DWORD,pdis:DWORD,pcol:DWORD,pbkcol:DWORDLOCAL tbuff[20h]:byte   mov ebx,pdis   assume ebx:ptr DRAWITEMSTRUCT   .if [ebx].CtlType == ODT_BUTTON       .if pbkcol == 0       .else       invoke SetBkMode,[ebx].hdc,OPAQUE       Invoke SetBkColor,[ebx].hdc,pbkcol       Invoke CreateSolidBrush, pbkcol       invoke FillRect,[ebx].hdc,addr [ebx].rcItem,eax       .endif       invoke SetTextColor,[ebx].hdc,pcol       .if ([ebx].itemState & ODS_SELECTED)           invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,BDR_SUNKEN,BF_RECT           invoke OffsetRect,addr [ebx].rcItem,1,1       .else           invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,EDGE_RAISED,BF_RECT          .endif       invoke GetWindowText,[ebx].hwndItem,addr tbuff,sizeof tbuff       lea edx,[ebx].rcItem       lea ecx,tbuff       invoke DrawText,[ebx].hdc,ecx,eax,edx,DT_CENTER or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP       .if [ebx].itemState & ODS_FOCUS           invoke InflateRect,addr [ebx].rcItem,-4,-4           invoke DrawFocusRect,[ebx].hdc,addr [ebx].rcItem       .endif   .endif   assume ebx:nothing   retOnDrawItem endp; ########################################################################end start
Изменено пользователем Xipho
В графе "Специальные бб-коды"
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.