📄 keylistener.pas.svn-base
字号:
begin KeysFileMapping:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,sizeof(tkeys),'CEKEYS'); keys:=MapViewOfFile(OpenFileMapping(FILE_MAP_ALL_ACCESS,false,'CEKEYS'),FILE_MAP_ALL_ACCESS,0,0,0); priority:=tpHigher; //higher, but the sleep will make it so the game doesn''t suffer too much outputdebugstring('keylistener started'); while not terminated do begin try try if not keys.configured then sleep(10); except// messagebox(0,'keys is invalid','keys is invalid',mb_ok); end; if not keys.configured then begin sleep(500); continue; end; if not aimsettingsset then begin aimsettings:=keys.aimsettings1; aimsettingsset:=true; end; if checkkeycombo(keys.ShowKeylist) then begin if not showkeylist then begin keylist.Clear; if keys.callibrationkey[0]<>0 then keylist.Add('Callibrate mouse:'+Convertkeycombotostring(keys.callibrationkey)); if keys.loadaimsettingsfile[0]<>0 then keylist.Add('Load aimsettings:'+Convertkeycombotostring(keys.loadaimsettingsfile)); if keys.saveaimsettingsfile[0]<>0 then keylist.Add('Save aimsettings:'+Convertkeycombotostring(keys.saveaimsettingsfile)); if keys.setaimsetting1[0]<>0 then keylist.Add('Set aimsettings 1:'+Convertkeycombotostring(keys.setaimsetting1)); if keys.setaimsetting2[0]<>0 then keylist.Add('Set aimsettings 2:'+Convertkeycombotostring(keys.setaimsetting2)); if keys.setaimsetting3[0]<>0 then keylist.Add('Set aimsettings 3:'+Convertkeycombotostring(keys.setaimsetting3)); if keys.nexttexture[0]<>0 then keylist.Add('Next texture:'+Convertkeycombotostring(keys.nexttexture)); if keys.previoustexture[0]<>0 then keylist.Add('Previous texture:'+Convertkeycombotostring(keys.previoustexture)); if keys.locktexture[0]<>0 then keylist.Add('Lock texture:'+Convertkeycombotostring(keys.locktexture)); if keys.IncreaseX[0]<>0 then keylist.Add('Increase X:'+Convertkeycombotostring(keys.IncreaseX)); if keys.DecreaseX[0]<>0 then keylist.Add('Decrease X:'+Convertkeycombotostring(keys.DecreaseX)); if keys.Increasey[0]<>0 then keylist.Add('Increase Y:'+Convertkeycombotostring(keys.Increasey)); if keys.decreasey[0]<>0 then keylist.Add('Decrease Y:'+Convertkeycombotostring(keys.decreasey)); if keys.increasez[0]<>0 then keylist.Add('Increase Z:'+Convertkeycombotostring(keys.increasez)); if keys.decreasez[0]<>0 then keylist.Add('Decrease Z:'+Convertkeycombotostring(keys.decreasez)); if keys.autoaimtoggle[0]<>0 then keylist.Add('Autoaim:'+Convertkeycombotostring(keys.autoaimtoggle)); if keys.increaselag[0]<>0 then keylist.Add('Increase Lag:'+Convertkeycombotostring(keys.increaselag)); if keys.decreaselag[0]<>0 then keylist.Add('Decrease Lag:'+Convertkeycombotostring(keys.decreaselag)); if keys.zoomin[0]<>0 then keylist.Add('Zoom in:'+Convertkeycombotostring(keys.zoomin)); if keys.zoomout[0]<>0 then keylist.Add('Zoom out:'+Convertkeycombotostring(keys.zoomout)); if keys.nozoom[0]<>0 then keylist.Add('No zoom:'+Convertkeycombotostring(keys.nozoom)); if keys.zoom1[0]<>0 then keylist.Add('Zoom 1:'+Convertkeycombotostring(keys.zoom1)); if keys.zoom2[0]<>0 then keylist.Add('Zoom 2:'+Convertkeycombotostring(keys.zoom2)); if keys.zoom3[0]<>0 then keylist.Add('Zoom 3:'+Convertkeycombotostring(keys.zoom3)); if keys.zoom4[0]<>0 then keylist.Add('Zoom 4:'+Convertkeycombotostring(keys.zoom4)); if keys.zoom5[0]<>0 then keylist.Add('Zoom 5:'+Convertkeycombotostring(keys.zoom5)); if keys.zbuffer[0]<>0 then keylist.Add('Z-buffer:'+Convertkeycombotostring(keys.zbuffer)); if keys.fog[0]<>0 then keylist.Add('Fog:'+Convertkeycombotostring(keys.fog)); if keys.lighting[0]<>0 then keylist.Add('Lighting:'+Convertkeycombotostring(keys.lighting)); if keys.wireframe[0]<>0 then keylist.Add('Wireframe:'+Convertkeycombotostring(keys.wireframe)); if keys.ShowKeylist[0]<>0 then keylist.Add('Show hotkey list:'+Convertkeycombotostring(keys.ShowKeylist)); requiredkeylistheight:=keylist.count*16; requiredkeylistwidth:=190; end; showkeylist:=not showkeylist; end; //check if a key combo is pressed if CheckKeyCombo(keys.zoom1) then zoom:=keys.zoomlevel1; if CheckKeyCombo(keys.zoom2) then zoom:=keys.zoomlevel2; if CheckKeyCombo(keys.zoom3) then zoom:=keys.zoomlevel3; if CheckKeyCombo(keys.zoom4) then zoom:=keys.zoomlevel4; if CheckKeyCombo(keys.zoom5) then zoom:=keys.zoomlevel5; if checkkeycombo(keys.zoomin) then zoom:=zoom+keys.zoomdelta; if checkkeycombo(keys.zoomout) then zoom:=zoom-keys.zoomdelta; if checkkeycombo(keys.nozoom) then zoom:=1; if checkkeycombo(keys.fog) then fog:=(fog + 1) mod 2; if checkkeycombo(keys.zbuffer) then zbuffer:=(zbuffer + 1) mod 2; if checkkeycombo(keys.lighting) then lighting:=(lighting + 1) mod 2; if checkkeycombo(keys.wireframe) then wireframe:=(wireframe +1) mod 2; if checkkeycombo(keys.autoaimtoggle) then begin if keys.holdautoaimtoggle then autoaim:=true else autoaim:=not autoaim; autoaimtimer:=gettickcount; end else begin if keys.HoldAutoaimtoggle then autoaim:=false; autoaimtimer:=0; if shot then begin shot:=false; lastshot:=0; mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); //stop fire (key got released) end; end; if checkkeycombo(keys.increaselag) then begin inc(lag,keys.lagdelta); lagtimer:=gettickcount; end; if checkkeycombo(keys.decreaselag) then begin dec(lag,keys.lagdelta); lagtimer:=gettickcount; end; if keys.setlag then begin usefpslag:=keys.usefpslag; lag:=keys.lagtoset; keys.setlag:=false; //set the offsets if keys.nrofoffsets>0 then begin setlength(lagoffsets,keys.nrofoffsets); if keys.nrofoffsets>=1 then lagoffsets[0].offset:=keys.offset1; if keys.nrofoffsets>=2 then lagoffsets[1].offset:=keys.offset2; if keys.nrofoffsets>=3 then lagoffsets[2].offset:=keys.offset3; if keys.nrofoffsets>=4 then lagoffsets[3].offset:=keys.offset4; if keys.nrofoffsets>=5 then lagoffsets[4].offset:=keys.offset5; if keys.nrofoffsets>=6 then lagoffsets[5].offset:=keys.offset6; if keys.nrofoffsets>=7 then lagoffsets[6].offset:=keys.offset7; if keys.nrofoffsets>=8 then lagoffsets[7].offset:=keys.offset8; if keys.nrofoffsets>=9 then lagoffsets[8].offset:=keys.offset9; if keys.nrofoffsets>=10 then lagoffsets[9].offset:=keys.offset10; if keys.nrofoffsets>=11 then lagoffsets[10].offset:=keys.offset11; if keys.nrofoffsets>=12 then lagoffsets[11].offset:=keys.offset12; if keys.nrofoffsets>=13 then lagoffsets[12].offset:=keys.offset13; if keys.nrofoffsets>=14 then lagoffsets[13].offset:=keys.offset14; if keys.nrofoffsets=15 then lagoffsets[14].offset:=keys.offset15; end; end; try if directxversion=directx8 then directxhook.HandleKeypresses else directx9hook.handlekeypresses; except locking:=false; end; if checkkeycombo(keys.setaimsetting1) then begin aimsettings:=keys.aimsettings1; aimsettingstimer:=gettickcount; aimsettingsset:=true; end; if checkkeycombo(keys.setaimsetting2) then begin aimsettings:=keys.aimsettings2; aimsettingstimer:=gettickcount; aimsettingsset:=true; end; if checkkeycombo(keys.setaimsetting3) then begin aimsettings:=keys.aimsettings3; aimsettingstimer:=gettickcount; aimsettingsset:=true; end; if checkkeycombo(keys.SaveAlltextures) then begin if directxversion=directx8 then SaveAllTextures8 else savealltextures9; end; if checkkeycombo(keys.Loadaimsettingsfile) then begin showloading:=true; if directxversion=directx8 then LoadLockedTextureInfo8(aimsettings) else LoadLockedTextureInfo9(aimsettings); showloading:=false; loadedtimer:=gettickcount; end; if (keys.callibrationmode) and checkkeycombo(keys.saveaimsettingsfile) then begin showsaving:=true; if directxversion=directx8 then saveLockedTextureInfo8(aimsettings) else savelockedtextureinfo9(aimsettings); showsaving:=false; savedtimer:=gettickcount; end; callibrationmode:=keys.callibrationmode; if checkkeycombo(keys.callibrationkey) then begin if not mousecallibrationactive then begin mousecallibrationmode:=1; mousecallibrationactive:=true; end; end; if keys.setcallibration then begin keys.setcallibration:=false; mousespeedx[1]:=keys.mousecallibrationhorizontal1point; mousespeedx[2]:=keys.mousecallibrationhorizontal2point; mousespeedx[5]:=keys.mousecallibrationhorizontal5point; mousespeedx[10]:=keys.mousecallibrationhorizontal10point; mousespeedx[20]:=keys.mousecallibrationhorizontal20point; mousespeedx[40]:=keys.mousecallibrationhorizontal40point; mousespeedx[3]:=mousespeedx[1]+mousespeedx[2]; mousespeedx[4]:=mousespeedx[3]+((mousespeedx[5]-mousespeedx[2]) / 3); tempsingle:=(mousespeedx[10]-mousespeedx[5])/5; for i:=6 to 9 do mousespeedx[i]:=mousespeedx[5]+(i-5)*tempsingle; tempsingle:=(mousespeedx[20]-mousespeedx[10])/10; for i:=11 to 19 do mousespeedx[i]:=mousespeedx[10]+(i-10)*tempsingle; tempsingle:=(mousespeedx[40]-mousespeedx[20])/20; for i:=21 to 39 do mousespeedx[i]:=mousespeedx[20]+(i-20)*tempsingle; //y mousespeedy[1]:=keys.mousecallibrationvertical1point; mousespeedy[2]:=keys.mousecallibrationvertical2point; mousespeedy[5]:=keys.mousecallibrationvertical5point; mousespeedy[10]:=keys.mousecallibrationvertical10point; mousespeedy[20]:=keys.mousecallibrationvertical20point; mousespeedy[40]:=keys.mousecallibrationvertical40point; mousespeedy[3]:=mousespeedy[1]+mousespeedy[2]; mousespeedy[4]:=mousespeedy[3]+((mousespeedy[5]-mousespeedy[2]) / 3); tempsingle:=(mousespeedy[10]-mousespeedy[5])/5; for i:=6 to 9 do mousespeedy[i]:=mousespeedy[5]+(i-5)*tempsingle; tempsingle:=(mousespeedy[20]-mousespeedy[10])/10; for i:=11 to 19 do mousespeedy[i]:=mousespeedy[10]+(i-10)*tempsingle; tempsingle:=(mousespeedy[40]-mousespeedy[20])/20; for i:=21 to 39 do mousespeedy[i]:=mousespeedy[20]+(i-20)*tempsingle; autoshoot:=keys.autoshoot; end; if keys.getlagfrommemory then getlag; sleep(keys.pollinginterval); except// outputdebugstring('the keylistener had an error'); end; end;// messagebox(0,'error','error',mb_ok);end;procedure getlag;var realaddress,realaddress2: dword; j: integer; count: dword; s: string;begin// outputdebugstring('getlag called'); try if keys.nrofoffsets>0 then begin //it's a pointer realaddress2:=keys.lagaddress; s:='start address='+IntToHex(realaddress2,8); // outputdebugstring(pchar(s)); for j:=keys.nrofoffsets-1 downto 0 do begin count:=0; realaddress:=pdword(realaddress2)^; realaddress2:=realaddress+lagoffsets[j].offset; s:='RealAddress='+IntToHex(realaddress,8); // outputdebugstring(pchar(s)); s:='Offset='+IntToHex(lagoffsets[j].offset,8); // outputdebugstring(pchar(s)); s:='RealAddress2='+IntToHex(realaddress2,8); // outputdebugstring(pchar(s)); end; realaddress:=realaddress2; s:='final RealAddress='+IntToHex(realaddress,8); // outputdebugstring(pchar(s)); end else realaddress:=keys.lagaddress; case keys.lagmemorytype of 0: lagfrommemory:=pbyte(realaddress)^; 1: lagfrommemory:=pword(realaddress)^; 2: lagfrommemory:=pdword(realaddress)^; 3: lagfrommemory:=trunc(psingle(realaddress)^); 4: lagfrommemory:=trunc(pdouble(realaddress)^); 6: lagfrommemory:=pint64(realaddress)^; end; except // s:='Error'; //outputdebugstring(pchar(s)); lagfrommemory:=0; end;end;procedure InitializeKeyListener;begin//open the filemapping object that holds the keys to watch aimsettings:=''; aimsettingsset:=false; Keylistenerthread:=TKeylistener.Create(false); TextureListCS:=TCriticalSection.create; LockedTexturelistCS:=TCriticalSection.create;end;end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -