Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Include address.ahk
- #Include memory.ahk
- // ############################# Standartadressen
- CPed(matrix){
- If(!SAMP())
- return false
- If(!matrix)
- return readDWORD(hGTA, ADDR_CPED_PTR)
- else return Matrix(readDWORD(hGTA, ADDR_CPED_PTR))
- }
- LocalPlayer(){
- If(!SAMP())
- return false
- return readDWORD(hGTA, SAMP_pPool("Player") + OFFSET_CPED_LOCALPLAYER)
- }
- Vehicle(matrix){
- If(!SAMP())
- return false
- If(!matrix)
- return readDWORD(hGTA, ADDR_VEHICLE_PTR)
- else return Matrix(readDWORD(hGTA, ADDR_VEHICLE_PTR))
- }
- Matrix(pointer){
- If(!SAMP())
- return false
- return readDWORD(hGTA, pointer + OFFSET_MATRIX)
- }
- InfoOffset(settings){
- If(!SAMP())
- return false
- If(!settings)
- return readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- else return readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_SETTINGS_OFFSET)
- }
- SAMP_pPool(pool){
- If(!SAMP())
- return false
- If(pool == "Player")
- pool := SAMP_PPOOL_PLAYER_OFFSET
- else if(pool == "Vehicle")
- pool := SAMP_PPOOL_VEHICLE_OFFSET
- else if(pool == "Pickup")
- pool := SAMP_PPOOL_PICKUP_OFFSET
- else if(pool == "Object")
- pool := SAMP_PPOOL_OBJECT_OFFSET
- return readDWORD(hGTA, readDWORD(hGTA, InfoOffset(0) + SAMP_PPOOLS_OFFSET) + pool)
- }
- // ############################# Positionen
- GetPlayerPosition(){
- If(!SAMP())
- return false
- return [readFloat(hGTA, mainMatrix + OFFSET_POSX), readFloat(hGTA, mainMatrix + OFFSET_POSY), readFloat(hGTA, mainMatrix + OFFSET_POSZ)]
- }
- SetPlayerPosition(fX,fY,fZ){
- If(!SAMP())
- return false
- writeMemory(hGTA, mainMatrix + OFFSET_POSX, fX, 4, "float")
- writeMemory(hGTA, mainMatrix + OFFSET_POSY, fY, 4, "float")
- writeMemory(hGTA, mainMatrix + OFFSET_POSZ, fZ, 4, "float")
- }
- GetPositionByPed(ped){
- If(!SAMP())
- return false
- pMatrix := Matrix(ped)
- return [readFloat(hGTA, pMatrix + OFFSET_POSX), readFloat(hGTA, pMatrix + OFFSET_POSY), readFloat(hGTA, pMatrix+ OFFSET_POSZ)]
- }
- // ############################# Player
- GetPlayerSkinID(){
- If(!SAMP())
- return false
- return readMemory(hGTA, mainCPED + OFFSET_CPED_SKINID, 2, "UShort")
- }
- GetPlayerHP(){
- If(!SAMP())
- return false
- return Round(readFloat(hGTA, mainCPED + OFFSET_CPED_HP))
- }
- SetPlayerHP(value){
- If(!SAMP())
- return false
- writeMemory(hGTA, mainCPED + OFFSET_CPED_HP, value, 4, "float")
- }
- GetPlayerArmor(){
- If(!SAMP())
- return false
- return Round(readFloat(hGTA, mainCPED + OFFSET_CPED_ARMOR))
- }
- SetPlayerArmor(value){
- If(!SAMP())
- return false
- writeMemory(hGTA, mainCPED + OFFSET_CPED_ARMOR, value, 4, "float")
- }
- GetPlayerRotation(){
- If(!SAMP())
- return false
- return [readFloat(hGTA, mainMatrix + OFFSET_ROTATION_X), readFloat(hGTA, mainMatrix + OFFSET_ROTATION_Y)]
- }
- SetPlayerRotation(fx=0, fy=0){
- If(!SAMP())
- return false
- writeMemory(hGTA, mainMatrix + OFFSET_ROTATION_X, x, 4, "float")
- writeMemory(hGTA, mainMatrix + OFFSET_ROTATION_Y, y, 4, "float")
- }
- GetPlayerTargetRotation(){
- If(!SAMP())
- return false
- return readFloat(hGTA, mainCPED + OFFSET_CPED_ZANGLE)
- }
- SetPlayerTargetRotation(angle){
- If(!SAMP())
- return false
- writeMemory(hGTA, mainCPED + OFFSET_CPED_ZANGLE, angle*-1, 4, "float")
- }
- GetLastVehiclePointer(){
- If(!SAMP())
- return false
- return readDWORD(hGTA, mainCPED + OFFSET_VEH_LASTVEH)
- }
- // ############################# VEHICLE
- IsPlayerInAnyVehicle(){
- If(!SAMP())
- return false
- return (Vehicle(0) > 0)
- }
- IsVehicleAPlane(dwVeh){
- If(!SAMP())
- return false
- v := GetVehicleModelIDByPointer(dwVeh)
- If(v == 460 || v == 476 || v == 511 || v == 512 || v == 513 || v == 519 || v == 520 || v == 553 || v == 577 || v == 592 || v == 593 || v == 548 || v == 425 || v == 417 || v == 487 || v == 488 || v == 497 || v == 563 || v == 447 || v == 469)
- return true
- else return false
- }
- GetVehicleModelIDByPointer(dwVeh){
- If(!SAMP())
- return false
- return readMemory(hGTA, dwVeh + OFFSET_VEH_MODELID, 2, "short")
- }
- GetVehicleTypeByPointer(vehicle){
- If(!SAMP())
- return false
- return readMemory(hGTA, vehicle + OFFSET_VEH_TYPE)
- }
- GetPlayersInVehicle(){
- If(!SAMP())
- return false
- dw := Vehicle(0)
- return [getIdByPed(readDWORD(hGTA, dw + 0x460)),getIdByPed(readDWORD(hGTA, dw + 0x464)),getIdByPed(readDWORD(hGTA, dw + 0x468)),getIdByPed(readDWORD(hGTA, dw + 0x46C))]
- }
- FlipVehicle() {
- If(!SAMP())
- return false
- dwVeh := Vehicle(1)
- rx := readFloat(hGTA, dwVeh + OFFSET_ROTATION_X)
- ry := readFloat(hGTA, dwVeh + OFFSET_ROTATION_Y)
- WriteMemory(hGTA, dwVeh + OFFSET_ROTATION_X, rx * -1, 4, "float")
- WriteMemory(hGTA, dwVeh + OFFSET_ROTATION_Y, ry * -1, 4, "float")
- }
- IsMotorOn(){
- If(!SAMP())
- return false
- iOUT := readMemory(hGTA, Vehicle(0) + OFFSET_VEH_ENGINESTATE, 1, "Char")
- return (iOUT==24 OR iOUT==56 OR iOUT==88 OR iOUT==120)
- }
- IsLightOn(){
- If(!SAMP())
- return false
- return readDWORD(hGTA, Vehicle(0) + OFFSET_VEH_LIGHTSTATE)
- }
- IsCarLocked(){
- If(!SAMP())
- return false
- return (readDWORD(hGTA, Vehicle(0) + ADDR_VEHICLE_DOORSTATE) == 2)
- }
- GetCarColorsIDs(){
- If(!SAMP())
- return false
- color1 := readMemory(hGTA, Vehicle(0) + OFFSET_VEH_COLOR1, 1, "Char")
- color2 := readMemory(hGTA, Vehicle(0) + OFFSET_VEH_COLOR2, 1, "Char")
- return [color1, color2]
- }
- GetCarSpeed() {
- If(!SAMP())
- return false
- dwVeh := Vehicle(0)
- fSpeedX := readFloat(hGTA, dwVeh + OFFSET_VEH_SPEED_X)
- fSpeedY := readFloat(hGTA, dwVeh + OFFSET_VEH_SPEED_Y)
- fSpeedZ := readFloat(hGTA, dwVeh + OFFSET_VEH_SPEED_Y)
- return Round((SQRT((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ)) *100) *1.61)
- }
- // ############################# SAMP
- GetUsername() {
- If(!SAMP())
- return false
- return readString(hGTA, dwSAMP + ADDR_SAMP_USERNAME, 25)
- }
- GetPlayerId(){
- If(!SAMP())
- return false
- return getPlayerIdByName(GetUsername())
- }
- getPlayerColor(playerid){
- if(!SAMP())
- return false
- idColor := readDWORD(hGTA, dwSAMP + SAMP_COLOR_OFFSET + 4 * playerid)
- hex := IntToHex(idColor)
- rgbhex := SubStr(IntToHex(idColor), 3, 6)
- return rgbhex
- }
- IsChatOpen() {
- if(!SAMP())
- return -1
- return (readDWORD(hGTA, readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR) + ADDR_SAMP_INCHAT_PTR_OFF) > 0)
- }
- IsMouseActive(){
- If(!SAMP())
- return false
- MISC := readDWORD(hGTA, dwSAMP + 0x21A10C)
- iCursorMode := readMemory(hGTA, MISC + 85)
- return iCursorMode
- }
- SendChat(wText) {
- wText := "" wText
- if(!SAMP())
- return false
- dwFunc:=0
- if(SubStr(wText, 1, 1) == "/") {
- dwFunc := dwSAMP + FUNC_SAMP_SENDCMD
- } else {
- dwFunc := dwSAMP + FUNC_SAMP_SENDSAY
- }
- callWithParams(hGTA, dwFunc, [["s", wText]], false)
- ErrorLevel := ERROR_OK
- return true
- }
- showGameText(wText, dwTime, dwSize) {
- wText := "" wText
- dwTime += 0
- dwTime := Floor(dwTime)
- dwSize += 0
- dwSize := Floor(dwSize)
- if(!SAmp())
- return false
- dwFunc := dwSAMP + FUNC_SAMP_SHOWGAMETEXT
- callWithParams(hGTA, dwFunc, [["s", wText], ["i", dwTime], ["i", dwSize]], false)
- ErrorLevel := ERROR_OK
- return true
- }
- AddChatMessage(text,color=0xffffffff){
- if(!SAMP())
- return false
- dwFunc := dwSAMP + 0x64010
- dwAddress := readDWORD(hGTA, dwSAMP + 0x21A0E4)
- callWithParams(hGTA, dwFunc, [["i", dwAddress],["i", 8],["s", text],["i", 0],["i", color],["i", 0]], false, true)
- ErrorLevel := ERROR_OK
- return true
- }
- AntiCrash(){
- If(!SAMP())
- return false
- cReport := ADDR_SAMP_CRASHREPORT
- writeMemory(hGTA, dwSAMP + cReport, 0x90909090, 4)
- cReport += 0x4
- writeMemory(hGTA, dwSAMP + cReport, 0x90, 1)
- cReport += 0x9
- writeMemory(hGTA, dwSAMP + cReport, 0x90909090, 4)
- cReport += 0x4
- writeMemory(hGTA, dwSAMP + cReport, 0x90, 1)
- }
- SetSpecialAction(actionID){
- IF(!SAMP())
- return false
- callWithParams(hGTA, dwSAMP + 0x30C0, [["i", LocalPlayer()],["i", actionID]], false, true)
- }
- SendInterior(interiorID){
- If(!SAMP())
- return false
- callWithParams(hGTA, dwSAMP + 0x5740, [["i", LocalPlayer()],["i", interiorID]], false, true)
- }
- SendDeathToServer(){
- If(!SAMP())
- return false
- callWithParams(hGTA, dwSAMP + 0x55E0, [["i", LocalPlayer()]], false, true)
- }
- // ############################# HUD
- SetHudEnabled(toggle){
- If(!SAMP())
- return false
- writeMemory(hGTA, 0xA444A0, toggle, 1, "UChar")
- }
- // ############################# Interface
- ChangeInterfaceColor(id, color){
- If(!SAMP())
- return false
- dwAddr := 0xBAB22C
- dw := 4 * id, dwAddr += dw
- writeMemory(hGTA, dwAddr, 0xFFFFFFFF, 4, "Int")
- }
- SetPercentageHealthAndArmor(toggle){
- If(!SAMP())
- return false
- writeMemory(hGTA, 0x589355, toggle, 1, "UChar")
- writeMemory(hGTA, 0x589131, toggle, 1, "UChar")
- }
- // ############################# CHECKPOINT
- setCheckpoint(fX, fY, fZ, fSize) {
- if(!SAMP())
- return false
- dwFunc := dwSAMP + 0x9D340
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- VarSetCapacity(buf, 16, 0)
- NumPut(fX, buf, 0, "Float")
- NumPut(fY, buf, 4, "Float")
- NumPut(fZ, buf, 8, "Float")
- NumPut(fSize, buf, 12, "Float")
- writeRaw(hGTA, pParam1, &buf, 16)
- dwLen := 31
- VarSetCapacity(injectData, dwLen, 0)
- NumPut(0xB9, injectData, 0, "UChar")
- NumPut(dwAddress, injectData, 1, "UInt")
- NumPut(0x68, injectData, 5, "UChar")
- NumPut(pParam1+12, injectData, 6, "UInt")
- NumPut(0x68, injectData, 10, "UChar")
- NumPut(pParam1, injectData, 11, "UInt")
- NumPut(0xE8, injectData, 15, "UChar")
- offset := dwFunc - (pInjectFunc + 20)
- NumPut(offset, injectData, 16, "Int")
- NumPut(0x05C7, injectData, 20, "UShort")
- NumPut(dwAddress+0x24, injectData, 22, "UInt")
- NumPut(1, injectData, 26, "UInt")
- NumPut(0xC3, injectData, 30, "UChar")
- writeRaw(hGTA, pInjectFunc, &injectData, dwLen)
- if(ErrorLevel)
- return false
- hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
- if(ErrorLevel)
- return false
- waitForSingleObject(hThread, 0xFFFFFFFF)
- closeProcess(hThread)
- ErrorLevel := ERROR_OK
- return true
- }
- disableCheckpoint()
- {
- if(!SAMP())
- return false
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- VarSetCapacity(enablecp, 4, 0)
- NumPut(0,enablecp,0,"Int")
- writeRaw(hGTA, dwAddress+0x24, &enablecp, 4)
- return true
- }
- // ############################# POOLS
- UpdateVehiclePool(){
- If(!SAMP())
- return false
- if(iRefreshVeh+iUpdateTickVeh > A_TickCount)
- return 1
- oVehiclePoolData := []
- iRefreshVeh := A_TickCount
- dwAddress := InfoOffset(0)
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- stVehiclePool := readDWORD(hGTA, dwAddress + SAMP_PPOOL_VEHICLE_OFFSET)
- vehicleoffset := 0
- Loop, %SAMP_MAX_VEHICLES% // 2000
- {
- index := A_Index-1, vehicleoffset += 4
- iIsListed := readDWORD(hGTA, stVehiclePool + VEHPOOL_iIsListed + index * 0x4)
- If(iIsListed == 0)
- continue
- ptrGTAVeh := readDWORD(hGTA, stVehiclePool + VEHPOOL_pGTA_Vehicle + index * 0x4)
- If(ptrGTAVeh == 0)
- continue
- GTACARid := GetVehicleModelIDByPointer(ptrGTAVeh)
- sVehId := Round(((vehicleoffset / 4) - 1))
- if(GTACARid>400 && GTACARid <611)
- oVehiclePoolData[index] := Object("PTR", ptrGTAVeh, "SAMPID", sVehId, "CARNAME", ovehicleNames[GTACARid-399])
- }
- vehicleoffset := 0
- return 1
- }
- UpdateTextdrawPool(){
- global
- if(!SAMP())
- return 0
- strData := []
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- dwTextDraws := readDWORD(hGTA, dwAddress + 0x10)
- Loop, % SAMP_MAX_TEXTDRAWS
- {
- i := A_Index-1
- iIsListed := readDWORD(hGTA, dwTextDraws + i * 0x4)
- If(iIsListed == 0)
- continue
- dwAddr := readDWORD(hGTA, dwTextDraws + 0x2400 + i * 0x4)
- If(dwAddr == 0)
- continue
- strOUT := readString(hGTA, dwAddr, 256) // strOUT size
- if(strOUT == 0)
- continue
- strData[i] := strOUT
- }
- }
- CountStreamedVehicles(){
- If(!SAMP())
- return false
- if(!UpdateVehiclePool())
- return -1
- iCount := 0
- for i, o in oVehiclePoolData
- iCount++
- return iCount
- }
- CountTextraws(){
- If(!SAMP())
- return false
- if(!UpdateTextdrawPool())
- return -1
- iCount := 0
- for i, o in strData
- iCount++
- return iCount
- }
- // ############################# Streamed Players
- callFuncForAllStreamedInPlayers(cfunc,dist=0x7fffffff) {
- cfunc := "" cfunc
- dist += 0
- if(!IsFunc(cfunc))
- return false
- p := getStreamedInPlayersInfo()
- if(!p)
- return false
- if(dist<0x7fffffff)
- {
- lpos := GetPlayerPosition()
- if(!lpos)
- return false
- For i, o in p
- {
- if(dist>getDist(lpos,o.POS))
- %cfunc%(o)
- }
- }
- else
- {
- For i, o in p
- %cfunc%(o)
- }
- return true
- }
- getStreamedInPlayersInfo() {
- r:=[]
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- For i, o in oScoreboardData
- {
- if(o.HasKey("PED"))
- {
- p := GetPositionByPed(o.PED)
- if(p)
- {
- o.POS := p
- r[i] := o
- }
- }
- }
- return r
- }
- if(!updateOScoreboardData())
- return ""
- For i, o in oScoreboardData
- {
- if(o.HasKey("PED"))
- {
- p := GetPositionByPed(o.PED)
- if(p)
- {
- o.POS := p
- r[i] := o
- }
- }
- }
- return r
- }
- getClosestPlayerId() {
- dist := 0x7fffffff
- p := getStreamedInPlayersInfo()
- if(!p)
- return -1
- lpos := GetPlayerPosition()
- if(!lpos)
- return -1
- id := -1
- For i, o in p
- {
- t:=getDist(lpos,o.POS)
- if(t<dist)
- {
- dist := t
- id := i
- }
- }
- return id
- }
- getPedById(dwId) {
- dwId += 0
- dwId := Floor(dwId)
- if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
- return 0
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- if(oScoreboardData[dwId])
- {
- if(oScoreboardData[dwId].HasKey("PED"))
- return oScoreboardData[dwId].PED
- }
- return 0
- }
- if(!updateOScoreboardData())
- return 0
- if(oScoreboardData[dwId])
- {
- if(oScoreboardData[dwId].HasKey("PED"))
- return oScoreboardData[dwId].PED
- }
- return 0
- }
- getIdByPed(dwPed) {
- dwPed += 0
- dwPed := Floor(dwPed)
- if(!dwPed)
- return -1
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- For i, o in oScoreboardData
- {
- if(o.HasKey("PED"))
- {
- if(o.PED==dwPed)
- return i
- }
- }
- return -1
- }
- if(!updateOScoreboardData())
- return -1
- For i, o in oScoreboardData
- {
- if(o.HasKey("PED"))
- {
- if(o.PED==dwPed)
- return i
- }
- }
- return -1
- }
- getPlayerIdByName(wName) {
- wName := "" wName
- if(StrLen(wName) < 1 || StrLen(wName) > 24)
- return -1
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- For i, o in oScoreboardData
- {
- if(InStr(o.NAME,wName)==1)
- return i
- }
- return -1
- }
- if(!updateOScoreboardData())
- return -1
- For i, o in oScoreboardData
- {
- if(InStr(o.NAME,wName)==1)
- return i
- }
- return -1
- }
- getPlayerScoreById(dwId) {
- dwId += 0
- dwId := Floor(dwId)
- if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
- return ""
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].SCORE
- return ""
- }
- if(!updateOScoreboardData())
- return ""
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].SCORE
- return ""
- }
- getPlayerPingById(dwId) {
- dwId += 0
- dwId := Floor(dwId)
- if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
- return -1
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].PING
- return -1
- }
- if(!updateOScoreboardData())
- return -1
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].PING
- return -1
- }
- isNPCById(dwId) {
- dwId += 0
- dwId := Floor(dwId)
- if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
- return -1
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].ISNPC
- return -1
- }
- if(!updateOScoreboardData())
- return -1
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].ISNPC
- return -1
- }
- // ############################# Cheat Funktionen
- StableVehicleCam()
- {
- If(IsPlayerInAnyVehicle() && WinActive("GTA:SA:MP"))
- {
- DllCall("mouse_event", uint,1, int,1, int,0, uint,0, int,0)
- sleep, 3
- DllCall("mouse_event", uint,1, int,-1, int,0, uint,0, int,0)
- }
- }
- UnlockFPS(){
- If(!SAMP())
- return false
- writeMemory(hGTA, dwSAMP + ADDR_SAMP_FPSUNLOCK, 0x5051FF15, 4, "UChar")
- }
- NoSpread(value) {
- global
- if(!SAMP())
- return false
- If(value = 1)
- {
- Loop % ADDR_NOSPREAD.MaxIndex(){
- resetrecoil%A_Index% := readMemory(hGTA, ADDR_NOSPREAD[A_Index])
- writeMemory(hGTA, ADDR_NOSPREAD[A_Index], 1000.0, 4, "float")
- }
- }else if(value = 0){
- Loop % ADDR_NOSPREAD.MaxIndeX()
- writeMemory(hGTA, ADDR_NOSPREAD[A_Index], resetrecoil%A_Index%)
- }
- }
- AntiBikeFall(value) {
- global
- if(!SAMP())
- return false
- If(value){
- r1 := readMemory(hGTA, ADDR_BIKEFALL1)
- r2 := readMemory(hGTA, ADDR_BIKEFALL2)
- r3 := readMemory(hGTA, ADDR_BIKEFALL3)
- writeMemory(hGTA, ADDR_BIKEFALL1, 0xE9, 2)
- writeMemory(hGTA, ADDR_BIKEFALL2, 0xA7, 2)
- writeMemory(hGTA, ADDR_BIKEFALL3, 0x03, 2)
- }else{
- writeMemory(hGTA, ADDR_BIKEFALL1, r1)
- writeMemory(hGTA, ADDR_BIKEFALL2, r2)
- writeMemory(hGTA, ADDR_BIKEFALL3, r3)
- }
- }
- ShowNametags(i){
- global
- If(!SAMP())
- return false
- If(i){
- dwAddr := InfoOffset(1)
- d_dist := readFloat(hGTA, dwAddr + SAMP_NAMETAG_DISTANCE)
- writeMemory(hGTA, dwAddr + SAMP_NAMETAG_DISTANCE, 10000, 4, "float")
- writeMemory(hGTA, dwAddr + SAMP_NAMETAGS_WALL, false)
- }else{
- writeMemory(hGTA, dwAddr + SAMP_NAMETAG_DISTANCE, d_dist, 4, "float")
- writeMemory(hGTA, dwAddr + SAMP_NAMETAGS_WALL, true)
- }
- }
- RGN_BOT()
- {
- global
- if(!SAMP())
- return 0
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- dwTextDraws := readDWORD(hGTA, dwAddress + SAMP_PPOOL_TEXTDRAW_OFFSET)
- Loop, % SAMP_MAX_TEXTDRAWS
- {
- i := A_Index-1
- iIsListed := readDWORD(hGTA, dwTextDraws + i * 0x4)
- If(iIsListed == 0)
- continue
- dwAddr := readDWORD(hGTA, dwTextDraws + 0x2400 + i * 0x4)
- If(dwAddr == 0)
- continue
- strOUT := readString(hGTA, dwAddr, 256)
- If(strOUT == 0)
- continue
- If(Instr(strOUT, "AFK-System"))
- {
- RegExMatch(strOUT,"Gib folgende Summe mit ~g~/notafk~w~ ein\:~n~~r~~.*~(.*)\+~(.*)~(.*)~n~~n", sOUTPUT)
- o_out := sOUTPUT1 + sOUTPUT2
- ,t_out := sOUTPUT1 + sOUTPUT3
- SendChat("/notafk " . o_out)
- SendChat("/notafk " . t_out)
- break
- }
- }
- }
- UnlimitedAmmo(value){
- if(!SAMP())
- return false
- If(value)
- writeMemory(hGTA, 0x969178, 0x1)
- else
- writeMemory(hGTA, 0x969178, 0x0)
- }
- NightVision(value){
- If(!SAMP())
- return false
- If(value)
- writeMemory(hGTA, ADDR_SA_NIGHTVISION, 0x1)
- else writeMemory(hGTA, ADDR_SA_NIGHTVISION, 0x0)
- }
- ThermalVision(value){
- If(!SAMP())
- return false
- If(value)
- writeMemory(hGTA, ADDR_SA_THERMVISION, 0x1)
- else writeMemory(hGTA, ADDR_SA_THERMVISION, 0x0)
- }
- UnderWaterDrive(value){
- If(!SAMP())
- return false
- If(value)
- writeMemory(hGTA, ADDR_SA_UNDERWATER, 0x1, 1, "byte")
- else writeMemory(hGTA, ADDR_SA_UNDERWATER, 0x0, 1, "byte")
- }
- FixVehicle(){
- If(!SAMP())
- return false
- dwVeh := Vehicle(0)
- If(dwVeh)
- {
- vType := GetVehicleTypeByPointer(dwVeh)
- If(vType == 0 && !IsVehicleAPlane(dwVeh))
- callWithParams(hGTA, 0x6A3440, [["i", dwVeh]], false, true)
- else If(vType == 9)
- callWithParams(hGTA, 0x6B7050, [["i", dwVeh]], false, true)
- else
- AddChatMessage(PREFIX . "Unknown error")
- }else{
- AddChatMessage(PREFIX . "Not in a vehicle!")
- }
- }
- GetGravity(){
- If(!SAMP())
- return false
- return readFloat(hGTA, ADDR_WORLD_GRAVITY)
- }
- SetGravity(value){
- If(!SAMP())
- return false
- writeMemory(hGTA, ADDR_WORLD_GRAVITY, value, 4, "float")
- }
- // ############################# Weapon
- GetTargetPed(){
- If(!SAMP())
- return false
- return readDWORD(hGTA, readDWORD(hGTA, ADDR_WEAPON_TARGET) + OFFSET_CPED_OTARGET)
- }
- GetWeaponStackID(){
- If(!SAMP())
- return false
- return readMemory(hGTA, mainCPED + OFFSET_WEAPON_ID)
- }
- GetWeaponSlot(){
- if(!SAMP())
- return false
- return readMemory(hGTA, mainCPED + OFFSET_WEAPON_SLOT, 1, "byte")
- }
- // ############################# Camera
- GetCameraPosition(writeable=0){
- If(!SAMP())
- return false
- If(!writeable)
- return [readFloat(hGTA, ADDR_CAMERA_POS_X), readFloat(hGTA, ADDR_CAMERA_POS_Y)]
- else return readFloat(hGTA, ADDR_CAMERA_CURR_X)
- }
- SetCameraPos(x){
- If(!SAMP())
- return false
- writeMemory(hGTA, ADDR_CAMERA_CURR_X, x, 4, "float")
- }
- GetCameraRotation(){
- If(!SAMP())
- return false
- return readFloat(hGTA, ADDR_CAMERA_ROTATION)
- }
- GetCameraXAngle(){
- If(!SAMP())
- return false
- angle := 0
- angle := 360 + atan2(readFloat(hGTA, ADDR_CAMERA_ANGLE_X), readFloat(hGTA, ADDR_CAMERA_ANGLE_Y) *180/PI)
- If(angle > 360.0)
- angle -= 360.0
- return angle
- }
- GetCameraZAngle(){
- If(!SAMP())
- return false
- val := readFloat(hGTA, 0x00B6F248)
- if(val > -1.2 & val < 1.2)
- return val
- }
- // ############################# D3D
- WorldToScreen(fX,fY,fZ, ScreenSizeX, ScreenSizeY){
- global
- if(!SAMP())
- return false
- dwM := 0xB6FA2C
- m_11 := readFloat(hGTA, dwM + 0*4)
- m_12 := readFloat(hGTA, dwM + 1*4)
- m_13 := readFloat(hGTA, dwM + 2*4)
- m_21 := readFloat(hGTA, dwM + 4*4)
- m_22 := readFloat(hGTA, dwM + 5*4)
- m_23 := readFloat(hGTA, dwM + 6*4)
- m_31 := readFloat(hGTA, dwM + 8*4)
- m_32 := readFloat(hGTA, dwM + 9*4)
- m_33 := readFloat(hGTA, dwM + 10*4)
- m_41 := readFloat(hGTA, dwM + 12*4)
- m_42 := readFloat(hGTA, dwM + 13*4)
- m_43 := readFloat(hGTA, dwM + 14*4)
- frX := fZ * m_31 + fY * m_21 + fX * m_11 + m_41
- frY := fZ * m_32 + fY * m_22 + fX * m_12 + m_42
- frZ := fZ * m_33 + fY * m_23 + fX * m_13 + m_43
- fRecip := 1.0/frZ
- frX *= fRecip * ScreenSizeX
- frY *= fRecip * ScreenSizeY
- if(frZ>1)
- return [frX,frY,frZ]
- }
- // ############################# SCOREBOARD-DATA
- updateOScoreboardData() {
- global
- if(!SAMP())
- return 0
- oScoreboardData := []
- if(!updateScoreboardDataEx())
- return 0
- iRefreshScoreboard := A_TickCount
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- dwPlayers := readDWORD(hGTA, dwAddress + SAMP_PPOOL_PLAYER_OFFSET)
- wID := readMemory(hGTA, dwPlayers + SAMP_SLOCALPLAYERID_OFFSET, 2, "Short") // sLocalPlayerID
- dwPing := readMemory(hGTA, dwPlayers + SAMP_ILOCALPLAYERPING_OFFSET)
- dwScore := readMemory(hGTA, dwPlayers + SAMP_ILOCALPLAYERSCORE_OFFSET)
- dwTemp := readMemory(hGTA, dwPlayers + SAMP_ISTRLEN_LOCALPLAYERNAME_OFFSET) // iStrlen_LocalPlayerName
- sUsername := ""
- if(dwTemp <= 0xf) {
- sUsername := readString(hGTA, dwPlayers + SAMP_SZLOCALPLAYERNAME_OFFSET, 16) // szLocalPlayerName
- }
- else {
- dwAddress := readDWORD(hGTA, dwPlayers + SAMP_PSZLOCALPLAYERNAME_OFFSET) // pszLocalPlayerName
- sUsername := readString(hGTA, dwAddress, 25)
- }
- oScoreboardData[wID] := Object("NAME", sUsername, "ID", wID, "PING", dwPing, "SCORE", dwScore, "ISNPC", 0)
- Loop, % SAMP_PLAYER_MAX
- {
- i := A_Index-1
- dwRemoteplayer := readDWORD(hGTA, dwPlayers+SAMP_PREMOTEPLAYER_OFFSET+i*4) // pRemotePlayer
- if(dwRemoteplayer==0)
- continue
- dwPing := readMemory(hGTA, dwRemoteplayer + SAMP_IPING_OFFSET) // pPing
- dwScore := readMemory(hGTA, dwRemoteplayer + SAMP_ISCORE_OFFSET) // Score
- dwIsNPC := readMemory(hGTA, dwRemoteplayer + SAMP_ISNPC_OFFSET) // NPC check
- dwTemp := readMemory(hGTA, dwRemoteplayer + SAMP_ISTRLENNAME___OFFSET)
- sUsername := ""
- if(dwTemp <= 0xf)
- {
- sUsername := readString(hGTA, dwRemoteplayer+SAMP_SZPLAYERNAME_OFFSET, 16) // sUser
- }
- else {
- dwAddress := readDWORD(hGTA, dwRemoteplayer + SAMP_PSZPLAYERNAME_OFFSET)
- sUsername := readString(hGTA, dwAddress, 25)
- }
- o := Object("NAME", sUsername, "ID", i, "PING", dwPing, "SCORE", dwScore, "ISNPC", dwIsNPC)
- oScoreboardData[i] := o
- dwRemoteplayerData := readDWORD(hGTA, dwRemoteplayer + 0x0) // pPlayerData
- if(dwRemoteplayerData==0)
- continue
- dwAddress := readDWORD(hGTA, dwRemoteplayerData + pData_iGlobalMarkers) // iGlobalMarkerLoaded
- if(dwAddress)
- {
- ix := readMemory(hGTA, dwRemoteplayerData + pData_iMapX) // x map
- iy := readMemory(hGTA, dwRemoteplayerData + pData_iMapY) // y map
- iz := readMemory(hGTA, dwRemoteplayerData + pData_iMapZ) // z map
- o.MPOS := [ix, iy, iz]
- }
- dwpSAMP_Actor := readDWORD(hGTA, dwRemoteplayerData + 0x0) // pSAMP_Actor
- if(dwpSAMP_Actor==0) // not streamed in
- continue
- dwPed := readDWORD(hGTA, dwpSAMP_Actor + pData_iGTAPed) // pGTA_Ped_
- if(dwPed==0)
- continue
- iAFKState := readMemory(hGTA, dwRemoteplayerData + pData_iAFKState) // iAFKState <- new
- fHP := readFloat(hGTA, dwRemoteplayerData + pData_iHP) // iHP
- fARMOR := readFloat(hGTA, dwRemoteplayerData + pData_iArmor) // iArmor
- o.HP := fHP
- , o.ARMOR := fARMOR
- , o.AFK := iAFKState
- , o.PED := dwPed
- }
- ErrorLevel := ERROR_OK
- return 1
- }
- updateScoreboardDataEx() {
- global
- if(!SAMP())
- return false
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) // g_SAMP
- dwFunc := dwSAMP + FUNC_UPDATESCOREBOARD
- VarSetCapacity(injectData, 11, 0) // mov + call + retn
- NumPut(0xB9, injectData, 0, "UChar")
- NumPut(dwAddress, injectData, 1, "UInt")
- NumPut(0xE8, injectData, 5, "UChar")
- offset := dwFunc - (pInjectFunc + 10)
- NumPut(offset, injectData, 6, "Int")
- NumPut(0xC3, injectData, 10, "UChar")
- writeRaw(hGTA, pInjectFunc, &injectData, 11)
- hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
- waitForSingleObject(hThread, 0xFFFFFFFF)
- closeProcess(hThread)
- return true
- }
- // ############################# Math
- IntToHex(int){
- CurrentFormat := A_FormatInteger
- SetFormat, integer, hex
- int += 0
- SetFormat, integer, %CurrentFormat%
- return int
- }
- getDist(pos1,pos2) {
- if(!pos1 || !pos2)
- return 0
- return Sqrt((pos1[1]-pos2[1])*(pos1[1]-pos2[1])+(pos1[2]-pos2[2])*(pos1[2]-pos2[2])+(pos1[3]-pos2[3])*(pos1[3]-pos2[3]))
- }
- atan2(x, y) {
- Return dllcall("msvcrt\atan2","Double",y, "Double",x, "CDECL Double")
- }
- tobin(byref addr, str)
- {
- if(!RegExMatch(str,"^([a-fA-F0-9][a-fA-F0-9])*$"))
- {
- msgbox % "fail tobin"
- return
- }
- i:=Strlen(str)/2
- VarSetCapacity(addr, i)
- dataddr := &addr
- x:=""
- loop,parse,str
- {
- if(A_Index & 1)
- x := A_Loopfield
- else
- {
- DllCall("RtlFillMemory"
- , "UInt", dataddr
- , "UInt", 1
- , "UChar", "0x" x A_Loopfield)
- dataddr++
- }
- }
- }
- __DWORD(dwAddress, ByRef dwRead=0)
- { VarSetCapacity(dwRead, 4)
- DllCall("ReadProcessMemory", "UInt", hGTA, "UInt", dwAddress, "Str", dwRead, "UInt", 4, "UInt", 0, "UInt*", 0)
- dwRead := NumGet(dwRead, 0, "UInt")
- return dwRead
- }
- getCoordinates() {
- fX := readFloat(hGTA, ADDR_POSITION_X)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- fY := readFloat(hGTA, ADDR_POSITION_Y)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- fZ := readFloat(hGTA, ADDR_POSITION_Z)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- ErrorLevel := ERROR_OK
- return [fX, fY, fZ]
- }
- getId() {
- s:=getUsername()
- return getPlayerIdByName(s)
- }
- GetTargetPosById(dwId) {
- dwId += 0
- dwId := Floor(dwId)
- if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
- return ""
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- if(oScoreboardData[dwId])
- {
- if(oScoreboardData[dwId].HasKey("PED"))
- return GetPedCoordinates(oScoreboardData[dwId].PED)
- if(oScoreboardData[dwId].HasKey("MPOS"))
- return oScoreboardData[dwId].MPOS
- }
- return ""
- }
- if(!updateOScoreboardData())
- return ""
- if(oScoreboardData[dwId])
- {
- if(oScoreboardData[dwId].HasKey("PED"))
- return GetPedCoordinates(oScoreboardData[dwId].PED)
- if(oScoreboardData[dwId].HasKey("MPOS"))
- return oScoreboardData[dwId].MPOS
- }
- return ""
- }
- getPedCoordinates(dwPED) {
- dwPED += 0
- dwPED := Floor(dwPED)
- if(!dwPED)
- return ""
- dwAddress := readDWORD(hGTA, dwPED + 0x14)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- fX := readFloat(hGTA, dwAddress + 0x30)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- fY := readFloat(hGTA, dwAddress + 0x34)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- fZ := readFloat(hGTA, dwAddress + 0x38)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- ErrorLevel := ERROR_OK
- return [fX, fY, fZ]
- }
- toHex(int) {
- format := A_FormatInteger
- SetFormat, Integer, H
- int += 0
- SetFormat, Integer, %format%
- return int
- }
- GetPlayerNameById(dwId) {
- dwId += 0
- dwId := Floor(dwId)
- if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
- return ""
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].NAME
- return ""
- }
- if(!updateOScoreboardData())
- return ""
- if(oScoreboardData[dwId])
- return oScoreboardData[dwId].NAME
- return ""
- }
- PlayerInput(text){
- s := A_IsSuspended
- Suspend On
- KeyWait Enter
- BlockChatInput(block)
- SendInput t^a{backspace}%text%
- Input, var, v, {enter}
- SendInput ^a{backspace 100}{enter}
- Sleep, 20
- BlockChatInput(unblock)
- if(!s)
- Suspend Off
- return var
- }
- getWeaponName(id) {
- weapons := {0: "Faust", 1: "Schlagring", 2: "Golfschläger", 3: "Schlagstock", 4: "Messer", 5: "Baseball Schläger", 6: "Schaufel", 7: "Billiardstick", 8: "Katana", 9: "Kettensäge", 10: "Lila Dildo", 11: "Dildo", 12: "Vibrator", 13: "Silber Vibrator", 14: "Blumen", 15: "Kanne", 16: "Granate", 17: "Tränen Gas", 18: "Molotov Cocktail", 22: "9mm", 23: "Silenced 9mm", 24: "Desert Eagle", 25: "Shotgun", 26: "Sawnoff Shotgun", 27: "Combat Shotgun", 28: "Micro SMG", 29: "MP5", 30: "AK-47", 31: "M4", 32: "Tec-9", 33: "Country Rifle", 34: "Sniper", 35: "RPG", 36: "HS Rocket", 37: "Flammenwerfer", 38: "Minigun", 39: "Satchel Charge", 40: "Zünder", 41: "Sprühdose", 42: "Feuerlöscher", 43: "Kamera", 44: "Nachtsichtgerät", 45: "Thermal Brille", 46: "Fallschirm", 47: "Fake Pistole", 49: "Fahrzeug", 50: "Helikopter", 51: "Explosion", 53: "Drowned", 54: "Splat", 255: "Suicide"}
- if(weapons[id]) {
- return weapons[id]
- }
- return "Unknown"
- }
- BlockChatInput(block)
- {
- global BlockChatInput_func
- res := DllCall(BlockChatInput_func,UChar,block)
- return res
- }
- showDialog(dwStyle, wCaption, wInfo, wButton1 ) {
- dwStyle += 0
- dwStyle := Floor(dwStyle)
- wCaption := "" wCaption
- wInfo := "" wInfo
- wButton1 := "" wButton1
- dwFunc := dwSAMP + FUNC_SAMP_SHOWDIALOG
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_SHOWDLG_PTR)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- writeString(hGTA, pParam1, wCaption)
- if(ErrorLevel)
- return false
- writeString(hGTA, pParam2, wInfo)
- if(ErrorLevel)
- return false
- writeString(hGTA, pParam3, wButton1)
- if(ErrorLevel)
- return false
- dwLen := 5 + 7*5 + 5 + 1
- VarSetCapacity(injectData, dwLen, 0)
- NumPut(0xB9, injectData, 0, "UChar")
- NumPut(dwAddress, injectData, 1, "UInt")
- NumPut(0x68, injectData, 5, "UChar")
- NumPut(0, injectData, 6, "UInt")
- NumPut(0x68, injectData, 10, "UChar")
- NumPut(pParam1+StrLen(wCaption), injectData, 11, "UInt")
- NumPut(0x68, injectData, 15, "UChar")
- NumPut(pParam3, injectData, 16, "UInt")
- NumPut(0x68, injectData, 20, "UChar")
- NumPut(pParam2, injectData, 21, "UInt")
- NumPut(0x68, injectData, 25, "UChar")
- NumPut(pParam1, injectData, 26, "UInt")
- NumPut(0x68, injectData, 30, "UChar")
- NumPut(dwStyle, injectData, 31, "UInt")
- NumPut(0x68, injectData, 35, "UChar")
- NumPut(1, injectData, 36, "UInt")
- NumPut(0xE8, injectData, 40, "UChar")
- offset := dwFunc - (pInjectFunc + 45)
- NumPut(offset, injectData, 41, "Int")
- NumPut(0xC3, injectData, 45, "UChar")
- writeRaw(hGTA, pInjectFunc, &injectData, dwLen)
- if(ErrorLevel)
- return false
- hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
- if(ErrorLevel)
- return false
- waitForSingleObject(hThread, 0xFFFFFFFF)
- closeProcess(hThread)
- return true
- }
- ServerPatchMotor(bool)
- {
- if(!SAMP())
- return -1
- If(bool)
- writeMemory(hGTA, dwSAMP + 0xB2510, 0xC20400, 3, "UInt")
- else{
- writeMemory(hGTA, dwSAMP + 0xB2510, 0x55, 1, "UChar")
- writeMemory(hGTA, dwSAMP + 0xB2511, 0xEC8B, 2, "Short")
- }
- }
- giveWeapon(weaponID, ammo := 100, selectSlot := true) {
- found := false
- for i, o in weapons {
- if weaponID is integer
- {
- if (weaponID == o.ID) {
- found := true
- break
- }
- }
- else {
- if (weaponID == o.MACRO) {
- found := true
- break
- }
- }
- }
- if (!found)
- return false
- dwAddress := readDWORD(hGTA, ADDR_CPED_PTR)
- if (ErrorLevel || !dwAddress)
- return false
- if (!callWithParams(hGTA, 0x4087E0, [["i", o.MODEL], ["i", 2]], true, false))
- return false
- if (!callWithParams(hGTA, 0x40EA10, [["i", 0]], true, false))
- return false
- if (!callWithParams(hGTA, 0x5E6080, [["i", dwAddress], ["i", o.ID], ["i", ammo], ["i", o.SLOT]], false, true))
- return false
- if (selectSlot) {
- if (!callWithParams(hGTA, 0x5E61F0, [["i", dwAddress], ["i", o.SLOT]], false, true))
- return false
- }
- return true
- }
- RepairVehicle()
- {
- If(!SAMP())
- return false
- pointer := readDWORD(hGTA, 0xBA18FC)
- if(pointer)
- {
- writeMemory(hGTA, pointer + 1216, 1000, 4, "FLOAT")
- }
- }
- GPCI_DEBAN(){
- if(!SAMP())
- return
- GPCI := readString(hGTA, 0xC9236C, 50)
- AddChatMessage("{FF0000}" . GPCI)
- writeString(hGTA, 0xC9236C, "PPPLLFAPFFFPFFFFPL")
- }
- showDialog_(style, caption, text, button1, button2 := "", id := 1)
- {
- style += 0
- style := Floor(style)
- id += 0
- id := Floor(id)
- caption := "" caption
- text := "" text
- button1 := "" button1
- button2 := "" button2
- if (id < 0 || id > 32767 || style < 0 || style > 5 || StrLen(caption) > 64 || StrLen(text) > 4096 || StrLen(button1) > 10 || StrLen(button2) > 10)
- return false
- dwFunc := dwSAMP + FUNC_SAMP_SHOWDIALOG
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_DIALOG_STRUCT_PTR)
- if (ErrorLevel || !dwAddress)
- {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- }
- getPageSize() {
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
- if (ErrorLevel || !dwAddress)
- return false
- pagesize := readMemory(hGTA, dwAddress, 1, "Byte")
- if (ErrorLevel)
- return false
- ErrorLevel := ERROR_OK
- return pagesize
- }
- stringMath(string) {
- while(position := RegExMatch(string, "\(([^\(\)]+)\)", regex_)) {
- string := RegExReplace(string, "\(([^\(\)]+)\)", stringMath(regex_1), blahblah, 1, position)
- }
- while(position := RegExMatch(string, "(\+|-)? *((?:\+|-)?\d+)\^((?:\+|-)?\d+)", regex_)) {
- string := RegExReplace(string, "(\+|-)? *((?:\+|-)?\d+)\^((?:\+|-)?\d+)", regex_1 . regex_2**regex_3, blahblah, 1, position)
- }
- while(position := RegExMatch(string, "(\+|-)? *((?:\+|-)?\d+(?:[\.\,]\d+)?) *(\*|/) *((?:\+|-)?\d+(?:[\.\,]\d+)?) *", regex_)) {
- if(regex_3 == "*")
- string := RegExReplace(string, "(\+|-)? *((?:\+|-)?\d+(?:[\.\,]\d+)?) *\* *((?:\+|-)?\d+(?:[\.\,]\d+)?) *", regex_1 . regex_2*regex_4, blahblah, 1, position)
- if(regex_3 == "/")
- string := RegExReplace(string, "(\+|-)? *((?:\+|-)?\d+(?:[\.\,]\d+)?) */ *((?:\+||)?\d+(?:[\.\,]\d+)?) *", regex_1 . regex_2/regex_4, blahblah, 1, position)
- }
- while(position := RegExMatch(string, " *((?:\+|-)?\d+(?:[\.\,]\d+)?) *(\+|-) *((?:\+|-)?\d+(?:[\.\,]\d+)?) *", regex_)) {
- if(regex_2 == "+")
- string := RegExReplace(string, " *((?:\+|-)?\d+(?:[\.\,]\d+)?) *\+ *((?:\+|-)?\d+(?:[\.\,]\d+)?) *", regex_1+regex_3, blahblah, 1, position)
- if(regex_2 == "-")
- string := RegExReplace(string, " *((?:\+|-)?\d+(?:[\.\,]\d+)?) *- *((?:\+|-)?\d+(?:[\.\,]\d+)?) *", regex_1-regex_3, blahblah, 1, position)
- }
- if(RegExMatch(string, "^-?\d+(?:\.\d+)?$"))
- return string
- return "ERROR"
- }
- getCheckpointPos() {
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- if (ErrorLevel || !dwAddress) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- offsets := [0xC, 0x10, 0x14]
- for i, o in offsets
- pos%i% := readMemory(hGTA, dwAddress + o, 4, "Float")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return [pos1, pos2, pos3]
- }
- isCheckpointEnabled() {
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- if (ErrorLevel || !dwAddress) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- isSet := readMemory(hGTA, dwAddress + 0x24, 1, "Byte")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return isSet
- }
- getCheckpointSize() {
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- if (ErrorLevel || !dwAddress) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- size := readMemory(hGTA, dwAddress + 0x18, 4, "Float")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return size
- }
- UpdateObjectPool(){
- If(!SAMP())
- return false
- global ObjectPool := []
- dwObjects := SAMP_pPool("Object")
- Loop, % SAMP_MAX_OBJECTS
- {
- i := A_Index-1
- iIsListed := readDWORD(hGTA, dwObjects + 0x4 + i * 0x4)
- If(iIsListed < 0)
- continue
- object := readDWORD(hGTA, dwObjects + 4004 + i * 0x4)
- If(object == 0)
- continue
- pGTAEntity := readDWORD(hGTA, object + 0x40)
- ModelID := readMemory(hGTA, pGTAEntity + 0x22, 2, "UShort")
- ObjectPos := GetPositionByPed(pGTAEntity)
- ObjectPool[i] := Object("MODEL", ModelID, "fX", ObjectPos[1], "fY", ObjectPos[2], "fZ", ObjectPos[3])
- AddChatMessage("Model: " ModelID ", xPos: " ObjectPos[1] ", yPos: " ObjectPos[2] ", zPos: " ObjectPos[3])
- }
- }
- addDeathMessage(killee := "", killer := "", killeeColor := 0xFFFFFFFF, killerColor := 0xFFFFFFFF, reason := 255) {
- dwFunc := dwSAMP + 0x66930
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_KILLINFO_OFFSET)
- if (ErrorLevel)
- return false
- writeString(hGTA, pParam1, killee)
- if (ErrorLevel)
- return false
- writeString(hGTA, pParam2, killer)
- if (ErrorLevel)
- return false
- // mov + 5 * push + call + retn
- dwLen := 5 + 5 * 5 + 5 + 1
- VarSetCapacity(injectData, dwLen, 0)
- NumPut(0xB9, injectData, 0, "UChar")
- NumPut(dwAddress, injectData, 1, "UInt")
- NumPut(0x68, injectData, 5, "UChar")
- NumPut(reason, injectData, 6, "UInt")
- NumPut(0x68, injectData, 10, "UChar")
- NumPut(killerColor, injectData, 11, "UInt")
- NumPut(0x68, injectData, 15, "UChar")
- NumPut(killeeColor, injectData, 16, "UInt")
- NumPut(0x68, injectData, 20, "UChar")
- NumPut(pParam1, injectData, 21, "UInt")
- NumPut(0x68, injectData, 25, "UChar")
- NumPut(pParam2, injectData, 26, "UInt")
- NumPut(0xE8, injectData, 30, "UChar")
- offset := dwFunc - (pInjectFunc + 35)
- NumPut(offset, injectData, 31, "Int")
- NumPut(0xC3, injectData, 35, "UChar")
- writeRaw(hGTA, pInjectFunc, &injectData, dwLen)
- if (ErrorLevel)
- return false
- hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
- if (ErrorLevel)
- return false
- waitForSingleObject(hThread, 0xFFFFFFFF)
- closeProcess(hThread)
- return true
- }
- GetPlayerWeaponID()
- { return __DWORD(0xBAA410)
- }
- __READ(dwAddress, dwLen, type, ByRef dwRead=0)
- { VarSetCapacity(dwRead, dwLen)
- DllCall("ReadProcessMemory", "UInt", hGTA, "UInt", dwAddress, "Str", dwRead, "UInt", dwLen, "UInt", 0, "UInt*", 0)
- dwRead := NumGet(dwRead, 0, type)
- return dwRead
- }
- __FLOAT(dwAddress, ByRef dwRead=0)
- { VarSetCapacity(dwRead, 4)
- DllCall("ReadProcessMemory", "UInt", hGTA, "UInt", dwAddress, "Str", dwRead, "UInt", 4, "UInt*", 0, "UInt", 0)
- dwRead := NumGet(dwRead, 0, "Float")
- return dwRead
- }
- __INT(dwAddress, ByRef dwRead=0)
- { VarSetCapacity(dwRead, 4)
- DllCall("ReadProcessMemory", "UInt", hGTA, "UInt", dwAddress, "Str", dwRead, "UInt", 4, "UInt", 0, "UInt*", 0)
- dwRead := NumGet(dwRead, 0, "Int")
- return dwRead
- }
- __SHORT(dwAddress, ByRef dwRead=0)
- { VarSetCapacity(dwRead, 2)
- DllCall("ReadProcessMemory", "UInt", hGTA, "UInt", dwAddress, "Str", dwRead, "UInt", 4, "UInt", 0, "UInt*", 0)
- dwRead := NumGet(dwRead, 0, "Short")
- return dwRead
- }
- __STRING(dwAddress, size, ByRef dwRead=0)
- { VarSetCapacity(dwRead, size)
- DllCall("ReadProcessMemory", "UInt", hGTA, "UInt", dwAddress, "Str", dwRead, "UInt", size, "UInt*", 0, "UInt", 0)
- if A_IsUnicode
- dwRead := __ansiToUnicode(dwRead)
- }
- __WRITE(dwAddress, writevalue, size=4, type="Int")
- { VarSetCapacity(finalvalue,size, 0)
- NumPut(writevalue,finalvalue,0,type)
- DllCall("WriteProcessMemory","Uint",hGTA,"Uint",dwAddress,"Uint",&finalvalue,"Uint",size,"Uint",0)
- }
- __WSTRING(dwAddress, wString)
- { sString := wString
- if A_IsUnicode
- sString := __unicodeToAnsi(wString)
- DllCall("WriteProcessMemory", "UInt", hGTA, "UInt", dwAddress, "Str", sString, "UInt", StrLen(wString) + 1, "UInt", 0, "UInt")
- }
- __RAW(dwAddress, pBuffer, dwLen)
- { DllCall("WriteProcessMemory", "UInt", hGTA, "UInt", dwAddress, "UInt", pBuffer, "UInt", dwLen, "UInt", 0, "UInt")
- }
- SampPatchDisableAnticheat(){
- for i, patch in SAMP_AC_PATCHES
- {
- tobin(d, SAMP_AC_BYTES[i])
- __RAW(g_dwSAMP_Addr + patch, &d, StrLen(SAMP_AC_BYTES[i]) / 2)
- }
- }
- SetRanges(toggle)
- {
- loop % ptr_ranges.MaxIndex()
- {
- If(toggle) {
- __WRITE(ptr_ranges[A_Index], 9999, 4, "float")
- }else{
- __WRITE(ptr_ranges[A_Index], ranges[A_Index], 4, "float")
- }
- }
- }
- patchHealth() {
- if (!SAMP())
- return false
- for i, o in healthPatches
- NOP(o.ADDRESS + (o.SAMP ? dwSAMP : 0), o.SIZE)
- return true
- }
- unpatchHealth() {
- if (!SAMP())
- return false
- for i, o in healthPatches {
- VarSetCapacity(byteCode, o.SIZE)
- NumPut(o.INSTRUCTION, &byteCode, 0, "UShort")
- NumPut(0x540, &byteCode, 2, "UInt")
- writeRaw(hGTA, o.ADDRESS + (o.SAMP ? dwSAMP : 0), &byteCode, o.SIZE)
- }
- return true
- }
- patchDeath() {
- if (!SAMP())
- return false
- patchHealth()
- VarSetCapacity(byteCode, 8)
- NumPut(0xB8, &byteCode, 0, "Byte")
- NumPut(0x24C2, &byteCode, 5, "UShort")
- writeRaw(hGTA, 0x630040, &byteCode, 8)
- if (ErrorLevel)
- return false
- return true
- }
- unpatchDeath() {
- if (!SAMP())
- return false
- unpatchHealth()
- VarSetCapacity(byteCode, 8)
- NumPut(0x56, &byteCode, 0, "Byte")
- NumPut(0xF18B, &byteCode, 1, "UShort")
- NumPut(0xE8, &byteCode, 3, "Byte")
- NumPut(0xFFFEA368, &byteCode, 4, "UInt")
- writeRaw(hGTA, 0x630040, &byteCode, 8)
- if (ErrorLevel)
- return false
- return true
- }
- NOP(address, size) {
- VarSetCapacity(byteCode, size)
- Loop %size%
- NumPut(0x90, &byteCode, A_Index - 1, "Byte")
- writeRaw(hGTA, address, &byteCode, size)
- return
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement