Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include ./Includes/SAMP.ahk
- ;Benötigt die SAMP UDF!
- ;Funktionen by KnoLe_x3
- /*
- #############################################################################
- getGameText(type, length)
- setGameText(type, text)
- getPlayerWeapon()
- getWeaponName(weaponid)
- GetChatLine(line, variable)
- SetChatLine(line, text)
- getPlayerSkin()
- GetPlayerRotationToPos(x1, y1, x2, y2, unit=1)
- getDistanceToPoint(x, y, z = 0)
- getCheckpointPos(ByRef x, ByRef y, ByRef z)
- getCheckpointDistance()
- getCheckpointZone()
- getCheckpointCity()
- getLabelText()
- dialogHide()
- getSkinFraction(id)
- getPeds()
- getKills()
- restart()
- #############################################################################
- */
- global pedStates := {}
- AddZone("Bohrinsel", 585.5817, -3193.8582, -90.0, 1053.7162, -2670.0791, 280.0)
- ;GTA Adressen
- global ADDR_CURRENT_WEAPON := 0xBAA410
- global ADDR_VEHICLE_CVEH := 0xB6F980
- global ADDR_VEHICLE_SPEED_X := 0x44
- global ADDR_VEHICLE_SPEED_Y := 0x48
- global ADDR_VEHICLE_SPEED_Z := 0x4C
- global GAMETEXT_1 := 0xBAAD40
- global GAMETEXT_2 := 0xBAADC0
- global GAMETEXT_3 := 0xBAAE40
- global GAMETEXT_4 := 0xBAAEC0
- global GAMETEXT_5 := 0xBAABC0
- global GTA_IS_CHECKPOINT := 0x0220214C
- global GTA_CHECKPOINT := 0x00C7DEC8
- global GTA_CHECKPOINT_OFF_X := 0x00
- global GTA_CHECKPOINT_OFF_Y := 0x04
- global GTA_CHECKPOINT_OFF_Z := 0x08
- ;SAMP Adressen
- ; Eigene Adressen
- global SAMP_SKIN_OFFSET := 0x22
- global SAMP_DIALOG_OFFSET := 0x34
- global SAMP_DIALOG_SIZE := 2048
- global SAMP_DIALOG_TITLE := 0x40
- global SAMP_DIALOG_TITLE_SIZE := 64
- global SAMP_3DTEXT := 0x12C7BC
- global SAMP_DIALOG_SHOW_OFFSET := 0x28
- ;GTA Funktionen
- isCheckpointAviable(){
- if(!checkHandles())
- return
- dwAddr := readDWORD(hGTA, dwSAMP + 0x0220214C)
- return readMem(hGTA, dwAddr + 0x24, 1)
- }
- getCheckpointPos(ByRef x, ByRef y, ByRef z) {
- if(!checkHandles())
- return 0
- x := readFloat(hGTA, GTA_CHECKPOINT + GTA_CHECKPOINT_OFF_X)
- y := readFloat(hGTA, GTA_CHECKPOINT + GTA_CHECKPOINT_OFF_Y)
- z := readFloat(hGTA, GTA_CHECKPOINT + GTA_CHECKPOINT_OFF_Z)
- return 1
- }
- getCheckpointDistance() {
- getCheckpointPos(x, y, z)
- return getDistanceToPoint(x, y, z)
- }
- getCheckpointZone() {
- getCheckpointPos(x, y, z)
- return calculateZone(x, y, z)
- }
- getCheckpointCity() {
- getCheckpointPos(x, y, z)
- return calculateCity(x, y, z)
- }
- getDistanceToPoint(x, y, z = 0) {
- getPlayerPos(_x, _y, _z)
- if(z == 0)
- return sqrt((_x-x)**2+(_y-y)**2)
- else
- return sqrt((_x-x)**2+(_y-y)**2+(_z-z)**2)
- return 0
- }
- GetPlayerRotationToPos(x1, y1, x2, y2, unit=1){
- pi := 4 * ATan(1)
- y := y2 - y1, x := x2 - x1
- if(x = 0){
- if(y < 0)
- angle := 270
- else if(y > 0)
- angle := 90
- else
- angle := 0
- degree := 1
- }
- else if(y = 0){
- angle := 180
- degree := 1
- }
- else
- angle := ATan(y / x)
- if(degree){
- if(unit = 0)
- angle *= pi / 180
- }
- else if(unit != 0)
- angle *= 180 / pi
- if(unit = 2)
- angle /= 45
- return angle / 1.0
- }
- getGameText(type = 1, length = 12) {
- if(!checkHandles())
- return 0
- if(type == 1){
- text := readString(hGTA, GAMETEXT_1, length)
- }else if(type == 2){
- text := readString(hGTA, GAMETEXT_2, length)
- }else if(type == 3){
- text := readString(hGTA, GAMETEXT_3, length)
- }else if(type == 4){
- text := readString(hGTA, GAMETEXT_4, length)
- }else if(type == 5){
- text := readString(hGTA, GAMETEXT_5, length)
- }
- return text
- }
- setGameText(type, text) {
- if(!checkHandles())
- return 0
- if(type == 1){
- return writeString(hGTA, GAMETEXT_1, text)
- }else if(type == 2){
- return writeString(hGTA, GAMETEXT_2, text)
- }else if(type == 3){
- return writeString(hGTA, GAMETEXT_3, text)
- }else if(type == 4){
- return writeString(hGTA, GAMETEXT_4, text)
- }else if(type == 5){
- return writeString(hGTA, GAMETEXT_5, text)
- }
- return
- }
- getPlayerWeapon() {
- if(!checkHandles())
- return -1
- weaponID := readMem(hGTA, ADDR_CURRENT_WEAPON, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Round(weaponID)
- }
- getWeaponName(id) {
- weapons := {0: "Fist", 1: "Brass Knuckles", 2: "Golf Club", 3: "Nightstick", 4: "Knife", 5: "Baseball Bat", 6: "Shovel", 7: "Pool Cue", 8: "Katana", 9: "Chainsaw", 10: "Purple Dildo", 11: "Dildo", 12: "Vibrator", 13: "Silver Vibrator", 14: "Flowers", 15: "Cane", 16: "Grenade", 17: "Tear Gas", 18: "Molotov Cocktail", 22: "9mm", 23: "Silenced 9mm", 24: "Desert Eagle", 25: "Shotgun", 26: "Sawnoff Shotgun", 27: "Combat Shotgun", 28: "Micro SMG/Uzi", 29: "MP5", 30: "AK-47", 31: "M4", 32: "Tec-9", 33: "Country Rifle", 34: "Sniper Rifle", 35: "RPG", 36: "HS Rocket", 37: "Flamethrower", 38: "Minigun", 39: "Satchel Charge", 40: "Detonator", 41: "Spraycan", 42: "Fire Extinguisher", 43: "Camera", 44: "Night Vis Goggles", 45: "Thermal Goggles", 46: "Parachute", 47: "Fake Pistol", 49: "Vehicle", 50: "Helicopter Blades", 51: "Explosion", 53: "Drowned", 54: "Splat", 255: "Suicide"}
- if(weapons[id]) {
- return weapons[id]
- }
- return "Unknown"
- }
- getSkinFraction(id) {
- skins := {"LSPD": [163, 164, 265, 266, 267, 280, 281, 283, 284, 288, 194], "FBI": [165, 166, 286, 294, 194], "Sanitäter": [70, 274, 275, 276, 193], "Feuerwehr": [255, 277, 278, 279, 191], "Russen Mafia": [111, 112, 113, 124, 125, 126, 127, 272, 40, 43, 258], "Yakuza Mafia": [122, 123, 186, 203, 204, 228, 169, 224, 121], "Hitman": [], "Wheelman": [], "San News": [60, 170, 188, 227, 240, 250, 56, 226], "Grove Street": [105, 106, 107, 269, 269, 271, 65], "Ballas": [102, 103, 104, 293, 13], "Los Chickos Malos": [46, 47, 48, 98, 185, 223, 214, 30], "Ordnungsamt": [8, 50, 71, 233, 42], "Transport GmbH": [34, 44, 132, 133, 202, 206, 261, 31, 131], "San Fierro Rifa": [114, 115, 116, 173, 174, 175, 184, 273, 195, 198], "Los Santos Vagos": [108, 109, 110, 292, 91], "Triaden": [117, 118, 120, 208, 263, 49]}
- fraction := ""
- For key, array in skins
- {
- For index2, value2 in array
- {
- if(value2 == id) {
- fraction := key
- Break, 2
- }
- }
- }
- if(fraction) {
- return fraction
- }
- return "Zivilist"
- }
- getKills() {
- if(!checkHandles()) {
- return false
- }
- pedLocal := readDWORD(hGTA, 0xB6F5F0)
- if(!pedLocal) {
- return false
- }
- peds := getPeds()
- if(!peds) {
- return false
- }
- data := []
- For index, object in peds {
- state := readMem(hGTA, object.PED + 0x530, 4, "UInt")
- if((pedStates[object.PED] == 55 || pedStates[object.PED] == 54) == (state == 55 || state == 54)) {
- Continue
- }
- pedStates[object.PED] := state
- if(object.PED && !object.ISNPC && (state == 55 || state == 54)) {
- pedMurderer := readDWORD(hGTA, object.PED + 0x764)
- murderer := false
- For index2, object2 in peds
- {
- if(object2.PED == pedMurderer) {
- murderer := object2
- Break
- }
- }
- weapon := readMem(hGTA, object.PED + 0x760, 4, "UInt")
- skin := readMem(hGTA, object.PED + 0x22, 2, "UShort")
- if(!murderer)
- data.Push({victim: object, weapon: weapon, skin: skin})
- else
- data.Push({victim: object, murderer: murderer, weapon: weapon, skin: skin})
- }
- }
- return data
- }
- getPeds() {
- if(!checkHandles()) {
- return false
- }
- if(!updateScoreboardDataEx()) {
- return false
- }
- dwAddress := readDWORD(hGTA, dwSAMP + 0x21A0F8)
- dwAddress := readDWORD(hGTA, dwAddress + 0x3CD)
- dwAddress := readDWORD(hGTA, dwAddress + 0x18)
- data := []
- wID := readMem(hGTA, dwAddress + 0x4, 2, "UShort")
- dwPed := readDWORD(hGTA, 0xB6F5F0)
- if(readDWORD(hGTA, dwAddress + 0x1A) <= 16) {
- sName := readString(hGTA, dwAddress + 0xA, 16)
- }
- else {
- sName := readString(hGTA, readDWORD(hGTA, dwAddress + 0xA), 20)
- }
- data.Push({LOCAL: true, ID: wID, PED: dwPed, ISNPC: false, NAME: sName})
- Loop % 1000
- {
- i := A_Index - 1
- dwRemotePlayer := readDWORD(hGTA, dwAddress + 0x2E + i*4)
- if(!dwRemotePlayer) {
- Continue
- }
- dwRemotePlayerData := readDWORD(hGTA, dwRemotePlayer)
- dwRemotePlayerData := readDWORD(hGTA, dwRemotePlayerData)
- dwPed := readDWORD(hGTA, dwRemotePlayerData + 0x2A4)
- if(!dwPed) {
- Continue
- }
- dwIsNPC := readDWORD(hGTA, dwRemotePlayer + 0x4)
- if(readMem(hGTA, dwRemotePlayer + 0x1C, 4, "Int") <= 16)
- {
- sName := readString(hGTA, dwRemotePlayer + 0xC, 16)
- }
- else {
- sName := readString(hGTA, readDWORD(hGTA, dwRemotePlayer + 0xC), 20)
- }
- data.Push({LOCAL: false, ID: i, PED: dwPed, ISNPC: dwIsNPC, NAME: sName})
- }
- return data
- }
- ;SAMP Funktionen
- changeUserColor(playerID) {
- if(!checkHandles() || !playerID)
- return 0
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwPlayers := readDWORD(hGTA, dwAddress + SAMP_PPOOL_PLAYER_OFFSET)
- if(ErrorLevel || dwPlayers==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- i := playerID
- dwRemoteplayer := readDWORD(hGTA, dwPlayers+SAMP_PREMOTEPLAYER_OFFSET+i*4) ;pRemotePlayer
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(dwRemoteplayer==0)
- return
- dwPing := readMem(hGTA, dwRemoteplayer + SAMP_IPING_OFFSET, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwScore := readMem(hGTA, dwRemoteplayer + SAMP_ISCORE_OFFSET, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- writeRaw(hGTA, dwRemoteplayer + SAMP_ISCORE_OFFSET, "{000000}" . dwScore, "4")
- dwIsNPC := readMem(hGTA, dwRemoteplayer + SAMP_ISNPC_OFFSET, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwTemp := readMem(hGTA, dwRemoteplayer + SAMP_ISTRLENNAME___OFFSET, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- sUsername := ""
- if(dwTemp <= 0xf)
- {
- sUsername := readString(hGTA, dwRemoteplayer+SAMP_SZPLAYERNAME_OFFSET, 16)
- writeString(hGTA, dwRemoteplayer + SAMP_SZPLAYERNAME_OFFSET, "{000000}" . sUsername)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- }else{
- dwAddress := readDWORD(hGTA, dwRemoteplayer + SAMP_PSZPLAYERNAME_OFFSET)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- sUsername := readString(hGTA, dwAddress, 25)
- writeString(hGTA, dwAddress, "{000000}" . sUsername)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- }
- ErrorLevel := ERROR_OK
- return 1
- }
- getLabelText() {
- if(!checkHandles())
- return 0
- ADDR_3DText := readDWORD(hGTA, dwSAMP + SAMP_3DTEXT)
- TEXT_3DTEXT := readString(hGTA, ADDR_3DText, 512)
- return TEXT_3DTEXT
- }
- dialogHide() {
- if(!checkHandles())
- return 0
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_DIALOG_STRUCT_PTR)
- VarSetCapacity(data, 4, 0)
- NumPut(0, data, 0x0, "UInt")
- writeRaw(hGTA, dwAddress + SAMP_DIALOG_SHOW_OFFSET, &data, 4)
- SendInput, {F6}{ESC}
- return
- }
- GetChatLine(line, ByRef Output, timestamp = 0, color = 0) {
- if(!checkHandles())
- return false
- dwPTR := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
- chat := readString(hGTA, dwPTR + 0x136 + 0xfc*(99-line) + 0x1c, 144)
- if(!color)
- Output := RegExReplace(chat, "Ui)\{[a-f0-9]{6}\}")
- return
- }
- SetChatLine(line, string) {
- if(!checkHandles())
- return false
- dwPTR := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
- writeString(hGTA, dwPTR + 0x136 + 0xfc*(99-line) + 0x1c, string)
- return
- }
- getPlayerSkin() {
- if(!checkHandles())
- return -1
- dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwAddr := dwCPedPtr + SAMP_SKIN_OFFSET
- skinID := readMem(hGTA, dwAddr, 2, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return skinID
- }
- setrestart() {
- VarSetCapacity(old, 4, 0)
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) ;g_SAMP
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- NumPut(9,old,0,"Int")
- writeRaw(hGTA, dwAddress + 957, &old, 4)
- }
- restart() {
- restartGameEx()
- disconnectEx()
- addChatMessage("{FFFFFF}Der Keybinder verbindet erneut in ~15 Sekunden.")
- Sleep 16000
- setrestart()
- }
- restartGameEx() {
- if(!checkHandles())
- return -1
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) ;g_SAMP
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwFunc := dwSAMP + 0xA060
- VarSetCapacity(injectData, 11, 0) ;mov, call, retn
- NumPut(0xB9, injectData, 0, "UChar") ;mov ecx 0+1
- NumPut(dwAddress, injectData, 1, "UInt") ;1+4
- NumPut(0xE8, injectData, 5, "UChar") ;call 5+1
- offset := dwFunc - (pInjectFunc + 10)
- NumPut(offset, injectData, 6, "Int") ; 6+4
- NumPut(0xC3, injectData, 10, "UChar") ; 10+1
- writeRaw(hGTA, pInjectFunc, &injectData, 11)
- if(ErrorLevel)
- return false
- hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
- if(ErrorLevel)
- return false
- waitForSingleObject(hThread, 0xFFFFFFFF)
- return true
- }
- disconnectEx() {
- if(!checkHandles())
- return 0
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) ;g_SAMP
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwAddress := readDWORD(hGTA, dwAddress + 0x3c9) ;pRakClientInterface
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ecx := dwAddress ;this
- dwAddress := readDWORD(hGTA, dwAddress) ;vtable
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- VarSetCapacity(injectData, 24, 0) ;mov, call, retn
- NumPut(0xB9, injectData, 0, "UChar") ;mov ecx 0+1
- NumPut(ecx, injectData, 1, "UInt") ;1+4
- NumPut(0xB8, injectData, 5, "UChar") ;mov eax 5+1
- NumPut(dwAddress, injectData, 6, "UInt") ;6+4
- ;NumPut(0x006A006A, injectData, 10, "UInt") ; 2x push 10+4
- NumPut(0x68, injectData, 10, "UChar") ;10 + 1 ;push style
- NumPut(0, injectData, 11, "UInt") ;11 + 4
- NumPut(0x68, injectData, 15, "UChar") ;15 + 1 ;push style
- NumPut(500, injectData, 16, "UInt") ;16 + 4
- ;---
- NumPut(0x50FF, injectData, 20, "UShort") ;20 + 2
- NumPut(0x08, injectData, 22, "UChar") ;22 + 1
- NumPut(0xC3, injectData, 23, "UChar") ;retn 23+1
- writeRaw(hGTA, pInjectFunc, &injectData, 24)
- if(ErrorLevel)
- return false
- hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
- if(ErrorLevel)
- return false
- waitForSingleObject(hThread, 0xFFFFFFFF)
- return true
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement