Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; <COMPILER: v1.1.37.01>
- #SingleInstance, force
- #UseHook
- #NoEnv
- #Persistent
- #NoTrayIcon
- #MaxHotkeysPerInterval, 99999999999999
- Process, Priority, , High
- if(!A_IsAdmin) {
- Run *RunAs "%A_ScriptFullPath%",, UseErrorLevel
- if(ErrorLevel) {
- MsgBox, 21, Fehler!, Der EasyBinder muss als Administrator gestartet werden`, damit er komplett funktionsfähig ist!
- IfMsgBox, Retry
- Reload
- else
- ExitApp
- }
- return
- }
- global projectname := "EasyBinder"
- global version := "1.4.4"
- global baseURL := "https://easybinder.marschl.io/"
- IfExist update.bat
- {
- FileDelete update.bat
- }
- UrlDownloadToFile %baseURL%version/version.txt, newversion.txt
- FileRead, NewestVersion, newversion.txt
- FileDelete newversion.txt
- if(NewestVersion > version)
- {
- MsgBox, 0, Update - %projectname%, Eine neue Version ( %NewestVersion% ) ist verfügbar! `nDer Keybinder aktualisiert sich von selbst
- IfMsgBox, Ok
- {
- SplashTextOn, 200, 50, %projectname% , %projectname% wird geupdated! Bitte warten...
- UrlDownloadToFile %baseURL%version/%NewestVersion%/%projectname%.exe, %A_ScriptName%.new
- UpdateBat=
- (
- Ping 127.0.0.1
- Del "%A_ScriptName%"
- Rename "%A_ScriptName%.new" "%A_ScriptName%"
- cd "%A_ScriptFullPath%"
- "%A_ScriptName%"
- )
- FileAppend, %UpdateBat%, update.bat
- Run, update.bat,, hide
- ExitApp
- IfExist update.bat
- {
- FileDelete update.bat
- }
- SplashTextOff
- }
- }
- IfNotExist, dll
- {
- FileCreateDir, dll
- }
- IfNotExist, dll/sampcac-loader.dll
- {
- URLDownloadToFile, %baseURL%sources/dll/sampcac-loader.dll, dll/sampcac-loader.dll
- }
- IfNotExist, dll/sampcac-loader.exe
- {
- URLDownloadToFile, %baseURL%sources/dll/sampcac-loader.exe, dll/sampcac-loader.exe
- }
- IfNotExist, src
- {
- FileCreateDir, src
- }
- IfNotExist, src/images
- {
- FileCreateDir, src/images
- }
- IfNotExist, src/sounds
- {
- FileCreateDir, src/sounds
- }
- IfNotExist, src/images/logo.png
- {
- URLDownloadToFile, %baseURL%sources/images/logo.png, src/images/logo.png
- }
- IfNotExist, src/images/favicon.ico
- {
- URLDownloadToFile, %baseURL%sources/images/favicon.ico, src/images/favicon.ico
- }
- IfNotExist, src/sounds/damage.mp3
- {
- URLDownloadToFile, %baseURL%sources/sounds/damage.mp3, src/sounds/damage.mp3
- }
- IfNotExist, ini
- {
- FileCreateDir, ini
- }
- IfNotExist, ini/stats
- {
- FileCreateDir, ini/stats
- }
- global sampcac_mode := false
- global sampdll_base_address := 0
- WinGetTitle, gta_title, ahk_exe gta_sa.exe
- global gta_title
- WinGet, gta_process, ProcessName, %gta_title%
- WinGet, gta_path, ProcessPath, %gta_title%
- WinGet, gta_pid, PID, %gta_title%
- gta_folder := StrReplace(gta_path, gta_process, "", "Off")
- Loop, Files, %gta_folder%*, F
- {
- if (RegExMatch(A_LoopFileName, "sampcac") && A_LoopFileExt == "asi") {
- init_sampcac()
- }
- }
- init_sampcac() {
- global
- sampcac_mode := true
- Run *RunAs %A_ScriptDir%/dll/sampcac-loader.exe
- sleep 5000
- FileReadLine, sampdll_base_address, %gta_folder%\samp.dat, 1
- }
- global ERROR_OK := 0
- global ERROR_PROCESS_NOT_FOUND := 1
- global ERROR_OPEN_PROCESS := 2
- global ERROR_INVALID_HANDLE := 3
- global ERROR_MODULE_NOT_FOUND := 4
- global ERROR_ENUM_PROCESS_MODULES := 5
- global ERROR_ZONE_NOT_FOUND := 6
- global ERROR_CITY_NOT_FOUND := 7
- global ERROR_READ_MEMORY := 8
- global ERROR_WRITE_MEMORY := 9
- global ERROR_ALLOC_MEMORY := 10
- global ERROR_FREE_MEMORY := 11
- global ERROR_WAIT_FOR_OBJECT := 12
- global ERROR_CREATE_THREAD := 13
- global ADDR_ZONECODE := 0xA49AD4
- global ADDR_POSITION_X := 0xB6F2E4
- global ADDR_POSITION_Y := 0xB6F2E8
- global ADDR_POSITION_Z := 0xB6F2EC
- global ADDR_CPED_PTR := 0xB6F5F0
- global ADDR_CPED_HPOFF := 0x540
- global ADDR_CPED_ARMOROFF := 0x548
- global ADDR_CPED_MONEY := 0x0B7CE54
- global ADDR_CPED_INTID := 0xA4ACE8
- global ADDR_CPED_SKINIDOFF := 0x22
- global ADDR_VEHICLE_PTR := 0xBA18FC
- global ADDR_VEHICLE_HPOFF := 0x4C0
- global ADDR_VEHICLE_DOORSTATE := 0x4F8
- global ADDR_VEHICLE_ENGINESTATE := 0x428
- global ADDR_VEHICLE_LIGHTSTATE := 0x584
- global ADDR_VEHICLE_MODEL := 0x22
- global ADDR_VEHICLE_TYPE := 0x590
- global ADDR_VEHICLE_DRIVER := 0x460
- global ADDR_VEHICLE_X := 0x44
- global ADDR_VEHICLE_Y := 0x48
- global ADDR_VEHICLE_Z := 0x4C
- global oAirplaneModels := [417, 425, 447, 460, 469, 476, 487, 488, 497, 511, 512, 513, 519, 520, 548, 553, 563, 577, 592, 593]
- global oBikeModels := [481,509,510]
- global ovehicleNames := ["Landstalker","Bravura","Buffalo","Linerunner","Perrenial","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus","Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Whoopee","BFInjection","Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie","Stallion","Rumpo","RCBandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley'sRCVan","Skimmer","PCJ-600","Faggio","Freeway","RCBaron","RCRaider","Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR-350","Walton","Regina","Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","NewsChopper","Rancher","FBIRancher","Virgo","Greenwood","Jetmax","Hotring","Sandking","BlistaCompact","PoliceMaverick","Boxvillde","Benson","Mesa","RCGoblin","HotringRacerA","HotringRacerB","BloodringBanger","Rancher","SuperGT","Elegant","Journey","Bike","MountainBike","Beagle","Cropduster","Stunt","Tanker","Roadtrain","Nebula","Majestic","Buccaneer","Shamal","hydra","FCR-900","NRG-500","HPV1000","CementTruck","TowTruck","Fortune","Cadrona","FBITruck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster","Monster","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RCTiger","Flash","Tahoma","Savanna","Bandito","FreightFlat","StreakCarriage","Kart","Mower","Dune","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","NewsVan","Tug","Trailer","Emperor","Wayfarer","Euros","Hotdog","Club","FreightBox","Trailer","Andromada","Dodo","RCCam","Launch","PoliceCar","PoliceCar","PoliceCar","PoliceRanger","Picador","S.W.A.T","Alpha","Phoenix","GlendaleShit","SadlerShit","Luggage","Luggage","Stairs","Boxville","Tiller","UtilityTrailer"]
- global oweaponNames := ["Fist","Brass Knuckles","Golf Club","Nightstick","Knife","Baseball Bat","Shovel","Pool Cue","Katana","Chainsaw","Purple " "Dil" "do" "","" "Dil" "do" "","Vibrator","Silver Vibrator","Flowers","Cane","Grenade","Tear Gas","Molotov Cocktail", "", "", "", "9mm","Silenced 9mm","Desert Eagle","Shotgun","Sawnoff Shotgun","Combat Shotgun","Micro SMG/" "U" "zi" "","MP5","AK-47","M4","Tec-9","Country Rifle","Sniper Rifle","RPG","HS Rocket","Flamethrower","Minigun","Satchel Charge","Detonator","Spraycan","Fire Extinguisher","Camera","Night Vis Goggles","Thermal Goggles","Parachute"]
- global oradiostationNames := ["Playback FM", "K Rose", "K-DST", "Bounce FM", "SF-UR", "Radio Los Santos", "Radio X", "CSR 103.9", "K-JAH West", "Master Sounds 98.3", "WCTR Talk Radio", "User Track Player", "Radio Off"]
- global oweatherNames := ["EXTRASUNNY_LA", "SUNNY_LA", "EXTRASUNNY_SMOG_LA", "SUNNY_SMOG_LA", "CLOUDY_LA", "SUNNY_SF", "EXTRASUNNY_SF", "CLOUDY_SF", "RAINY_SF", "FOGGY_SF", "SUNNY_VEGAS", "EXTRASUNNY_VEGAS", "CLOUDY_VEGAS", "EXTRASUNNY_COUNTRYSIDE", "SUNNY_COUNTRYSIDE", "CLOUDY_COUNTRYSIDE", "RAINY_COUNTRYSIDE", "EXTRASUNNY_DESERT", "SUNNY_DESERT", "SANDSTORM_DESERT", "UNDERWATER", "EXTRACOLOURS_1", "EXTRACOLOURS_2"]
- global ADDR_SAMP_INCHAT_PTR := 0x21a10c
- global ADDR_SAMP_INCHAT_PTR_OFF := 0x55
- global ADDR_SAMP_USERNAME := 0x219A6F
- global FUNC_SAMP_SENDCMD := 0x65c60
- global FUNC_SAMP_SENDSAY := 0x57f0
- global FUNC_SAMP_ADDTOCHATWND := 0x64520
- global ADDR_SAMP_CHATMSG_PTR := 0x21a0e4
- global FUNC_SAMP_SHOWGAMETEXT := 0x9c2c0
- global FUNC_SAMP_PLAYAUDIOSTR := 0x62da0
- global FUNC_SAMP_STOPAUDIOSTR := 0x629a0
- global DIALOG_STYLE_MSGBOX := 0
- global DIALOG_STYLE_INPUT := 1
- global DIALOG_STYLE_LIST := 2
- global DIALOG_STYLE_PASSWORD := 3
- global DIALOG_STYLE_TABLIST := 4
- global DIALOG_STYLE_TABLIST_HEADERS := 5
- global SAMP_DIALOG_STRUCT_PTR := 0x21A0B8
- global SAMP_DIALOG_PTR1_OFFSET := 0x1C
- global SAMP_DIALOG_LINES_OFFSET := 0x44C
- global SAMP_DIALOG_INDEX_OFFSET := 0x443
- global SAMP_DIALOG_BUTTON_HOVERING_OFFSET := 0x465
- global SAMP_DIALOG_BUTTON_CLICKED_OFFSET := 0x466
- global SAMP_DIALOG_PTR2_OFFSET := 0x20
- global SAMP_DIALOG_LINECOUNT_OFFSET := 0x150
- global SAMP_DIALOG_OPEN_OFFSET := 0x28
- global SAMP_DIALOG_STYLE_OFFSET := 0x2C
- global SAMP_DIALOG_ID_OFFSET := 0x30
- global SAMP_DIALOG_TEXT_PTR_OFFSET := 0x34
- global SAMP_DIALOG_CAPTION_OFFSET := 0x40
- global FUNC_SAMP_SHOWDIALOG := 0x6B9C0
- global FUNC_SAMP_CLOSEDIALOG := 0x6C040
- global FUNC_UPDATESCOREBOARD := 0x8A10
- global SAMP_INFO_OFFSET := 0x21A0F8
- global ADDR_SAMP_CRASHREPORT := 0x5CF2C
- global SAMP_PPOOLS_OFFSET := 0x3CD
- global SAMP_PPOOL_PLAYER_OFFSET := 0x18
- global SAMP_SLOCALPLAYERID_OFFSET := 0x4
- global SAMP_ISTRLEN_LOCALPLAYERNAME_OFFSET := 0x1A
- global SAMP_SZLOCALPLAYERNAME_OFFSET := 0xA
- global SAMP_PSZLOCALPLAYERNAME_OFFSET := 0xA
- global SAMP_PREMOTEPLAYER_OFFSET := 0x2E
- global SAMP_ISTRLENNAME___OFFSET := 0x1C
- global SAMP_SZPLAYERNAME_OFFSET := 0xC
- global SAMP_PSZPLAYERNAME_OFFSET := 0xC
- global SAMP_ILOCALPLAYERPING_OFFSET := 0x26
- global SAMP_ILOCALPLAYERSCORE_OFFSET := 0x2A
- global SAMP_IPING_OFFSET := 0x28
- global SAMP_ISCORE_OFFSET := 0x24
- global SAMP_ISNPC_OFFSET := 0x4
- global SAMP_PLAYER_MAX := 1004
- global CheckpointCheck := 0xC7DEEA
- global rmaddrs := [0xC7DEC8, 0xC7DECC, 0xC7DED0]
- global SIZE_SAMP_CHATMSG := 0xFC
- global hGTA := 0x0
- global dwGTAPID := 0x0
- global dwSAMP := 0x0
- global pMemory := 0x0
- global pParam1 := 0x0
- global pParam2 := 0x0
- global pParam3 := 0x0
- global pParam4 := 0x0
- global pParam5 := 0x0
- global pInjectFunc := 0x0
- global nZone := 1
- global nCity := 1
- global bInitZaC := 0
- global iRefreshScoreboard := 0
- global oScoreboardData := ""
- global iRefreshHandles := 0
- global iUpdateTick := 2500
- IsSAMPAvailable() {
- if(!checkHandles())
- return false
- dwChatInfo := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
- if(dwChatInfo == 0 || dwChatInfo == "ERROR")
- {
- return false
- }
- else
- {
- return true
- }
- }
- isInChat() {
- if(!checkHandles())
- return -1
- dwPtr := dwSAMP + ADDR_SAMP_INCHAT_PTR
- dwAddress := readDWORD(hGTA, dwPtr) + ADDR_SAMP_INCHAT_PTR_OFF
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwInChat := readDWORD(hGTA, dwAddress)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- if(dwInChat > 0) {
- return true
- } else {
- return false
- }
- }
- getUsername() {
- if(!checkHandles())
- return ""
- dwAddress := dwSAMP + ADDR_SAMP_USERNAME
- sUsername := readString(hGTA, dwAddress, 25)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- ErrorLevel := ERROR_OK
- return sUsername
- }
- getId() {
- s:=getUsername()
- return getPlayerIdByName(s)
- }
- SendChat(wText) {
- wText := "" wText
- if(!checkHandles())
- 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
- }
- addChatMessage(wText) {
- wText := "" wText
- if(!checkHandles())
- return false
- dwFunc := dwSAMP + FUNC_SAMP_ADDTOCHATWND
- dwChatInfo := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- callWithParams(hGTA, dwFunc, [["p", dwChatInfo], ["s", wText]], true)
- ErrorLevel := ERROR_OK
- return true
- }
- showGameText(wText, dwTime, dwSize) {
- wText := "" wText
- dwTime += 0
- dwTime := Floor(dwTime)
- dwSize += 0
- dwSize := Floor(dwSize)
- if(!checkHandles())
- return false
- dwFunc := dwSAMP + FUNC_SAMP_SHOWGAMETEXT
- callWithParams(hGTA, dwFunc, [["s", wText], ["i", dwTime], ["i", dwSize]], false)
- ErrorLevel := ERROR_OK
- return true
- }
- playAudioStream(wUrl) {
- wUrl := "" wUrl
- if(!checkHandles())
- return false
- dwFunc := dwSAMP + FUNC_SAMP_PLAYAUDIOSTR
- patchRadio()
- callWithParams(hGTA, dwFunc, [["s", wUrl], ["i", 0], ["i", 0], ["i", 0], ["i", 0], ["i", 0]], false)
- unPatchRadio()
- ErrorLevel := ERROR_OK
- return true
- }
- stopAudioStream() {
- if(!checkHandles())
- return false
- dwFunc := dwSAMP + FUNC_SAMP_STOPAUDIOSTR
- patchRadio()
- callWithParams(hGTA, dwFunc, [["i", 1]], false)
- unPatchRadio()
- ErrorLevel := ERROR_OK
- return true
- }
- patchRadio()
- {
- if(!checkHandles())
- return false
- VarSetCapacity(nop, 4, 0)
- NumPut(0x90909090,nop,0,"UInt")
- dwFunc := dwSAMP + FUNC_SAMP_PLAYAUDIOSTR
- writeRaw(hGTA, dwFunc, &nop, 4)
- writeRaw(hGTA, dwFunc+4, &nop, 1)
- dwFunc := dwSAMP + FUNC_SAMP_STOPAUDIOSTR
- writeRaw(hGTA, dwFunc, &nop, 4)
- writeRaw(hGTA, dwFunc+4, &nop, 1)
- return true
- }
- unPatchRadio()
- {
- if(!checkHandles())
- return false
- VarSetCapacity(old, 4, 0)
- dwFunc := dwSAMP + FUNC_SAMP_PLAYAUDIOSTR
- NumPut(0x74003980,old,0,"UInt")
- writeRaw(hGTA, dwFunc, &old, 4)
- NumPut(0x39,old,0,"UChar")
- writeRaw(hGTA, dwFunc+4, &old, 1)
- dwFunc := dwSAMP + FUNC_SAMP_STOPAUDIOSTR
- NumPut(0x74003980,old,0,"UInt")
- writeRaw(hGTA, dwFunc, &old, 4)
- NumPut(0x09,old,0,"UChar")
- writeRaw(hGTA, dwFunc+4, &old, 1)
- return true
- }
- blockChatInput() {
- if(!checkHandles())
- return false
- VarSetCapacity(nop, 2, 0)
- dwFunc := dwSAMP + FUNC_SAMP_SENDSAY
- NumPut(0x04C2,nop,0,"Short")
- writeRaw(hGTA, dwFunc, &nop, 2)
- dwFunc := dwSAMP + FUNC_SAMP_SENDCMD
- writeRaw(hGTA, dwFunc, &nop, 2)
- return true
- }
- unBlockChatInput() {
- if(!checkHandles())
- return false
- VarSetCapacity(nop, 2, 0)
- dwFunc := dwSAMP + FUNC_SAMP_SENDSAY
- NumPut(0xA164,nop,0,"Short")
- writeRaw(hGTA, dwFunc, &nop, 2)
- dwFunc := dwSAMP + FUNC_SAMP_SENDCMD
- writeRaw(hGTA, dwFunc, &nop, 2)
- return true
- }
- getServerName() {
- if(!checkHandles())
- return -1
- dwAdress := readMem(hGTA, dwSAMP + SAMP_INFO_OFFSET, 4, "int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- if(!dwAdress)
- return -1
- ServerName := readString(hGTA, dwAdress + 0x121, 200)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return ServerName
- }
- getServerIP() {
- if(!checkHandles())
- return -1
- dwAdress := readMem(hGTA, dwSAMP + SAMP_INFO_OFFSET, 4, "int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- if(!dwAdress)
- return -1
- ServerIP := readString(hGTA, dwAdress + 0x20, 100)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return ServerIP
- }
- getServerPort() {
- if(!checkHandles())
- return -1
- dwAdress := readMem(hGTA, dwSAMP + SAMP_INFO_OFFSET, 4, "int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- if(!dwAdress)
- return -1
- ServerPort := readMem(hGTA, dwAdress + 0x225, 4, "int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return ServerPort
- }
- getWeatherID() {
- if(!checkHandles())
- return -1
- dwGTA := getModuleBaseAddress("gta_sa.exe", hGTA)
- WeatherID := readMem(hGTA, dwGTA + 0xC81320, 2, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return WeatherID
- }
- getWeatherName() {
- if(isPlayerInAnyVehicle() == 0)
- return -1
- if(id >= 0 && id < 23)
- {
- return oweatherNames[id-1]
- }
- return ""
- }
- getTargetPed() {
- if(!checkHandles())
- return 0
- dwAddress := readDWORD(hGTA, 0xB6F3B8)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(!dwAddress)
- return 0
- dwAddress := readDWORD(hGTA, dwAddress+0x79C)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return dwAddress
- }
- calcScreenCoors(fX,fY,fZ)
- {
- if(!checkHandles())
- return false
- dwM := 0xB6FA2C
- m_11 := readFloat(hGTA, dwM + 0*4)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- 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)
- dwLenX := readDWORD(hGTA, 0xC17044)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- dwLenY := readDWORD(hGTA, 0xC17048)
- 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 * dwLenX
- frY *= fRecip * dwLenY
- if(frX<=dwLenX && frY<=dwLenY && frZ>1)
- return [frX,frY,frZ]
- }
- 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
- }
- getStreamedInPlayersInfo() {
- r:=[]
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- For i, o in oScoreboardData
- {
- if(o.HasKey("PED"))
- {
- p := getPedCoordinates(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 := getPedCoordinates(o.PED)
- if(p)
- {
- o.POS := p
- r[i] := o
- }
- }
- }
- return r
- }
- callFuncForAllStreamedInPlayers(cfunc,dist=0x7fffffff) {
- cfunc := "" cfunc
- dist += 0
- if(!IsFunc(cfunc))
- return false
- p := getStreamedInPlayersInfo()
- if(!p)
- return false
- if(dist<0x7fffffff)
- {
- lpos := getCoordinates()
- 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
- }
- 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]))
- }
- getClosestPlayerPed() {
- dist := 0x7fffffff
- p := getStreamedInPlayersInfo()
- if(!p)
- return -1
- lpos := getCoordinates()
- if(!lpos)
- return -1
- id := -1
- For i, o in p
- {
- t:=getDist(lpos,o.POS)
- if(t<dist)
- {
- dist := t
- id := i
- }
- }
- PED := getPedById(id)
- return PED
- }
- getClosestPlayerId() {
- dist := 0x7fffffff
- p := getStreamedInPlayersInfo()
- if(!p)
- return -1
- lpos := getCoordinates()
- 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
- }
- CountOnlinePlayers() {
- if(!checkHandles())
- return -1
- dwOnline := readDWORD(hGTA, dwSAMP + 0x21A0B4)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwAddr := dwOnline + 0x4
- OnlinePlayers := readDWORD(hGTA, dwAddr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return OnlinePlayers
- }
- getPedCoordinates(dwPED) {
- dwPED += 0
- dwPED := Floor(dwPED)
- if(!dwPED)
- return ""
- if(!checkHandles())
- 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]
- }
- getTargetPos(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 ""
- }
- getTargetPlayerSkinIdByPed(dwPED) {
- if(!checkHandles())
- return -1
- dwAddr := dwPED + ADDR_CPED_SKINIDOFF
- SkinID := readMem(hGTA, dwAddr, 2, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return SkinID
- }
- getTargetPlayerSkinIdById(dwId) {
- if(!checkHandles())
- return -1
- dwPED := getPedById(dwId)
- dwAddr := dwPED + ADDR_CPED_SKINIDOFF
- SkinID := readMem(hGTA, dwAddr, 2, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return SkinID
- }
- getVehiclePointerByPed(dwPED) {
- dwPED += 0
- dwPED := Floor(dwPED)
- if(!dwPED)
- return 0
- if(!checkHandles())
- return 0
- dwAddress := readDWORD(hGTA, dwPED + 0x58C)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return dwAddress
- }
- getVehiclePointerById(dwId) {
- if(!dwId)
- return 0
- if(!checkHandles())
- return 0
- dwPed_By_Id := getPedById(dwId)
- dwAddress := readDWORD(hGTA, dwPed_By_Id + 0x58C)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return dwAddress
- }
- isTargetInAnyVehicleByPed(dwPED)
- {
- if(!checkHandles())
- return -1
- dwVehiclePointer := getVehiclePointerByPed(dwPedPointer)
- if(dwVehiclePointer > 0)
- {
- return 1
- }
- else if(dwVehiclePointer <= 0)
- {
- return 0
- }
- else
- {
- return -1
- }
- }
- isTargetInAnyVehiclebyId(dwId)
- {
- if(!checkHandles())
- return -1
- dwPedPointer := getPedById(dwId)
- dwVehiclePointer := getVehiclePointerByPed(dwPedPointer)
- if(dwVehiclePointer > 0)
- {
- return 1
- }
- else if(dwVehiclePointer <= 0)
- {
- return 0
- }
- else
- {
- return -1
- }
- }
- getTargetVehicleHealthByPed(dwPed) {
- if(!checkHandles())
- return -1
- dwVehPtr := getVehiclePointerByPed(dwPed)
- dwAddr := dwVehPtr + ADDR_VEHICLE_HPOFF
- fHealth := readFloat(hGTA, dwAddr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Round(fHealth)
- }
- getTargetVehicleHealthById(dwId) {
- if(!checkHandles())
- return -1
- dwVehPtr := getVehiclePointerById(dwId)
- dwAddr := dwVehPtr + ADDR_VEHICLE_HPOFF
- fHealth := readFloat(hGTA, dwAddr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Round(fHealth)
- }
- getTargetVehicleTypeByPed(dwPED) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerByPed(dwPED)
- if(!dwAddr)
- return 0
- cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_TYPE, 1, "Char")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- if(!cVal)
- {
- mid := getVehicleModelId()
- Loop % oAirplaneModels.MaxIndex()
- {
- if(oAirplaneModels[A_Index]==mid)
- return 5
- }
- return 1
- }
- else if(cVal==5)
- return 2
- else if(cVal==6)
- return 3
- else if(cVal==9)
- {
- mid := getVehicleModelId()
- Loop % oBikeModels.MaxIndex()
- {
- if(oBikeModels[A_Index]==mid)
- return 6
- }
- return 4
- }
- return 0
- }
- getTargetVehicleTypeById(dwId) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerById(dwId)
- if(!dwAddr)
- return 0
- cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_TYPE, 1, "Char")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- if(!cVal)
- {
- mid := getVehicleModelId()
- Loop % oAirplaneModels.MaxIndex()
- {
- if(oAirplaneModels[A_Index]==mid)
- return 5
- }
- return 1
- }
- else if(cVal==5)
- return 2
- else if(cVal==6)
- return 3
- else if(cVal==9)
- {
- mid := getVehicleModelId()
- Loop % oBikeModels.MaxIndex()
- {
- if(oBikeModels[A_Index]==mid)
- return 6
- }
- return 4
- }
- return 0
- }
- getTargetVehicleModelIdByPed(dwPED) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerByPed(dwPED)
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_MODEL, 2, "Short")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getTargetVehicleModelIdById(dwId) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerById(dwId)
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_MODEL, 2, "Short")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getTargetVehicleModelNameByPed(dwPED) {
- id := getTargetVehicleModelIdByPed(dwPED)
- if(id > 400 && id < 611)
- {
- return ovehicleNames[id-399]
- }
- return ""
- }
- getTargetVehicleModelNameById(dwId) {
- id := getTargetVehicleModelIdById(dwId)
- if(id > 400 && id < 611)
- {
- return ovehicleNames[id-399]
- }
- return ""
- }
- getTargetVehicleLightStateByPed(dwPED) {
- if(!checkHandles())
- return -1
- dwAddr := getVehiclePointerByPed(dwPED)
- if(!dwAddr)
- return -1
- dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (dwVal>0)
- }
- getTargetVehicleLightStateById(dwId) {
- if(!checkHandles())
- return -1
- dwAddr := getVehiclePointerById(dwId)
- if(!dwAddr)
- return -1
- dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (dwVal>0)
- }
- getTargetVehicleLockStateByPed(dwPED) {
- if(!checkHandles())
- return -1
- dwAddr := getVehiclePointerByPed(dwPED)
- if(!dwAddr)
- return -1
- dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DOORSTATE)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (dwVal==2)
- }
- getTargetVehicleLockStateById(dwId) {
- if(!checkHandles())
- return -1
- dwAddr := getVehiclePointerById(dwId)
- if(!dwAddr)
- return -1
- dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DOORSTATE)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (dwVal==2)
- }
- getTargetVehicleColor1byPed(dwPED) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerByPed(dwPED)
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + 1076, 1, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getTargetVehicleColor1byId(dwId) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerById(dwId)
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + 1076, 1, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getTargetVehicleColor2byPed(dwPED) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerByPed(dwPED)
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + 1077, 1, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getTargetVehicleColor2byId(dwId) {
- if(!checkHandles())
- return 0
- dwAddr := getVehiclePointerById(dwId)
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + 1077, 1, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getTargetVehicleSpeedByPed(dwPED) {
- if(!checkHandles())
- return -1
- dwAddr := getVehiclePointerByPed(dwPED)
- fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float")
- fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float")
- fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float")
- fVehicleSpeed := sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))
- fVehicleSpeed := (fVehicleSpeed * 100) * 1.43
- return fVehicleSpeed
- }
- getTargetVehicleSpeedById(dwId) {
- if(!checkHandles())
- return -1
- dwAddr := getVehiclePointerById(dwId)
- fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float")
- fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float")
- fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float")
- fVehicleSpeed := sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))
- fVehicleSpeed := (fVehicleSpeed * 100) * 1.43
- return fVehicleSpeed
- }
- 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 ""
- }
- getPlayerIdByName(wName, exact := false) {
- wName := "" wName
- if(StrLen(wName) < 1 || StrLen(wName) > 24)
- return -1
- if(iRefreshScoreboard+iUpdateTick > A_TickCount)
- {
- For i, o in oScoreboardData
- {
- if (o.NAME = wName)
- return i
- }
- For i, o in oScoreboardData
- {
- if (!exact && InStr(o.NAME,wName)==1)
- return i
- else if (exact && o.NAME = wName)
- return i
- }
- return -1
- }
- if(!updateOScoreboardData())
- return -2
- For i, o in oScoreboardData
- {
- if (o.NAME = wName)
- return i
- }
- For i, o in oScoreboardData
- {
- if (!exact && InStr(o.NAME,wName)==1)
- return i
- else if (exact && o.NAME = wName)
- 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
- }
- updateScoreboardDataEx() {
- if(!checkHandles())
- return false
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- dwFunc := dwSAMP + FUNC_UPDATESCOREBOARD
- VarSetCapacity(injectData, 11, 0)
- 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)
- if(ErrorLevel)
- return false
- hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
- if(ErrorLevel)
- return false
- waitForSingleObject(hThread, 0xFFFFFFFF)
- closeProcess(hThread)
- return true
- }
- updateOScoreboardData() {
- if(!checkHandles())
- return 0
- oScoreboardData := []
- if(!updateScoreboardDataEx())
- return 0
- iRefreshScoreboard := A_TickCount
- 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
- }
- wID := readMem(hGTA, dwPlayers + SAMP_SLOCALPLAYERID_OFFSET, 2, "Short")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwPing := readMem(hGTA, dwPlayers + SAMP_ILOCALPLAYERPING_OFFSET, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwScore := readMem(hGTA, dwPlayers + SAMP_ILOCALPLAYERSCORE_OFFSET, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwTemp := readMem(hGTA, dwPlayers + SAMP_ISTRLEN_LOCALPLAYERNAME_OFFSET, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- sUsername := ""
- if(dwTemp <= 0xf) {
- sUsername := readString(hGTA, dwPlayers + SAMP_SZLOCALPLAYERNAME_OFFSET, 16)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- }
- else {
- dwAddress := readDWORD(hGTA, dwPlayers + SAMP_PSZLOCALPLAYERNAME_OFFSET)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- sUsername := readString(hGTA, dwAddress, 25)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- }
- 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)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(dwRemoteplayer==0)
- continue
- 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
- }
- 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)
- 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)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- }
- o := Object("NAME", sUsername, "ID", i, "PING", dwPing, "SCORE", dwScore, "ISNPC", dwIsNPC)
- oScoreboardData[i] := o
- dwRemoteplayerData := readDWORD(hGTA, dwRemoteplayer + 0x0)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(dwRemoteplayerData==0)
- continue
- dwAddress := readDWORD(hGTA, dwRemoteplayerData + 489)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(dwAddress)
- {
- ix := readMem(hGTA, dwRemoteplayerData + 493, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- iy := readMem(hGTA, dwRemoteplayerData + 497, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- iz := readMem(hGTA, dwRemoteplayerData + 501, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- o.MPOS := [ix, iy, iz]
- }
- dwpSAMP_Actor := readDWORD(hGTA, dwRemoteplayerData + 0x0)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(dwpSAMP_Actor==0)
- continue
- dwPed := readDWORD(hGTA, dwpSAMP_Actor + 676)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(dwPed==0)
- continue
- o.PED := dwPed
- fHP := readFloat(hGTA, dwRemoteplayerData + 444)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- fARMOR := readFloat(hGTA, dwRemoteplayerData + 440)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- o.HP := fHP
- o.ARMOR := fARMOR
- }
- ErrorLevel := ERROR_OK
- return 1
- }
- GetChatLine(Line, ByRef Output, timestamp=0, color=0){
- chatindex := 0
- FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
- loop, Parse, file, `n, `r
- {
- if(A_LoopField)
- chatindex := A_Index
- }
- loop, Parse, file, `n, `r
- {
- if(A_Index = chatindex - line){
- output := A_LoopField
- break
- }
- }
- file := ""
- if(!timestamp)
- output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]")
- if(!color)
- output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}")
- return
- }
- getPlayerHealth() {
- if(!checkHandles())
- return -1
- dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwAddr := dwCPedPtr + ADDR_CPED_HPOFF
- fHealth := readFloat(hGTA, dwAddr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Round(fHealth)
- }
- getPlayerArmor() {
- if(!checkHandles())
- return -1
- dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwAddr := dwCPedPtr + ADDR_CPED_ARMOROFF
- fHealth := readFloat(hGTA, dwAddr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Round(fHealth)
- }
- getPlayerInteriorId() {
- if(!checkHandles())
- return -1
- iid := readMem(hGTA, ADDR_CPED_INTID, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return iid
- }
- getPlayerSkinID() {
- if(!checkHandles())
- return -1
- dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwAddr := dwCPedPtr + ADDR_CPED_SKINIDOFF
- SkinID := readMem(hGTA, dwAddr, 2, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return SkinID
- }
- getPlayerMoney() {
- if(!checkHandles())
- return ""
- money := readMem(hGTA, ADDR_CPED_MONEY, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- ErrorLevel := ERROR_OK
- return money
- }
- getPlayerWanteds() {
- if(!checkHandles())
- return -1
- dwPtr := 0xB7CD9C
- dwPtr := readDWORD(hGTA, dwPtr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- Wanteds := readDWORD(hGTA, dwPtr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Wanteds
- }
- getPlayerWeaponId() {
- if(!checkHandles())
- return 0
- WaffenId := readMem(hGTA, 0xBAA410, 4, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- return WaffenId
- }
- getPlayerWeaponName() {
- id := getPlayerWeaponId()
- if(id >= 0 && id < 44)
- {
- return oweaponNames[id+1]
- }
- return ""
- }
- getPlayerState() {
- if(!checkHandles())
- return -1
- dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- State := readDWORD(hGTA, dwCPedPtr + 0x530)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return State
- }
- IsPlayerInMenu() {
- if(!checkHandles())
- return -1
- IsInMenu := readMem(hGTA, 0xBA67A4, 4, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return IsInMenu
- }
- getPlayerMapPosX() {
- if(!checkHandles())
- return -1
- MapPosX := readFloat(hGTA, 0xBA67B8)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return MapPosX
- }
- getPlayerMapPosY() {
- if(!checkHandles())
- return -1
- MapPosY := readFloat(hGTA, 0xBA67BC)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return MapPosY
- }
- getPlayerMapZoom() {
- if(!checkHandles())
- return -1
- MapZoom := readFloat(hGTA, 0xBA67AC)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return MapZoom
- }
- IsPlayerFreezed() {
- if(!checkHandles())
- return -1
- dwGTA := getModuleBaseAddress("gta_sa.exe", hGTA)
- IPF := readMem(hGTA, dwGTA + 0x690495, 2, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return IPF
- }
- isPlayerInAnyVehicle()
- {
- if(!checkHandles())
- return -1
- dwVehPtr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- return (dwVehPtr > 0)
- }
- isPlayerDriver() {
- if(!checkHandles())
- return -1
- dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- if(!dwAddr)
- return -1
- dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DRIVER)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (dwVal==dwCPedPtr)
- }
- getVehicleHealth() {
- if(!checkHandles())
- return -1
- dwVehPtr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwAddr := dwVehPtr + ADDR_VEHICLE_HPOFF
- fHealth := readFloat(hGTA, dwAddr)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Round(fHealth)
- }
- getVehicleType() {
- if(!checkHandles())
- return 0
- dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(!dwAddr)
- return 0
- cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_TYPE, 1, "Char")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- if(!cVal)
- {
- mid := getVehicleModelId()
- Loop % oAirplaneModels.MaxIndex()
- {
- if(oAirplaneModels[A_Index]==mid)
- return 5
- }
- return 1
- }
- else if(cVal==5)
- return 2
- else if(cVal==6)
- return 3
- else if(cVal==9)
- {
- mid := getVehicleModelId()
- Loop % oBikeModels.MaxIndex()
- {
- if(oBikeModels[A_Index]==mid)
- return 6
- }
- return 4
- }
- return 0
- }
- getVehicleModelId() {
- if(!checkHandles())
- return 0
- dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_MODEL, 2, "Short")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getVehicleModelName() {
- id:=getVehicleModelId()
- if(id > 400 && id < 611)
- {
- return ovehicleNames[id-399]
- }
- return ""
- }
- getVehicleLightState() {
- if(!checkHandles())
- return -1
- dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- if(!dwAddr)
- return -1
- dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 4, "Int")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (dwVal>0)
- }
- getVehicleEngineState() {
- if(!checkHandles())
- return -1
- dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- if(!dwAddr)
- return -1
- cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_ENGINESTATE, 1, "Char")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (cVal==24 || cVal==56 || cVal==88 || cVal==120)
- }
- getVehicleLockState() {
- if(!checkHandles())
- return -1
- dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- if(!dwAddr)
- return -1
- dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DOORSTATE)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return (dwVal==2)
- }
- getVehicleColor1() {
- if(!checkHandles())
- return 0
- dwAddr := readDWORD(hGTA, 0xBA18FC)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + 1076, 1, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getVehicleColor2() {
- if(!checkHandles())
- return 0
- dwAddr := readDWORD(hGTA, 0xBA18FC)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if(!dwAddr)
- return 0
- sVal := readMem(hGTA, dwAddr + 1077, 1, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return sVal
- }
- getVehicleSpeed() {
- if(!checkHandles())
- return -1
- dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float")
- fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float")
- fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float")
- fVehicleSpeed := sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))
- fVehicleSpeed := (fVehicleSpeed * 100) * 1.43
- return fVehicleSpeed
- }
- getPlayerRadiostationID() {
- if(!checkHandles())
- return -1
- if(isPlayerInAnyVehicle() == 0)
- return -1
- dwGTA := getModuleBaseAddress("gta_sa.exe", hGTA)
- RadioStationID := readMem(hGTA, dwGTA + 0x4CB7E1, 1, "byte")
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- return RadioStationID
- }
- getPlayerRadiostationName() {
- if(isPlayerInAnyVehicle() == 0)
- return -1
- id := getPlayerRadiostationID()
- if(id == 0)
- return -1
- if(id >= 0 && id < 14)
- {
- return oradiostationNames[id]
- }
- return ""
- }
- setCheckpoint(fX, fY, fZ, fSize := 7) {
- if(!checkHandles())
- return false
- dwFunc := dwSAMP + 0x9D340
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- 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)
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- writeMemory(hGTA, dwAddress + 0xC, fX, 4, "Float")
- writeMemory(hGTA, dwAddress + 0x10, fY, 4, "Float")
- writeMemory(hGTA, dwAddress + 0x14, fZ, 4, "Float")
- writeMemory(hGTA, dwAddress + 0x18, fSize, 4, "Float")
- ErrorLevel := ERROR_OK
- return true
- }
- disableCheckpoint()
- {
- if(!checkHandles())
- return false
- dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
- if(ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- VarSetCapacity(enablecp, 4, 0)
- NumPut(0,enablecp,0,"Int")
- writeRaw(hGTA, dwAddress+0x24, &enablecp, 4)
- ErrorLevel := ERROR_OK
- return true
- }
- IsMarkerCreated(){
- If(!checkHandles())
- return false
- active := readMem(hGTA, CheckpointCheck, 1, "byte")
- If(!active)
- return 0
- else return 1
- }
- CoordsFromRedmarker(){
- if(!checkhandles())
- return false
- for i, v in rmaddrs
- f%i% := readFloat(hGTA, v)
- return [f1, f2, f3]
- }
- getCoordinates() {
- if(!checkHandles())
- return ""
- 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]
- }
- GetPlayerPos(ByRef fX,ByRef fY,ByRef fZ) {
- if(!checkHandles())
- return 0
- fX := readFloat(hGTA, ADDR_POSITION_X)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- fY := readFloat(hGTA, ADDR_POSITION_Y)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- fZ := readFloat(hGTA, ADDR_POSITION_Z)
- if(ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- }
- getDialogStructPtr() {
- if (!checkHandles()) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return false
- }
- dwPointer := readDWORD(hGTA, dwSAMP + SAMP_DIALOG_STRUCT_PTR)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return dwPointer
- }
- isDialogOpen() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return false
- dwIsOpen := readMem(hGTA, dwPointer + SAMP_DIALOG_OPEN_OFFSET, 4, "UInt")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return dwIsOpen ? true : false
- }
- getDialogStyle() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return -1
- style := readMem(hGTA, dwPointer + SAMP_DIALOG_STYLE_OFFSET, 4, "UInt")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return style
- }
- getDialogID() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return -1
- id := readMem(hGTA, dwPointer + SAMP_DIALOG_ID_OFFSET, 4, "UInt")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return id
- }
- setDialogID(id) {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return false
- writeMemory(hGTA, dwPointer + SAMP_DIALOG_ID_OFFSET, id, "UInt", 4)
- if (ErrorLevel) {
- ErrorLevel := ERROR_WRITE_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return true
- }
- getDialogIndex() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return 0
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- index := readMem(hGTA, dwPointer + SAMP_DIALOG_INDEX_OFFSET, 1, "Byte")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return index + 1
- }
- getDialogCaption() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return ""
- text := readString(hGTA, dwPointer + SAMP_DIALOG_CAPTION_OFFSET, 64)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- ErrorLevel := ERROR_OK
- return text
- }
- getDialogTextSize(dwAddress) {
- i := 0
- Loop, 4096 {
- i := A_Index - 1
- byte := Memory_ReadByte(hGTA, dwAddress + i)
- if (!byte)
- break
- }
- return i
- }
- getDialogText() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return ""
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_TEXT_PTR_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- text := readString(hGTA, dwPointer, 4096)
- if (ErrorLevel) {
- text := readString(hGTA, dwPointer, getDialogTextSize(dwPointer))
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- }
- ErrorLevel := ERROR_OK
- return text
- }
- getDialogLineCount() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return 0
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR2_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- count := readMem(hGTA, dwPointer + SAMP_DIALOG_LINECOUNT_OFFSET, 4, "UInt")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return count
- }
- getDialogLine__(index) {
- if (getDialogLineCount > index)
- return ""
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return ""
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_LINES_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- dwLineAddress := readDWORD(hGTA, dwPointer + (index - 1) * 0x4)
- line := readString(hGTA, dwLineAddress, 128)
- ErrorLevel := ERROR_OK
- return line
- }
- getDialogLine(index) {
- lines := getDialogLines()
- if (index > lines.Length())
- return ""
- if (getDialogStyle() == DIALOG_STYLE_TABLIST_HEADERS)
- index++
- return lines[index]
- }
- getDialogLines() {
- text := getDialogText()
- if (text == "")
- return -1
- lines := StrSplit(text, "`n")
- return lines
- }
- isDialogButton1Selected() {
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return false
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- selected := readMem(hGTA, dwPointer + SAMP_DIALOG_BUTTON_HOVERING_OFFSET, 1, "Byte")
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return selected
- }
- getDialogLines__() {
- count := getDialogLineCount()
- dwPointer := getDialogStructPtr()
- if (ErrorLevel || !dwPointer)
- return -1
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_LINES_OFFSET)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- lines := []
- Loop %count% {
- dwLineAddress := readDWORD(hGTA, dwPointer + (A_Index - 1) * 0x4)
- lines[A_Index] := readString(hGTA, dwLineAddress, 128)
- }
- ErrorLevel := ERROR_OK
- return lines
- }
- 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) > 128 || StrLen(text) > 4096 || StrLen(button1) > 10 || StrLen(button2) > 10)
- return false
- if (!checkHandles())
- return false
- dwFunc := dwSAMP + FUNC_SAMP_SHOWDIALOG
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_DIALOG_STRUCT_PTR)
- if (ErrorLevel || !dwAddress) {
- ErrorLevel := ERROR_READ_MEMORY
- return false
- }
- writeString(hGTA, pParam5, caption)
- if (ErrorLevel)
- return false
- writeString(hGTA, pParam1, text)
- if (ErrorLevel)
- return false
- writeString(hGTA, pParam5 + 512, button1)
- if (ErrorLevel)
- return false
- writeString(hGTA, pParam5+StrLen(caption) + 1, button2)
- 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(1, injectData, 6, "UInt")
- NumPut(0x68, injectData, 10, "UChar")
- NumPut(pParam5 + StrLen(caption) + 1, injectData, 11, "UInt")
- NumPut(0x68, injectData, 15, "UChar")
- NumPut(pParam5 + 512, injectData, 16, "UInt")
- NumPut(0x68, injectData, 20, "UChar")
- NumPut(pParam1, injectData, 21, "UInt")
- NumPut(0x68, injectData, 25, "UChar")
- NumPut(pParam5, injectData, 26, "UInt")
- NumPut(0x68, injectData, 30, "UChar")
- NumPut(style, injectData, 31, "UInt")
- NumPut(0x68, injectData, 35, "UChar")
- NumPut(id, 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
- }
- initZonesAndCities() {
- AddCity("Las Venturas", 685.0, 476.093, -500.0, 3000.0, 3000.0, 500.0)
- AddCity("San Fierro", -3000.0, -742.306, -500.0, -1270.53, 1530.24, 500.0)
- AddCity("San Fierro", -1270.53, -402.481, -500.0, -1038.45, 832.495, 500.0)
- AddCity("San Fierro", -1038.45, -145.539, -500.0, -897.546, 376.632, 500.0)
- AddCity("Los Santos", 480.0, -3000.0, -500.0, 3000.0, -850.0, 500.0)
- AddCity("Los Santos", 80.0, -2101.61, -500.0, 1075.0, -1239.61, 500.0)
- AddCity("Tierra Robada", -1213.91, 596.349, -242.99, -480.539, 1659.68, 900.0)
- AddCity("Red County", -1213.91, -768.027, -242.99, 2997.06, 596.349, 900.0)
- AddCity("Flint County", -1213.91, -2892.97, -242.99, 44.6147, -768.027, 900.0)
- AddCity("Whetstone", -2997.47, -2892.97, -242.99, -1213.91, -1115.58, 900.0)
- AddZone("Avispa Country Club", -2667.810, -302.135, -28.831, -2646.400, -262.320, 71.169)
- AddZone("Easter Bay Airport", -1315.420, -405.388, 15.406, -1264.400, -209.543, 25.406)
- AddZone("Avispa Country Club", -2550.040, -355.493, 0.000, -2470.040, -318.493, 39.700)
- AddZone("Easter Bay Airport", -1490.330, -209.543, 15.406, -1264.400, -148.388, 25.406)
- AddZone("Garcia", -2395.140, -222.589, -5.3, -2354.090, -204.792, 200.000)
- AddZone("Shady Cabin", -1632.830, -2263.440, -3.0, -1601.330, -2231.790, 200.000)
- AddZone("East Los Santos", 2381.680, -1494.030, -89.084, 2421.030, -1454.350, 110.916)
- AddZone("LVA Freight Depot", 1236.630, 1163.410, -89.084, 1277.050, 1203.280, 110.916)
- AddZone("Blackfield Intersection", 1277.050, 1044.690, -89.084, 1315.350, 1087.630, 110.916)
- AddZone("Avispa Country Club", -2470.040, -355.493, 0.000, -2270.040, -318.493, 46.100)
- AddZone("Temple", 1252.330, -926.999, -89.084, 1357.000, -910.170, 110.916)
- AddZone("Unity Station", 1692.620, -1971.800, -20.492, 1812.620, -1932.800, 79.508)
- AddZone("LVA Freight Depot", 1315.350, 1044.690, -89.084, 1375.600, 1087.630, 110.916)
- AddZone("Los Flores", 2581.730, -1454.350, -89.084, 2632.830, -1393.420, 110.916)
- AddZone("Starfish Casino", 2437.390, 1858.100, -39.084, 2495.090, 1970.850, 60.916)
- AddZone("Easter Bay Chemicals", -1132.820, -787.391, 0.000, -956.476, -768.027, 200.000)
- AddZone("Downtown Los Santos", 1370.850, -1170.870, -89.084, 1463.900, -1130.850, 110.916)
- AddZone("Esplanade East", -1620.300, 1176.520, -4.5, -1580.010, 1274.260, 200.000)
- AddZone("Market Station", 787.461, -1410.930, -34.126, 866.009, -1310.210, 65.874)
- AddZone("Linden Station", 2811.250, 1229.590, -39.594, 2861.250, 1407.590, 60.406)
- AddZone("Montgomery Intersection", 1582.440, 347.457, 0.000, 1664.620, 401.750, 200.000)
- AddZone("Frederick Bridge", 2759.250, 296.501, 0.000, 2774.250, 594.757, 200.000)
- AddZone("Yellow Bell Station", 1377.480, 2600.430, -21.926, 1492.450, 2687.360, 78.074)
- AddZone("Downtown Los Santos", 1507.510, -1385.210, 110.916, 1582.550, -1325.310, 335.916)
- AddZone("Jefferson", 2185.330, -1210.740, -89.084, 2281.450, -1154.590, 110.916)
- AddZone("Mulholland", 1318.130, -910.170, -89.084, 1357.000, -768.027, 110.916)
- AddZone("Avispa Country Club", -2361.510, -417.199, 0.000, -2270.040, -355.493, 200.000)
- AddZone("Jefferson", 1996.910, -1449.670, -89.084, 2056.860, -1350.720, 110.916)
- AddZone("Julius Thruway West", 1236.630, 2142.860, -89.084, 1297.470, 2243.230, 110.916)
- AddZone("Jefferson", 2124.660, -1494.030, -89.084, 2266.210, -1449.670, 110.916)
- AddZone("Julius Thruway North", 1848.400, 2478.490, -89.084, 1938.800, 2553.490, 110.916)
- AddZone("Rodeo", 422.680, -1570.200, -89.084, 466.223, -1406.050, 110.916)
- AddZone("Cranberry Station", -2007.830, 56.306, 0.000, -1922.000, 224.782, 100.000)
- AddZone("Downtown Los Santos", 1391.050, -1026.330, -89.084, 1463.900, -926.999, 110.916)
- AddZone("Redsands West", 1704.590, 2243.230, -89.084, 1777.390, 2342.830, 110.916)
- AddZone("Little Mexico", 1758.900, -1722.260, -89.084, 1812.620, -1577.590, 110.916)
- AddZone("Blackfield Intersection", 1375.600, 823.228, -89.084, 1457.390, 919.447, 110.916)
- AddZone("Los Santos International", 1974.630, -2394.330, -39.084, 2089.000, -2256.590, 60.916)
- AddZone("Beacon Hill", -399.633, -1075.520, -1.489, -319.033, -977.516, 198.511)
- AddZone("Rodeo", 334.503, -1501.950, -89.084, 422.680, -1406.050, 110.916)
- AddZone("Richman", 225.165, -1369.620, -89.084, 334.503, -1292.070, 110.916)
- AddZone("Downtown Los Santos", 1724.760, -1250.900, -89.084, 1812.620, -1150.870, 110.916)
- AddZone("The Strip", 2027.400, 1703.230, -89.084, 2137.400, 1783.230, 110.916)
- AddZone("Downtown Los Santos", 1378.330, -1130.850, -89.084, 1463.900, -1026.330, 110.916)
- AddZone("Blackfield Intersection", 1197.390, 1044.690, -89.084, 1277.050, 1163.390, 110.916)
- AddZone("Conference Center", 1073.220, -1842.270, -89.084, 1323.900, -1804.210, 110.916)
- AddZone("Montgomery", 1451.400, 347.457, -6.1, 1582.440, 420.802, 200.000)
- AddZone("Foster Valley", -2270.040, -430.276, -1.2, -2178.690, -324.114, 200.000)
- AddZone("Blackfield Chapel", 1325.600, 596.349, -89.084, 1375.600, 795.010, 110.916)
- AddZone("Los Santos International", 2051.630, -2597.260, -39.084, 2152.450, -2394.330, 60.916)
- AddZone("Mulholland", 1096.470, -910.170, -89.084, 1169.130, -768.027, 110.916)
- AddZone("Yellow Bell Gol Course", 1457.460, 2723.230, -89.084, 1534.560, 2863.230, 110.916)
- AddZone("The Strip", 2027.400, 1783.230, -89.084, 2162.390, 1863.230, 110.916)
- AddZone("Jefferson", 2056.860, -1210.740, -89.084, 2185.330, -1126.320, 110.916)
- AddZone("Mulholland", 952.604, -937.184, -89.084, 1096.470, -860.619, 110.916)
- AddZone("Aldea Malvada", -1372.140, 2498.520, 0.000, -1277.590, 2615.350, 200.000)
- AddZone("Las Colinas", 2126.860, -1126.320, -89.084, 2185.330, -934.489, 110.916)
- AddZone("Las Colinas", 1994.330, -1100.820, -89.084, 2056.860, -920.815, 110.916)
- AddZone("Richman", 647.557, -954.662, -89.084, 768.694, -860.619, 110.916)
- AddZone("LVA Freight Depot", 1277.050, 1087.630, -89.084, 1375.600, 1203.280, 110.916)
- AddZone("Julius Thruway North", 1377.390, 2433.230, -89.084, 1534.560, 2507.230, 110.916)
- AddZone("Willowfield", 2201.820, -2095.000, -89.084, 2324.000, -1989.900, 110.916)
- AddZone("Julius Thruway North", 1704.590, 2342.830, -89.084, 1848.400, 2433.230, 110.916)
- AddZone("Temple", 1252.330, -1130.850, -89.084, 1378.330, -1026.330, 110.916)
- AddZone("Little Mexico", 1701.900, -1842.270, -89.084, 1812.620, -1722.260, 110.916)
- AddZone("Queens", -2411.220, 373.539, 0.000, -2253.540, 458.411, 200.000)
- AddZone("Las Venturas Airport", 1515.810, 1586.400, -12.500, 1729.950, 1714.560, 87.500)
- AddZone("Richman", 225.165, -1292.070, -89.084, 466.223, -1235.070, 110.916)
- AddZone("Temple", 1252.330, -1026.330, -89.084, 1391.050, -926.999, 110.916)
- AddZone("East Los Santos", 2266.260, -1494.030, -89.084, 2381.680, -1372.040, 110.916)
- AddZone("Julius Thruway East", 2623.180, 943.235, -89.084, 2749.900, 1055.960, 110.916)
- AddZone("Willowfield", 2541.700, -1941.400, -89.084, 2703.580, -1852.870, 110.916)
- AddZone("Las Colinas", 2056.860, -1126.320, -89.084, 2126.860, -920.815, 110.916)
- AddZone("Julius Thruway East", 2625.160, 2202.760, -89.084, 2685.160, 2442.550, 110.916)
- AddZone("Rodeo", 225.165, -1501.950, -89.084, 334.503, -1369.620, 110.916)
- AddZone("Las Brujas", -365.167, 2123.010, -3.0, -208.570, 2217.680, 200.000)
- AddZone("Julius Thruway East", 2536.430, 2442.550, -89.084, 2685.160, 2542.550, 110.916)
- AddZone("Rodeo", 334.503, -1406.050, -89.084, 466.223, -1292.070, 110.916)
- AddZone("Vinewood", 647.557, -1227.280, -89.084, 787.461, -1118.280, 110.916)
- AddZone("Rodeo", 422.680, -1684.650, -89.084, 558.099, -1570.200, 110.916)
- AddZone("Julius Thruway North", 2498.210, 2542.550, -89.084, 2685.160, 2626.550, 110.916)
- AddZone("Downtown Los Santos", 1724.760, -1430.870, -89.084, 1812.620, -1250.900, 110.916)
- AddZone("Rodeo", 225.165, -1684.650, -89.084, 312.803, -1501.950, 110.916)
- AddZone("Jefferson", 2056.860, -1449.670, -89.084, 2266.210, -1372.040, 110.916)
- AddZone("Hampton Barns", 603.035, 264.312, 0.000, 761.994, 366.572, 200.000)
- AddZone("Temple", 1096.470, -1130.840, -89.084, 1252.330, -1026.330, 110.916)
- AddZone("Kincaid Bridge", -1087.930, 855.370, -89.084, -961.950, 986.281, 110.916)
- AddZone("Verona Beach", 1046.150, -1722.260, -89.084, 1161.520, -1577.590, 110.916)
- AddZone("Commerce", 1323.900, -1722.260, -89.084, 1440.900, -1577.590, 110.916)
- AddZone("Mulholland", 1357.000, -926.999, -89.084, 1463.900, -768.027, 110.916)
- AddZone("Rodeo", 466.223, -1570.200, -89.084, 558.099, -1385.070, 110.916)
- AddZone("Mulholland", 911.802, -860.619, -89.084, 1096.470, -768.027, 110.916)
- AddZone("Mulholland", 768.694, -954.662, -89.084, 952.604, -860.619, 110.916)
- AddZone("Julius Thruway South", 2377.390, 788.894, -89.084, 2537.390, 897.901, 110.916)
- AddZone("Idlewood", 1812.620, -1852.870, -89.084, 1971.660, -1742.310, 110.916)
- AddZone("Ocean Docks", 2089.000, -2394.330, -89.084, 2201.820, -2235.840, 110.916)
- AddZone("Commerce", 1370.850, -1577.590, -89.084, 1463.900, -1384.950, 110.916)
- AddZone("Julius Thruway North", 2121.400, 2508.230, -89.084, 2237.400, 2663.170, 110.916)
- AddZone("Temple", 1096.470, -1026.330, -89.084, 1252.330, -910.170, 110.916)
- AddZone("Glen Park", 1812.620, -1449.670, -89.084, 1996.910, -1350.720, 110.916)
- AddZone("Easter Bay Airport", -1242.980, -50.096, 0.000, -1213.910, 578.396, 200.000)
- AddZone("Martin Bridge", -222.179, 293.324, 0.000, -122.126, 476.465, 200.000)
- AddZone("The Strip", 2106.700, 1863.230, -89.084, 2162.390, 2202.760, 110.916)
- AddZone("Willowfield", 2541.700, -2059.230, -89.084, 2703.580, -1941.400, 110.916)
- AddZone("Marina", 807.922, -1577.590, -89.084, 926.922, -1416.250, 110.916)
- AddZone("Las Venturas Airport", 1457.370, 1143.210, -89.084, 1777.400, 1203.280, 110.916)
- AddZone("Idlewood", 1812.620, -1742.310, -89.084, 1951.660, -1602.310, 110.916)
- AddZone("Esplanade East", -1580.010, 1025.980, -6.1, -1499.890, 1274.260, 200.000)
- AddZone("Downtown Los Santos", 1370.850, -1384.950, -89.084, 1463.900, -1170.870, 110.916)
- AddZone("The Mako Span", 1664.620, 401.750, 0.000, 1785.140, 567.203, 200.000)
- AddZone("Rodeo", 312.803, -1684.650, -89.084, 422.680, -1501.950, 110.916)
- AddZone("Pershing Square", 1440.900, -1722.260, -89.084, 1583.500, -1577.590, 110.916)
- AddZone("Mulholland", 687.802, -860.619, -89.084, 911.802, -768.027, 110.916)
- AddZone("Gant Bridge", -2741.070, 1490.470, -6.1, -2616.400, 1659.680, 200.000)
- AddZone("Las Colinas", 2185.330, -1154.590, -89.084, 2281.450, -934.489, 110.916)
- AddZone("Mulholland", 1169.130, -910.170, -89.084, 1318.130, -768.027, 110.916)
- AddZone("Julius Thruway North", 1938.800, 2508.230, -89.084, 2121.400, 2624.230, 110.916)
- AddZone("Commerce", 1667.960, -1577.590, -89.084, 1812.620, -1430.870, 110.916)
- AddZone("Rodeo", 72.648, -1544.170, -89.084, 225.165, -1404.970, 110.916)
- AddZone("Roca Escalante", 2536.430, 2202.760, -89.084, 2625.160, 2442.550, 110.916)
- AddZone("Rodeo", 72.648, -1684.650, -89.084, 225.165, -1544.170, 110.916)
- AddZone("Market", 952.663, -1310.210, -89.084, 1072.660, -1130.850, 110.916)
- AddZone("Las Colinas", 2632.740, -1135.040, -89.084, 2747.740, -945.035, 110.916)
- AddZone("Mulholland", 861.085, -674.885, -89.084, 1156.550, -600.896, 110.916)
- AddZone("King's", -2253.540, 373.539, -9.1, -1993.280, 458.411, 200.000)
- AddZone("Redsands East", 1848.400, 2342.830, -89.084, 2011.940, 2478.490, 110.916)
- AddZone("Downtown", -1580.010, 744.267, -6.1, -1499.890, 1025.980, 200.000)
- AddZone("Conference Center", 1046.150, -1804.210, -89.084, 1323.900, -1722.260, 110.916)
- AddZone("Richman", 647.557, -1118.280, -89.084, 787.461, -954.662, 110.916)
- AddZone("Ocean Flats", -2994.490, 277.411, -9.1, -2867.850, 458.411, 200.000)
- AddZone("Greenglass College", 964.391, 930.890, -89.084, 1166.530, 1044.690, 110.916)
- AddZone("Glen Park", 1812.620, -1100.820, -89.084, 1994.330, -973.380, 110.916)
- AddZone("LVA Freight Depot", 1375.600, 919.447, -89.084, 1457.370, 1203.280, 110.916)
- AddZone("Regular Tom", -405.770, 1712.860, -3.0, -276.719, 1892.750, 200.000)
- AddZone("Verona Beach", 1161.520, -1722.260, -89.084, 1323.900, -1577.590, 110.916)
- AddZone("East Los Santos", 2281.450, -1372.040, -89.084, 2381.680, -1135.040, 110.916)
- AddZone("Caligula's Palace", 2137.400, 1703.230, -89.084, 2437.390, 1783.230, 110.916)
- AddZone("Idlewood", 1951.660, -1742.310, -89.084, 2124.660, -1602.310, 110.916)
- AddZone("Pilgrim", 2624.400, 1383.230, -89.084, 2685.160, 1783.230, 110.916)
- AddZone("Idlewood", 2124.660, -1742.310, -89.084, 2222.560, -1494.030, 110.916)
- AddZone("Queens", -2533.040, 458.411, 0.000, -2329.310, 578.396, 200.000)
- AddZone("Downtown", -1871.720, 1176.420, -4.5, -1620.300, 1274.260, 200.000)
- AddZone("Commerce", 1583.500, -1722.260, -89.084, 1758.900, -1577.590, 110.916)
- AddZone("East Los Santos", 2381.680, -1454.350, -89.084, 2462.130, -1135.040, 110.916)
- AddZone("Marina", 647.712, -1577.590, -89.084, 807.922, -1416.250, 110.916)
- AddZone("Richman", 72.648, -1404.970, -89.084, 225.165, -1235.070, 110.916)
- AddZone("Vinewood", 647.712, -1416.250, -89.084, 787.461, -1227.280, 110.916)
- AddZone("East Los Santos", 2222.560, -1628.530, -89.084, 2421.030, -1494.030, 110.916)
- AddZone("Rodeo", 558.099, -1684.650, -89.084, 647.522, -1384.930, 110.916)
- AddZone("Easter Tunnel", -1709.710, -833.034, -1.5, -1446.010, -730.118, 200.000)
- AddZone("Rodeo", 466.223, -1385.070, -89.084, 647.522, -1235.070, 110.916)
- AddZone("Redsands East", 1817.390, 2202.760, -89.084, 2011.940, 2342.830, 110.916)
- AddZone("The Clown's Pocket", 2162.390, 1783.230, -89.084, 2437.390, 1883.230, 110.916)
- AddZone("Idlewood", 1971.660, -1852.870, -89.084, 2222.560, -1742.310, 110.916)
- AddZone("Montgomery Intersection", 1546.650, 208.164, 0.000, 1745.830, 347.457, 200.000)
- AddZone("Willowfield", 2089.000, -2235.840, -89.084, 2201.820, -1989.900, 110.916)
- AddZone("Temple", 952.663, -1130.840, -89.084, 1096.470, -937.184, 110.916)
- AddZone("Prickle Pine", 1848.400, 2553.490, -89.084, 1938.800, 2863.230, 110.916)
- AddZone("Los Santos International", 1400.970, -2669.260, -39.084, 2189.820, -2597.260, 60.916)
- AddZone("Garver Bridge", -1213.910, 950.022, -89.084, -1087.930, 1178.930, 110.916)
- AddZone("Garver Bridge", -1339.890, 828.129, -89.084, -1213.910, 1057.040, 110.916)
- AddZone("Kincaid Bridge", -1339.890, 599.218, -89.084, -1213.910, 828.129, 110.916)
- AddZone("Kincaid Bridge", -1213.910, 721.111, -89.084, -1087.930, 950.022, 110.916)
- AddZone("Verona Beach", 930.221, -2006.780, -89.084, 1073.220, -1804.210, 110.916)
- AddZone("Verdant Bluffs", 1073.220, -2006.780, -89.084, 1249.620, -1842.270, 110.916)
- AddZone("Vinewood", 787.461, -1130.840, -89.084, 952.604, -954.662, 110.916)
- AddZone("Vinewood", 787.461, -1310.210, -89.084, 952.663, -1130.840, 110.916)
- AddZone("Commerce", 1463.900, -1577.590, -89.084, 1667.960, -1430.870, 110.916)
- AddZone("Market", 787.461, -1416.250, -89.084, 1072.660, -1310.210, 110.916)
- AddZone("Rockshore West", 2377.390, 596.349, -89.084, 2537.390, 788.894, 110.916)
- AddZone("Julius Thruway North", 2237.400, 2542.550, -89.084, 2498.210, 2663.170, 110.916)
- AddZone("East Beach", 2632.830, -1668.130, -89.084, 2747.740, -1393.420, 110.916)
- AddZone("Fallow Bridge", 434.341, 366.572, 0.000, 603.035, 555.680, 200.000)
- AddZone("Willowfield", 2089.000, -1989.900, -89.084, 2324.000, -1852.870, 110.916)
- AddZone("Chinatown", -2274.170, 578.396, -7.6, -2078.670, 744.170, 200.000)
- AddZone("El Castillo del Diablo", -208.570, 2337.180, 0.000, 8.430, 2487.180, 200.000)
- AddZone("Ocean Docks", 2324.000, -2145.100, -89.084, 2703.580, -2059.230, 110.916)
- AddZone("Easter Bay Chemicals", -1132.820, -768.027, 0.000, -956.476, -578.118, 200.000)
- AddZone("The Visage", 1817.390, 1703.230, -89.084, 2027.400, 1863.230, 110.916)
- AddZone("Ocean Flats", -2994.490, -430.276, -1.2, -2831.890, -222.589, 200.000)
- AddZone("Richman", 321.356, -860.619, -89.084, 687.802, -768.027, 110.916)
- AddZone("Green Palms", 176.581, 1305.450, -3.0, 338.658, 1520.720, 200.000)
- AddZone("Richman", 321.356, -768.027, -89.084, 700.794, -674.885, 110.916)
- AddZone("Starfish Casino", 2162.390, 1883.230, -89.084, 2437.390, 2012.180, 110.916)
- AddZone("East Beach", 2747.740, -1668.130, -89.084, 2959.350, -1498.620, 110.916)
- AddZone("Jefferson", 2056.860, -1372.040, -89.084, 2281.450, -1210.740, 110.916)
- AddZone("Downtown Los Santos", 1463.900, -1290.870, -89.084, 1724.760, -1150.870, 110.916)
- AddZone("Downtown Los Santos", 1463.900, -1430.870, -89.084, 1724.760, -1290.870, 110.916)
- AddZone("Garver Bridge", -1499.890, 696.442, -179.615, -1339.890, 925.353, 20.385)
- AddZone("Julius Thruway South", 1457.390, 823.228, -89.084, 2377.390, 863.229, 110.916)
- AddZone("East Los Santos", 2421.030, -1628.530, -89.084, 2632.830, -1454.350, 110.916)
- AddZone("Greenglass College", 964.391, 1044.690, -89.084, 1197.390, 1203.220, 110.916)
- AddZone("Las Colinas", 2747.740, -1120.040, -89.084, 2959.350, -945.035, 110.916)
- AddZone("Mulholland", 737.573, -768.027, -89.084, 1142.290, -674.885, 110.916)
- AddZone("Ocean Docks", 2201.820, -2730.880, -89.084, 2324.000, -2418.330, 110.916)
- AddZone("East Los Santos", 2462.130, -1454.350, -89.084, 2581.730, -1135.040, 110.916)
- AddZone("Ganton", 2222.560, -1722.330, -89.084, 2632.830, -1628.530, 110.916)
- AddZone("Avispa Country Club", -2831.890, -430.276, -6.1, -2646.400, -222.589, 200.000)
- AddZone("Willowfield", 1970.620, -2179.250, -89.084, 2089.000, -1852.870, 110.916)
- AddZone("Esplanade North", -1982.320, 1274.260, -4.5, -1524.240, 1358.900, 200.000)
- AddZone("The High Roller", 1817.390, 1283.230, -89.084, 2027.390, 1469.230, 110.916)
- AddZone("Ocean Docks", 2201.820, -2418.330, -89.084, 2324.000, -2095.000, 110.916)
- AddZone("Last Dime Motel", 1823.080, 596.349, -89.084, 1997.220, 823.228, 110.916)
- AddZone("Bayside Marina", -2353.170, 2275.790, 0.000, -2153.170, 2475.790, 200.000)
- AddZone("King's", -2329.310, 458.411, -7.6, -1993.280, 578.396, 200.000)
- AddZone("El Corona", 1692.620, -2179.250, -89.084, 1812.620, -1842.270, 110.916)
- AddZone("Blackfield Chapel", 1375.600, 596.349, -89.084, 1558.090, 823.228, 110.916)
- AddZone("The Pink Swan", 1817.390, 1083.230, -89.084, 2027.390, 1283.230, 110.916)
- AddZone("Julius Thruway West", 1197.390, 1163.390, -89.084, 1236.630, 2243.230, 110.916)
- AddZone("Los Flores", 2581.730, -1393.420, -89.084, 2747.740, -1135.040, 110.916)
- AddZone("The Visage", 1817.390, 1863.230, -89.084, 2106.700, 2011.830, 110.916)
- AddZone("Prickle Pine", 1938.800, 2624.230, -89.084, 2121.400, 2861.550, 110.916)
- AddZone("Verona Beach", 851.449, -1804.210, -89.084, 1046.150, -1577.590, 110.916)
- AddZone("Robada Intersection", -1119.010, 1178.930, -89.084, -862.025, 1351.450, 110.916)
- AddZone("Linden Side", 2749.900, 943.235, -89.084, 2923.390, 1198.990, 110.916)
- AddZone("Ocean Docks", 2703.580, -2302.330, -89.084, 2959.350, -2126.900, 110.916)
- AddZone("Willowfield", 2324.000, -2059.230, -89.084, 2541.700, -1852.870, 110.916)
- AddZone("King's", -2411.220, 265.243, -9.1, -1993.280, 373.539, 200.000)
- AddZone("Commerce", 1323.900, -1842.270, -89.084, 1701.900, -1722.260, 110.916)
- AddZone("Mulholland", 1269.130, -768.027, -89.084, 1414.070, -452.425, 110.916)
- AddZone("Marina", 647.712, -1804.210, -89.084, 851.449, -1577.590, 110.916)
- AddZone("Battery Point", -2741.070, 1268.410, -4.5, -2533.040, 1490.470, 200.000)
- AddZone("The Four Dragons Casino", 1817.390, 863.232, -89.084, 2027.390, 1083.230, 110.916)
- AddZone("Blackfield", 964.391, 1203.220, -89.084, 1197.390, 1403.220, 110.916)
- AddZone("Julius Thruway North", 1534.560, 2433.230, -89.084, 1848.400, 2583.230, 110.916)
- AddZone("Yellow Bell Gol Course", 1117.400, 2723.230, -89.084, 1457.460, 2863.230, 110.916)
- AddZone("Idlewood", 1812.620, -1602.310, -89.084, 2124.660, -1449.670, 110.916)
- AddZone("Redsands West", 1297.470, 2142.860, -89.084, 1777.390, 2243.230, 110.916)
- AddZone("Doherty", -2270.040, -324.114, -1.2, -1794.920, -222.589, 200.000)
- AddZone("Hilltop Farm", 967.383, -450.390, -3.0, 1176.780, -217.900, 200.000)
- AddZone("Las Barrancas", -926.130, 1398.730, -3.0, -719.234, 1634.690, 200.000)
- AddZone("Pirates in Men's Pants", 1817.390, 1469.230, -89.084, 2027.400, 1703.230, 110.916)
- AddZone("City Hall", -2867.850, 277.411, -9.1, -2593.440, 458.411, 200.000)
- AddZone("Avispa Country Club", -2646.400, -355.493, 0.000, -2270.040, -222.589, 200.000)
- AddZone("The Strip", 2027.400, 863.229, -89.084, 2087.390, 1703.230, 110.916)
- AddZone("Hashbury", -2593.440, -222.589, -1.0, -2411.220, 54.722, 200.000)
- AddZone("Los Santos International", 1852.000, -2394.330, -89.084, 2089.000, -2179.250, 110.916)
- AddZone("Whitewood Estates", 1098.310, 1726.220, -89.084, 1197.390, 2243.230, 110.916)
- AddZone("Sherman Reservoir", -789.737, 1659.680, -89.084, -599.505, 1929.410, 110.916)
- AddZone("El Corona", 1812.620, -2179.250, -89.084, 1970.620, -1852.870, 110.916)
- AddZone("Downtown", -1700.010, 744.267, -6.1, -1580.010, 1176.520, 200.000)
- AddZone("Foster Valley", -2178.690, -1250.970, 0.000, -1794.920, -1115.580, 200.000)
- AddZone("Las Payasadas", -354.332, 2580.360, 2.0, -133.625, 2816.820, 200.000)
- AddZone("Valle Ocultado", -936.668, 2611.440, 2.0, -715.961, 2847.900, 200.000)
- AddZone("Blackfield Intersection", 1166.530, 795.010, -89.084, 1375.600, 1044.690, 110.916)
- AddZone("Ganton", 2222.560, -1852.870, -89.084, 2632.830, -1722.330, 110.916)
- AddZone("Easter Bay Airport", -1213.910, -730.118, 0.000, -1132.820, -50.096, 200.000)
- AddZone("Redsands East", 1817.390, 2011.830, -89.084, 2106.700, 2202.760, 110.916)
- AddZone("Esplanade East", -1499.890, 578.396, -79.615, -1339.890, 1274.260, 20.385)
- AddZone("Caligula's Palace", 2087.390, 1543.230, -89.084, 2437.390, 1703.230, 110.916)
- AddZone("Royal Casino", 2087.390, 1383.230, -89.084, 2437.390, 1543.230, 110.916)
- AddZone("Richman", 72.648, -1235.070, -89.084, 321.356, -1008.150, 110.916)
- AddZone("Starfish Casino", 2437.390, 1783.230, -89.084, 2685.160, 2012.180, 110.916)
- AddZone("Mulholland", 1281.130, -452.425, -89.084, 1641.130, -290.913, 110.916)
- AddZone("Downtown", -1982.320, 744.170, -6.1, -1871.720, 1274.260, 200.000)
- AddZone("Hankypanky Point", 2576.920, 62.158, 0.000, 2759.250, 385.503, 200.000)
- AddZone("K.A.C.C. Military Fuels", 2498.210, 2626.550, -89.084, 2749.900, 2861.550, 110.916)
- AddZone("Harry Gold Parkway", 1777.390, 863.232, -89.084, 1817.390, 2342.830, 110.916)
- AddZone("Bayside Tunnel", -2290.190, 2548.290, -89.084, -1950.190, 2723.290, 110.916)
- AddZone("Ocean Docks", 2324.000, -2302.330, -89.084, 2703.580, -2145.100, 110.916)
- AddZone("Richman", 321.356, -1044.070, -89.084, 647.557, -860.619, 110.916)
- AddZone("Randolph Industrial Estate", 1558.090, 596.349, -89.084, 1823.080, 823.235, 110.916)
- AddZone("East Beach", 2632.830, -1852.870, -89.084, 2959.350, -1668.130, 110.916)
- AddZone("Flint Water", -314.426, -753.874, -89.084, -106.339, -463.073, 110.916)
- AddZone("Blueberry", 19.607, -404.136, 3.8, 349.607, -220.137, 200.000)
- AddZone("Linden Station", 2749.900, 1198.990, -89.084, 2923.390, 1548.990, 110.916)
- AddZone("Glen Park", 1812.620, -1350.720, -89.084, 2056.860, -1100.820, 110.916)
- AddZone("Downtown", -1993.280, 265.243, -9.1, -1794.920, 578.396, 200.000)
- AddZone("Redsands West", 1377.390, 2243.230, -89.084, 1704.590, 2433.230, 110.916)
- AddZone("Richman", 321.356, -1235.070, -89.084, 647.522, -1044.070, 110.916)
- AddZone("Gant Bridge", -2741.450, 1659.680, -6.1, -2616.400, 2175.150, 200.000)
- AddZone("Lil' Probe Inn", -90.218, 1286.850, -3.0, 153.859, 1554.120, 200.000)
- AddZone("Flint Intersection", -187.700, -1596.760, -89.084, 17.063, -1276.600, 110.916)
- AddZone("Las Colinas", 2281.450, -1135.040, -89.084, 2632.740, -945.035, 110.916)
- AddZone("Sobell Rail Yards", 2749.900, 1548.990, -89.084, 2923.390, 1937.250, 110.916)
- AddZone("The Emerald Isle", 2011.940, 2202.760, -89.084, 2237.400, 2508.230, 110.916)
- AddZone("El Castillo del Diablo", -208.570, 2123.010, -7.6, 114.033, 2337.180, 200.000)
- AddZone("Santa Flora", -2741.070, 458.411, -7.6, -2533.040, 793.411, 200.000)
- AddZone("Playa del Seville", 2703.580, -2126.900, -89.084, 2959.350, -1852.870, 110.916)
- AddZone("Market", 926.922, -1577.590, -89.084, 1370.850, -1416.250, 110.916)
- AddZone("Queens", -2593.440, 54.722, 0.000, -2411.220, 458.411, 200.000)
- AddZone("Pilson Intersection", 1098.390, 2243.230, -89.084, 1377.390, 2507.230, 110.916)
- AddZone("Spinybed", 2121.400, 2663.170, -89.084, 2498.210, 2861.550, 110.916)
- AddZone("Pilgrim", 2437.390, 1383.230, -89.084, 2624.400, 1783.230, 110.916)
- AddZone("Blackfield", 964.391, 1403.220, -89.084, 1197.390, 1726.220, 110.916)
- AddZone("'The Big Ear'", -410.020, 1403.340, -3.0, -137.969, 1681.230, 200.000)
- AddZone("Dillimore", 580.794, -674.885, -9.5, 861.085, -404.790, 200.000)
- AddZone("El Quebrados", -1645.230, 2498.520, 0.000, -1372.140, 2777.850, 200.000)
- AddZone("Esplanade North", -2533.040, 1358.900, -4.5, -1996.660, 1501.210, 200.000)
- AddZone("Easter Bay Airport", -1499.890, -50.096, -1.0, -1242.980, 249.904, 200.000)
- AddZone("Fisher's Lagoon", 1916.990, -233.323, -100.000, 2131.720, 13.800, 200.000)
- AddZone("Mulholland", 1414.070, -768.027, -89.084, 1667.610, -452.425, 110.916)
- AddZone("East Beach", 2747.740, -1498.620, -89.084, 2959.350, -1120.040, 110.916)
- AddZone("San Andreas Sound", 2450.390, 385.503, -100.000, 2759.250, 562.349, 200.000)
- AddZone("Shady Creeks", -2030.120, -2174.890, -6.1, -1820.640, -1771.660, 200.000)
- AddZone("Market", 1072.660, -1416.250, -89.084, 1370.850, -1130.850, 110.916)
- AddZone("Rockshore West", 1997.220, 596.349, -89.084, 2377.390, 823.228, 110.916)
- AddZone("Prickle Pine", 1534.560, 2583.230, -89.084, 1848.400, 2863.230, 110.916)
- AddZone("Easter Basin", -1794.920, -50.096, -1.04, -1499.890, 249.904, 200.000)
- AddZone("Leafy Hollow", -1166.970, -1856.030, 0.000, -815.624, -1602.070, 200.000)
- AddZone("LVA Freight Depot", 1457.390, 863.229, -89.084, 1777.400, 1143.210, 110.916)
- AddZone("Prickle Pine", 1117.400, 2507.230, -89.084, 1534.560, 2723.230, 110.916)
- AddZone("Blueberry", 104.534, -220.137, 2.3, 349.607, 152.236, 200.000)
- AddZone("El Castillo del Diablo", -464.515, 2217.680, 0.000, -208.570, 2580.360, 200.000)
- AddZone("Downtown", -2078.670, 578.396, -7.6, -1499.890, 744.267, 200.000)
- AddZone("Rockshore East", 2537.390, 676.549, -89.084, 2902.350, 943.235, 110.916)
- AddZone("San Fierro Bay", -2616.400, 1501.210, -3.0, -1996.660, 1659.680, 200.000)
- AddZone("Paradiso", -2741.070, 793.411, -6.1, -2533.040, 1268.410, 200.000)
- AddZone("The Camel's Toe", 2087.390, 1203.230, -89.084, 2640.400, 1383.230, 110.916)
- AddZone("Old Venturas Strip", 2162.390, 2012.180, -89.084, 2685.160, 2202.760, 110.916)
- AddZone("Juniper Hill", -2533.040, 578.396, -7.6, -2274.170, 968.369, 200.000)
- AddZone("Juniper Hollow", -2533.040, 968.369, -6.1, -2274.170, 1358.900, 200.000)
- AddZone("Roca Escalante", 2237.400, 2202.760, -89.084, 2536.430, 2542.550, 110.916)
- AddZone("Julius Thruway East", 2685.160, 1055.960, -89.084, 2749.900, 2626.550, 110.916)
- AddZone("Verona Beach", 647.712, -2173.290, -89.084, 930.221, -1804.210, 110.916)
- AddZone("Foster Valley", -2178.690, -599.884, -1.2, -1794.920, -324.114, 200.000)
- AddZone("Arco del Oeste", -901.129, 2221.860, 0.000, -592.090, 2571.970, 200.000)
- AddZone("Fallen Tree", -792.254, -698.555, -5.3, -452.404, -380.043, 200.000)
- AddZone("The Farm", -1209.670, -1317.100, 114.981, -908.161, -787.391, 251.981)
- AddZone("The Sherman Dam", -968.772, 1929.410, -3.0, -481.126, 2155.260, 200.000)
- AddZone("Esplanade North", -1996.660, 1358.900, -4.5, -1524.240, 1592.510, 200.000)
- AddZone("Financial", -1871.720, 744.170, -6.1, -1701.300, 1176.420, 300.000)
- AddZone("Garcia", -2411.220, -222.589, -1.14, -2173.040, 265.243, 200.000)
- AddZone("Montgomery", 1119.510, 119.526, -3.0, 1451.400, 493.323, 200.000)
- AddZone("Creek", 2749.900, 1937.250, -89.084, 2921.620, 2669.790, 110.916)
- AddZone("Los Santos International", 1249.620, -2394.330, -89.084, 1852.000, -2179.250, 110.916)
- AddZone("Santa Maria Beach", 72.648, -2173.290, -89.084, 342.648, -1684.650, 110.916)
- AddZone("Mulholland Intersection", 1463.900, -1150.870, -89.084, 1812.620, -768.027, 110.916)
- AddZone("Angel Pine", -2324.940, -2584.290, -6.1, -1964.220, -2212.110, 200.000)
- AddZone("Verdant Meadows", 37.032, 2337.180, -3.0, 435.988, 2677.900, 200.000)
- AddZone("Octane Springs", 338.658, 1228.510, 0.000, 664.308, 1655.050, 200.000)
- AddZone("Come-A-Lot", 2087.390, 943.235, -89.084, 2623.180, 1203.230, 110.916)
- AddZone("Redsands West", 1236.630, 1883.110, -89.084, 1777.390, 2142.860, 110.916)
- AddZone("Santa Maria Beach", 342.648, -2173.290, -89.084, 647.712, -1684.650, 110.916)
- AddZone("Verdant Bluffs", 1249.620, -2179.250, -89.084, 1692.620, -1842.270, 110.916)
- AddZone("Las Venturas Airport", 1236.630, 1203.280, -89.084, 1457.370, 1883.110, 110.916)
- AddZone("Flint Range", -594.191, -1648.550, 0.000, -187.700, -1276.600, 200.000)
- AddZone("Verdant Bluffs", 930.221, -2488.420, -89.084, 1249.620, -2006.780, 110.916)
- AddZone("Palomino Creek", 2160.220, -149.004, 0.000, 2576.920, 228.322, 200.000)
- AddZone("Ocean Docks", 2373.770, -2697.090, -89.084, 2809.220, -2330.460, 110.916)
- AddZone("Easter Bay Airport", -1213.910, -50.096, -4.5, -947.980, 578.396, 200.000)
- AddZone("Whitewood Estates", 883.308, 1726.220, -89.084, 1098.310, 2507.230, 110.916)
- AddZone("Calton Heights", -2274.170, 744.170, -6.1, -1982.320, 1358.900, 200.000)
- AddZone("Easter Basin", -1794.920, 249.904, -9.1, -1242.980, 578.396, 200.000)
- AddZone("Los Santos Inlet", -321.744, -2224.430, -89.084, 44.615, -1724.430, 110.916)
- AddZone("Doherty", -2173.040, -222.589, -1.0, -1794.920, 265.243, 200.000)
- AddZone("Mount Chiliad", -2178.690, -2189.910, -47.917, -2030.120, -1771.660, 576.083)
- AddZone("Fort Carson", -376.233, 826.326, -3.0, 123.717, 1220.440, 200.000)
- AddZone("Foster Valley", -2178.690, -1115.580, 0.000, -1794.920, -599.884, 200.000)
- AddZone("Ocean Flats", -2994.490, -222.589, -1.0, -2593.440, 277.411, 200.000)
- AddZone("Fern Ridge", 508.189, -139.259, 0.000, 1306.660, 119.526, 200.000)
- AddZone("Bayside", -2741.070, 2175.150, 0.000, -2353.170, 2722.790, 200.000)
- AddZone("Las Venturas Airport", 1457.370, 1203.280, -89.084, 1777.390, 1883.110, 110.916)
- AddZone("Blueberry Acres", -319.676, -220.137, 0.000, 104.534, 293.324, 200.000)
- AddZone("Palisades", -2994.490, 458.411, -6.1, -2741.070, 1339.610, 200.000)
- AddZone("North Rock", 2285.370, -768.027, 0.000, 2770.590, -269.740, 200.000)
- AddZone("Hunter Quarry", 337.244, 710.840, -115.239, 860.554, 1031.710, 203.761)
- AddZone("Los Santos International", 1382.730, -2730.880, -89.084, 2201.820, -2394.330, 110.916)
- AddZone("Missionary Hill", -2994.490, -811.276, 0.000, -2178.690, -430.276, 200.000)
- AddZone("San Fierro Bay", -2616.400, 1659.680, -3.0, -1996.660, 2175.150, 200.000)
- AddZone("Restricted Area", -91.586, 1655.050, -50.000, 421.234, 2123.010, 250.000)
- AddZone("Mount Chiliad", -2997.470, -1115.580, -47.917, -2178.690, -971.913, 576.083)
- AddZone("Mount Chiliad", -2178.690, -1771.660, -47.917, -1936.120, -1250.970, 576.083)
- AddZone("Easter Bay Airport", -1794.920, -730.118, -3.0, -1213.910, -50.096, 200.000)
- AddZone("The Panopticon", -947.980, -304.320, -1.1, -319.676, 327.071, 200.000)
- AddZone("Shady Creeks", -1820.640, -2643.680, -8.0, -1226.780, -1771.660, 200.000)
- AddZone("Back o Beyond", -1166.970, -2641.190, 0.000, -321.744, -1856.030, 200.000)
- AddZone("Mount Chiliad", -2994.490, -2189.910, -47.917, -2178.690, -1115.580, 576.083)
- AddZone("Tierra Robada", -1213.910, 596.349, -242.990, -480.539, 1659.680, 900.000)
- AddZone("Flint County", -1213.910, -2892.970, -242.990, 44.615, -768.027, 900.000)
- AddZone("Whetstone", -2997.470, -2892.970, -242.990, -1213.910, -1115.580, 900.000)
- AddZone("Bone County", -480.539, 596.349, -242.990, 869.461, 2993.870, 900.000)
- AddZone("Tierra Robada", -2997.470, 1659.680, -242.990, -480.539, 2993.870, 900.000)
- AddZone("San Fierro", -2997.470, -1115.580, -242.990, -1213.910, 1659.680, 900.000)
- AddZone("Las Venturas", 869.461, 596.349, -242.990, 2997.060, 2993.870, 900.000)
- AddZone("Red County", -1213.910, -768.027, -242.990, 2997.060, 596.349, 900.000)
- AddZone("Los Santos", 44.615, -2892.970, -242.990, 2997.060, -768.027, 900.000)
- }
- calculateZone(posX, posY, posZ) {
- if ( bInitZaC == 0 )
- {
- initZonesAndCities()
- bInitZaC := 1
- }
- Loop % nZone-1
- {
- if (posX >= zone%A_Index%_x1) && (posY >= zone%A_Index%_y1) && (posZ >= zone%A_Index%_z1) && (posX <= zone%A_Index%_x2) && (posY <= zone%A_Index%_y2) && (posZ <= zone%A_Index%_z2)
- {
- ErrorLevel := ERROR_OK
- return zone%A_Index%_name
- }
- }
- ErrorLevel := ERROR_ZONE_NOT_FOUND
- return "Unbekannt"
- }
- calculateCity(posX, posY, posZ) {
- if ( bInitZaC == 0 )
- {
- initZonesAndCities()
- bInitZaC := 1
- }
- smallestCity := "Unbekannt"
- currentCitySize := 0
- smallestCitySize := 0
- Loop % nCity-1
- {
- if (posX >= city%A_Index%_x1) && (posY >= city%A_Index%_y1) && (posZ >= city%A_Index%_z1) && (posX <= city%A_Index%_x2) && (posY <= city%A_Index%_y2) && (posZ <= city%A_Index%_z2)
- {
- currentCitySize := ((city%A_Index%_x2 - city%A_Index%_x1) * (city%A_Index%_y2 - city%A_Index%_y1) * (city%A_Index%_z2 - city%A_Index%_z1))
- if (smallestCity == "Unbekannt") || (currentCitySize < smallestCitySize)
- {
- smallestCity := city%A_Index%_name
- smallestCitySize := currentCitySize
- }
- }
- }
- if(smallestCity == "Unbekannt") {
- ErrorLevel := ERROR_CITY_NOT_FOUND
- } else {
- ErrorLevel := ERROR_OK
- }
- return smallestCity
- }
- AddZone(sName, x1, y1, z1, x2, y2, z2) {
- global
- zone%nZone%_name := sName
- zone%nZone%_x1 := x1
- zone%nZone%_y1 := y1
- zone%nZone%_z1 := z1
- zone%nZone%_x2 := x2
- zone%nZone%_y2 := y2
- zone%nZone%_z2 := z2
- nZone := nZone + 1
- }
- AddCity(sName, x1, y1, z1, x2, y2, z2) {
- global
- city%nCity%_name := sName
- city%nCity%_x1 := x1
- city%nCity%_y1 := y1
- city%nCity%_z1 := z1
- city%nCity%_x2 := x2
- city%nCity%_y2 := y2
- city%nCity%_z2 := z2
- nCity := nCity + 1
- }
- IsPlayerInRangeOfPoint(_posX, _posY, _posZ, _posRadius)
- {
- GetPlayerPos(posX, posY, posZ)
- X := posX -_posX
- Y := posY -_posY
- Z := posZ -_posZ
- if(((X < _posRadius) && (X > -_posRadius)) && ((Y < _posRadius) && (Y > -_posRadius)) && ((Z < _posRadius) && (Z > -_posRadius)))
- return TRUE
- return FALSE
- }
- IsPlayerInRangeOfPoint2D(_posX, _posY, _posRadius)
- {
- GetPlayerPos(posX, posY, posZ)
- X := posX - _posX
- Y := posY - _posY
- if(((X < _posRadius) && (X > -_posRadius)) && ((Y < _posRadius) && (Y > -_posRadius)))
- return TRUE
- return FALSE
- }
- getPlayerZone()
- {
- aktPos := getCoordinates()
- return calculateZone(aktPos[1], aktPos[2], aktPos[3])
- }
- getPlayerCity()
- {
- aktPos := getCoordinates()
- return calculateCity(aktPos[1], aktPos[2], aktPos[3])
- }
- AntiCrash(){
- If(!checkHandles())
- 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)
- }
- writeMemory(hProcess,address,writevalue,length=4, datatype="int") {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return false
- }
- VarSetCapacity(finalvalue,length, 0)
- NumPut(writevalue,finalvalue,0,datatype)
- dwRet := DllCall( "WriteProcessMemory"
- ,"Uint",hProcess
- ,"Uint",address
- ,"Uint",&finalvalue
- ,"Uint",length
- ,"Uint",0)
- if(dwRet == 0) {
- ErrorLevel := ERROR_WRITE_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return true
- }
- checkHandles() {
- if(iRefreshHandles+500>A_TickCount)
- return true
- iRefreshHandles:=A_TickCount
- if(!refreshGTA() || !refreshSAMP() || !refreshMemory()) {
- return false
- } else {
- return true
- }
- return true
- }
- refreshGTA() {
- newPID := getPID(gta_title)
- if(!newPID) {
- if(hGTA) {
- virtualFreeEx(hGTA, pMemory, 0, 0x8000)
- closeProcess(hGTA)
- hGTA := 0x0
- }
- dwGTAPID := 0
- hGTA := 0x0
- dwSAMP := 0x0
- pMemory := 0x0
- return false
- }
- if(!hGTA || (dwGTAPID != newPID)) {
- hGTA := openProcess(newPID)
- if(ErrorLevel) {
- dwGTAPID := 0
- hGTA := 0x0
- dwSAMP := 0x0
- pMemory := 0x0
- return false
- }
- dwGTAPID := newPID
- dwSAMP := 0x0
- pMemory := 0x0
- return true
- }
- return true
- }
- refreshSAMP() {
- if(dwSAMP)
- return true
- dwSAMP := sampcac_mode ? "0x" + sampdll_base_address : getModuleBaseAddress("samp.dll", hGTA)
- if(!dwSAMP)
- return false
- return true
- }
- refreshMemory() {
- if(!pMemory) {
- pMemory := virtualAllocEx(hGTA, 6144, 0x1000 | 0x2000, 0x40)
- if(ErrorLevel) {
- pMemory := 0x0
- return false
- }
- pParam1 := pMemory
- pParam2 := pMemory + 1024
- pParam3 := pMemory + 2048
- pParam4 := pMemory + 3072
- pParam5 := pMemory + 4096
- pInjectFunc := pMemory + 5120
- }
- return true
- }
- getPID(szWindow) {
- local dwPID := 0
- WinGet, dwPID, PID, %szWindow%
- return dwPID
- }
- openProcess(dwPID, dwRights = 0x1F0FFF) {
- hProcess := DllCall("OpenProcess"
- , "UInt", dwRights
- , "int", 0
- , "UInt", dwPID
- , "Uint")
- if(hProcess == 0) {
- ErrorLevel := ERROR_OPEN_PROCESS
- return 0
- }
- ErrorLevel := ERROR_OK
- return hProcess
- }
- closeProcess(hProcess) {
- if(hProcess == 0) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- dwRet := DllCall( "CloseHandle"
- , "Uint", hProcess
- , "UInt")
- ErrorLevel := ERROR_OK
- }
- getModuleBaseAddress(sModule, hProcess) {
- if(!sModule) {
- ErrorLevel := ERROR_MODULE_NOT_FOUND
- return 0
- }
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- dwSize = 1024*4
- VarSetCapacity(hMods, dwSize)
- VarSetCapacity(cbNeeded, 4)
- dwRet := DllCall( "Psapi.dll\EnumProcessModules"
- , "UInt", hProcess
- , "UInt", &hMods
- , "UInt", dwSize
- , "UInt*", cbNeeded
- , "UInt")
- if(dwRet == 0) {
- ErrorLevel := ERROR_ENUM_PROCESS_MODULES
- return 0
- }
- dwMods := cbNeeded / 4
- i := 0
- VarSetCapacity(hModule, 4)
- VarSetCapacity(sCurModule, 260)
- while(i < dwMods) {
- hModule := NumGet(hMods, i*4)
- DllCall("Psapi.dll\GetModuleFileNameEx"
- , "UInt", hProcess
- , "UInt", hModule
- , "Str", sCurModule
- , "UInt", 260)
- SplitPath, sCurModule, sFilename
- if(sModule == sFilename) {
- ErrorLevel := ERROR_OK
- return hModule
- }
- i := i + 1
- }
- ErrorLevel := ERROR_MODULE_NOT_FOUND
- return 0
- }
- readString(hProcess, dwAddress, dwLen) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- VarSetCapacity(sRead, dwLen)
- dwRet := DllCall( "ReadProcessMemory"
- , "UInt", hProcess
- , "UInt", dwAddress
- , "Str", sRead
- , "UInt", dwLen
- , "UInt*", 0
- , "UInt")
- if(dwRet == 0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- if A_IsUnicode
- return __ansiToUnicode(sRead)
- return sRead
- }
- readFloat(hProcess, dwAddress) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- VarSetCapacity(dwRead, 4)
- dwRet := DllCall( "ReadProcessMemory"
- , "UInt", hProcess
- , "UInt", dwAddress
- , "Str", dwRead
- , "UInt", 4
- , "UInt*", 0
- , "UInt")
- if(dwRet == 0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return NumGet(dwRead, 0, "Float")
- }
- readDWORD(hProcess, dwAddress) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- VarSetCapacity(dwRead, 4)
- dwRet := DllCall( "ReadProcessMemory"
- , "UInt", hProcess
- , "UInt", dwAddress
- , "Str", dwRead
- , "UInt", 4
- , "UInt*", 0)
- if(dwRet == 0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return NumGet(dwRead, 0, "UInt")
- }
- readMem(hProcess, dwAddress, dwLen=4, type="UInt") {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- VarSetCapacity(dwRead, dwLen)
- dwRet := DllCall( "ReadProcessMemory"
- , "UInt", hProcess
- , "UInt", dwAddress
- , "Str", dwRead
- , "UInt", dwLen
- , "UInt*", 0)
- if(dwRet == 0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return NumGet(dwRead, 0, type)
- }
- writeString(hProcess, dwAddress, wString) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return false
- }
- sString := wString
- if A_IsUnicode
- sString := __unicodeToAnsi(wString)
- dwRet := DllCall( "WriteProcessMemory"
- , "UInt", hProcess
- , "UInt", dwAddress
- , "Str", sString
- , "UInt", StrLen(wString) + 1
- , "UInt", 0
- , "UInt")
- if(dwRet == 0) {
- ErrorLEvel := ERROR_WRITE_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return true
- }
- writeRaw(hProcess, dwAddress, pBuffer, dwLen) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return false
- }
- dwRet := DllCall( "WriteProcessMemory"
- , "UInt", hProcess
- , "UInt", dwAddress
- , "UInt", pBuffer
- , "UInt", dwLen
- , "UInt", 0
- , "UInt")
- if(dwRet == 0) {
- ErrorLEvel := ERROR_WRITE_MEMORY
- return false
- }
- ErrorLevel := ERROR_OK
- return true
- }
- Memory_ReadByte(process_handle, address) {
- VarSetCapacity(value, 1, 0)
- DllCall("ReadProcessMemory", "UInt", process_handle, "UInt", address, "Str", value, "UInt", 1, "UInt *", 0)
- return, NumGet(value, 0, "Byte")
- }
- callWithParams(hProcess, dwFunc, aParams, bCleanupStack = true) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return false
- }
- validParams := 0
- i := aParams.MaxIndex()
- dwLen := i * 5 + 5 + 1
- if(bCleanupStack)
- dwLen += 3
- VarSetCapacity(injectData, i * 5 + 5 + 3 + 1, 0)
- i_ := 1
- while(i > 0) {
- if(aParams[i][1] != "") {
- dwMemAddress := 0x0
- if(aParams[i][1] == "p") {
- dwMemAddress := aParams[i][2]
- } else if(aParams[i][1] == "s") {
- if(i_>3)
- return false
- dwMemAddress := pParam%i_%
- writeString(hProcess, dwMemAddress, aParams[i][2])
- if(ErrorLevel)
- return false
- i_ += 1
- } else if(aParams[i][1] == "i") {
- dwMemAddress := aParams[i][2]
- } else {
- return false
- }
- NumPut(0x68, injectData, validParams * 5, "UChar")
- NumPut(dwMemAddress, injectData, validParams * 5 + 1, "UInt")
- validParams += 1
- }
- i -= 1
- }
- offset := dwFunc - ( pInjectFunc + validParams * 5 + 5 )
- NumPut(0xE8, injectData, validParams * 5, "UChar")
- NumPut(offset, injectData, validParams * 5 + 1, "Int")
- if(bCleanupStack) {
- NumPut(0xC483, injectData, validParams * 5 + 5, "UShort")
- NumPut(validParams*4, injectData, validParams * 5 + 7, "UChar")
- NumPut(0xC3, injectData, validParams * 5 + 8, "UChar")
- } else {
- NumPut(0xC3, injectData, validParams * 5 + 5, "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
- }
- virtualAllocEx(hProcess, dwSize, flAllocationType, flProtect) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- dwRet := DllCall( "VirtualAllocEx"
- , "UInt", hProcess
- , "UInt", 0
- , "UInt", dwSize
- , "UInt", flAllocationType
- , "UInt", flProtect
- , "UInt")
- if(dwRet == 0) {
- ErrorLEvel := ERROR_ALLOC_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return dwRet
- }
- virtualFreeEx(hProcess, lpAddress, dwSize, dwFreeType) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- dwRet := DllCall( "VirtualFreeEx"
- , "UInt", hProcess
- , "UInt", lpAddress
- , "UInt", dwSize
- , "UInt", dwFreeType
- , "UInt")
- if(dwRet == 0) {
- ErrorLEvel := ERROR_FREE_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return dwRet
- }
- createRemoteThread(hProcess, lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId) {
- if(!hProcess) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- dwRet := DllCall( "CreateRemoteThread"
- , "UInt", hProcess
- , "UInt", lpThreadAttributes
- , "UInt", dwStackSize
- , "UInt", lpStartAddress
- , "UInt", lpParameter
- , "UInt", dwCreationFlags
- , "UInt", lpThreadId
- , "UInt")
- if(dwRet == 0) {
- ErrorLEvel := ERROR_ALLOC_MEMORY
- return 0
- }
- ErrorLevel := ERROR_OK
- return dwRet
- }
- waitForSingleObject(hThread, dwMilliseconds) {
- if(!hThread) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return 0
- }
- dwRet := DllCall( "WaitForSingleObject"
- , "UInt", hThread
- , "UInt", dwMilliseconds
- , "UInt")
- if(dwRet == 0xFFFFFFFF) {
- ErrorLEvel := ERROR_WAIT_FOR_OBJECT
- return 0
- }
- ErrorLevel := ERROR_OK
- return dwRet
- }
- __ansiToUnicode(sString, nLen = 0) {
- If !nLen
- {
- nLen := DllCall("MultiByteToWideChar"
- , "Uint", 0
- , "Uint", 0
- , "Uint", &sString
- , "int", -1
- , "Uint", 0
- , "int", 0)
- }
- VarSetCapacity(wString, nLen * 2)
- DllCall("MultiByteToWideChar"
- , "Uint", 0
- , "Uint", 0
- , "Uint", &sString
- , "int", -1
- , "Uint", &wString
- , "int", nLen)
- return wString
- }
- __unicodeToAnsi(wString, nLen = 0) {
- pString := wString + 1 > 65536 ? wString : &wString
- If !nLen
- {
- nLen := DllCall("WideCharToMultiByte"
- , "Uint", 0
- , "Uint", 0
- , "Uint", pString
- , "int", -1
- , "Uint", 0
- , "int", 0
- , "Uint", 0
- , "Uint", 0)
- }
- VarSetCapacity(sString, nLen)
- DllCall("WideCharToMultiByte"
- , "Uint", 0
- , "Uint", 0
- , "Uint", pString
- , "int", -1
- , "str", sString
- , "int", nLen
- , "Uint", 0
- , "Uint", 0)
- return sString
- }
- global SAMP_MAX_VEHICLES := 2000
- global SAMP_PPOOL_VEHICLE_OFFSET := 0x1C
- global VEHPOOL_iVehicleCount := 0x0
- global VEHPOOL_iIsListed := 0x3074
- global VEHPOOL_pGTA_Vehicle := 0x4FB4
- global iRefreshVeh := 0
- global oVehiclePoolData := []
- global iUpdateTickVeh := 1000
- global oweaponNames := {0: "Faust", 1: "Schlagring", 2: "Golfschläger", 3: "Schlagstock", 4: "Messer", 5: "Baseballschläger", 6: "Schaufel", 7: "Billiardstock", 8: "Katana", 9: "Kettensäge", 10: "Lila " "Dil" "do" "", 11: "" "Dil" "do" "", 12: "Vibrator", 13: "Silber Vibrator", 14: "Blumen", 15: "Gehstock", 16: "Granate", 17: "Tränengas", 18: "Molotov Cocktail", 22: "Pistole", 23: "Schallgedämpfte Pistole", 24: "Desert Eagle", 25: "Shotgun", 26: "Abgesägte Shotgun", 27: "SPAZ", 28: "" "U" "ZI" "", 29: "MP5", 30: "AK-47", 31: "M4", 32: "Tec-9", 33: "Rifle", 34: "Sniper", 35: "RPG", 36: "HS Rocket", 37: "Flammenwerfer", 38: "Minigun", 39: "Rucksackbombe", 40: "Zünmder", 41: "Spraycan", 42: "Feuerlöscher", 43: "Kamera", 44: "Nachtsichtgerät", 45: "Thermalsichtgerät", 46: "Fallschirm", 47: "Fake Pistol", 49: "Fahrzeug", 50: "Rotorblätter", 51: "Explosion", 53: "Ertrunken", 54: "Fallschaden", 255: "Selbstmord"}
- getVehicleID() {
- if (!checkHandles())
- return -1
- vID := readMem(hGTA, readDWORD(hGTA, dwSAMP + 0x13C848) + 0x14, 2, "Short")
- if (ErrorLevel || !vID || vID > 2000)
- return -1
- return vID
- }
- GetVehicleModelIDByVPed(dwvPed) {
- checkHandles()
- id := readMem(hGTA, dwvPed + 0x22, 2, "Short")
- return id
- }
- getStreamedVehicles() {
- if (!checkHandles())
- return false
- if (iRefreshVeh + iUpdateTickVeh > A_TickCount)
- return true
- oVehiclePoolData := []
- iRefreshVeh := A_TickCount
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- stVehiclePool := readDWORD(hGTA, dwAddress + 0x1C)
- vehicleoffset := 0
- Loop, % SAMP_MAX_VEHICLES
- {
- 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
- dwDriver := readDWORD(hGTA, ptrGTAVeh + 1120)
- occupied := dwDriver != 0 ? 1 : 0
- GTACARid := GetVehicleModelIDByVPed(ptrGTAVeh)
- sVehId := Round((vehicleoffset / 4) - 1)
- if (GTACARid > 400 && GTACARid < 611)
- oVehiclePoolData[index] := Object("PTR", ptrGTAVeh, "SAMPID", sVehId, "CARNAME", ovehicleNames[GTACARid - 399], "OCCUPIED", occupied)
- }
- return true
- }
- getVehiclePointer(wID) {
- if (wID < 1 || wID > SAMP_MAX_VEHICLES || !checkHandles())
- return false
- var1 := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- var2 := readDWORD(hGTA, var1 + SAMP_PPOOLS_OFFSET)
- stVehiclePool := readDWORD(hGTA, var2 + SAMP_PPOOL_VEHICLE_OFFSET)
- if (stVehiclePool) {
- var3 := readDWORD(hGTA, stVehiclePool + 0x4FB4 + wID * 0x4)
- return var3
- } else {
- return false
- }
- }
- getVehicleNumberPlate() {
- if (!checkHandles())
- return ""
- dwVehPtr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- if (ErrorLevel || dwVehPtr==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- vehpool := readDWORD(hGTA, dwAddress + 0x1C)
- if (ErrorLevel || vehpool==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- Loop, 2000
- {
- i := A_Index-1
- listed := readDWORD(hGTA, vehpool + 0x3074 + i*4)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- if (listed==0)
- continue
- svehptr := readDWORD(hGTA, vehpool + 0x4FB4 + i*4)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- if (svehptr==dwVehPtr) {
- sampveh := readDWORD(hGTA, vehpool + 0x1134 + i*4)
- if (ErrorLevel || sampveh==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- plate := readString(hGTA, sampveh + 0x93, 32)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- ErrorLevel := ERROR_OK
- return plate
- }
- }
- ErrorLevel := ERROR_OK
- return ""
- }
- getVehicleNumberPlateById(wID) {
- if (!checkHandles())
- return ""
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- vehpool := readDWORD(hGTA, dwAddress + 0x1C)
- if (ErrorLevel || vehpool==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- listed := readDWORD(hGTA, vehpool + 0x3074 + wID*4)
- if (ErrorLevel || listed==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- svehptr := readDWORD(hGTA, vehpool + 0x4FB4 + wID*4)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- sampveh := readDWORD(hGTA, vehpool + 0x1134 + wID*4)
- if (ErrorLevel || sampveh==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- plate := readString(hGTA, sampveh + 0x93, 32)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return ""
- }
- ErrorLevel := ERROR_OK
- return plate
- }
- getVehiclePos(dwVehPtr = 0xBA18FC) {
- if (!checkHandles())
- return false
- if (dwVehPtr = ADDR_VEHICLE_PTR)
- dwVehPtr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- dwAddress := readDWORD(hGTA, dwVehPtr + 0x14)
- if (!dwAddress)
- return false
- fX := readFloat(hGTA, dwAddress + 0x30)
- fY := readFloat(hGTA, dwAddress + 0x34)
- fZ := readFloat(hGTA, dwAddress + 0x38)
- vehicleID := readDWORD(hGTA, dwVehPtr + 0x22)
- return [fX, fY, fZ, vehicleID]
- }
- getVehicleRot(dwVehPtr = 0xBA18FC) {
- if (!checkHandles())
- return false
- if (dwVehPtr = ADDR_VEHICLE_PTR)
- dwVehPtr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
- dwAddress := readDWORD(hGTA, dwVehPtr + 0x14)
- if (!dwAddress)
- return false
- rotX := readFloat(hGTA, dwAddress + 0x0)
- rotY := readFloat(hGTA, dwAddress + 0x4)
- rotZ := readFloat(hGTA, dwAddress + 0x8)
- vehicleID := readDWORD(hGTA, dwVehPtr + 0x22)
- return [rotX, rotY, rotZ, vehicleID]
- }
- getSeatIDs(errorMessage := true) {
- if (!checkHandles())
- return -1
- dw := readDWORD(hGTA, 0xBA18FC)
- if (dw) {
- driver := readDWORD(hGTA, dw + 0x460)
- psg1 := readDWORD(hGTA, dw + 0x464)
- psg2 := readDWORD(hGTA, dw + 0x468)
- psg3 := readDWORD(hGTA, dw + 0x46C)
- psg4 := readDWORD(hGTA, dw + 0x470)
- psg5 := readDWORD(hGTA, dw + 0x474)
- psg6 := readDWORD(hGTA, dw + 0x478)
- psg7 := readDWORD(hGTA, dw + 0x47C)
- psg8 := readDWORD(hGTA, dw + 0x480)
- psg9 := readDWORD(hGTA, dw + 0x484)
- return [getIdByPed(driver), getIdByPed(psg1), getIdByPed(psg2), getIdByPed(psg3), getIdByPed(psg4), getIdByPed(psg5), getIdByPed(psg6), getIdByPed(psg7), getIdByPed(psg8), getIdByPed(psg9)]
- } else if (errorMessage) {
- addChatMessage2(PREFIX . "Du befindest dich nicht in einem Fahrzeug!")
- }
- return false
- }
- GetVehicleColor_func := DllCall("GetProcAddress", UInt, hModule, Str, "API_GetVehicleColor")
- GetVehicleColor(ByRef int_ColorFirst, ByRef int_ColorSecond) {
- global GetVehicleColor_func
- res := DllCall(GetVehicleColor_func, IntP, int_ColorFirst, IntP, int_ColorSecond)
- return res
- }
- createTextLabel(sText, dwColor, fX, fY, fZ, fDrawDistance := 50.0, bTestLOS := 0, wPlayerID := 0xFFFF, wVehicleID := 0xFFFF) {
- if (!checkHandles())
- return -1
- dwAddress := readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_PPOOLS_OFFSET) + 0xC)
- Loop, 2048 {
- wID := A_Index - 1
- if (!readDWORD(hGTA, dwAddress + 0xE800 + wID * 4)) {
- return callWithParams2(hGTA, dwSAMP + 0x11C0, [["i", dwAddress], ["i", wID], ["s", sText], ["i", dwColor], ["f", fX], ["f", fY], ["f", fZ]
- , ["f", fDrawDistance], ["i", bTestLOS], ["i", wPlayerID], ["i", wVehicleID]], false, true) ? wID : -1
- }
- }
- return -1
- }
- updateTextLabel(wID, sText, dwColor) {
- if (wID < 0 || wID > 2047 || !checkHandles())
- return false
- dwAddress := readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_PPOOLS_OFFSET) + 0xC)
- fX := readFloat(hGTA, dwAddress + wID * 0x1D + 0x8)
- fY := readFloat(hGTA, dwAddress + wID * 0x1D + 0xC)
- fZ := readFloat(hGTA, dwAddress + wID * 0x1D + 0x10)
- fDrawDistance := readFloat(hGTA, dwAddress + wID * 0x1D + 0x14)
- bTestLOS := readMem(hGTA, dwAddress + wID * 0x1D + 0x18, 1, "Byte")
- wPlayerID := readMem(hGTA, dwAddress + wID * 0x1D + 0x19, 2, "UShort")
- wVehicleID := readMem(hGTA, dwAddress + wID * 0x1D + 0x1B, 2, "UShort")
- return callWithParams2(hGTA, dwSAMP + 0x11C0, [["i", dwAddress], ["i", wID], ["s", sText], ["i", dwColor], ["f", fX], ["f", fY], ["f", fZ], ["f", fDrawDistance]
- , ["i", bTestLOS], ["i", wPlayerID], ["i", wVehicleID]], false, true)
- }
- deleteTextLabel(ByRef wID) {
- if (!checkHandles())
- return false
- dwAddress := readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_PPOOLS_OFFSET) + 0xC)
- if (callWithParams2(hGTA, dwSAMP + 0x12D0, [["i", dwAddress], ["i", wID]], false, true)) {
- wID := -1
- return true
- }
- return false
- }
- global SAMP_3DTEXT := 0x12C7BC
- getLabelText() {
- if (!checkHandles())
- return -1
- ADDR_3DText := readDWORD(hGTA, dwSAMP + SAMP_3DTEXT)
- TEXT_3DTEXT := readString(hGTA, ADDR_3DText, 512)
- return TEXT_3DTEXT
- }
- global iRefreshTL := 0
- global oTextLabelData := ""
- global iUpdateTickTL := 1000
- updateTextLabelData() {
- if (!checkHandles())
- return 0
- if (iRefreshTL+iUpdateTickTL > A_TickCount)
- return 1
- oTextLabelData := []
- iRefreshTL := A_TickCount
- 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
- }
- dwTextLabels := readDWORD(hGTA, dwAddress + 12)
- if (ErrorLevel || dwTextDraws==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- Loop, % 2048
- {
- i := A_Index-1
- dwIsActive := readDWORD(hGTA, dwTextLabels + 59392 + i*4)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if (dwIsActive==0)
- continue
- dwAddr := readDWORD(hGTA, dwTextLabels + i*29)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if (dwAddr==0)
- continue
- sText := readString(hGTA, dwAddr, 256)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- fX := readFloat(hGTA, dwTextLabels + i*29 +8)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- fY := readFloat(hGTA, dwTextLabels + i*29 +12)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- fZ := readFloat(hGTA, dwTextLabels + i*29 +16)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- wPlayerID := readMem(hGTA, dwTextLabels + i * 0x1D + 0x19, 2, "UShort")
- wVehicleID := readMem(hGTA, dwTextLabels + i * 0x1D + 0x1B, 2, "UShort")
- oTextLabelData[i] := Object("TEXT", sText, "XPOS", fX , "YPOS", fY , "ZPOS", fZ, "PLAYERID", wPlayerID, "VEHICLEID", wVehicleID)
- }
- ErrorLevel := ERROR_OK
- return 1
- }
- countLabels() {
- if (!updateTextLabelData())
- return -1
- j := 0
- For i, o in oTextLabelData
- {
- j += 1
- }
- return j
- }
- printLabels() {
- if (!updateTextLabelData())
- return
- For i, o in oTextLabelData
- {
- addChatMessage2("ID: " . i . ", x:" . o.XPOS . ", y:" . o.YPOS . ", z:" . o.ZPOS . ", player: " . o.PLAYERID . ", vehicle: " . o.VEHICLEID)
- addChatMessage2("{FFFFFF}" . o.TEXT)
- }
- }
- createTextDraw(sString, fX, fY, dwLetterColor := 0xFFFFFFFF, bFont := 3, fLetterWidth := 0.4, fLetterHeight := 1, bShadowSize := 0, bOutline := 1
- , dwShadowColor := 0xFF000000, bBox := 0, dwBoxColor := 0xFFFFFFFF, fBoxSizeX := 0.0, fBoxSizeY := 0.0, bLeft := 0, bRight := 0, bCenter := 1
- , bProportional := 1, wModel := 0, fXRot := 0.0, fYRot := 0.0, fZRot := 0.0, fZoom := 1.0, wColor1 := 0xFFFF, wColor2 := 0xFFFF) {
- if (StrLen(sString) > 800 || bFont > 5 || !checkHandles())
- return -1
- dwAddress := readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_PPOOLS_OFFSET) + 0x10)
- Loop, 2048 {
- wID := A_Index - 1
- if (!readDWORD(hGTA, dwAddress + wID * 4)) {
- VarSetCapacity(struct, 63, 0)
- NumPut((bBox ? 1 : 0) + (bLeft ? 2 : 0) + (bRight ? 4 : 0) + (bCenter ? 8 : 0) + (bProportional ? 16 : 0), &struct, 0, "Byte")
- NumPut(fLetterWidth, &struct, 1, "Float")
- NumPut(fLetterHeight, &struct, 5, "Float")
- NumPut(dwLetterColor, &struct, 9, "Int")
- NumPut(fBoxSizeX, &struct, 0xD, "Float")
- NumPut(fBoxSizeY, &struct, 0x11, "Float")
- NumPut(dwBoxColor, &struct, 0x15, "Int")
- NumPut(bShadowSize, &struct, 0x19, "Byte")
- NumPut(bOutline, &struct, 0x1A, "Byte")
- NumPut(dwShadowColor, &struct, 0x1B, "Int")
- NumPut(bFont, &struct, 0x1F, "Byte")
- NumPut(1, &struct, 0x20, "Byte")
- NumPut(fX, &struct, 0x21, "Float")
- NumPut(fY, &struct, 0x25, "Float")
- NumPut(wModel, &struct, 0x29, "Short")
- NumPut(fXRot, &struct, 0x2B, "Float")
- NumPut(fYRot, &struct, 0x2F, "Float")
- NumPut(fZRot, &struct, 0x33, "Float")
- NumPut(fZoom, &struct, 0x37, "Float")
- NumPut(wColor1, &struct, 0x3B, "Short")
- NumPut(wColor2, &struct, 0x3D, "Short")
- writeRaw(hGTA, pParam5, &struct, 63)
- if (ErrorLevel)
- return -1
- return callWithParams2(hGTA, dwSAMP + 0x1AE20, [["i", dwAddress], ["i", wID], ["i", pParam5], ["s", sString]], false, true) ? wID : -1
- }
- }
- return -1
- }
- moveTextDraw(wID, xPos, yPos) {
- if (wID < 0 || wID > 2047 || !checkHandles())
- return false
- dwAddress := readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_PPOOLS_OFFSET) + 0x10) + wID * 4 + (4 * (SAMP_MAX_PLAYERTEXTDRAWS + SAMP_MAX_TEXTDRAWS)))
- return writeMemory(hGTA, dwAddress + 0x98B, xPos, 4, "Float") && writeMemory(hGTA, dwAddress + 0x98F, yPos, 4, "Float")
- }
- updateTextDraw(wID, sString) {
- if (wID < 0 || wID > 2047 || StrLen(sString) > 800 || !checkHandles())
- return false
- dwAddress := readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_PPOOLS_OFFSET) + 0x10)
- return writeString(hGTA, readDWORD(hGTA, dwAddress + wID * 4 + (4 * (SAMP_MAX_PLAYERTEXTDRAWS + SAMP_MAX_TEXTDRAWS))), sString)
- }
- deleteTextDraw(ByRef wID) {
- if (wID < 0 || wID > 2047 || !checkHandles())
- return false
- dwAddress := readDWORD(hGTA, readDWORD(hGTA, readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) + SAMP_PPOOLS_OFFSET) + 0x10)
- if (callWithParams2(hGTA, dwSAMP + 0x1AD00, [["i", dwAddress], ["i", wID]], false, true)) {
- wID := -1
- return true
- }
- return false
- }
- global TEXT_DRAW_POOL_OFFSET := 0x10
- global SAMP_MAX_PLAYERTEXTDRAWS := 256
- global SAMP_MAX_TEXTDRAWS := 2048
- global iRefreshTD := 0
- global iUpdateTickTD := 1000
- global oTextDraws := []
- updateTextDraws() {
- if (!checkHandles())
- return 0
- if (iRefreshTD + iUpdateTickTD > A_TickCount)
- return 1
- oTextDraws := []
- iRefreshTD := A_TickCount
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- if (ErrorLevel || !dwAddress) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
- if (ErrorLevel || !dwAddress) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwTextDraw := readDWORD(hGTA, dwAddress + TEXT_DRAW_POOL_OFFSET)
- if (ErrorLevel || !dwTextDraw) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- Loop, % SAMP_MAX_TEXTDRAWS
- {
- i := A_Index - 1
- dwIsActive := readDWORD(hGTA, dwTextDraw + i * 4)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if (!dwIsActive)
- continue
- dwAddr := readDWORD(hGTA, dwTextDraw + i * 4 + (4 * (SAMP_MAX_PLAYERTEXTDRAWS + SAMP_MAX_TEXTDRAWS)))
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- if (!dwAddr)
- continue
- sText := readString(hGTA, dwAddr, 800)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- oTextDraws[i] := sText
- }
- ErrorLevel := ERROR_OK
- return 1
- }
- printTextDraws() {
- if (!updateTextDraws())
- return
- oReplace := ["~s~", "~r~", "~w~", "~h~", "~g~", "~y~", "~n~", "~b~", " ", " "]
- For i, o in oTextDraws
- {
- Loop % oReplace.MaxIndex() {
- o := StrReplace(o, oReplace[A_Index], " ")
- }
- addChatMessage2(o)
- }
- return
- }
- getTextDrawBySubstring(substring) {
- if (!updateTextDraws())
- return
- oReplace := ["~s~", "~r~", "~w~", "~h~", "~g~", "~y~", "~n~", "~b~", " ", " "]
- For i, o in oTextDraws
- {
- if (!InStr(o, substring))
- continue
- Loop % oReplace.MaxIndex()
- o := StrReplace(o, oReplace[A_Index], " ")
- return o
- }
- }
- restartGameEx() {
- if (!checkHandles())
- return -1
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- dwFunc := dwSAMP + 0xA060
- VarSetCapacity(injectData, 11, 0)
- 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)
- 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)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- dwAddress := readDWORD(hGTA, dwAddress + 0x3c9)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- ecx := dwAddress
- dwAddress := readDWORD(hGTA, dwAddress)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- VarSetCapacity(injectData, 24, 0)
- NumPut(0xB9, injectData, 0, "UChar")
- NumPut(ecx, injectData, 1, "UInt")
- NumPut(0xB8, injectData, 5, "UChar")
- NumPut(dwAddress, injectData, 6, "UInt")
- NumPut(0x68, injectData, 10, "UChar")
- NumPut(0, injectData, 11, "UInt")
- NumPut(0x68, injectData, 15, "UChar")
- NumPut(500, injectData, 16, "UInt")
- NumPut(0x50FF, injectData, 20, "UShort")
- NumPut(0x08, injectData, 22, "UChar")
- NumPut(0xC3, injectData, 23, "UChar")
- 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
- }
- setRestart() {
- VarSetCapacity(old, 4, 0)
- dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
- if (ErrorLevel || dwAddress==0) {
- ErrorLevel := ERROR_READ_MEMORY
- return 0
- }
- NumPut(9,old,0,"Int")
- writeRaw(hGTA, dwAddress + 957, &old, 4)
- }
- restart() {
- restartGameEx()
- disconnectEx()
- Sleep, 1000
- setRestart()
- }
- addChatMessage2(text, color := 0xFFFFFFFF, timestamp := true) {
- return !checkHandles() ? false : callWithParams2(hGTA, dwSAMP + 0x64010, [["i", readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)], ["i", timestamp ? 4 : 2]
- , ["s", text], ["i", 0], ["i", color], ["i", 0]], false, true)
- }
- global SAMP_CHAT_OFF := 0x0152
- global SAMP_CHAT_SIZE := 144
- readChatLine(line, color = 0) {
- if (!checkHandles())
- return 0
- dwPTR := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
- chat := readString(hGTA, dwPTR + SAMP_CHAT_OFF + SIZE_SAMP_CHATMSG * (99 - line), SAMP_CHAT_SIZE)
- if (!color)
- chat := RegExReplace(chat, "\{[a-fA-F0-9]{6}\}")
- return chat
- }
- setChatLine(line, text) {
- if (!checkHandles())
- return 0
- dwPTR := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
- result := writeString(hGTA, dwPTR + SAMP_CHAT_OFF + SIZE_SAMP_CHATMSG * (99 - line), text)
- return result
- }
- 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
- }
- global GAMETEXT_1 := 0xBAAD40
- global GAMETEXT_2 := 0xBAADC0
- global GAMETEXT_3 := 0xBAAE40
- global GAMETEXT_4 := 0xBAAEC0
- global GAMETEXT_5 := 0xBAABC0
- getGameText(type = 1, length = 12) {
- if (!checkHandles())
- return ""
- 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
- }
- getPlayerFPS() {
- if (!checkHandles())
- return -1
- fFPS := readFloat(hGTA, 0xB7CB50)
- if (ErrorLevel) {
- ErrorLevel := ERROR_READ_MEMORY
- return -1
- }
- ErrorLevel := ERROR_OK
- return Round(fFPS)
- }
- getFPS() {
- if (!checkHandles())
- return 0
- static timev := A_TickCount
- static val := readDWORD(hGTA, 0xB7CB4C)
- temp := readDWORD(hGTA, 0xB7CB4C)
- ret := (temp-val)/(A_TickCount-timev)*1000
- timev := A_TickCount
- val := temp
- return Round(ret)
- }
- instruction := 0
- fpsUnlock() {
- if (!checkHandles())
- return 0
- global instruction
- instruction := readMem(hGTA, dwSAMP + 0x9D9D0, 4, "UInt")
- return writeMemory(hGTA, dwSAMP + 0x9D9D0, 0x5051FF15, 4, "UChar")
- }
- fpsLock() {
- if (!checkHandles())
- return 0
- global instruction
- if (instruction) {
- return writeMemory(hGTA, dwSAMP + 0x9D9D0, instruction, 4, "UInt")
- } else {
- return false
- }
- }
- blockDialog() {
- if (!checkHandles()) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return false
- }
- VarSetCapacity(injectBytecode, 7, 0)
- Loop, 7 {
- NumPut(0x90, injectBytecode, A_Index - 1, "UChar")
- }
- return writeRaw(hGTA, dwSAMP + 0x6C014, &injectBytecode, 7)
- }
- unblockDialog() {
- if (!checkHandles()) {
- ErrorLevel := ERROR_INVALID_HANDLE
- return false
- }
- bytecodes := [0xC7, 0x46, 0x28, 0x1, 0x0, 0x0, 0x0]
- VarSetCapacity(injectBytecode, 7, 0)
- for i, o in bytecodes
- NumPut(o, injectBytecode, i - 1, "UChar")
- return writeRaw(hGTA, dwSAMP + 0x6C014, &injectBytecode, 7)
- }
- DownloadBin(url, byref buf) {
- if (!DllCall("LoadLibrary", "str", "wininet") || !(h := DllCall("wininet\InternetOpen", "str", a, "uint", 1, "ptr", 0, "ptr", 0, "uint", 0, "ptr")))
- return 0
- c := s := 0
- if (f := DllCall("wininet\InternetOpenUrl", "ptr", h, "str", url, "ptr", 0, "uint", 0, "uint", 0x80003000, "ptr", 0, "ptr")) {
- while (DllCall("wininet\InternetQueryDataAvailable", "ptr", f, "uint*", s, "uint", 0, "ptr", 0) && s>0) {
- VarSetCapacity(b, c+s, 0)
- if (c>0)
- DllCall("RtlMoveMemory", "ptr", &b, "ptr", &buf, "ptr", c)
- DllCall("wininet\InternetReadFile", "ptr", f, "ptr", &b+c, "uint", s, "uint*", r)
- c += r
- VarSetCapacity(buf, c, 0)
- if (c>0)
- DllCall("RtlMoveMemory", "ptr", &buf, "ptr", &b, "ptr", c)
- }
- DllCall("wininet\InternetCloseHandle", "ptr", f)
- }
- DllCall("wininet\InternetCloseHandle", "ptr", h)
- return c
- }
- DownloadToString(url, head, encoding = "utf-8") {
- static a := "AutoHotkey/" A_AhkVersion
- if (!DllCall("LoadLibrary", "str", "wininet") || !(h := DllCall("wininet\InternetOpen", "str", a, "uint", 1, "ptr", 0, "ptr", 0, "uint", 0, "ptr")))
- return 0
- c := s := 0, o := ""
- if (f := DllCall("wininet\InternetOpenUrl", "ptr", h, "str", url, "str", head, "int", -1, "uint", 0x80083000, "ptr", 0, "ptr")) {
- while (DllCall("wininet\InternetQueryDataAvailable", "ptr", f, "uint*", s, "uint", 0, "ptr", 0) && s > 0) {
- VarSetCapacity(b, s, 0)
- DllCall("wininet\InternetReadFile", "ptr", f, "ptr", &b, "uint", s, "uint*", r)
- o .= StrGet(&b, r >> (encoding = "utf-16" || encoding = "cp1200"), encoding)
- }
- DllCall("wininet\InternetCloseHandle", "ptr", f)
- }
- DllCall("wininet\InternetCloseHandle", "ptr", h)
- return o
- }
- URLDownloadToVar(url, showerror := false) {
- hObject := ComObjCreate("WinHttp.WinHttpRequest.5.1")
- try {
- hObject.Open("GET", url)
- hObject.SetTimeouts(0, 2000, 2000, 2000)
- hObject.Send()
- data := hObject.ResponseText
- } catch e {
- if (showerror == true) {
- addChatMessage2(PREFIX . "Aktuell liegt ein Fehler in der Verbindung zum Server vor!")
- }
- return "ERROR_CONNECTION"
- }
- return data
- }
- Unzip(sZip, sUnz) {
- fso := ComObjCreate("Scripting.FileSystemObject")
- psh := ComObjCreate("Shell.Application")
- zippedItems := psh.Namespace( sZip ).items().count
- psh.Namespace( sUnz ).CopyHere( psh.Namespace( sZip ).items, 4|16 )
- Loop {
- Sleep, 50
- unzippedItems := psh.Namespace( sUnz ).items().count
- IfEqual, zippedItems, %unzippedItems%
- break
- }
- }
- PlayerInput(text) {
- global alternativePlayerInput
- if (alternativePlayerInput) {
- Sleep, 100
- Suspend, On
- SendInput, t^a{backspace}%text%
- Input, var, V, {Enter}{Esc}{LButton}
- SendInput, {End}+{Home}{Del}{Esc}
- Suspend, Off
- } else {
- KeyWait, Enter
- SendInput, t^a{backspace}%text%
- Input, var, V, {Enter}{Esc}{LButton}
- SendInput, {End}+{Home}{Del}{Esc}
- KeyWait, Enter
- }
- return var
- }
- getFullName(name, showerror := false) {
- if name is number
- {
- name := getPlayerNameById(name)
- if (name == "") {
- if (showerror)
- addChatMessage2(PREFIX . "Der Spieler mit der ID " . SECCOL . name . " {FFFFFF}ist nicht auf dem Server!")
- return ""
- } else {
- return name
- }
- } else {
- name := getPlayerIdByName(name)
- if (name == -1) {
- if (showerror)
- addChatMessage2(PREFIX . "Der Spieler " . SECCOL . name . " {FFFFFF}ist nicht auf dem Server!")
- return ""
- } else {
- return getPlayerNameById(name)
- }
- }
- }
- sendClientMessage(message) {
- if (StrLen(message) > 144) {
- subMessage := SubStr(message, 1, 141)
- if (RegExMatch(subMessage, "(.+)({\S{6}})(\s*)$", message_)) {
- addChatMessage2(message_1 . "...")
- sendClientMessage(message_2 . "..." . message_3 . SubStr(message, 142))
- } else if (RegExMatch(subMessage, "(.+)({\S{0,6})$", message_)) {
- addChatMessage2(message_1 . "...")
- subMessage2 := SubStr(message, 142)
- if (RegExMatch(subMessage2, "^(\S{0,6}})(.+)", message2_)) {
- sendClientMessage(message_2 . message2_1 . "..." . message2_2)
- } else {
- sendClientMessage("..." . subMessage2)
- }
- } else {
- addChatMessage2(subMessage . "...")
- color := ""
- if (RegExMatch(subMessage, "(.*)({\S{6}})(.*)", message_)) {
- color := message_2
- }
- sendClientMessage(color . "..." . SubStr(message, 142))
- }
- } else {
- addChatMessage2(message)
- }
- }
- 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 " "Dil" "do" "", 11: "" "Dil" "do" "", 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/" "U" "zi" "", 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"
- }
- getLocation() {
- zone := getPlayerZone()
- city := getPlayerCity()
- if (city == "" || city == "Unbekannt") {
- return zone
- } else {
- return zone . ", " . city
- }
- }
- formatNumber(_number) {
- StringReplace, _number, _number, -
- IfEqual, ErrorLevel, 0, SetEnv Sign, -
- Loop, Parse, _number, .
- if (A_Index = 1) {
- len := StrLen(A_LoopField)
- Loop, Parse, A_LoopField
- if (Mod(len-A_Index,3) = 0 and A_Index != len) {
- x .= A_LoopField "."
- } else {
- x .= A_LoopField
- }
- } else {
- Return Sign x "." A_LoopField
- }
- Return Sign x
- }
- formatTime(time) {
- hours := Floor(time / 60 / 60)
- minutes := Floor(time / 60) - hours * 60
- seconds := time - minutes * 60 - hours * 60 * 60
- time := ""
- if (hours > 0) {
- time .= hours . "h"
- if (minutes > 0) {
- time .= ", "
- } else if (seconds > 0) {
- time .= ", "
- }
- }
- if (minutes > 0) {
- time .= minutes . "min"
- if (seconds > 0) {
- time .= ", "
- }
- }
- if (seconds > 0 || (minutes == 0 && hours == 0)) {
- time .= seconds . "s"
- }
- return time
- }
- getDayTime() {
- FormatTime, time,, HH
- if (time >= 11 && time < 18) {
- return "Tag"
- } else if (time >= 18) {
- return "Abend"
- } else if (time >= 0 && time < 11) {
- return "Morgen"
- }
- return ""
- }
- getUnixTimestamp(time_orig) {
- StringLeft, now_year, time_orig, 4
- StringMid, now_month, time_orig, 5, 2
- StringMid, now_day, time_orig, 7, 2
- StringMid, now_hour, time_orig, 9, 2
- StringMid, now_min, time_orig, 11, 2
- StringRight, now_sec, time_orig, 2
- year_sec := 31536000 * (now_year - 1970)
- leap_days := (now_year - 1972) / 4 + 1
- Transform, leap_days, Floor, %leap_days%
- this_leap := now_year/4
- Transform, this_leap_round, Floor, %this_leap%
- if (this_leap = this_leap_round) {
- if (now_month <= 2) {
- leap_days--
- }
- }
- leap_sec := leap_days * 86400
- if (now_month == 01)
- month_sec = 0
- if (now_month == 02)
- month_sec = 2678400
- if (now_month == 03)
- month_sec = 5097600
- if (now_month == 04)
- month_sec = 7776000
- if (now_month == 05)
- month_sec = 10368000
- if (now_month == 06)
- month_sec = 13046400
- if (now_month == 07)
- month_sec = 15638400
- if (now_month == 08)
- month_sec = 18316800
- if (now_month == 09)
- month_sec = 20995200
- if (now_month == 10)
- month_sec = 23587200
- if (now_month == 11)
- month_sec = 26265600
- if (now_month == 12)
- month_sec = 28857600
- day_sec := (now_day - 1) * 86400
- hour_sec := now_hour * 3600
- min_sec := now_min * 60
- date_sec := year_sec + month_sec + day_sec + leap_sec + hour_sec + min_sec + now_sec
- return date_sec
- }
- getDistanceBetween(posX, posY, posZ, _posX, _posY, _posZ, _posRadius) {
- X := posX -_posX
- Y := posY -_posY
- Z := posZ -_posZ
- if (((X < _posRadius) && (X > -_posRadius)) && ((Y < _posRadius) && (Y > -_posRadius)) && ((Z < _posRadius) && (Z > -_posRadius)))
- return TRUE
- return FALSE
- }
- getDistanceBetweenTwoPoints(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]))
- }
- getDistanceToPoint(posX, posY, posZ, _posX, _posY, _posZ) {
- return Sqrt((posX - _posX) ** 2 + (posY - _posY) ** 2 + (posZ - _posZ) ** 2)
- }
- IniRead(fileName, section, key, default := 0) {
- IniRead, var, %fileName%, %section%, %key%, %default%
- return var
- }
- getUserFriendlyHotkeyName(hk) {
- StringUpper, hk, hk
- hk := StrReplace(hk, "~", "")
- hk := StrReplace(hk, "+", "UMSCHALT+")
- hk := StrReplace(hk, "^", "STRG+")
- hk := StrReplace(hk, "!", "ALT+")
- return hk
- }
- min(var1, var2) {
- return var1 < var2 ? var1 : var2
- }
- max(var1, var2) {
- return var1 > var2 ? var1 : var2
- }
- compareVersions(v1, v2) {
- v1Parts := StrSplit(v1, ".")
- v2Parts := StrSplit(v2, ".")
- i := 0
- length := max(v1Parts.Length(), v2Parts.Length())
- Loop, %length%
- {
- v1Part := i < v1Parts.Length() ? v1Parts[A_Index] : 0
- v2Part := i < v2Parts.Length() ? v2Parts[A_Index] : 0
- if (v1Part < v2Part)
- return -1
- if (v1Part > v2Part)
- return 1
- i++
- }
- return 0
- }
- global fractions := {"": [0, "Zivilist"], "lspd": [1, "LSPD"], "fbi": [2, "FBI"], "lvpd": [3, "LVPD"], "lsmd": [4, "LSMD"], "russen": [5, "Russen Mafia"], "yakuza": [6, "Yakuza"], "regierung": [7, "Regierung"], "agency": [8, "Agency"], "news": [9, "San News"], "grove": [10, "Grove Street"], "ballas": [11, "Ballas"], "lcm": [12, "LCM"], "oamt": [13, "Ordnungsamt"], "gmbh": [14, "Transport GmbH"], "rifa": [15, "S.F. Rifa"], "vagos": [16, "Vagos"], "triaden": [17, "Triaden"], "safd": [19, "SAFD"]}
- getFraktionByID(id) {
- fraction := ""
- for index, entry in fractions {
- if (entry[1] == id) {
- fraction := entry[2]
- break
- }
- }
- return fraction
- }
- getFraktionColorByID(id) {
- fractionColor := ""
- if (id == 1) {
- fractionColor := "{217BFF}"
- } else if (id == 2) {
- fractionColor := "{0E00DC}"
- } else if (id == 4) {
- fractionColor := "{AA3333}"
- } else if (id == 5) {
- fractionColor := "{85847F}"
- } else if (id == 6) {
- fractionColor := "{FFFFFF}"
- } else if (id == 10) {
- fractionColor := "{078C09}"
- } else if (id == 11) {
- fractionColor := "{9300FF}"
- } else if (id == 12) {
- fractionColor := "{0046FF}"
- } else if (id == 15) {
- fractionColor := "{00DCFF}"
- } else if (id == 16) {
- fractionColor := "{FFFF00}"
- } else if (id == 17) {
- fractionColor := "{FF8000}"
- }
- return fractionColor
- }
- getFraktionColorByName(name) {
- fractionColor := ""
- if (InStr(name, "LSPD")) {
- fractionColor := "{217BFF}"
- } else if (InStr(name, "FBI")) {
- fractionColor := "{0E00DC}"
- } else if (InStr(name, "LVPD")) {
- fractionColor := "{AA3333}"
- } else if (InStr(name, "Russen")) {
- fractionColor := "{85847F}"
- } else if (InStr(name, "Yakuza")) {
- fractionColor := "{FFFFFF}"
- } else if (InStr(name, "Grove")) {
- fractionColor := "{078C09}"
- } else if (InStr(name, "Ballas")) {
- fractionColor := "{9300FF}"
- } else if (InStr(name, "Chickos")) {
- fractionColor := "{0046FF}"
- } else if (InStr(name, "Rifa")) {
- fractionColor := "{00DCFF}"
- } else if (InStr(name, "Vagos")) {
- fractionColor := "{FFFF00}"
- } else if (InStr(name, "Triaden")) {
- fractionColor := "{FF8000}"
- }
- return fractionColor
- }
- getFraktionNameShort(name) {
- nameShort := ""
- if (InStr(name, "Russen")) {
- nameShort := "Russen"
- } else if (InStr(name, "Yakuza")) {
- nameShort := "Yaku"
- } else if (InStr(name, "Grove")) {
- nameShort := "GS"
- } else if (InStr(name, "Ballas")) {
- nameShort := "Ballas"
- } else if (InStr(name, "Chickos")) {
- nameShort := "LCM"
- } else if (InStr(name, "Rifa")) {
- nameShort := "Rifa"
- } else if (InStr(name, "Vagos")) {
- nameShort := "Vagos"
- } else if (InStr(name, "Triaden")) {
- nameShort := "Triaden"
- }
- return nameShort
- }
- getFraktionBySkinID(id) {
- fraction := 0
- skins := {5: [43, 111, 112, 113, 124, 125, 126, 127, 258, 272, 40], 6: [121, 122, 123, 186, 203, 204, 228, 169, 224], 10: [105, 106, 107, 269, 271, 65, 270], 11: [102, 103, 104, 293, 13], 12: [46, 47, 48, 98, 185, 223, 249, 214], 15: [114, 115, 116, 173, 174, 175, 184, 273, 195, 298], 16: [108, 109, 110, 292, 91], 17: [49, 117, 118, 120, 208, 263]}
- for fname, fskins in skins
- {
- for index, fskin in fskins
- {
- if (fskin == id) {
- fraction := fname
- break, 2
- }
- }
- }
- return fraction
- }
- callWithParams2(hProcess, dwFunc, aParams, bCleanupStack = true, bThisCall = false, bReturn = false, sDatatype = "Char") {
- if (!hProcess || !dwFunc)
- return false
- dataOffset := 0
- i := aParams.MaxIndex()
- bytesUsed := 0
- bytesMax := 5120
- dwLen := i * 5 + bCleanupStack * 3 + bReturn * 5 + 6
- VarSetCapacity(injectData, dwLen, 0)
- while (i > 0) {
- if (aParams[i][1] == "i" || aParams[i][1] == "p" || aParams[i][1] == "f")
- value := aParams[i][2]
- else if (aParams[i][1] == "s") {
- if (bytesMax - bytesUsed < StrLen(aParams[i][2]))
- return false
- value := pMemory + bytesUsed
- writeString(hProcess, value, aParams[i][2])
- bytesUsed += StrLen(aParams[i][2]) + 1
- if (ErrorLevel)
- return false
- }
- else
- return false
- NumPut((bThisCall && i == 1 ? 0xB9 : 0x68), injectData, dataOffset, "UChar")
- NumPut(value, injectData, ++dataOffset, aParams[i][1] == "f" ? "Float" : "Int")
- dataOffset += 4
- i--
- }
- offset := dwFunc - (pInjectFunc + dataOffset + 5)
- NumPut(0xE8, injectData, dataOffset, "UChar")
- NumPut(offset, injectData, ++dataOffset, "Int")
- dataOffset += 4
- if (bReturn) {
- NumPut(sDatatype = "Char" ? 0xA2 : 0xA3, injectData, dataOffset, "UChar")
- NumPut(pParam1, injectData, ++dataOffset, "UInt")
- dataOffset += 4
- }
- if (bCleanupStack) {
- NumPut(0xC483, injectData, dataOffset, "UShort")
- dataOffset += 2
- NumPut((aParams.MaxIndex() - bThisCall) * 4, injectData, dataOffset, "UChar")
- dataOffset++
- }
- NumPut(0xC3, injectData, dataOffset, "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)
- if (bReturn)
- return readMem(hGTA, pParam1, 4, sDatatype)
- return true
- }
- getWeaponByID(id)
- {
- if (oweaponNames[id])
- return oweaponNames[id]
- else
- return "Unbekannt"
- }
- getAttackerWeapon()
- {
- if(!checkHandles())
- return 0
- dwLocalPED := readDWORD(hGTA, 0xB6F5F0)
- dwAttackerWeapon := readDWORD(hGTA, dwLocalPED + 0x760)
- return getWeaponByID(dwAttackerWeapon)
- }
- IsNumeric(str) {
- cleanedStr := RegExReplace(str, "[^0-9]")
- return (cleanedStr = str)
- }
- ShuffleWord(word) {
- letters := StrSplit(word, "")
- ShuffleArray(letters)
- shuffledWord := ""
- Loop, % letters.MaxIndex()
- {
- shuffledWord := shuffledWord . letters[A_Index]
- }
- return shuffledWord
- }
- ShuffleArray(ByRef arr) {
- Random, seed, 0, 999999
- Loop, % arr.MaxIndex() {
- Random, index1, 1, arr.MaxIndex()
- Random, index2, 1, arr.MaxIndex()
- temp := arr[index1]
- arr[index1] := arr[index2]
- arr[index2] := temp
- }
- }
- Evaluate(string) {
- static sc := ComObjCreate("ScriptControl")
- sc.Language := "JScript"
- string := "a = " string ";"
- sc.ExecuteStatement(string)
- new := sc.Eval("a")
- return new
- }
- isConnectedToRPG() {
- if (isSAMPAvailable()) {
- servername := getServerName()
- if (inStr(servername, "GTA-City") && inStr(servername, "Reallife")) {
- if (getServerIP() == "162.55.237.232" && getServerPort() == "7777") {
- return true
- }
- }
- }
- return true
- }
- class JSON
- {
- class Load extends JSON.Functor
- {
- Call(self, ByRef text, reviver:="")
- {
- this.rev := IsObject(reviver) ? reviver : false
- this.keys := this.rev ? {} : false
- static quot := Chr(34), bashq := "\" . quot
- , json_value := quot . "{[01234567890-tfn"
- , json_value_or_array_closing := quot . "{[]01234567890-tfn"
- , object_key_or_object_closing := quot . "}"
- key := ""
- is_key := false
- root := {}
- stack := [root]
- next := json_value
- pos := 0
- while ((ch := SubStr(text, ++pos, 1)) != "") {
- if InStr(" `t`r`n", ch)
- continue
- if !InStr(next, ch, 1)
- this.ParseError(next, text, pos)
- holder := stack[1]
- is_array := holder.IsArray
- if InStr(",:", ch) {
- next := (is_key := !is_array && ch == ",") ? quot : json_value
- } else if InStr("}]", ch) {
- ObjRemoveAt(stack, 1)
- next := stack[1]==root ? "" : stack[1].IsArray ? ",]" : ",}"
- } else {
- if InStr("{[", ch) {
- static json_array := Func("Array").IsBuiltIn || ![].IsArray ? {IsArray: true} : 0
- (ch == "{")
- ? ( is_key := true
- , value := {}
- , next := object_key_or_object_closing )
- : ( value := json_array ? new json_array : []
- , next := json_value_or_array_closing )
- ObjInsertAt(stack, 1, value)
- if (this.keys)
- this.keys[value] := []
- } else {
- if (ch == quot) {
- i := pos
- while (i := InStr(text, quot,, i+1)) {
- value := StrReplace(SubStr(text, pos+1, i-pos-1), "\\", "\u005c")
- static tail := A_AhkVersion<"2" ? 0 : -1
- if (SubStr(value, tail) != "\")
- break
- }
- if (!i)
- this.ParseError("'", text, pos)
- value := StrReplace(value, "\/", "/")
- , value := StrReplace(value, bashq, quot)
- , value := StrReplace(value, "\b", "`b")
- , value := StrReplace(value, "\f", "`f")
- , value := StrReplace(value, "\n", "`n")
- , value := StrReplace(value, "\r", "`r")
- , value := StrReplace(value, "\t", "`t")
- pos := i
- i := 0
- while (i := InStr(value, "\",, i+1)) {
- if !(SubStr(value, i+1, 1) == "u")
- this.ParseError("\", text, pos - StrLen(SubStr(value, i+1)))
- uffff := Abs("0x" . SubStr(value, i+2, 4))
- if (A_IsUnicode || uffff < 0x100)
- value := SubStr(value, 1, i-1) . Chr(uffff) . SubStr(value, i+6)
- }
- if (is_key) {
- key := value, next := ":"
- continue
- }
- } else {
- value := SubStr(text, pos, i := RegExMatch(text, "[\]\},\s]|$",, pos)-pos)
- static number := "number", integer :="integer"
- if value is %number%
- {
- if value is %integer%
- value += 0
- }
- else if (value == "true" || value == "false")
- value := %value% + 0
- else if (value == "null")
- value := ""
- else
- this.ParseError(next, text, pos, i)
- pos += i-1
- }
- next := holder==root ? "" : is_array ? ",]" : ",}"
- }
- is_array? key := ObjPush(holder, value) : holder[key] := value
- if (this.keys && this.keys.HasKey(holder))
- this.keys[holder].Push(key)
- }
- }
- return this.rev ? this.Walk(root, "") : root[""]
- }
- ParseError(expect, ByRef text, pos, len:=1)
- {
- static quot := Chr(34), qurly := quot . "}"
- line := StrSplit(SubStr(text, 1, pos), "`n", "`r").Length()
- col := pos - InStr(text, "`n",, -(StrLen(text)-pos+1))
- msg := Format("{1}`n`nLine:`t{2}`nCol:`t{3}`nChar:`t{4}"
- , (expect == "") ? "Extra data"
- : (expect == "'") ? "Unterminated string starting at"
- : (expect == "\") ? "Invalid \escape"
- : (expect == ":") ? "Expecting ':' delimiter"
- : (expect == quot) ? "Expecting object key enclosed in double quotes"
- : (expect == qurly) ? "Expecting object key enclosed in double quotes or object closing '}'"
- : (expect == ",}") ? "Expecting ',' delimiter or object closing '}'"
- : (expect == ",]") ? "Expecting ',' delimiter or array closing ']'"
- : InStr(expect, "]") ? "Expecting JSON value or array closing ']'"
- : "Expecting JSON value(string, number, true, false, null, object or array)"
- , line, col, pos)
- static offset := A_AhkVersion<"2" ? -3 : -4
- throw Exception(msg, offset, SubStr(text, pos, len))
- }
- Walk(holder, key)
- {
- value := holder[key]
- if IsObject(value) {
- for i, k in this.keys[value] {
- v := this.Walk(value, k)
- if (v != JSON.Undefined)
- value[k] := v
- else
- ObjDelete(value, k)
- }
- }
- return this.rev.Call(holder, key, value)
- }
- }
- class Dump extends JSON.Functor
- {
- Call(self, value, replacer:="", space:="")
- {
- this.rep := IsObject(replacer) ? replacer : ""
- this.gap := ""
- if (space) {
- static integer := "integer"
- if space is %integer%
- Loop, % ((n := Abs(space))>10 ? 10 : n)
- this.gap .= " "
- else
- this.gap := SubStr(space, 1, 10)
- this.indent := "`n"
- }
- return this.Str({"": value}, "")
- }
- Str(holder, key)
- {
- value := holder[key]
- if (this.rep)
- value := this.rep.Call(holder, key, ObjHasKey(holder, key) ? value : JSON.Undefined)
- if IsObject(value) {
- static type := A_AhkVersion<"2" ? "" : Func("Type")
- if (type ? type.Call(value) == "Object" : ObjGetCapacity(value) != "") {
- if (this.gap) {
- stepback := this.indent
- this.indent .= this.gap
- }
- is_array := value.IsArray
- if (!is_array) {
- for i in value
- is_array := i == A_Index
- until !is_array
- }
- str := ""
- if (is_array) {
- Loop, % value.Length() {
- if (this.gap)
- str .= this.indent
- v := this.Str(value, A_Index)
- str .= (v != "") ? v . "," : "null,"
- }
- } else {
- colon := this.gap ? ": " : ":"
- for k in value {
- v := this.Str(value, k)
- if (v != "") {
- if (this.gap)
- str .= this.indent
- str .= this.Quote(k) . colon . v . ","
- }
- }
- }
- if (str != "") {
- str := RTrim(str, ",")
- if (this.gap)
- str .= stepback
- }
- if (this.gap)
- this.indent := stepback
- return is_array ? "[" . str . "]" : "{" . str . "}"
- }
- } else
- return ObjGetCapacity([value], 1)=="" ? value : this.Quote(value)
- }
- Quote(string)
- {
- static quot := Chr(34), bashq := "\" . quot
- if (string != "") {
- string := StrReplace(string, "\", "\\")
- , string := StrReplace(string, quot, bashq)
- , string := StrReplace(string, "`b", "\b")
- , string := StrReplace(string, "`f", "\f")
- , string := StrReplace(string, "`n", "\n")
- , string := StrReplace(string, "`r", "\r")
- , string := StrReplace(string, "`t", "\t")
- static rx_escapable := A_AhkVersion<"2" ? "O)[^\x20-\x7e]" : "[^\x20-\x7e]"
- while RegExMatch(string, rx_escapable, m)
- string := StrReplace(string, m.Value, Format("\u{1:04x}", Ord(m.Value)))
- }
- return quot . string . quot
- }
- }
- Undefined[]
- {
- get {
- static empty := {}, vt_empty := ComObject(0, &empty, 1)
- return vt_empty
- }
- }
- class Functor
- {
- __Call(method, ByRef arg, args*)
- {
- if IsObject(method)
- return (new this).Call(method, arg, args*)
- else if (method == "")
- return (new this).Call(arg, args*)
- }
- }
- }
- icon = src\images\favicon.ico
- IfExist, %icon%
- Menu, Tray, Icon, %icon%
- global cWhite := "{FFFFFF}"
- global cBlue := "{2090B3}"
- global cGrey := "{BDBDBD}"
- global cRed := "{FF0000}"
- global cGreen := "{00962B}"
- global cYellow := "{FFEE00}"
- global cOrange := "{FF8100}"
- global cPrimar := "{E700FF}"
- global cSecond := "{5E5E5E}"
- Gui, Color, 212121
- Gui, -Caption
- Gui, Font, S14 CDefault, Verdana
- Gui, Add, Text, x0 y15 w300 h75 +Center cFFFFFF, Der Keybinder wird startet ... `nHabe ein wenig Geduld!
- Gui, Show, w300 h75, Start - %projectName% | Version: %version%
- global firstStart := false
- global firstSync := false
- global keybinderStart := 0
- keybinderStart := A_Hour . ":" . A_Min . ":" . A_Sec
- global bk := false
- global reuse1time := -1
- global reuse2time := -1
- global reuse3time := -1
- global reuse4time := -1
- global reuse5time := -1
- global reusenFishCount := 0
- global reusenFishMoney := 0
- global bonusgehalt_timer := -1
- global bonusgehalt := 0
- global storeRobCounter := -1
- global drug_timer := -1
- global pak_timer := -1
- global autoUseToggle := false
- global isPaintball := false
- global killstreakPaintball := 0
- global findActive := false
- global findPlayer := -1
- global findCounter := 0
- global findShowActive := false
- global findShowPlayer := -1
- global findShowFindPlayer := -1
- global findShowCounter := 0
- global countdownActive := false
- global countdownChat := ""
- global countdownTime := 0
- global autosyncCounter := 0
- global tempomatActive := false
- global currentSpeed := 0
- global sellFishTimeout_ = true
- global towersTimeout_ := true
- global array_Towers := []
- array_Towers[1] := [339.979,-1843.14,3.5331]
- array_Towers[2] := [890.485,-1256.74,14.971]
- array_Towers[3] := [1917.59,-1408.28,13.5703]
- array_Towers[4] := [2086.42,-2214.92,13.5469]
- array_Towers[5] := [2796.84,-1453.18,40.0446]
- array_Towers[6] := [2857.51,920.292,10.75]
- array_Towers[7] := [1626.29,994.515,10.8203]
- array_Towers[8] := [2184.78,2041.66,16.322]
- array_Towers[9] := [1363.84,1253.2,10.8203]
- array_Towers[10] := [49.977,1168.43,18.6641]
- array_Towers[11] := [2496.15,2508.32,18.5881]
- array_Towers[12] := [-2505.01,767.441,35.1719]
- array_Towers[13] := [-1898,428.438,35.1719]
- array_Towers[14] := [-1582.94,-663.128,14.1484]
- array_Towers[15] := [-2397.48,-575.508,132.117]
- array_Towers[16] := [-998.939,-1128.46,129.213]
- array_Towers[17] := [1370.25,329.518,19.4534]
- global trashDialog := false
- global gateDialog := false
- global gateTimeout_ := true
- global array_Gates := []
- loadGates()
- global sprayTimeout_ := true
- global array_Sprays := []
- loadSprays()
- global array_Trashcan := []
- loadTrashcans()
- global cookTimeout_ := false
- global array_Cook := []
- array_Cook[1] := [376.3651, -61.0868, 1001.5078]
- array_Cook[2] := [377.7927, -57.4440, 1001.5078]
- array_Cook[3] := [369.5478, -6.0176, 1001.8589]
- array_Cook[4] := [374.0126, -113.5144, 1001.4922]
- global kettenTimeout_ := false
- global array_Ketten := []
- array_Ketten[1] := [1211.8478, -905.8502,42.9267, 3.1]
- array_Ketten[2] := [1026.3337, -1350.5065, 13.7266, 3.1]
- array_Ketten[3] := [2411.7668, -1490.4229, 24.0000, 3.1]
- array_Ketten[4] := [2113.8560, -1788.3135, 13.5608, 3.1]
- global zollTimeout_ := true
- global array_Zoll := []
- array_Zoll[1] := [1733.4700, 546.3700, 26.00]
- array_Zoll[2] := [1741.1100, 543.4700, 26.00]
- array_Zoll[3] := [1744.0300, 523.6300, 27.00]
- array_Zoll[4] := [1752.7100, 521.6900, 27.00]
- array_Zoll[5] := [512.5400, 476.6200, 18.00]
- array_Zoll[6] := [529.2200, 467.2100, 18.00]
- array_Zoll[7] := [-159.7900, 414.1800, 11.00]
- array_Zoll[8] := [-157.4400, 392.2400, 11.00]
- array_Zoll[9] := [-1408.2300, 824.1900, 47.00]
- array_Zoll[10] := [-1414.7700, 803.5900, 47.00]
- array_Zoll[11] := [-2695.0500, 1284.6300, 55.00]
- array_Zoll[12] := [-2686.3400, 1284.2400, 55.00]
- array_Zoll[13] := [-2676.6200, 1265.3700, 55.00]
- array_Zoll[14] := [-2668.1800, 1264.9100, 55.00]
- array_Zoll[15] := [-963.0800, -343.0500, 36.00]
- array_Zoll[16] := [-968.0000, -322.3300, 36.00]
- array_Zoll[17] := [-71.7600, -892.4700, 15.00]
- array_Zoll[18] := [-68.7400, -867.9600, 15.00]
- array_Zoll[19] := [100.2000, -1284.3700, 14.00]
- array_Zoll[20] := [94.4000, -1277.8200, 14.00]
- array_Zoll[21] := [97.1900, -1254.1100, 14.00]
- array_Zoll[22] := [94.6900, -1245.5900, 14.00]
- array_Zoll[23] := [42.7100, -1537.9800, 5.00]
- array_Zoll[24] := [58.0200, -1524.9300, 5.00]
- global gasTimeout_ := true
- global array_Gas := []
- array_Gas[1] := [700.0000, -1930.0000, 0.0000]
- array_Gas[2] := [1833.0000, -2431.0000, 14.0000]
- array_Gas[3] := [1555.0000, -1605.0000, 14.0000]
- array_Gas[4] := [615.0000, 1689.0000, 7.0000]
- array_Gas[5] := [-1328.0000, 2677.0000, 40.0000]
- array_Gas[6] := [1596.0000, 2199.0000, 11.0000]
- array_Gas[7] := [2202.0000, 2474.0000, 11.0000]
- array_Gas[8] := [2114.0000, 920.0000, 11.0000]
- array_Gas[9] := [-2408.0000, 976.0000, 45.0000]
- array_Gas[10] := [-2029.0000, 156.0000, 29.0000]
- array_Gas[11] := [-1676.0000, 414.0000, 7.0000]
- array_Gas[12] := [1004.0000, -939.0000, 43.0000]
- array_Gas[13] := [1944.0000, -1773.0000, 14.0000]
- array_Gas[14] := [-90.0000, -1169.0000, 3.0000]
- array_Gas[15] := [-1605.0000, -2714.0000, 49.0000]
- array_Gas[16] := [-2243.0000, -2560.0000, 32.0000]
- array_Gas[17] := [1381.0000, 457.0000, 20.0000]
- array_Gas[18] := [70.0000, 1218.0000, 19.0000]
- global fishTimeout_ := true
- global array_Fish := []
- array_Fish[1] := [1610.3545, 599.4703, 7.7813]
- array_Fish[2] := [1606.8572, 599.4689, 7.7802]
- array_Fish[3] := [1603.3273, 599.4689, 7.7802]
- array_Fish[4] := [1599.8569, 599.8057, 7.7802]
- array_Fish[5] := [1596.3372, 599.7783, 7.7813]
- array_Fish[6] := [1592.8359, 599.4689, 7.7813]
- array_Fish[7] := [1589.3557, 599.4712, 7.7813]
- array_Fish[8] := [1585.8787, 599.4683, 7.7802]
- array_Fish[9] := [403.8053, -2088.7981, 7.8359]
- array_Fish[10] := [398.7274, -2088.7927, 7.8359]
- array_Fish[11] := [396.1470, -2088.7983, 7.8359]
- array_Fish[12] := [391.0635, -2088.7979, 7.8359]
- array_Fish[13] := [383.3910, -2088.6040, 7.8359]
- array_Fish[14] := [374.9511, -2088.6829, 7.8359]
- array_Fish[15] := [369.8314, -2088.7937, 7.8359]
- array_Fish[16] := [367.2829, -2088.7981, 7.8359]
- array_Fish[17] := [362.2083, -2088.7891, 7.8359]
- array_Fish[18] := [354.5507, -2088.7954, 7.8359]
- array_Fish[19] := [-2091.2231, 1436.5226, 7.1016]
- array_Fish[20] := [-2086.6912, 1436.4066, 7.1016]
- array_Fish[21] := [-2082.6958, 1436.1895, 7.1016]
- array_Fish[22] := [-2078.2371, 1436.4476, 7.1016]
- array_Fish[23] := [-2073.6873, 1436.2191, 7.1016]
- array_Fish[24] := [-2069.6814, 1436.1677, 7.1007]
- array_Fish[25] := [-2065.1917, 1436.3531, 7.1007]
- array_Fish[26] := [1971.0696,-1179.2335,20.0234]
- array_Fish[27] := [1975.8022,-1220.2288,20.0234]
- global dietrichTimeout_ := false
- Loop, 5 {
- fishName_%A_Index% := "nichts"
- fishLBS_%A_Index% := 0
- fishHP_%A_Index% := 0
- }
- Loop, 5 {
- fishName%A_Index% := "nichts"
- fishHP%A_Index% := 0
- fishPrice%A_Index% := 0
- }
- SetTimer, MainTimer, 100
- SetTimer, KillDeathTimer, 100
- SetTimer, ChatTimer, 100
- SetTimer, XTimer, 500
- SetTimer, XTimerTimeout, 500
- SetTimer, SekundenTimer, 1000
- SetTimer, TempoTimer, 25
- array_ini_settings := []
- array_ini_settings[1] := ["Allgemein", "Prefix", "prefix", "EasyBinder"]
- array_ini_settings[2] := ["Allgemein", "MotorSystem", "motorsystem", 0]
- array_ini_settings[3] := ["Allgemein", "LockSystem", "locksystem", 0]
- array_ini_settings[4] := ["Allgemein", "ZollSystem", "zollsystem", 0]
- array_ini_settings[5] := ["Allgemein", "TankSystem", "tanksystem", 0]
- array_ini_settings[6] := ["Allgemein", "LottoSystem", "lottosystem", 0]
- array_ini_settings[7] := ["Allgemein", "LottoZahl", "lottozahl", 0]
- array_ini_settings[8] := ["Allgemein", "ReusenSystem", "reusensystem", 0]
- array_ini_settings[9] := ["Allgemein", "TorSystem", "torsystem", 0]
- array_ini_settings[10] := ["Allgemein", "TowerSystem", "towersystem", 0]
- array_ini_settings[11] := ["Allgemein", "FishSystem", "fishsystem", 0]
- array_ini_settings[12] := ["Allgemein", "SpraySystem", "spraysystem", 0]
- array_ini_settings[13] := ["Allgemein", "KettenSystem", "kettensystem", 0]
- array_ini_settings[14] := ["Allgemein", "DamageInfo", "damageinfo", 0]
- array_ini_settings[15] := ["Allgemein", "DamageSound", "damagesound", 0]
- array_ini_settings[16] := ["Allgemein", "AutoSync", "autosync", 0]
- array_ini_settings[17] := ["Allgemein", "HelloFrak", "hellofrak", 0]
- array_ini_settings[18] := ["Allgemein", "HelloCrew", "hellocrew", 0]
- array_ini_settings[19] := ["Allgemein", "ThankPak", "thankpak", 0]
- array_ini_settings[20] := ["Allgemein", "Admin", "admin", 0]
- array_ini_settings[21] := ["Werbung", "Werbetext1", "werbetext1", 0]
- array_ini_settings[22] := ["Werbung", "Werbetext2", "werbetext2", 0]
- array_ini_settings[23] := ["Werbung", "Werbetext3", "werbetext3", 0]
- array_ini_settings[24] := ["Kill", "KillActive", "killactive", 0]
- array_ini_settings[25] := ["Kill", "KillText", "killtext", "+1 Kill | #[KILLS]"]
- array_ini_settings[26] := ["Death", "DeathActive", "deathactive", 0]
- array_ini_settings[27] := ["Death", "DeathText", "deathtext", "/f +1 Tod in [ZONE] [CITY] | #[DEATHS]"]
- array_ini_settings[28] := ["ItemUse", "DrugUse", "druguse", 0]
- array_ini_settings[29] := ["ItemUse", "PakUse", "pakuse", 0]
- array_ini_settings[30] := ["ItemUse", "FishUse", "fishuse", 0]
- array_ini_settings[31] := ["Ausrüstungsprofile", "Profil1_1", "profile1_1", ""]
- array_ini_settings[32] := ["Ausrüstungsprofile", "Profil1_2", "profile1_2", ""]
- array_ini_settings[33] := ["Ausrüstungsprofile", "Profil1_3", "profile1_3", ""]
- array_ini_settings[34] := ["Ausrüstungsprofile", "Profil1_4", "profile1_4", ""]
- array_ini_settings[35] := ["Ausrüstungsprofile", "Profil1_5", "profile1_5", ""]
- array_ini_settings[36] := ["Ausrüstungsprofile", "Profil1_6", "profile1_6", ""]
- array_ini_settings[37] := ["Ausrüstungsprofile", "Profil2_1", "profile2_1", ""]
- array_ini_settings[38] := ["Ausrüstungsprofile", "Profil2_2", "profile2_2", ""]
- array_ini_settings[39] := ["Ausrüstungsprofile", "Profil2_3", "profile2_3", ""]
- array_ini_settings[40] := ["Ausrüstungsprofile", "Profil2_4", "profile2_4", ""]
- array_ini_settings[41] := ["Ausrüstungsprofile", "Profil2_5", "profile2_5", ""]
- array_ini_settings[42] := ["Ausrüstungsprofile", "Profil2_6", "profile2_6", ""]
- array_ini_settings[43] := ["Ausrüstungsprofile", "Profil3_1", "profile3_1", ""]
- array_ini_settings[44] := ["Ausrüstungsprofile", "Profil3_2", "profile3_2", ""]
- array_ini_settings[45] := ["Ausrüstungsprofile", "Profil3_3", "profile3_3", ""]
- array_ini_settings[46] := ["Ausrüstungsprofile", "Profil3_4", "profile3_4", ""]
- array_ini_settings[47] := ["Ausrüstungsprofile", "Profil3_5", "profile3_5", ""]
- array_ini_settings[48] := ["Ausrüstungsprofile", "Profil3_6", "profile3_6", ""]
- array_ini_settings[49] := ["Fischen", "FishMode", "fishmode", 0]
- array_ini_settings[50] := ["ItemUse", "DrugUseCountdown", "drugusecountdown", 0]
- array_ini_settings[51] := ["Tempomat", "Tempomat", "tempomat", 0]
- array_ini_settings[52] := ["Reusen", "ReusenTimer", "reusentimer", 15]
- settings = ini\settings.ini
- if (!FileExist(settings))
- {
- Loop % array_ini_settings.MaxIndex() {
- value := array_ini_settings[A_Index][4]
- key := array_ini_settings[A_Index][2]
- head := array_ini_settings[A_Index][1]
- IniWrite, %value%, %settings%, %head%, %key%
- }
- } else {
- Loop % array_ini_settings.MaxIndex() {
- value := array_ini_settings[A_Index][3]
- value2 := array_ini_settings[A_Index][4]
- key := array_ini_settings[A_Index][2]
- head := array_ini_settings[A_Index][1]
- IniRead, settings_%value%, %settings%, %head%, %key%
- if(settings_%value% == "ERROR") {
- IniWrite, %value2%, %settings%, %head%, %key%
- }
- }
- }
- Loop % array_ini_settings.MaxIndex() {
- value := array_ini_settings[A_Index][3]
- key := array_ini_settings[A_Index][2]
- head := array_ini_settings[A_Index][1]
- IniRead, settings_%value%, %settings%, %head%, %key%
- }
- global prefix := cPrimar . settings_prefix . " • " . cSecond
- array_ini_stats := []
- array_ini_stats[1] := ["Kills", "kills", 0]
- array_ini_stats[2] := ["Deaths", "deaths", 0]
- array_ini_stats[3] := ["TankLiter", "tankliter", 0]
- array_ini_stats[4] := ["TankGeld", "tankgeld", 0]
- array_ini_stats[5] := ["StoreRobs", "storerobs", 0]
- array_ini_stats[6] := ["StoreRobsGeld", "storerobsgeld", 0]
- array_ini_stats[7] := ["ATMRobs", "atmrob", 0]
- array_ini_stats[8] := ["ATMRobsGeld", "atmrobgeld", 0]
- array_ini_stats[9] := ["EquipMats", "equipmats", 0]
- array_ini_stats[10] := ["EquipGeld", "equipgeld", 0]
- array_ini_stats[11] := ["Muelltonnen", "trashs", 0]
- array_ini_stats[12] := ["CrewEisen", "crew_eisen", 0]
- array_ini_stats[13] := ["CrewAlu", "crew_alu", 0]
- array_ini_stats[14] := ["CrewPseudo", "crew_pseudo", 0]
- array_ini_stats[15] := ["CrewPakete", "crew_pakete", 0]
- array_ini_stats[16] := ["CrewGeld", "crew_money", 0]
- array_ini_stats[17] := ["SprayTags", "spraytags", 0]
- array_ini_stats[18] := ["FishGeld", "fishgeld", 0]
- stats = ini\stats\stats.ini
- if (!FileExist(stats))
- {
- Loop % array_ini_stats.MaxIndex() {
- value := array_ini_stats[A_Index][3]
- key := array_ini_stats[A_Index][1]
- IniWrite, %value%, %stats%, Statistik, %key%
- }
- } else {
- Loop % array_ini_stats.MaxIndex() {
- value := array_ini_stats[A_Index][2]
- value2 := array_ini_stats[A_Index][3]
- key := array_ini_stats[A_Index][1]
- IniRead, stats_%value%, %stats%, Statistik, %key%
- if(stats_%value% == "ERROR") {
- IniWrite, %value2%, %stats%, Statistik, %key%
- }
- }
- }
- Loop % array_ini_stats.MaxIndex() {
- value := array_ini_stats[A_Index][2]
- key := array_ini_stats[A_Index][1]
- IniRead, stats_%value%, %stats%, Statistik, %key%
- }
- array_ini_dstats := []
- array_ini_dstats[1] := ["Kills[" . A_DD . ":" . A_MM . ":" . A_YYYY . "]", "kills", 0]
- array_ini_dstats[2] := ["Deaths[" . A_DD . ":" . A_MM . ":" . A_YYYY . "]", "deaths", 0]
- dstats = ini\stats\daystats.ini
- if (!FileExist(dstats))
- {
- Loop % array_ini_dstats.MaxIndex() {
- value := array_ini_dstats[A_Index][3]
- key := array_ini_dstats[A_Index][1]
- IniWrite, %value%, %dstats%, Statistik, %key%
- }
- } else {
- Loop % array_ini_dstats.MaxIndex() {
- value := array_ini_dstats[A_Index][2]
- value2 := array_ini_dstats[A_Index][3]
- key := array_ini_dstats[A_Index][1]
- IniRead, daystats_%value%, %dstats%, Statistik, %key%
- if(daystats_%value% == "ERROR") {
- IniWrite, %value2%, %dstats%, Statistik, %key%
- }
- }
- }
- Loop % array_ini_dstats.MaxIndex() {
- value := array_ini_dstats[A_Index][2]
- key := array_ini_dstats[A_Index][1]
- IniRead, daystats_%value%, %dstats%, Statistik, %key%
- }
- array_ini_mstats := []
- array_ini_mstats[1] := ["Kills[" . A_MM . ":" . A_YYYY . "]", "kills", 0]
- array_ini_mstats[2] := ["Deaths[" . A_MM . ":" . A_YYYY . "]", "deaths", 0]
- mstats = ini\stats\monthstats.ini
- if (!FileExist(mstats))
- {
- Loop % array_ini_mstats.MaxIndex() {
- value := array_ini_mstats[A_Index][3]
- key := array_ini_mstats[A_Index][1]
- IniWrite, %value%, %mstats%, Statistik, %key%
- }
- } else {
- Loop % array_ini_mstats.MaxIndex() {
- value := array_ini_mstats[A_Index][2]
- value2 := array_ini_mstats[A_Index][3]
- key := array_ini_mstats[A_Index][1]
- IniRead, monthstats_%value%, %mstats%, Statistik, %key%
- if(monthstats_%value% == "ERROR") {
- IniWrite, %value2%, %mstats%, Statistik, %key%
- }
- }
- }
- Loop % array_ini_mstats.MaxIndex() {
- value := array_ini_mstats[A_Index][2]
- key := array_ini_mstats[A_Index][1]
- IniRead, monthstats_%value%, %mstats%, Statistik, %key%
- }
- array_ini_items := []
- array_ini_items[1] := ["Drogen", "drogen", 0]
- array_ini_items[2] := ["ErsteHilfe", "erstehilfe", 0]
- array_ini_items[3] := ["Lagerfeuer", "lagerfeuer", 0]
- array_ini_items[4] := ["Kanister", "kanister", 0]
- items = ini\items.ini
- if (!FileExist(items))
- {
- Loop % array_ini_items.MaxIndex() {
- value := array_ini_items[A_Index][3]
- key := array_ini_items[A_Index][1]
- IniWrite, %value%, %items%, Items, %key%
- }
- } else {
- Loop % array_ini_items.MaxIndex() {
- value := array_ini_items[A_Index][2]
- value2 := array_ini_items[A_Index][3]
- key := array_ini_items[A_Index][1]
- IniRead, items_%value%, %items%, Items, %key%
- if(items_%value% == "ERROR") {
- IniWrite, %value2%, %items%, Items, %key%
- }
- }
- }
- Loop % array_ini_items.MaxIndex() {
- value := array_ini_items[A_Index][2]
- key := array_ini_items[A_Index][1]
- IniRead, items_%value%, %items%, Items, %key%
- }
- registeredHotkeys := Object()
- defaultHotkeysArray := Object()
- defaultHotkeysArray["motorSystem"] := "~1"
- defaultHotkeysArray["lockSystem"] := "~y"
- defaultHotkeysArray["lichtSystem"] := "~l"
- defaultHotkeysArray["stats"] := "~-"
- defaultHotkeysArray["tempomat"] := "~^t"
- defaultHotkeysArray["equipProfile1"] := "F1"
- defaultHotkeysArray["equipProfile2"] := "F2"
- defaultHotkeysArray["equipProfile3"] := "F3"
- defaultHotkeysArray["equip"] := "F4"
- defaultHotkeysArray["showFrakMember"] := "~m"
- defaultHotkeysArray["showCrewMember"] := "~o"
- defaultHotkeysArray["useDrugs"] := "~2"
- defaultHotkeysArray["usePak"] := "~3"
- defaultHotkeysArray["useFish"] := "~4"
- defaultHotkeysArray["countdown"] := "END"
- defaultHotkeysArray["togPhone"] := "F5"
- defaultHotkeysArray["thanks"] := "~ü"
- defaultHotkeysArray["sorry"] := "~ö"
- defaultHotkeysArray["repeat"] := "~ä"
- defaultHotkeysArray["heal"] := "~^h"
- defaultHotkeysArray["showPosC"] := "~^p"
- defaultHotkeysArray["showPosF"] := "~p"
- defaultHotkeysArray["stopAutomaticSystem"] := "~<"
- defaultHotkeysArray["pause"] := "F12"
- defaultHotkeysArray["gate"] := "~NumpadSub"
- hotkeys = ini\hotkeys.ini
- IfNotExist, %hotkeys%
- {
- for key, value in defaultHotkeysArray {
- IniWrite, %value%, %hotkeys%, Hotkeys, %key%
- }
- }
- for key, value in defaultHotkeysArray {
- IniRead, hk, %hotkeys%, Hotkeys, %key%, %A_Space%
- if (!hk) {
- alreadyRegistered := false
- for k, v in registeredHotkeys {
- hk2 := StrReplace(value, "~", "")
- v2 := StrReplace(v, "~", "")
- if (hk2 = v2 && StrLen(hk2) == StrLen(v2)) {
- alreadyRegistered := true
- alreadyRegisteredKey := k
- alreadyRegisteredValue := v
- break
- }
- }
- if (!alreadyRegistered) {
- Hotkey, %value%, %key%Label
- StringReplace, %key%NoMods, value, ~
- registeredHotkeys[key] := value
- } else {
- MsgBox, 0, Hotkey Fehler | %projectname% , Der Standard-Hotkey für %key% (%value%) ist bereits registriert (%alreadyRegisteredKey% - %alreadyRegisteredValue%)! `nLösche die hotkeys.ini Datei aus dem INI Ordner um den Fehler zu beheben!
- ExitApp
- }
- } else if (hk != "---") {
- alreadyRegistered := false
- for k, v in registeredHotkeys {
- hk2 := StrReplace(hk, "~", "")
- v2 := StrReplace(v, "~", "")
- if (hk2 = v2 && StrLen(hk2) == StrLen(v2)) {
- alreadyRegistered := true
- alreadyRegisteredKey := k
- alreadyRegisteredValue := v
- break
- }
- }
- if (!alreadyRegistered) {
- Hotkey, %hk%, %key%Label
- StringReplace, %key%NoMods, hk, ~
- registeredHotkeys[key] := hk
- } else {
- MsgBox, 0, Hotkey Fehler | %projectname% , Der Standard-Hotkey für %key% (%hk%) ist bereits registriert (%alreadyRegisteredKey% - %alreadyRegisteredValue%)! `nLösche die hotkeys.ini Datei aus dem INI Ordner um den Fehler zu beheben!
- ExitApp
- }
- }
- }
- global ownHotkeyCount := 48
- ownhotkeys = ini\hotkeys.ini
- IfNotExist, %ownhotkeys%
- {
- defaultOwnHotkeysArray := []
- for key, value in defaultOwnHotkeysArray {
- hk := value[1]
- text := value[2]
- IniWrite, 1, %ownhotkeys%, %key%, Active
- IniWrite, %hk%, %ownhotkeys%, %key%, Hotkey
- IniWrite, %text%, %ownhotkeys%, %key%, Text
- }
- }
- Loop, %ownHotkeyCount% {
- outerIndex := A_Index
- IniRead, ownHotkey%outerIndex%Active, %ownhotkeys%, %outerIndex%, Active, 0
- IniRead, ownHotkey%outerIndex%Text, %ownhotkeys%, %outerIndex%, Text, %A_Space%
- IniRead, hk, %ownhotkeys%, %outerIndex%, Hotkey, %A_Space%
- ownHotkey%outerIndex%Text := StrReplace(ownHotkey%outerIndex%Text, "~", "`n")
- if (hk) {
- alreadyRegistered := false
- for key, value in registeredHotkeys {
- hk2 := StrReplace(hk, "~", "")
- value2 := StrReplace(value, "~", "")
- if (hk2 = value2 && StrLen(hk2) == StrLen(value2)) {
- alreadyRegistered := true
- alreadyRegisteredKey := key
- alreadyRegisteredValue := value
- break
- }
- }
- StringReplace, ownHotkey%outerIndex%NoMods, hk, ~
- if (!alreadyRegistered) {
- if (ownHotkey%outerIndex%Active) {
- Hotkey, %hk%, ownHotkey%outerIndex%Label
- registeredHotkeys["ownHotkey" . outerIndex] := hk
- }
- } else {
- MsgBox, 0, Hotkey Fehler | %projectname% , Der Hotkey für ownHotkey%outerIndex% (%hk%) ist bereits registriert (%alreadyRegisteredKey% - %alreadyRegisteredValue%)! `nLösche die ownhotkeys.ini Datei aus dem INI Ordner um den Fehler zu beheben!
- ExitApp
- }
- }
- }
- if(IsSAMPAvailable()) {
- blacklist := URLDownloadToVar(baseURL . "api/blacklist.php?username=" getUsername())
- blacklist := StrReplace(result, "?", "")
- if(blacklist == "USER_BLACKLISTED") {
- MsgBox, 0, Blacklist | %projectname% , Du stehst auf der Blacklist, wende dich an Marschl um das Problem zu lösen!
- ExitApp
- }
- }
- Gui, Destroy
- GoTo, Main
- return
- GuiClose:
- ExitApp
- return
- Main:
- Gui, Main: Color, FF00FF
- Gui, Main: Font, S10 CDefault, Verdana
- Gui, Main: Add, GroupBox, x5 y5 w220 h315 ,
- Gui, Main: Add, Button, x15 y20 w200 h40 gSettings, Einstellungen
- Gui, Main: Add, Button, x15 y70 w200 h40 gHotkeys, Hotkeys
- Gui, Main: Add, Button, x15 y120 w200 h40 gCommands, Befehle
- Gui, Main: Add, Button, x15 y170 w200 h40 gConnectRPG, Mit RPG verbinden
- Gui, Main: Add, Button, x15 y220 w95 h40 gVorschlag, Vorschlag machen
- Gui, Main: Add, Button, x120 y220 w95 h40 gReportBug, Fehler melden
- Gui, Main: Add, Button, x15 y270 w200 h40 gRestart, Keybinder neustarten
- Gui, Main: Add, Picture, x230 y10 w450 h40 , src\images\logo.png
- Gui, Main: Add, GroupBox, x240 y60 w430 h180 cFFFFFF ,Changelog (Version: %version%)
- changelog := URLDownloadToVar(baseURL . "api/changelog.php?version=" version)
- changelog := StrReplace(changelog, "?", "")
- Gui, Main: Add, Edit, x250 y80 w410 h150 ReadOnly cFFFFFF, %changelog%
- Gui, Main: Add, GroupBox, x240 y240 w430 h80 cFFFFFF,Informationen
- if(IsSAMPAvailable()) {
- message := "Name: " getUsername() " ( ID: " getId() " )"
- } else {
- message := "Nicht mit RPG-City verbunden!"
- }
- info =
- (LTrim
- %message%
- Keybinder aktiv seit: %keybinderStart% Uhr
- )
- Gui, Main: Add, Text, x250 y260 w410 h50 cFFFFFF, %info%
- Gui, Main: Color, 212121
- Gui, Main: Show, w690 h330, %projectname% | %version% | by Marschl
- return
- Restart:
- Reload
- return
- MainGuiClose:
- ExitApp
- return
- ConnectRPG:
- RegRead GTA_SA_EXE, HKEY_CURRENT_USER, Software\SAMP, gta_sa_exe
- SplitPath, GTA_SA_EXE,, PFAD
- Run %Pfad%\samp.exe samp.rpg-city.de:7777, %PFAD%
- return
- ReportBug:
- Run, https://cloud.marschl.io/index.php/apps/forms/s/fL8SDax95L27ioziGJmgr3xp
- return
- Vorschlag:
- Run, https://cloud.marschl.io/index.php/apps/forms/s/4ZwAoWNfXDN5cd2n3mKPqTdc
- return
- Settings:
- Gui, Settings: Color, 212121
- Gui, Settings: Font, S10 CDefault, Verdana
- Gui, Settings: Add, GroupBox, x10 y10 w680 h140 cFFFFFF, Allgemeine Einstellungen
- Gui, Settings: Add, CheckBox, x20 y30 w150 h20 cFFFFFF vmotorsystem checked%settings_motorsystem%, Motor System
- Gui, Settings: Add, CheckBox, x300 y30 w150 h20 cFFFFFF vlocksystem checked%settings_locksystem%, Lock System
- Gui, Settings: Add, CheckBox, x550 y30 w135 h20 cFFFFFF vzollsystem checked%settings_zollsystem%, Zoll System
- Gui, Settings: Add, CheckBox, x20 y60 w150 h20 cFFFFFF vtanksystem checked%settings_tanksystem%, Tank System
- Gui, Settings: Add, CheckBox, x300 y60 w110 h20 cFFFFFF vlottosystem checked%settings_lottosystem%, Lotto System
- Gui, Settings: Add, Text, x410 y62 w135 h20 cFFFFFF, Nummer (0 = Zufall)
- Gui, Settings: Add, Edit, x550 y60 w50 h20 vlottonummer, %settings_lottozahl%
- Gui, Settings: Add, CheckBox, x20 y90 w150 h20 cFFFFFF vspraysystem checked%settings_spraysystem%, Spray System
- Gui, Settings: Add, CheckBox, x300 y90 w150 h20 cFFFFFF vkettensystem checked%settings_kettensystem%, Ketten System
- Gui, Settings: Add, CheckBox, x550 y90 w135 h20 cFFFFFF vtowersystem checked%settings_towersystem%, Tower System
- Gui, Settings: Add, CheckBox, x20 y120 w150 h20 cFFFFFF vreusensystem checked%settings_reusensystem%, Reusen System
- Gui, Settings: Add, CheckBox, x300 y120 w150 h20 cFFFFFF vtorsystem checked%settings_torsystem%, Tor System
- Gui, Settings: Add, CheckBox, x550 y120 w135 h20 cFFFFFF vfishsystem checked%settings_fishsystem%, Fisch System
- Gui, Settings: Add, GroupBox, x10 y150 w680 h80 cFFFFFF , Kill- und Todeszähler
- Gui, Settings: Add, CheckBox, x20 y170 w120 h20 cFFFFFF vkillactive checked%settings_killactive%, Killspruch:
- Gui, Settings: Add, Edit, x150 y170 w530 h20 vkilltext, %settings_killtext%
- Gui, Settings: Add, CheckBox, x20 y200 w120 h20 cFFFFFF vdeathactive checked%settings_deathactive%, Deathspruch:
- Gui, Settings: Add, Edit, x150 y200 w530 h20 vdeathtext, %settings_deathtext%
- Gui, Settings: Add, GroupBox, x10 y230 w680 h80 cFFFFFF , Deathmatch
- Gui, Settings: Add, CheckBox, x20 y250 w150 h20 cFFFFFF vdruguse checked%settings_druguse%, WASD Drogen usen
- Gui, Settings: Add, CheckBox, x300 y250 w150 h20 cFFFFFF vpakuse checked%settings_pakuse%, WASD Paket usen
- Gui, Settings: Add, CheckBox, x550 y250 w135 h20 cFFFFFF vfishuse checked%settings_fishuse%, WASD Fish usen
- Gui, Settings: Add, CheckBox, x20 y280 w150 h20 cFFFFFF vdamageinfo checked%settings_damageinfo%, Damage Info
- Gui, Settings: Add, CheckBox, x300 y280 w150 h20 cFFFFFF vdamagesound checked%settings_damagesound%, Damage Sound
- Gui, Settings: Add, CheckBox, x550 y280 w135 h20 cFFFFFF vautosync checked%settings_autosync%, Auto Sync
- Gui, Settings: Add, GroupBox, x10 y310 w680 h140 cFFFFFF , Ausrüsten
- Gui, Settings: Add, Text, x20 y330 w70 h20 cFFFFFF, Profil 1:
- Gui, Settings: Add, DropDownList, x80 y328 w90 h120 cFFFFFF vprofile1_1, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x180 y328 w90 h120 cFFFFFF vprofile1_2, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x280 y328 w90 h120 cFFFFFF vprofile1_3, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x380 y328 w90 h120 cFFFFFF vprofile1_4, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x480 y328 w90 h120 cFFFFFF vprofile1_5, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x580 y328 w90 h120 cFFFFFF vprofile1_6, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- GuiControl, Settings: Choose, profile1_1, %settings_profile1_1%
- GuiControl, Settings: Choose, profile1_2, %settings_profile1_2%
- GuiControl, Settings: Choose, profile1_3, %settings_profile1_3%
- GuiControl, Settings: Choose, profile1_4, %settings_profile1_4%
- GuiControl, Settings: Choose, profile1_5, %settings_profile1_5%
- GuiControl, Settings: Choose, profile1_6, %settings_profile1_6%
- Gui, Settings: Add, Text, x20 y370 w70 h20 cFFFFFF , Profil 2:
- Gui, Settings: Add, DropDownList, x80 y368 w90 h120 cFFFFFF vprofile2_1, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x180 y368 w90 h120 cFFFFFF vprofile2_2, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x280 y368 w90 h120 cFFFFFF vprofile2_3, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x380 y368 w90 h120 cFFFFFF vprofile2_4, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x480 y368 w90 h120 cFFFFFF vprofile2_5, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x580 y368 w90 h120 cFFFFFF vprofile2_6, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- GuiControl, Settings: Choose, profile2_1, %settings_profile2_1%
- GuiControl, Settings: Choose, profile2_2, %settings_profile2_2%
- GuiControl, Settings: Choose, profile2_3, %settings_profile2_3%
- GuiControl, Settings: Choose, profile2_4, %settings_profile2_4%
- GuiControl, Settings: Choose, profile2_5, %settings_profile2_5%
- GuiControl, Settings: Choose, profile2_6, %settings_profile2_6%
- Gui, Settings: Add, Text, x20 y410 w70 h20 cFFFFFF , Profil 3:
- Gui, Settings: Add, DropDownList, x80 y408 w90 h120 cFFFFFF vprofile3_1, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x180 y408 w90 h120 cFFFFFF vprofile3_2, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x280 y408 w90 h120 cFFFFFF vprofile3_3, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x380 y408 w90 h120 cFFFFFF vprofile3_4, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x480 y408 w90 h120 cFFFFFF vprofile3_5, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x580 y408 w90 h120 cFFFFFF vprofile3_6, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Messer|Baseballschläger|Golfschläger|Katana
- GuiControl, Settings: Choose, profile3_1, %settings_profile3_1%
- GuiControl, Settings: Choose, profile3_2, %settings_profile3_2%
- GuiControl, Settings: Choose, profile3_3, %settings_profile3_3%
- GuiControl, Settings: Choose, profile3_4, %settings_profile3_4%
- GuiControl, Settings: Choose, profile3_5, %settings_profile3_5%
- GuiControl, Settings: Choose, profile3_6, %settings_profile3_6%
- Gui, Settings: Add, GroupBox, x10 y450 w680 h140 cFFFFFF , Sonstiges
- Gui, Settings: Add, CheckBox, x20 y470 w150 h20 cFFFFFF vhellofrak checked%settings_hellofrak%, Fraktion Begrüßung
- Gui, Settings: Add, CheckBox, x300 y470 w150 h20 cFFFFFF vhellocrew checked%settings_hellocrew%, Crew Begrüßung
- Gui, Settings: Add, CheckBox, x550 y470 w135 h20 cFFFFFF vthankpak checked%settings_thankpak%, Pak Danksagung
- Gui, Settings: Add, CheckBox, x20 y500 w200 h20 cFFFFFF vfishMode checked%settings_fishmode%, Billigsten Fisch wegwerfen
- Gui, Settings: Add, CheckBox, x300 y500 w200 h20 cFFFFFF vdrugusecd checked%settings_drugusecountdown%, Drogen Countdown 5 Sek
- Gui, Settings: Add, Text, x20 y530 w150 h20 cFFFFFF, Prefix:
- Gui, Settings: Add, Edit, x20 y550 w130 h20 vprefix, %settings_prefix%
- Menu, PlatzhalterInformationen, Add, &Platzhalter, PlatzhalterInformationen
- Gui, Settings: Menu, PlatzhalterInformationen
- Gui, Settings: Show, w700 h600, Einstellungen - %projectname% | %version%
- return
- SettingsGuiClose:
- Gui, Settings: Submit, NoHide
- IniWrite, % motorsystem, %settings%, Allgemein, MotorSystem
- IniWrite, % locksystem, %settings%, Allgemein, LockSystem
- IniWrite, % zollsystem, %settings%, Allgemein, ZollSystem
- IniWrite, % tanksystem, %settings%, Allgemein, TankSystem
- IniWrite, % lottosystem, %settings%, Allgemein, LottoSystem
- IniWrite, % lottonummer, %settings%, Allgemein, LottoZahl
- IniWrite, % reusensystem, %settings%, Allgemein, ReusenSystem
- IniWrite, % torsystem, %settings%, Allgemein, TorSystem
- IniWrite, % towersystem, %settings%, Allgemein, TowerSystem
- IniWrite, % fishsystem, %settings%, Allgemein, FishSystem
- IniWrite, % spraysystem, %settings%, Allgemein, SpraySystem
- IniWrite, % kettensystem, %settings%, Allgemein, KettenSystem
- IniWrite, % killactive, %settings%, Kill, KillActive
- IniWrite, % killtext, %settings%, Kill, KillText
- IniWrite, % deathactive, %settings%, Death, DeathActive
- IniWrite, % deathtext, %settings%, Death, DeathText
- IniWrite, % druguse, %settings%, ItemUse, DrugUse
- IniWrite, % pakuse, %settings%, ItemUse, PakUse
- IniWrite, % fishuse, %settings%, ItemUse, FishUse
- IniWrite, % damageinfo, %settings%, Allgemein, DamageInfo
- IniWrite, % damagesound, %settings%, Allgemein, DamageSound
- IniWrite, % autosync, %settings%, Allgemein, AutoSync
- IniWrite, %profile1_1%, %settings%, Ausrüstungsprofile, Profil1_1
- IniWrite, %profile1_2%, %settings%, Ausrüstungsprofile, Profil1_2
- IniWrite, %profile1_3%, %settings%, Ausrüstungsprofile, Profil1_3
- IniWrite, %profile1_4%, %settings%, Ausrüstungsprofile, Profil1_4
- IniWrite, %profile1_5%, %settings%, Ausrüstungsprofile, Profil1_5
- IniWrite, %profile1_6%, %settings%, Ausrüstungsprofile, Profil1_6
- IniWrite, %profile2_1%, %settings%, Ausrüstungsprofile, Profil2_1
- IniWrite, %profile2_2%, %settings%, Ausrüstungsprofile, Profil2_2
- IniWrite, %profile2_3%, %settings%, Ausrüstungsprofile, Profil2_3
- IniWrite, %profile2_4%, %settings%, Ausrüstungsprofile, Profil2_4
- IniWrite, %profile2_5%, %settings%, Ausrüstungsprofile, Profil2_5
- IniWrite, %profile2_6%, %settings%, Ausrüstungsprofile, Profil2_6
- IniWrite, %profile3_1%, %settings%, Ausrüstungsprofile, Profil3_1
- IniWrite, %profile3_2%, %settings%, Ausrüstungsprofile, Profil3_2
- IniWrite, %profile3_3%, %settings%, Ausrüstungsprofile, Profil3_3
- IniWrite, %profile3_4%, %settings%, Ausrüstungsprofile, Profil3_4
- IniWrite, %profile3_5%, %settings%, Ausrüstungsprofile, Profil3_5
- IniWrite, %profile3_6%, %settings%, Ausrüstungsprofile, Profil3_6
- IniWrite, % hellofrak, %settings%, Allgemein, HelloFrak
- IniWrite, % hellocrew, %settings%, Allgemein, HelloCrew
- IniWrite, % thankpak, %settings%, Allgemein, ThankPak
- IniWrite, % fishMode, %settings%, Fischen, FishMode
- IniWrite, % drugusecd, %settings%, ItemUse, DrugUseCountdown
- IniWrite, % prefix, %settings%, Allgemein, Prefix
- Gui, Settings: Destroy
- Reload
- return
- Commands:
- Gui, Commands: Color, 212121
- Gui, Commands: Font, S10 CDefault, Verdana
- if(!settings_admin) {
- Gui, Commands: Add, Tab, x10 y9 w580 h580 cFFFFFF , Allgemein|Deathmatch
- } else {
- Gui, Commands: Add, Tab, x10 y9 w580 h580 cFFFFFF , Allgemein|Deathmatch|Admin
- }
- Gui, Commands: Tab, Allgemein
- text_allgemein := URLDownloadToVar(baseURL . "api/command.php?tab=1")
- text_allgemein := StrReplace(text_allgemein, "?", "")
- Gui, Commands: Add, Edit, x20 y45 w560 h530 cFFFFFF ReadOnly, %text_allgemein%
- Gui, Commands: Tab, Deathmatch
- text_deathmatch := URLDownloadToVar(baseURL . "api/command.php?tab=2")
- text_deathmatch := StrReplace(text_deathmatch, "?", "")
- Gui, Commands: Add, Edit, x20 y45 w560 h530 cFFFFFF ReadOnly, %text_deathmatch%
- if(settings_admin) {
- Gui, Commands: Tab, Admin
- text_admin := URLDownloadToVar(baseURL . "api/command.php?tab=3")
- text_admin := StrReplace(text_admin, "?", "")
- Gui, Commands: Add, Edit, x20 y45 w560 h530 cFFFFFF ReadOnly, %text_admin%
- }
- Gui, Commands: Show, w600 h600, Befehle - %projectname% | %version%
- return
- CommandsGuiClose:
- Gui, Commands: Destroy
- return
- Hotkeys:
- {
- Gui, Hotkeys: Destroy
- Gui, Hotkeys: Color, 212121
- Gui, Hotkeys: Font, S10 CDefault, Verdana
- Gui, Hotkeys: Add, Button, x10 y400 w140 h40 gResetHotkeys, Werkseinstellungen
- Gui, Hotkeys: Add, Button, x160 y400 w140 h40 gOwnHotkeys, Eigene Hotkeys
- Gui, Hotkeys: Add, Button, x310 y400 w110 h40 gHotkeysGuiClose, Schließen
- Gui, Hotkeys: Add, GroupBox, x10 y10 w810 h380 cFFFFFF, Hotkeys
- Gui, Hotkeys: Add, Text, x20 y30 w220 h20 cFFFFFF, Motor System
- Gui, Hotkeys: Add, Hotkey, x260 y30 w150 h20 vmotorSystemHotkey gSaveHotkeyLabel, %motorSystemNoMods%
- Gui, Hotkeys: Add, Text, x20 y60 w220 h20 cFFFFFF, Lock System
- Gui, Hotkeys: Add, Hotkey, x260 y60 w150 h20 vlockSystemHotkey gSaveHotkeyLabel, %lockSystemNoMods%
- Gui, Hotkeys: Add, Text, x20 y90 w220 h20 cFFFFFF, Licht System
- Gui, Hotkeys: Add, Hotkey, x260 y90 w150 h20 vlichtSystemHotkey gSaveHotkeyLabel, %lichtSystemNoMods%
- Gui, Hotkeys: Add, Text, x20 y120 w220 h20 cFFFFFF, Stats anzeigen
- Gui, Hotkeys: Add, Hotkey, x260 y120 w150 h20 vstatsHotkey gSaveHotkeyLabel, %statsNoMods%
- Gui, Hotkeys: Add, Text, x20 y150 w220 h20 cFFFFFF, Tempomat de-/aktivieren
- Gui, Hotkeys: Add, Hotkey, x260 y150 w150 h20 vtempomatHotkey gSaveHotkeyLabel, %tempomatNoMods%
- Gui, Hotkeys: Add, Text, x20 y180 w220 h20 cFFFFFF, Countdown starten
- Gui, Hotkeys: Add, Hotkey, x260 y180 w150 h20 vcountdownHotkey gSaveHotkeyLabel, %countdownNoMods%
- Gui, Hotkeys: Add, Text, x20 y210 w220 h20 cFFFFFF, Handy an-/ausschalten
- Gui, Hotkeys: Add, Hotkey, x260 y210 w150 h20 vtogPhoneHotkey gSaveHotkeyLabel, %togPhoneNoMods%
- Gui, Hotkeys: Add, Text, x20 y240 w220 h20 cFFFFFF, Danksagung
- Gui, Hotkeys: Add, Hotkey, x260 y240 w150 h20 vthanksHotkey gSaveHotkeyLabel, %thanksNoMods%
- Gui, Hotkeys: Add, Text, x20 y270 w220 h20 cFFFFFF, Entschuldigung
- Gui, Hotkeys: Add, Hotkey, x260 y270 w150 h20 vsorryHotkey gSaveHotkeyLabel, %sorryNoMods%
- Gui, Hotkeys: Add, Text, x20 y300 w220 h20 cFFFFFF, Letzte Eingabe wiederholen
- Gui, Hotkeys: Add, Hotkey, x260 y300 w150 h20 vrepeatHotkey gSaveHotkeyLabel, %repeatNoMods%
- Gui, Hotkeys: Add, Text, x20 y330 w220 h20 cFFFFFF, Heilen
- Gui, Hotkeys: Add, Hotkey, x260 y330 w150 h20 vhealHotkey gSaveHotkeyLabel, %healNoMods%
- Gui, Hotkeys: Add, Text, x20 y360 w220 h20 cFFFFFF, Automatische Systeme beenden
- Gui, Hotkeys: Add, Hotkey, x260 y360 w150 h20 vstopAutomaticSystemHotkey gSaveHotkeyLabel, %stopAutomaticSystemNoMods%
- Gui, Hotkeys: Add, Text, x420 y30 w220 h20 cFFFFFF, Fraktion Position zeigen
- Gui, Hotkeys: Add, Hotkey, x660 y30 w150 h20 vshowPosFHotkey gSaveHotkeyLabel, %showPosFNoMods%
- Gui, Hotkeys: Add, Text, x420 y60 w220 h20 cFFFFFF, Crew Position Zeigen
- Gui, Hotkeys: Add, Hotkey, x660 y60 w150 h20 vshowPosCHotkey gSaveHotkeyLabel, %showPosCNoMods%
- Gui, Hotkeys: Add, Text, x420 y90 w220 h20 cFFFFFF, Ausrüstungsprofil 1
- Gui, Hotkeys: Add, Hotkey, x660 y90 w150 h20 vequipProfile1Hotkey gSaveHotkeyLabel, %equipProfile1NoMods%
- Gui, Hotkeys: Add, Text, x420 y120 w220 h20 cFFFFFF, Ausrüsrungsprofil 2
- Gui, Hotkeys: Add, Hotkey, x660 y120 w150 h20 vequipProfile2Hotkey gSaveHotkeyLabel, %equipProfile2NoMods%
- Gui, Hotkeys: Add, Text, x420 y150 w220 h20 cFFFFFF, Ausrüstungsprofil 3
- Gui, Hotkeys: Add, Hotkey, x660 y150 w150 h20 vequipProfile3Hotkey gSaveHotkeyLabel, %equipProfile3NoMods%
- Gui, Hotkeys: Add, Text, x420 y180 w220 h20 cFFFFFF, Ausrüsten
- Gui, Hotkeys: Add, Hotkey, x660 y180 w150 h20 vequipHotkey gSaveHotkeyLabel, %equipNoMods%
- Gui, Hotkeys: Add, Text, x420 y210 w220 h20 cFFFFFF, Drogen konsumieren
- Gui, Hotkeys: Add, Hotkey, x660 y210 w150 h20 vuseDrugsHotkey gSaveHotkeyLabel, %useDrugsNoMods%
- Gui, Hotkeys: Add, Text, x420 y240 w220 h20 cFFFFFF, Paket benutzen
- Gui, Hotkeys: Add, Hotkey, x660 y240 w150 h20 vusePakHotkey gSaveHotkeyLabel, %usePakNoMods%
- Gui, Hotkeys: Add, Text, x420 y270 w220 h20 cFFFFFF, Fische essen
- Gui, Hotkeys: Add, Hotkey, x660 y270 w150 h20 vuseFishHotkey gSaveHotkeyLabel, %useFishNoMods%
- Gui, Hotkeys: Add, Text, x420 y300 w220 h20 cFFFFFF, Fraktionsmitglieder anzeigen
- Gui, Hotkeys: Add, Hotkey, x660 y300 w150 h20 vshowFrakMemberHotkey gSaveHotkeyLabel, %showFrakMemberNoMods%
- Gui, Hotkeys: Add, Text, x420 y330 w220 h20 cFFFFFF, Crewmember anzeigen
- Gui, Hotkeys: Add, Hotkey, x660 y330 w150 h20 vshowCrewMemberHotkey gSaveHotkeyLabel, %showCrewMemberNoMods%
- Gui, Hotkeys: Add, Text, x420 y360 w220 h20 cFFFFFF, Tor öffnen
- Gui, Hotkeys: Add, Hotkey, x660 y360 w150 h20 vopenGate gSaveHotkeyLabel, %gateNoMods%
- Menu, HotkeyInformations, Add, &Informationen, HotkeyInformations
- Gui, Hotkeys: Menu, HotkeyInformations
- Gui, Hotkeys: Show, h450 w830, Hotkeys - %projectname% | %version%
- }
- return
- HotkeysGuiClose:
- {
- Gui, Hotkeys: Destroy
- }
- return
- HotkeyInformations:
- {
- MsgBox, 64, Informationen zu Hotkeys,
- (LTrim
- Hier können die Hotkeys selbstständig definiert werden.
- Manche Hotkeys können nicht im GUI verändert/definiert werden, da AHK nicht die Möglichkeit dazu gibt (oder diese einfach nicht angezeigt werden können).
- Stattdessen können diese alternativ in der %hotkeys% eingetragen werden.
- Beispielsweise können so auch die Maustasten "xButton1" und "xButton2" belegt werden, was hier im GUI nicht möglich ist.
- Ein Speichern ist nicht notwendig, da dies automatisch geschieht.
- Solltest du aber manuelle Änderungen in der %hotkeys% durchgeführt haben, musst du den Keybinder neustarten!
- )
- }
- return
- ResetHotkeys:
- {
- FileDelete, %hotkeys%
- MsgBox, 64, Zurücksetzen erfolgreich, Die Hotkeys wurden erfolgreich auf die Standardbelegungen zurückgesetzt, der Keybinder startet nun neu!
- Reload
- }
- return
- SaveHotkeyLabel:
- {
- Gui, Hotkeys: Submit, NoHide
- name := SubStr(A_GuiControl, 1, -6)
- hk := %A_GuiControl%
- if hk in +,^,!,+^,+!,^!,+^!
- return
- if (registeredHotkeys.HasKey(name)) {
- oldKey := registeredHotkeys[name]
- Hotkey, %oldKey%, %name%Label, Off
- registeredHotkeys.Delete(name)
- }
- %name%NoMods := ""
- if (hk == "") {
- IniWrite, ---, %hotkeys%, Hotkeys, %name%
- } else {
- alreadyRegistered := false
- for key, value in registeredHotkeys {
- hk2 := StrReplace(hk, "~", "")
- value2 := StrReplace(value, "~", "")
- if (hk2 = value2 && StrLen(hk2) == StrLen(value2)) {
- alreadyRegistered := true
- alreadyRegisteredKey := key
- break
- }
- }
- if (!InStr(hk, "F") && !InStr(hk, "!"))
- hk := "~" . hk
- if (!alreadyRegistered) {
- Hotkey, %hk%, %name%Label
- StringReplace, %name%NoMods, hk, ~
- IniWrite, %hk%, %hotkeys%, Hotkeys, %name%
- registeredHotkeys[name] := hk
- } else {
- IniWrite, ---, %hotkeys%, Hotkeys, %name%
- GuiControl, Hotkeys: , %A_GuiControl%,
- if (RegExMatch(alreadyRegisteredKey, "ownHotkey(\d+)", key_)) {
- hotkeyName := "eigenen Hotkey " . key_1
- } else {
- hotkeyName := "Hotkey " . alreadyRegisteredKey
- }
- message := "Der Hotkey für " . name . " (" . getUserFriendlyHotkeyName(hk) . ") konnte nicht aktiviert werden, da er bereits für den " . hotkeyName . " registriert ist!"
- MsgBox, 64, Speicherung, %message%
- }
- }
- }
- return
- OwnHotkeys:
- {
- Gui, OwnHotkeys: Destroy
- Gui, OwnHotkeys: Color, 212121
- Gui, OwnHotkeys: Font, S10 CDefault, Verdana
- Gui, OwnHotkeys: Add, Button, x10 y530 w130 h40 gOwnHotkeysSave, Speichern
- Gui, OwnHotkeys: Add, Button, x870 y530 w130 h40 gOwnHotkeysGuiClose, Schließen
- Gui, OwnHotkeys: Add, Tab, x10 y10 w990 h510 cFFFFFF, Seite 1|Seite 2|Seite 3
- Gui, OwnHotkeys: Tab, Seite 1
- Loop, 8 {
- index := A_Index
- active := ownHotkey%index%Active
- y1 := -20 + (A_Index * 60)
- y2 := 10 + (A_Index * 60)
- Gui, OwnHotkeys: Add, CheckBox, x20 y%y1% w100 h20 cFFFFFF vownHotkey%index%Active Checked%active%, Hotkey %index%
- Gui, OwnHotkeys: Add, Hotkey, x20 y%y2% w100 h20 vownHotkey%index%,% ownHotkey%index%NoMods
- Gui, OwnHotkeys: Add, Edit, x130 y%y1% w370 h50 vownHotkey%index%Text,% ownHotkey%index%Text
- }
- Loop, 8 {
- index := A_Index + 8
- active := ownHotkey%index%Active
- y1 := -20 + (A_Index * 60)
- y2 := 10 + (A_Index * 60)
- Gui, OwnHotkeys: Add, CheckBox, x510 y%y1% w100 h20 cFFFFFF vownHotkey%index%Active Checked%active%, Hotkey %index%
- Gui, OwnHotkeys: Add, Hotkey, x510 y%y2% w100 h20 vownHotkey%index%,% ownHotkey%index%NoMods
- Gui, OwnHotkeys: Add, Edit, x620 y%y1% w370 h50 vownHotkey%index%Text,% ownHotkey%index%Text
- }
- Gui, OwnHotkeys: Tab, Seite 2
- Loop, 8 {
- index := A_Index + 16
- active := ownHotkey%index%Active
- y1 := -20 + (A_Index * 60)
- y2 := 10 + (A_Index * 60)
- Gui, OwnHotkeys: Add, CheckBox, x20 y%y1% w100 h20 cFFFFFF vownHotkey%index%Active Checked%active%, Hotkey %index%
- Gui, OwnHotkeys: Add, Hotkey, x20 y%y2% w100 h20 vownHotkey%index%,% ownHotkey%index%NoMods
- Gui, OwnHotkeys: Add, Edit, x130 y%y1% w370 h50 vownHotkey%index%Text,% ownHotkey%index%Text
- }
- Loop, 8 {
- index := A_Index + 24
- active := ownHotkey%index%Active
- y1 := -20 + (A_Index * 60)
- y2 := 10 + (A_Index * 60)
- Gui, OwnHotkeys: Add, CheckBox, x510 y%y1% w100 h20 cFFFFFF vownHotkey%index%Active Checked%active%, Hotkey %index%
- Gui, OwnHotkeys: Add, Hotkey, x510 y%y2% w100 h20 vownHotkey%index%,% ownHotkey%index%NoMods
- Gui, OwnHotkeys: Add, Edit, x620 y%y1% w370 h50 vownHotkey%index%Text,% ownHotkey%index%Text
- }
- Gui, OwnHotkeys: Tab, Seite 3
- Loop, 8 {
- index := A_Index + 32
- active := ownHotkey%index%Active
- y1 := -20 + (A_Index * 60)
- y2 := 10 + (A_Index * 60)
- Gui, OwnHotkeys: Add, CheckBox, x20 y%y1% w100 h20 cFFFFFF vownHotkey%index%Active Checked%active%, Hotkey %index%
- Gui, OwnHotkeys: Add, Hotkey, x20 y%y2% w100 h20 vownHotkey%index%,% ownHotkey%index%NoMods
- Gui, OwnHotkeys: Add, Edit, x130 y%y1% w370 h50 vownHotkey%index%Text,% ownHotkey%index%Text
- }
- Loop, 8 {
- index := A_Index + 40
- active := ownHotkey%index%Active
- y1 := -20 + (A_Index * 60)
- y2 := 10 + (A_Index * 60)
- Gui, OwnHotkeys: Add, CheckBox, x510 y%y1% w100 h20 cFFFFFF vownHotkey%index%Active Checked%active%, Hotkey %index%
- Gui, OwnHotkeys: Add, Hotkey, x510 y%y2% w100 h20 vownHotkey%index%,% ownHotkey%index%NoMods
- Gui, OwnHotkeys: Add, Edit, x620 y%y1% w370 h50 vownHotkey%index%Text,% ownHotkey%index%Text
- }
- Menu, PlatzhalterInformationen, Add, &Informationen, PlatzhalterInformationen
- Gui, OwnHotkeys: Menu, PlatzhalterInformationen
- Gui, OwnHotkeys: Show, h580 w1010, Eigene Hotkeys - %projectName% | %version%
- }
- return
- PlatzhalterInformationen:
- {
- MsgBox, 64, Informationen zu den Platzhaltern,
- (LTrim
- Es können folgende Platzhalter verwendet werden:
- [name] - Dein Name
- [id] - Deine ID
- [ping] - Dein Ping
- [fps] - Deine FPS
- [hp] - Deine HP
- [armour] - Deine Armour
- [zone] - Deine Zone
- [city] - Deine Stadt
- [location] - Dein Autenthaltsort (Zone+Stadt)
- [money] - Dein Bargeld
- [skin] - Deine Skin-ID
- [weaponid] - Weapon-ID der aktuellen Waffe
- [weapon] - Name der aktuellen Waffe
- [freezed] - ja/nein, ob man gefreezed ist
- [vhealth] - Fahrzeugzustand in Prozent
- [vmodelid] - Fahrzeug-Modell-ID
- [vmodel] - Fahrzeug-Modell-Name
- [vspeed] - Fahrzeug-Geschwindigkeit
- [kills] - Gesamte Kills
- [deaths] - Gesamte Tode
- [daykills] - Tages Kills
- [daydeaths] - Tages Tode
- [monthkills] - Monats Kills
- [monthdeaths] - Monats Tode
- [tode] - Gesamte Tode
- [kd] - Gesamte K/D
- [dkd] - Tages K/D
- [mkd] - Monats K/D
- [motor] - Führt das Motor-System aus
- [usepak] - Benutzt ein Erste-Hilfe-Paket (nur wenn weniger als 92 HP)
- [eatfish] - Isst den nächsten Fisch (Nummer wird auch erhöht)
- [usedrugs] - Konsumiert Drogen (nur wenn weniger als 92 HP)
- [nexttrash] - Markiert die nächstgelegene freie Mülltonne
- [sleep Zeit] - Macht eine Pause, Zeitangabe in Millisekunden, [sleep 1000] = 1 Sekunde Pause
- [local] - Führt die Nachricht dahinter lokal aus (nur die aktuelle Zeile)
- )
- }
- return
- OwnHotkeysSave:
- {
- Gui, OwnHotkeys: Submit, NoHide
- saveErrors := ""
- Loop, %ownHotkeyCount% {
- outerIndex := A_Index
- savedOwnHotkey%outerIndex%Text := StrReplace(ownHotkey%outerIndex%Text, "`n", "~")
- IniWrite,% ownHotkey%outerIndex%Active, %ownhotkeys%, %outerIndex%, Active
- IniWrite,% savedOwnHotkey%outerIndex%Text, %ownhotkeys%, %outerIndex%, Text
- name := "ownHotkey" . outerIndex
- hk := %name%
- if hk in +,^,!,+^,+!,^!,+^!
- return
- if (registeredHotkeys.HasKey(name)) {
- oldKey := registeredHotkeys[name]
- Hotkey, %oldKey%, %name%Label, Off
- }
- %name%NoMods := ""
- if (hk == "") {
- if (registeredHotkeys.HasKey(name)) {
- registeredHotkeys.Delete(name)
- }
- IniDelete, %ownhotkeys%, %outerIndex%, Hotkey
- } else {
- alreadyRegistered := false
- for key, value in registeredHotkeys {
- hk2 := StrReplace(hk, "~", "")
- value2 := StrReplace(value, "~", "")
- if (hk2 = value2 && StrLen(hk2) == StrLen(value2)) {
- if (name != key) {
- alreadyRegistered := true
- alreadyRegisteredKey := key
- break
- }
- }
- }
- if (!InStr(hk, "F") && !InStr(hk, "!"))
- hk := "~" . hk
- StringReplace, %name%NoMods, hk, ~
- IniWrite, %hk%, %ownhotkeys%, %outerIndex%, Hotkey
- if (!alreadyRegistered) {
- if (ownHotkey%outerIndex%Active) {
- Hotkey, %hk%, %name%Label
- registeredHotkeys[name] := hk
- }
- } else {
- if (RegExMatch(alreadyRegisteredKey, "ownHotkey(\d+)", key_)) {
- hotkeyName := "Eigener Hotkey " . key_1
- } else {
- hotkeyName := alreadyRegisteredKey
- }
- saveErrors .= "`nEigener Hotkey " . outerIndex . " (" . getUserFriendlyHotkeyName(hk) . ") belegt bei: " . hotkeyName
- }
- }
- }
- if (saveErrors != "") {
- message := "Die Daten wurden gespeichert, jedoch können folgende Hotkeys nicht aktiviert werden, da sie bereits belegt sind:`n" . saveErrors
- } else {
- message := "Alle Eingaben und Daten wurden erfolgreich gespeichert!"
- }
- MsgBox, 64, Speicherung, %message%
- Gui, OwnHotkeys: Destroy
- }
- return
- OwnHotkeysGuiClose:
- {
- Gui, OwnHotkeys: Destroy
- }
- return
- MainTimer:
- if(!firstStart) {
- sleep 100
- firstStart := true
- SendInfo("( Version " . cPrimar . version . cSecond . " ) wurde gestartet!")
- SendInfo("Willkommen " . cPrimar . GetUsername() . cSecond . " ( ID: " . cPrimar . GetID() . cSecond . " )!")
- if(isAdmin(getUsername())) {
- SendInfo("Du hast " cPrimar "Adminrechte" cSecond " im Keybinder!")
- }
- }
- if(!firstSync) {
- if(!isBlocked()) {
- firstSync := true
- SetTimer, AutoSyncTimer, 1000
- }
- }
- if(settings_damageinfo && !isPaintball) {
- if(oldhealth > GetPlayerHealth() + GetPlayerArmor() && GetPlayerHealth() + GetPlayerArmor() > 0) {
- damage := oldhealth - (GetPlayerHealth() + GetPlayerArmor())
- weaponName := getAttackerWeapon()
- SendInfo("Du hast ( " . cPrimar . "-" . damage . " HP" . cSecond . " ) verloren ( " . cPrimar . weaponName . cSecond . " ), Aktuelle HP: " . cGreen . (getPlayerHealth() + getPlayerArmor()))
- }
- }
- if(settings_damagesound && !isPaintball) {
- if(oldhealth > GetPlayerHealth() + GetPlayerArmor() && GetPlayerHealth() + GetPlayerArmor() > 0) {
- SoundPlay, src/sounds/damage.mp3
- }
- }
- oldhealth := GetPlayerHealth() + GetPlayerArmor()
- return
- KillDeathTimer:
- GetChatLine(0, chat)
- GetChatLine(1, chat1)
- gameText := getGameText(3, 28)
- if (InStr(chat1, "( Mord ). Zeuge: ") || InStr(gameText, "~g~Gang") || InStr(gameText, "~g~Team")) {
- IniRead, stats_kills, %stats%, Statistik, Kills
- IniRead, daystats_kills, %dstats%, Statistik, Kills[%A_DD%:%A_MM%:%A_YYYY%]
- IniRead, monthstats_kills, %mstats%, Statistik, Kills[%A_MM%:%A_YYYY%]
- stats_kills++
- daystats_kills++
- monthstats_kills++
- IniWrite, % stats_kills, %stats%, Statistik, Kills
- IniWrite, % daystats_kills, %dstats%, Statistik, Kills[%A_DD%:%A_MM%:%A_YYYY%]
- IniWrite, % monthstats_kills, %mstats%, Statistik, Kills[%A_MM%:%A_YYYY%]
- SendInfo("Dies war dein " . cPrimar . stats_kills . cSecond . " Kill!")
- if(settings_killactive == 1) {
- SendChat(sendLine(settings_killtext))
- }
- if (InStr(gameText, "~g~Gang") || InStr(gameText, "~g~Team")) {
- sleep, 5500
- }
- }
- if(RegExMatch(chat, "Du bist nun für (\d+) Sekunden in Behandlung\.", deathtime_)) {
- IniRead, stats_deaths, %stats%, Statistik, Deaths
- IniRead, daystats_deaths, %dstats%, Statistik, Deaths[%A_DD%:%A_MM%:%A_YYYY%]
- IniRead, monthstats_deaths, %mstats%, Statistik, Deaths[%A_MM%:%A_YYYY%]
- stats_deaths++
- daystats_deaths++
- monthstats_deaths++
- IniWrite, % stats_deaths, %stats%, Statistik, Deaths
- IniWrite, % daystats_deaths, %dstats%, Statistik, Deaths[%A_DD%:%A_MM%:%A_YYYY%]
- IniWrite, % monthstats_deaths, %mstats%, Statistik, Deaths[%A_MM%:%A_YYYY%]
- SendInfo("Dies war dein " . cPrimar . stats_deaths . cSecond . " Tod!")
- if(settings_deathactive == 1) {
- SendChat(sendLine(settings_deathtext))
- }
- SetTimer, AutoSyncTimer, 5000
- }
- return
- ChatTimer:
- GetChatLine(0, chat)
- GetChatLine(1, chat1)
- GetChatLine(2, chat2)
- GetChatLine(3, chat3)
- atmrob_line := chat . chat1
- storerob_line := chat . chat1
- if(settings_reusensystem) {
- if(RegExMatch(chat, "Du hast Reuse (\d+) hier ausgelegt und kannst sie in frühstens 5 Minuten einziehen.", reuse_)) {
- IniRead, settings_reusentimer, %settings%, Reusen, ReusenTimer
- if(reuse_1 == 1) {
- reuse1time := 60*settings_reusentimer
- SendInfo("Der Timer für die " cPrimar "Reuse 1" cSecond " wurde gestartet!")
- } else if(reuse_1 == 2) {
- reuse2time := 60*settings_reusentimer
- SendInfo("Der Timer für die " cPrimar "Reuse 2" cSecond " wurde gestartet!")
- } else if(reuse_1 == 3) {
- reuse3time := 60*settings_reusentimer
- SendInfo("Der Timer für die " cPrimar "Reuse 3" cSecond " wurde gestartet!")
- } else if(reuse_1 == 4) {
- reuse4time := 60*settings_reusentimer
- SendInfo("Der Timer für die " cPrimar "Reuse 4" cSecond " wurde gestartet!")
- } else if(reuse_1 == 5) {
- reuse5time := 60*settings_reusentimer
- SendInfo("Der Timer für die " cPrimar "Reuse 5" cSecond " wurde gestartet!")
- }
- } else if(RegExMatch(chat1, "Du ziehst nun Reuse (\d+) aus dem Wasser.", reuse_)) {
- sleep 5100
- CountReuse()
- sleep 100
- ReuseAuslegen(reuse_1)
- } else if(InStr(chat, "Bitte warten..") && InStr(chat1, "Das Boot wird nun entladen.")) {
- reusenFishCount := 0
- reusenFishMoney := 0
- SendInfo("Deine Fische werden entladen! Warte noch bis deine Fische abgegeben sind!")
- }
- }
- if(RegExMatch(chat, "Du erhältst auf deine nächste Tour innerhalb 30 Minuten \+(\d+)% auf das Gehalt.", bonus_)) {
- bonusgehalt_timer := 30*60
- bonusgehalt := bonus_1
- SendInfo("Der Timer für das" cPrimar " Bonusgehalt (+" bonus_1 " Prozent)" cSecond " wurde gestartet!")
- }
- if(InStr(chat, "Du benötigst mindestens 2g bei dir.")) {
- IniWrite, 0, %items%, Items, Drogen
- SendInfo("Du hast keine Drogen mehr dabei! Hole dir wieder welche!")
- }
- if(InStr(chat, "Du besitzt kein Erste-Hilfe-Paket")) {
- IniWrite, 0, %items%, Items, ErsteHilfe
- SendInfo("Du hast kein Erste-Hilfe-Paket mehr! Kaufe dir wieder eins!")
- }
- if(RegExMatch(chat, "Du hast (\d+)g aus der Safebox geholt.", drugs_)) {
- IniRead, items_drogen, %items%, Items, Drogen
- items_drogen := items_drogen + drugs_1
- IniWrite, % items_drogen, %items%, Items, Drogen
- SendInfo("Du hast " cPrimar drugs_1 cSecond " Gramm Drogen aus der Safebox geholt. Aktuell hast du " . cPrimar . items_drogen . cSecond . " Gramm dabei!")
- }
- if(RegExMatch(chat, "Du hast (\d+)g in die Safebox gelegt.", drugs_)) {
- IniRead, items_drogen, %items%, Items, Drogen
- items_drogen := items_drogen - drugs_1
- IniWrite, % items_drogen, %items%, Items, Drogen
- SendInfo("Du hast " cPrimar drugs_1 cSecond " Gramm Drogen in die Safebox gelegt. Aktuell hast du noch " . cPrimar . items_drogen . cSecond . " Gramm dabei!")
- }
- if(RegExMatch(chat, "Du hast (\d+) Liter getankt für (.*)\$.", tank_)) {
- tank_2 := StrReplace(tank_2, ".", "")
- SendChat("/motor")
- IniRead, stats_tankliter, %stats%, Statistik, TankLiter
- IniRead, stats_tankgeld, %stats%, Statistik, TankGeld
- stats_tankliter := stats_tankliter + tank_1
- stats_tankgeld := stats_tankgeld + tank_2
- IniWrite, % stats_tankliter, %stats%, Statistik, TankLiter
- IniWrite, % stats_tankgeld, %stats%, Statistik, TankGeld
- SendInfo("Du hast bereits " cPrimar stats_tankliter cSecond " Liter getankt und dafür " cPrimar FormatNumber(stats_tankgeld) "$ " cSecond "bezahlt!")
- gasTimeout_ := true
- }
- if(InStr(chat, "* " getUsername() " nimmt seinen kanister und füllt das Fahrzeug auf.")) {
- SendInfo("Du hast einen Kanister benutzt. Kaufe wieder einen an der Tankstelle!")
- IniWrite, 0, %items%, Items, Kanister
- }
- if(InStr(chat, "* Marschl schnüffelt in einer Mülltonne rum.")) {
- IniRead, stats_trashs, %stats%, Statistik, Muelltonnen
- stats_trashs++
- IniWrite, % stats_trashs, %stats%, Statistik, Muelltonnen
- SendInfo("Du hast bereits " cPrimar stats_trashs cSecond " Mülltonnen durchsucht!")
- updateTrashcan(30*60)
- }
- if(InStr(chat, "Diese Mülltonne wurde bereits durchsucht")) {
- if(RegExMatch(chat, "Versuche es erneut in (\d+) Minuten", trash_)) {
- time := trash_1*60
- updateTrashcan(time)
- } else if(RegExMatch(chat, "Versuche es erneut in (\d+) Sekunden", trash_)) {
- time := trash_1
- updateTrashcan(time)
- }
- }
- if(InStr(atmrob_line, "Du hast den Geldautomaten erfolgreich ausgeraubt")) {
- if(RegExMatch(atmrob_line, "Beute\: \+(\d+\.\d+)\$", money_)) {
- robMoney := StrReplace(money_1, ".", "")
- IniRead, stats_atmrob, %stats%, Statistik, ATMRobs
- IniRead, stats_atmrobgeld, %stats%, Statistik, ATMRobsGeld
- stats_atmrob++
- stats_atmrobgeld := stats_atmrobgeld + robMoney
- IniWrite, % stats_atmrob, %stats%, Statistik, ATMRobs
- IniWrite, % stats_atmrobgeld, %stats%, Statistik, ATMRobsGeld
- SendInfo("Du hast " cPrimar FormatNumber(robMoney) "$" cSecond " an dem Automaten erbeutet!")
- SendInfo("Du hast bereits " cPrimar stats_atmrob cSecond " Automaten ausgeraubt und dabei " cPrimar FormatNumber(stats_atmrobgeld) "$" cSecond " erbeutet!")
- }
- }
- if(InStr(chat, "GPS: Du hast die Abgabezone erreicht. Nutze '/airdropdeliver'")) {
- SendChat("/airdropdeliver")
- }
- if(InStr(chat, "Du raubst nun diesen Store aus, beim Verlassen des Stores bricht der Raubzug ab.")) {
- if(RegExMatch(chat, "Dauer\: (\d+) Sekunden", timer_)) {
- IniRead, stats_storerobs, %stats%, Statistik, StoreRobs
- stats_storerobs++
- IniWrite, % stats_storerobs, %stats%, Statistik, StoreRobs
- SendInfo("Der Timer für den Ladenraub wurde gestartet! Du hast bereits " cPrimar stats_storerobs cSecond " Läden ausgeraubt.")
- storeRobCounter := timer_1
- }
- }
- if(InStr(chat, "Der Überfall von " getUsername() " ist gescheitert")) {
- SendInfo("Der Timer für den Ladenraub wurde gestoppt!")
- storeRobCounter := -1
- }
- if(RegExMatch(chat, "Du hast (.*)\$ für (.*) Eisen und (.*) Aluminium erhalten\.", crew_)) {
- crewmoney := StrReplace(crew_1, ".", "")
- creweisen := StrReplace(crew_2, ".", "")
- crewalu := StrReplace(crew_3, ".", "")
- IniRead, stats_crew_eisen, %stats%, Statistik, CrewEisen
- IniRead, stats_crew_alu, %stats%, Statistik, CrewAlu
- IniRead, stats_crew_money, %stats%, Statistik, CrewGeld
- stats_crew_money := stats_crew_money + crewmoney
- stats_crew_eisen := stats_crew_eisen + creweisen
- stats_crew_alu := stats_crew_alu + crewalu
- SendInfo("Du hast bereits " cPrimar FormatNumber(stats_crew_eisen) cSecond " Eisen und " cPrimar FormatNumber(stats_crew_alu) cSecond " Alu an die Crew geliefert!")
- SendInfo("Die Crew hat dir dafür bisher " cPrimar FormatNumber(stats_crew_money) "$" cSecond " ausgezahlt!")
- IniWrite, % stats_crew_eisen, %stats%, Statistik, CrewEisen
- IniWrite, % stats_crew_alu, %stats%, Statistik, CrewAlu
- IniWrite, % stats_crew_money, %stats%, Statistik, CrewGeld
- }
- if(RegExMatch(chat, "Du hast (.*)\$ für (.*) Zutatenpakete und (.*) Pseudoephedrin erhalten\.", crew_)) {
- crewmoney := StrReplace(crew_1, ".", "")
- crewpakete := StrReplace(crew_2, ".", "")
- crewpseudo := StrReplace(crew_3, ".", "")
- IniRead, stats_crew_pseudo, %stats%, Statistik, CrewPseudo
- IniRead, stats_crew_pakete, %stats%, Statistik, CrewPakete
- IniRead, stats_crew_money, %stats%, Statistik, CrewGeld
- stats_crew_money := stats_crew_money + crewmoney
- stats_crew_pakete := stats_crew_pakete + crewpakete
- stats_crew_pseudo := stats_crew_pseudo + crewpseudo
- SendInfo("Du hast bereits " cPrimar FormatNumber(stats_crew_pakete) cSecond " Pakete und " cPrimar FormatNumber(stats_crew_pseudo) cSecond " Pseudo an die Crew geliefert!")
- SendInfo("Die Crew hat dir dafür bisher " cPrimar FormatNumber(stats_crew_money) "$" cSecond " ausgezahlt!")
- IniWrite, % stats_crew_pseudo, %stats%, Statistik, CrewPseudo
- IniWrite, % stats_crew_pakete, %stats%, Statistik, CrewPakete
- IniWrite, % stats_crew_money, %stats%, Statistik, CrewGeld
- }
- if(InStr(storerob_line, "Du hast diesen Store erfolgreich überfallen")) {
- storerob_line2 := ""
- if(InStr(chat, "Du hast diesen Store erfolgreich überfallen")) {
- if(InStr(chat2,"hat ein Store im") && InStr(chat2,"$")) {
- storerob_line2 := chat2
- } else storerob_line2 := chat1
- } else if(InStr(chat1, "Du hast diesen Store erfolgreich überfallen")) {
- if(InStr(chat3,"hat ein Store im") && InStr(chat3,"$")) {
- storerob_line2 := chat3
- } else storerob_line2 := chat2
- }
- if(RegExMatch(storerob_line2, "\: (\d+\.\d+)\$", money_)) {
- robMoney := StrReplace(money_1, ".", "")
- IniRead, stats_storerobs, %stats%, Statistik, StoreRobs
- IniRead, stats_storerobsgeld, %stats%, Statistik, StoreRobsGeld
- stats_storerobsgeld := stats_storerobsgeld + robMoney
- IniWrite, % stats_storerobsgeld, %stats%, Statistik, StoreRobsGeld
- SendInfo("Du hast " cPrimar FormatNumber(robMoney) "$" cSecond " aus dem Laden erbeutet!")
- SendInfo("Du hast bereits " cPrimar stats_storerobs cSecond " Läden ausgeraubt und dabei " cPrimar FormatNumber(stats_storerobsgeld) "$" cSecond " erbeutet!")
- ShowGameText("~b~Ladenraub~n~erfolgreich!", 3000, 6)
- storeRobCounter := -1
- }
- }
- if(InStr(chat, "Du erhälst am PayDay +700$ für das Zerstören des SprayTags.")) {
- IniRead, stats_spraytags, %stats%, Statistik, SprayTags
- stats_spraytags++
- stats_spraytags_money := stats_spraytags*700
- IniWrite, % stats_spraytags, %stats%, Statistik, SprayTags
- SendChat("/f Ich habe ein SprayTag in " GetPlayerZone() ", " GetPlayerCity() " übersprüht! | SprayTag: " stats_spraytags " - " FormatNumber(stats_spraytags_money) "$!")
- }
- if (RegExMatch(chat, "\* (.+) (.*) bietet dir ein Erste-Hilfe-Paket für \$500 an\. Benutze \'\/accept paket\'", message_)) {
- medicName := message_2
- SetTimer, PaketTimer, 1
- }
- if (RegExMatch(chat, "Paintball\: (.*) hat die Arena betreten\.", message_)) {
- if (message_1 == getUsername()) {
- isPaintball := true
- SendInfo("Der Paintball-Modus wurde " . cGreen . "aktiviert" . cSecond . ".")
- }
- }
- if (RegExMatch(chat, "Paintball\: (.*) wurde von (.*) getötet\.", message_)) {
- if (message_1 == getUsername()) {
- if(killstreakPaintball != 0) {
- SendChat("Meine Killstreak war: " killstreakPaintball)
- killstreakPaintball := 0
- }
- } else if (message_2 == getUsername()) {
- killstreakPaintball++
- if(killstreakPaintball != 0) {
- SendChat("Aktuelle Killstreak: " killstreakPaintball)
- }
- }
- }
- return
- XTimer:
- if(settings_hellofrak) {
- GetChatLine(0, chat)
- if(RegExMatch(chat, "\[Fraktion\]\: (.*) hat sich eingeloggt\.", frakname_)) {
- SendInfo("Möchtest du " cPrimar frakname_1 cSecond " aus der Fraktion begrüßen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- Random, tmp, 1, 4
- if(tmp == 1) {
- SendChat("/f Hi " . frakname_1)
- } else if(tmp == 2) {
- SendChat("/f Hallo " . frakname_1)
- } else if(tmp == 3) {
- SendChat("/f Heyho " . frakname_1)
- } else if(tmp == 4) {
- SendChat("/f Moin " . frakname_1)
- }
- }
- }
- }
- if(settings_hellocrew) {
- GetChatLine(0, chat)
- if(RegExMatch(chat, "\[Crew\]\: (.*) hat sich eingeloggt\.", frakname_)) {
- SendInfo("Möchtest du " cPrimar frakname_1 cSecond " aus der Crew begrüßen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- Random, tmp, 1, 4
- if(tmp == 1) {
- SendChat("/c Hi " . frakname_1)
- } else if(tmp == 2) {
- SendChat("/c Hallo " . frakname_1)
- } else if(tmp == 3) {
- SendChat("/c Heyho " . frakname_1)
- } else if(tmp == 4) {
- SendChat("/c Moin " . frakname_1)
- }
- }
- }
- }
- if(settings_hellocrew && settings_hellofrak) {
- GetChatLine(0, chat)
- if(RegExMatch(chat, "\[Fraktion \/ Crew\]: (.*) hat sich eingeloggt\.", frakname_)) {
- SendInfo("Möchtest du " cPrimar frakname_1 cSecond " aus der Fraktion/Crew begrüßen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- Random, tmp, 1, 4
- if(tmp == 1) {
- SendChat("/c Hi " . frakname_1)
- SendChat("/f Hi " . frakname_1)
- } else if(tmp == 2) {
- SendChat("/c Hallo " . frakname_1)
- SendChat("/f Hallo " . frakname_1)
- } else if(tmp == 3) {
- SendChat("/c Heyho " . frakname_1)
- SendChat("/f Heyho " . frakname_1)
- } else if(tmp == 4) {
- SendChat("/c Moin " . frakname_1)
- SendChat("/f Moin " . frakname_1)
- }
- }
- }
- }
- if (zollTimeout_ && isPlayerInAnyVehicle() && isPlayerAtZoll() && settings_zollsystem) {
- SendInfo("Möchtest du den Zoll öffnen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T3
- if (!ErrorLevel && !isBlocked()) {
- zollTimeout_ := false
- zollTimeout := 0
- openMaut()
- } else {
- zollTimeout_ := true
- }
- }
- if (gasTimeout_ && isPlayerInAnyVehicle() && IsPlayerDriver() && isPlayerAtGas() && settings_tanksystem) {
- SendInfo("Möchtest du dein Fahrzeug tanken? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T10
- if (!ErrorLevel && !isBlocked()) {
- gasTimeout_ := false
- gasTimeout := 0
- if(GetVehicleEngineState() == true) {
- SendChat("/motor")
- sleep 100
- }
- SendChat("/fill")
- } else {
- gasTimeout_ := true
- }
- }
- if (gasTimeout_ && !isPlayerInAnyVehicle() && isPlayerAtGas() && settings_tanksystem) {
- SendInfo("Möchtest du ein Kanister kaufen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T10
- if (!ErrorLevel && !isBlocked()) {
- gasTimeout_ := false
- gasTimeout := 0
- SendChat("/kanister")
- } else {
- gasTimeout_ := true
- }
- }
- if (towersTimeout_ && isPlayerAtTower() && settings_towersystem) {
- SendInfo("Möchtest du den Tower einnehmen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- towersTimeout_ := false
- towersTimeout := 0
- SendChat("/robtower")
- } else {
- towersTimeout_ := true
- }
- }
- if (gateTimeout_ && isPlayerAtGate() && settings_torsystem) {
- SendInfo("Möchtest du das Tor öffnen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- gateTimeout_ := false
- gateTimeout := 0
- SendChat("/auf")
- } else {
- gateTimeout_ := true
- }
- }
- if (fishTimeout_ && isPlayerAtFishPoint() && settings_fishsystem) {
- SendInfo("Möchtest du Fischen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- fishTimeout_ := false
- fishTimeout := 0
- startFish()
- } else {
- fishTimeout_ := true
- }
- }
- if (cookTimeout_ && isPlayerAtCookPoint() && settings_fishsystem) {
- SendInfo("Möchtest du deine Fische kochen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- cookTimeout_ := false
- cookTimeout := 0
- cookFish()
- } else {
- cookTimeout_ := true
- }
- }
- if (sprayTimeout_ && isPlayerAtSprayTag() && !IsPlayerInAnyVehicle() && settings_spraysystem) {
- SendInfo("Möchtest du das Spraytag übersprühen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- sprayTimeout_ := false
- sprayTimeout := 0
- SendChat("/spray")
- } else {
- sprayTimeout_ := true
- }
- }
- if (kettenTimeout_ && isPlayerAtKette() && !IsPlayerInAnyVehicle() && settings_kettensystem) {
- SendInfo("Möchtest du die Kette übernehmen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- kettenTimeout_ := false
- kettenTimeout := 0
- SendChat("/robres")
- } else {
- kettenTimeout_ := true
- }
- }
- if (dietrichTimeout_ && isPlayerAtDietrich()) {
- SendInfo("Möchtest du das Tor aufbrechen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- dietrichTimeout_ := false
- dietrichTimeout := 0
- SendChat("/dietrich")
- } else {
- dietrichTimeout_ := true
- }
- }
- if (sellFishTimeout_ && isPlayerInRangeOfPoint(6.0265, -30.8849, 1003.5494, 5.0)) {
- SendInfo("Möchtest du deine Fische verkaufen? Du kannst mit '" . cPrimar . "X" . cSecond . "' bestätigen!")
- KeyWait, X, D, T5
- if (!ErrorLevel && !isBlocked()) {
- sellFishTimeout_ := false
- sellFishTimeout := 0
- sellFish()
- SendChat("/sell pfand")
- } else {
- sellFishTimeout_ := true
- }
- }
- return
- XTimerTimeout:
- if (!zollTimeout_) {
- zollTimeout ++
- if (zollTimeout >= 3) {
- zollTimeout_ := true
- }
- }
- if (!gasTimeout_ && !isPlayerInAnyVehicle()) {
- gasTimeout_ ++
- if (gasTimeout_ >= 10) {
- gasTimeout_ := true
- }
- }
- if (!towersTimeout_) {
- towersTimeout_ ++
- if (towersTimeout >= 5) {
- towersTimeout_ := true
- }
- }
- if (!gateTimeout_) {
- gateTimeout ++
- if (gateTimeout >= 5) {
- gateTimeout_ := true
- }
- }
- if (!fishTimeout_) {
- fishTimeout ++
- if (fishTimeout >= 5) {
- fishTimeout_ := true
- }
- }
- if (!cookTimeout_) {
- cookTimeout ++
- if (cookTimeout >= 5) {
- cookTimeout_ := true
- }
- }
- if (!sprayTimeout_) {
- sprayTimeout ++
- if (sprayTimeout >= 5) {
- sprayTimeout_ := true
- }
- }
- if (!kettenTimeout_) {
- kettenTimeout ++
- if (kettenTimeout >= 5) {
- kettenTimeout_ := true
- }
- }
- if (!dietrichTimeout_) {
- dietrichTimeout ++
- if (dietrichTimeout >= 5) {
- dietrichTimeout_ := true
- }
- }
- if (!sellFishTimeout_) {
- sellFishTimeout ++
- if (sellFishTimeout >= 5) {
- sellFishTimeout_ := true
- }
- }
- return
- SekundenTimer:
- if(settings_lottosystem && A_Min == 0 && A_Sec == 0) {
- if(GetPlayerMoney() >= 2000) {
- if(settings_lottozahl == 0) {
- Random, tmp, 1, 100
- SendChat("/lotto " tmp)
- } else SendChat("/lotto " settings_lottozahl)
- } else SendError("Du hast zu wenig Geld auf der Hand für das automatische Lotto")
- }
- if(reuse1time != -1) {
- if(reuse1time == 0) {
- reuse1time := -1
- SendInfo("Du kannst " cPrimar "Reuse 1" cSecond " nun einholen. " cPrimar settings_reusentimer " Minuten" cSecond " sind vorbei!")
- } else if(reuse1time > 0) {
- reuse1time--
- }
- }
- if(reuse2time != -1) {
- if(reuse2time == 0) {
- reuse2time := -1
- SendInfo("Du kannst " cPrimar "Reuse 2" cSecond " nun einholen. " cPrimar settings_reusentimer " Minuten" cSecond " sind vorbei!")
- } else if(reuse2time > 0) {
- reuse2time--
- }
- }
- if(reuse3time != -1) {
- if(reuse3time == 0) {
- reuse3time := -1
- SendInfo("Du kannst " cPrimar "Reuse 3" cSecond " nun einholen. " cPrimar settings_reusentimer " Minuten" cSecond " sind vorbei!")
- } else if(reuse3time > 0) {
- reuse3time--
- }
- }
- if(reuse4time != -1) {
- if(reuse4time == 0) {
- reuse4time := -1
- SendInfo("Du kannst " cPrimar "Reuse 4" cSecond " nun einholen. " cPrimar settings_reusentimer " Minuten" cSecond " sind vorbei!")
- } else if(reuse4time > 0) {
- reuse4time--
- }
- }
- if(reuse5time != -1) {
- if(reuse5time == 0) {
- reuse5time := -1
- SendInfo("Du kannst " cPrimar "Reuse 5" cSecond " nun einholen. " cPrimar settings_reusentimer " Minuten" cSecond " sind vorbei!")
- } else if(reuse5time > 0) {
- reuse5time--
- }
- }
- if(bonusgehalt_timer != -1) {
- if(bonusgehalt_timer == 0) {
- bonusgehalt_timer := -1
- bonusgehalt := 0
- SendInfo("Dein Bonusgehalt von " cPrimar bonusgehalt " Prozent" cSecond " ist ausgelaufen!")
- } else if (bonusgehalt_timer == 600) {
- SendInfo("Dein Bonusgehalt von " cPrimar bonusgehalt " Prozent" cSecond " ist noch " cPrimar "10 Minuten" cSecond " gültig!")
- bonusgehalt_timer--
- } else if (bonusgehalt_timer == 300) {
- SendInfo("Dein Bonusgehalt von " cPrimar bonusgehalt " Prozent" cSecond " ist noch " cPrimar "5 Minuten" cSecond " gültig!")
- bonusgehalt_timer--
- }else if(bonusgehalt_timer > 0) {
- bonusgehalt_timer--
- }
- }
- if(pak_timer != -1) {
- if(pak_timer == 0) {
- pak_timer := -1
- SendInfo("Du kannst nun wieder ein Erste-Hilfe Paket nutzen!")
- } else {
- pak_timer--
- }
- }
- if(drug_timer != -1) {
- drug_timer--
- if(drug_timer == 0) {
- drug_timer := -1
- SendInfo("Du kannst nun wieder Drogen nutzen!")
- } else if(settings_drugusecountdown) {
- if(drug_timer < 6 && drug_timer > 0) {
- SendInfo("Du kannst in " cPrimar drug_timer " Sekunden" cSecond " wieder Drogen nehmen.")
- }
- }
- }
- if(findActive) {
- if(findCounter == 0) {
- SendChat("/find " findPlayer)
- findCounter := 5
- }
- findCounter--
- }
- if(findShowActive) {
- if(findShowCounter == 0) {
- SendChat("/showpos " findShowPlayer " " findShowFindPlayer)
- findShowCounter := 5
- }
- findShowCounter--
- }
- if(countdownActive) {
- if(countdownTime > 0) {
- if(countdownChat != "") {
- SendChat("/" countdownChat " > > > " countdownTime " < < <")
- } else SendChat("> > > " countdownTime " < < <")
- } else if(countdownTime == 0) {
- if(countdownChat != "") {
- SendChat("/" countdownChat " > > > GO GO GO < < <")
- } else SendChat("> > > GO GO GO < < <")
- countdownActive := false
- countdownChat := ""
- countdownTime := 0
- }
- countdownTime--
- }
- if(settings_autosync) {
- IfWinNotActive, %gta_title%
- return
- if(isBlocked())
- return
- if(autosyncCounter == 1200) {
- SendInfo("Das automatische Synchronisieren beginnt in " cPrimar "2 Sekunden" cSecond ".")
- SendInfo("Drücke in der Zeit am besten " cPrimar "keine Tasten" cSecond "!")
- SetTimer, AutoSyncTimer, 2000
- }
- autosyncCounter++
- }
- if(storeRobCounter != -1) {
- storeRobCounter--
- gametext_storerbob := "~w~Store Rob:~n~~b~" storeRobCounter " Sekunden"
- if(storeRobCounter == 0) {
- storeRobCounter := -1
- } else {
- ShowGameText(gametext_storerbob, 999, 6)
- }
- }
- return
- TempoTimer:
- if(isBlocked())
- return
- if (tempomatActive == false || tempo <= 0)
- return
- if (isPlayerInAnyVehicle() && isPlayerDriver()) {
- currentSpeed := getVehicleSpeed()
- if (currentSpeed < settings_tempo) {
- SendInput, {W down}
- } else {
- SendInput, {W up}
- }
- }
- return
- AutoSyncTimer:
- SetTimer, AutoSyncTimer, Off
- syncPlayer()
- return
- PaketTimer:
- {
- if (!WinExist(gta_title) || !WinActive(gta_title) || !isConnectedToRPG()) {
- return
- }
- SendInfo("Der Sanitäter " . cPrimar . medicName . cSecond . " bietet dir ein Paket an, drücke '" . cPrimar . "X" . cSecond . "' zum annehmen.")
- KeyWait, X, D, T5
- if (!ErrorLevel) {
- SendChat("/accept paket")
- sleep, 100
- if (RegExMatch(readChatLine(0) . readChatLine(1) . readChatLine(2), "Du hast bereits ein Erste-Hilfe-Paket\. Verwende \/erstehilfe")) {
- if (settings_thankpak) {
- SendChat("Vielen Dank " . medicName . ", doch ich habe bereits ein MediKit!")
- IniWrite, 1, ini\items.ini, Items, ErsteHilfe
- items_erstehilfe := 1
- }
- } else if (RegExMatch(readChatLine(0) . readChatLine(1) . readChatLine(2), "Du hast bereits genug Erste-Hilfe-Pakete\. Verwende \/erstehilfe")) {
- if (settings_thankpak) {
- SendChat("Vielen Dank " . medicName . ", doch ich habe bereits ein MediKit!")
- IniWrite, 1, ini\items.ini, Items, ErsteHilfe
- items_erstehilfe := 1
- }
- } else if (RegExMatch(readChatLine(0) . readChatLine(1) . readChatLine(2), "\* Du hast für \$500 ein Erste-Hilfe-Paket von (\S+) gekauft\.")) {
- if (settings_thankpak) {
- SendChat("Vielen Dank " . medicName . " für das MediKit")
- IniWrite, 1, ini\items.ini, Items, ErsteHilfe
- items_erstehilfe := 1
- }
- }
- }
- medicName := -1
- SetTimer, PaketTimer, off
- }
- return
- equipProfile1Label:
- {
- if (isBlocked())
- return
- equipment := ""
- Loop, 6 {
- if (settings_profile1_%A_Index% != "") {
- equipment .= " " . settings_profile1_%A_Index%
- }
- }
- SendChat("/ausruesten" . equipment)
- Sleep, 250
- chat := readChatLine(0) . readChatLine(1) . readChatLine(2) . readChatLine(3)
- if (RegExMatch(chat, "Du hast dich für (.*)\$ ausgerüstet, es wurden (.*) Materialien benötigt", chat_)) {
- chat_1 := StrReplace(chat_1, ".", "")
- chat_2 := StrReplace(chat_2, ".", "")
- SendInfo("Ausrüstungsprofil" cPrimar " 1 " cSecond "genutzt, es wurden " . cPrimar . chat_2 . cSecond . " Materialien verbraucht.")
- IniRead, stats_equipmats, %stats%, Statistik, EquipMats
- IniRead, stats_equipgeld, %stats%, Statistik, EquipGeld
- stats_equipmats := stats_equipmats + chat_2
- stats_equipgeld := stats_equipgeld + numberFormat(chat_1)
- IniWrite, % stats_equipmats, %stats%, Statistik, EquipMats
- IniWrite, % stats_equipgeld, %stats%, Statistik, EquipGeld
- SendInfo("Du hast dich insgesamt bereits für " . cPrimar . FormatNumber(stats_equipgeld) . cSecond . "$ ausgerüstet. (Verbrauchte Mats: " cPrimar stats_equipmats cSecond ")!")
- }
- SendChat("/heal")
- }
- return
- equipProfile2Label:
- {
- if (isBlocked())
- return
- equipment := ""
- Loop, 6 {
- if (settings_profile2_%A_Index% != "") {
- equipment .= " " . settings_profile2_%A_Index%
- }
- }
- SendChat("/ausruesten" . equipment)
- Sleep, 250
- chat := readChatLine(0) . readChatLine(1) . readChatLine(2) . readChatLine(3)
- if (RegExMatch(chat, "Du hast dich für (.*)\$ ausgerüstet, es wurden (.*) Materialien benötigt", chat_)) {
- chat_1 := StrReplace(chat_1, ".", "")
- chat_2 := StrReplace(chat_2, ".", "")
- SendInfo("Ausrüstungsprofil" cPrimar " 2 " cSecond "genutzt, es wurden " . cPrimar . chat_2 . cSecond . " Materialien verbraucht.")
- IniRead, stats_equipmats, %stats%, Statistik, EquipMats
- IniRead, stats_equipgeld, %stats%, Statistik, EquipGeld
- stats_equipmats := stats_equipmats + chat_2
- stats_equipgeld := stats_equipgeld + numberFormat(chat_1)
- IniWrite, % stats_equipmats, %stats%, Statistik, EquipMats
- IniWrite, % stats_equipgeld, %stats%, Statistik, EquipGeld
- SendInfo("Du hast dich insgesamt bereits für " . cPrimar . FormatNumber(stats_equipgeld) . cSecond . "$ ausgerüstet. (Verbrauchte Mats: " cPrimar stats_equipmats cSecond ")!")
- }
- SendChat("/heal")
- }
- return
- equipProfile3Label:
- {
- if (isBlocked())
- return
- equipment := ""
- Loop, 6 {
- if (settings_profile3_%A_Index% != "") {
- equipment .= " " . settings_profile3_%A_Index%
- }
- }
- SendChat("/ausruesten" . equipment)
- Sleep, 250
- chat := readChatLine(0) . readChatLine(1) . readChatLine(2) . readChatLine(3)
- if (RegExMatch(chat, "Du hast dich für (.*)\$ ausgerüstet, es wurden (.*) Materialien benötigt", chat_)) {
- chat_1 := StrReplace(chat_1, ".", "")
- chat_2 := StrReplace(chat_2, ".", "")
- SendInfo("Ausrüstungsprofil" cPrimar " 3 " cSecond "genutzt, es wurden " . cPrimar . chat_2 . cSecond . " Materialien verbraucht.")
- IniRead, stats_equipmats, %stats%, Statistik, EquipMats
- IniRead, stats_equipgeld, %stats%, Statistik, EquipGeld
- stats_equipmats := stats_equipmats + chat_2
- stats_equipgeld := stats_equipgeld + numberFormat(chat_1)
- IniWrite, % stats_equipmats, %stats%, Statistik, EquipMats
- IniWrite, % stats_equipgeld, %stats%, Statistik, EquipGeld
- SendInfo("Du hast dich insgesamt bereits für " . cPrimar . FormatNumber(stats_equipgeld) . cSecond . "$ ausgerüstet. (Verbrauchte Mats: " cPrimar FormatNumber(stats_equipmats) cSecond ")!")
- }
- SendChat("/heal")
- }
- return
- equipLabel:
- if(isBlocked())
- return
- SendChat("/ausruesten")
- return
- countdownLabel:
- if(isBlocked())
- return
- configCountdown()
- return
- healLabel:
- if(isBlocked())
- return
- SendChat("/heal")
- return
- lichtSystemLabel:
- if(isBlocked())
- return
- if(IsPlayerInAnyVehicle() == true) {
- if(IsPlayerDriver() == true) {
- SendChat("/licht")
- } else SendError("Du bist nicht der Fahrer des Vehicle")
- } else SendError("Du bist in keinem Vehicle!")
- return
- lockSystemLabel:
- if(isBlocked())
- return
- if(IsPlayerInAnyVehicle() == true) {
- if(IsPlayerDriver() == true) {
- SendChat("/lock")
- } else SendError("Du bist nicht der Fahrer des Vehicle")
- } else SendError("Du bist in keinem Vehicle!")
- return
- motorSystemLabel:
- if(isBlocked())
- return
- if(IsPlayerInAnyVehicle() == true) {
- if(IsPlayerDriver() == true) {
- if(GetVehicleEngineState() == true) {
- SendChat("/motor")
- } else if(GetVehicleEngineState() == false) {
- SendChat("/motor")
- SendChat("/licht")
- }
- } else SendError("Du bist nicht der Fahrer des Vehicle")
- } else SendError("Du bist in keinem Vehicle!")
- return
- repeatLabel:
- if(isBlocked())
- return
- SendInput, t{Up}{Enter}
- return
- thanksLabel:
- if(isBlocked())
- return
- Random, tmp, 1, 4
- if(tmp == 1) {
- SendChat("Vielen Dank!")
- } else if(tmp == 2) {
- SendChat("Dankeschön!")
- } else if(tmp == 3) {
- SendChat("Ich bedanke mich!")
- } else if (rand == 4) {
- SendChat("Merci!")
- }
- return
- sorryLabel:
- if(isBlocked())
- return
- Random, tmp, 1, 4
- if (tmp == 1) {
- SendChat("Entschuldigung!")
- } else if (tmp == 2) {
- SendChat("Sorry!")
- } else if (tmp == 3) {
- SendChat("Tut mir leid!")
- } else if (tmp == 4) {
- SendChat("Ich bitte um Verzeihung!")
- }
- return
- showCrewMemberLabel:
- if(isBlocked())
- return
- SendChat("/crewmembers")
- return
- showFrakMemberLabel:
- if(isBlocked())
- return
- SendChat("/members")
- return
- showPosFLabel:
- if(isBlocked())
- return
- if(IsPlayerInAnyVehicle()) {
- SendChat("/f Ich befinde mich in " GetPlayerZone() ", " GetPlayerCity() " in einem " GetVehicleModelName() " | HP: " GetPlayerHealth())
- } else SendChat("/f Ich befinde mich in " GetPlayerZone() ", " GetPlayerCity() " | HP: " GetPlayerHealth())
- return
- showPosCLabel:
- if(isBlocked())
- return
- if(IsPlayerInAnyVehicle()) {
- SendChat("/c Ich befinde mich in " GetPlayerZone() ", " GetPlayerCity() " in einem " GetVehicleModelName() " | HP: " GetPlayerHealth())
- } else SendChat("/c Ich befinde mich in " GetPlayerZone() ", " GetPlayerCity() " | HP: " GetPlayerHealth())
- return
- statsLabel:
- if(isBlocked())
- return
- SendChat("/stats")
- return
- tempomatLabel:
- if(isBlocked())
- return
- if (tempomatActive) {
- SendInput, {W up}
- tempomatActive := false
- SendInfo("Du hast den Tempomat " cRed "deaktiviert" cPrimar "!")
- } else {
- tempomatActive := true
- IniRead, settings_tempomat, %settings%, Tempomat, Tempomat
- SendInfo("Du hast den Tempomat " cGreen "aktiviert" cSecond " ( Tempo: " . cPrimar . settings_tempomat . " km/h" cSecond " )!")
- }
- return
- togPhoneLabel:
- if(isBlocked())
- return
- SendChat("/togphone")
- return
- useDrugsLabel:
- if(isBlocked())
- return
- useDrugs()
- return
- usePakLabel:
- if(isBlocked())
- return
- usePak()
- return
- useFishLabel:
- if(isBlocked())
- return
- useFish()
- return
- stopAutomaticSystemLabel:
- if(isBlocked())
- return
- if(findActive) {
- SendInfo("Du hast die automatische Suche von " GetFullName(findPlayer) " beendet!")
- findActive := false
- findPlayer := -1
- findCounter := 0
- } else if(findShowActive) {
- SendInfo("Du hast das automatische Zeigen an " GetFullName(findShowPlayer) " von " GetFullName(findShowFindPlayer) " beendet!")
- findShowActive := false
- findShowPlayer := -1
- findShowFindPlayer := -1
- findShowCounter := 0
- } else if(countdownActive) {
- SendInfo("Du hast hast den Countdown beendet!")
- countdownActive := false
- countdownChat := ""
- countdownTime := 0
- } else SendError("Es laufen keine aktiven automatischen Systeme!")
- return
- pauseLabel:
- Suspend
- if(isBlocked())
- return
- if(A_IsSuspended)
- {
- SendInfo("Du hast den Keybinder " cRed "deaktiviert" cSecond "!")
- SetTimer, MainTimer, Off
- SetTimer, KillDeathTimer, Off
- SetTimer, ChatTimer, Off
- SetTimer, XTimer, Off
- SetTimer, XTimerTimeout, Off
- SetTimer, SekundenTimer, Off
- SetTimer, TempoTimer, Off
- }
- if(!A_IsSuspended)
- {
- SendInfo("Du hast den Keybinder " cGreen "aktiviert" cSecond "!")
- SetTimer, MainTimer, 100
- SetTimer, KillDeathTimer, 100
- SetTimer, ChatTimer, 100
- SetTimer, XTimer, 500
- SetTimer, XTimerTimeout, 500
- SetTimer, SekundenTimer, 1000
- SetTimer, TempoTimer, 25
- }
- return
- gateLabel:
- if(isBlocked())
- return
- SendChat("/auf")
- return
- ownHotkey1Label:
- ownHotkey(1)
- return
- ownHotkey2Label:
- ownHotkey(2)
- return
- ownHotkey3Label:
- ownHotkey(3)
- return
- ownHotkey4Label:
- ownHotkey(4)
- return
- ownHotkey5Label:
- ownHotkey(5)
- return
- ownHotkey6Label:
- ownHotkey(6)
- return
- ownHotkey7Label:
- ownHotkey(7)
- return
- ownHotkey8Label:
- ownHotkey(8)
- return
- ownHotkey9Label:
- ownHotkey(9)
- return
- ownHotkey10Label:
- ownHotkey(10)
- return
- ownHotkey11Label:
- ownHotkey(11)
- return
- ownHotkey12Label:
- ownHotkey(12)
- return
- ownHotkey13Label:
- ownHotkey(13)
- return
- ownHotkey14Label:
- ownHotkey(14)
- return
- ownHotkey15Label:
- ownHotkey(15)
- return
- ownHotkey16Label:
- ownHotkey(16)
- return
- ownHotkey17Label:
- ownHotkey(17)
- return
- ownHotkey18Label:
- ownHotkey(18)
- return
- ownHotkey19Label:
- ownHotkey(19)
- return
- ownHotkey20Label:
- ownHotkey(20)
- return
- ownHotkey21Label:
- ownHotkey(21)
- return
- ownHotkey22Label:
- ownHotkey(22)
- return
- ownHotkey23Label:
- ownHotkey(23)
- return
- ownHotkey24Label:
- ownHotkey(24)
- return
- ownHotkey25Label:
- ownHotkey(25)
- return
- ownHotkey26Label:
- ownHotkey(26)
- return
- ownHotkey27Label:
- ownHotkey(27)
- return
- ownHotkey28Label:
- ownHotkey(28)
- return
- ownHotkey29Label:
- ownHotkey(29)
- return
- ownHotkey30Label:
- ownHotkey(30)
- return
- ownHotkey31Label:
- ownHotkey(31)
- return
- ownHotkey32Label:
- ownHotkey(32)
- return
- ownHotkey33Label:
- ownHotkey(33)
- return
- ownHotkey34Label:
- ownHotkey(34)
- return
- ownHotkey35Label:
- ownHotkey(35)
- return
- ownHotkey36Label:
- ownHotkey(36)
- return
- ownHotkey37Label:
- ownHotkey(37)
- return
- ownHotkey38Label:
- ownHotkey(38)
- return
- ownHotkey39Label:
- ownHotkey(39)
- return
- ownHotkey40Label:
- ownHotkey(40)
- return
- ownHotkey41Label:
- ownHotkey(41)
- return
- ownHotkey42Label:
- ownHotkey(42)
- return
- ownHotkey43Label:
- ownHotkey(43)
- return
- ownHotkey44Label:
- ownHotkey(44)
- return
- ownHotkey45Label:
- ownHotkey(45)
- return
- ownHotkey46Label:
- ownHotkey(46)
- return
- ownHotkey47Label:
- ownHotkey(47)
- return
- ownHotkey48Label:
- ownHotkey(48)
- return
- ~W::
- ~A::
- ~S::
- ~D::
- if(isBlocked())
- return
- if(GetPlayerHealth() < 82 && autoUseToggle == false && isPaintball == false) {
- if(settings_druguse == 1 && drug_timer == -1 && items_drogen >= 2) {
- useDrugs()
- } else if(settings_pakuse == 1 && pak_timer == -1 && items_erstehilfe >= 1) {
- usePak()
- } else if(settings_fishuse == 1) {
- useFish()
- }
- }
- return
- ~F::
- {
- if (isBlocked()) {
- return
- }
- if(settings_motorsystem) {
- if(IsPlayerInAnyVehicle() == 0) {
- Loop,
- if(IsPlayerDriver() == 1)
- {
- if(getVehicleLockState() == 0)
- {
- sleep 200
- SendChat("/lock")
- return
- }
- }
- }
- }
- if(settings_locksystem) {
- if(IsPlayerInAnyVehicle() == 1) {
- if(IsPlayerDriver() == 1) {
- if (getVehicleEngineState() == 1) {
- SendChat("/motor")
- return
- }
- }
- }
- }
- }
- return
- ~LButton::
- if (isDialogOpen() && GetDialogCaption() == "Übersicht der Mülltonnen" && isDialogButton1Selected()) {
- trashDialog := true
- OnDialogResponse()
- } else if (isDialogOpen() && GetDialogCaption() == "Übersicht deiner Tore" && isDialogButton1Selected()) {
- gateDialog := true
- OnDialogResponse()
- }
- If (A_ThisHotkey = A_PriorHotkey and A_TimeSincePriorHotkey < 350)
- ~Enter::
- {
- if (IsDialogOpen() && GetDialogCaption() == "Übersicht der Mülltonnen") {
- trashDialog := true
- OnDialogResponse()
- } else if (IsDialogOpen() && GetDialogCaption() == "Übersicht deiner Tore") {
- gateDialog := true
- OnDialogResponse()
- }
- }
- return
- :?:/bk::
- :?:/backup::
- SendInput, {Enter}
- {
- SendChat("/bk")
- if(bk == true) {
- bk := false
- SendChat("/f Ich benötige keine Verstärkung mehr!")
- } else if(bk == false) {
- bk := true
- SendChat("/f Ich benötige dringend Verstärkung in " . getPlayerZone() . ", " . getPlayerCity . "! (HP: " . getPlayerHealth() . ")")
- }
- }
- return
- :?:/reusentimer::
- SendInput, {Enter}
- {
- reusentimer := PlayerInput("Zeit in Minuten: ")
- if (reusentimer != "" || reusentimer != " " || !IsNumeric(reusentimer)) {
- settings_reusentimer := reusentimer
- IniWrite, % settings_reusentimer, %settings%, Reusen, ReusenTimer
- SendInfo("Du hast den Timer auf " cPrimar settings_reusentimer " Minuten" cSecond " eingestellt!")
- } else SendError("Keine gültige Zeit!")
- }
- return
- :?:/pbexit::
- SendInput, {Enter}
- {
- cantExit := 0
- SendChat("/pbexit")
- Sleep, 200
- Loop, 5 {
- if (inStr(readChatLine(A_Index - 1), "Fehler: Nachdem du getroffen wurdest, musst du 5 Sekunde warten, um die Arena zu verlassen.")) {
- cantExit := 1
- }
- }
- if (!cantExit) {
- isPaintball := false
- }
- }
- return
- :?:/pbenter::
- SendInput, {Enter}
- {
- if (!isPlayerInAnyVehicle()) {
- if (isPlayerInRangeOfPoint(901.2969, -1203.0950, 16.9832, 3)) {
- SendChat("/pbenter")
- } else SendError("Du bist nicht an der Paintball-Arena.")
- } else SendError("Du darfst dich in keinem Fahrzeug befinden.")
- }
- return
- :?:/pb::
- :?:/paintball::
- SendInput, {Enter}
- {
- SendChat("/paintball")
- Sleep, 200
- players := 0
- Loop, 100 {
- if (inStr(readChatLine(players), "Punkte")) {
- players ++
- } else {
- SendInfo("Es sind Spieler im Paintball: " . cPrimar . players)
- return
- }
- }
- }
- return
- :?:/pbmodus::
- SendInput, {Enter}
- {
- if(isPaintball) {
- isPaintball := false
- SendInfo("Der Paintball-Modus wurde " . cRed . "deaktiviert" . cSecond . ".")
- } else {
- isPaintball := true
- SendInfo("Der Paintball-Modus wurde " . cGreen . "aktiviert" . cSecond . ".")
- }
- }
- return
- :?:/trash::
- SendInput, {Enter}
- {
- showTrashcans()
- }
- return
- :?:/tn::
- :?:/tnext::
- SendInput, {Enter}
- {
- showNextTrashcan()
- }
- return
- :?:/af::
- :?:/afind::
- SendInput, {Enter}
- {
- if(!findActive) {
- playerToFindInput := PlayerInput("Spieler: ")
- if (playerToFindInput == "" || playerToFindInput == " ") {
- SendError("Die Eingabe wurde abgebrochen.")
- return
- }
- playerToFind := playerToFindInput
- if (getFullName(playerToFind) == "") {
- SendError("Der angegebene Spieler ist nicht online.")
- return
- }
- if (getFullName(playerToFind) == getUsername()) {
- SendError("Du kannst dich nicht selber finden.")
- return
- }
- findActive := true
- findPlayer := playerToFind
- IniRead, stopHotkey, ini\hotkeys.ini, Hotkeys, stopAutomaticSystem
- stopHotkey := StrReplace(stopHotkey, "~", "")
- SendInfo("Du hast die automatische Suche auf " cPrimar getFullName(playerToFind) cSecond " eingestellt!")
- SendInfo("Du kannst die Suche mit '" . cPrimar . stopHotkey . cSecond . "' stoppen!")
- } else SendError("Du musst erst die Automatische Suche deaktivieren!")
- }
- return
- :?:/as::
- :?:/ashow::
- SendInput, {Enter}
- {
- if(!findShowActive) {
- playerToShowInput := PlayerInput("Spieler, dem gezeigt werden soll: ")
- if (playerToShowInput == "" || playerToShowInput == " ") {
- SendError("Die Eingabe wurde abgebrochen.")
- return
- }
- playerToShow := playerToShowInput
- if (getFullName(playerToShow) == "") {
- SendError("Der angegebene Spieler ist nicht online.")
- return
- }
- if (getFullName(playerToShow) == getUsername()) {
- SendError("Du kannst dir die Position nicht selber zeigen.")
- return
- }
- playerToFindInput := PlayerInput("Gesuchter Spieler (Username/ID): ")
- if (playerToFindInput == "" || playerToFindInput == " ") {
- SendError("Die Eingabe wurde abgebrochen.")
- return
- }
- playerToFind := playerToFindInput
- if (getFullName(playerToFind) == "") {
- SendError("Der angegebene Spieler ist nicht online.")
- return
- }
- if (getFullName(playerToFind) == getUsername()) {
- SendError("Du kannst dich nicht selber finden.")
- return
- }
- findShowActive := true
- findShowPlayer := playerToShow
- findShowFindPlayer := playerToFind
- IniRead, stopHotkey, ini\hotkeys.ini, Hotkeys, stopAutomaticSystem
- stopHotkey := StrReplace(stopHotkey, "~", "")
- SendInfo("Du hast die automatische Suche auf " cPrimar getFullName(playerToFind) cSecond " eingestellt und du zeigst die Position " cPrimar getFullName(findShowPlayer) cSecond "!")
- SendInfo("Du kannst die Suche mit '" . cPrimar . stopHotkey . cSecond . "' stoppen!")
- } else SendError("Du musst erst die Automatische Suche deaktivieren!")
- }
- return
- :?:/items::
- SendInput, {Enter}
- {
- forceStats()
- IniRead, items_drogen, %items%, Items, Drogen
- IniRead, items_erstehilfe, %items%, Items, ErsteHilfe
- IniRead, items_lagerfeuer, %items%, Items, Lagerfeuer
- IniRead, items_kanister, %items%, Items, Kanister
- SendInfo("|============| " cPrimar "Inventar" cSecond " |============|")
- SendInfo("Drogen dabei: " cPrimar items_drogen cSecond "g")
- SendInfo("Erste-Hilfe-Paket: " . cPrimar . items_erstehilfe)
- SendInfo("Lagerfeuer: " . cPrimar . items_lagerfeuer)
- SendInfo("Kanister: " . cPrimar . items_kanister)
- SendInfo("|============| " cPrimar "Inventar" cSecond " |============|")
- }
- return
- :?:/sync::
- SendInput, {Enter}
- {
- syncPlayer()
- }
- return
- :?:/autouse::
- :?:/bossmode::
- SendInput, {Enter}
- {
- if(autoUseToggle == false)
- {
- autoUseToggle := true
- SendInfo("Du hast das AutoUse System " cRed "deaktiviert" cSecond "!")
- } else if(autoUseToggle == true)
- {
- autoUseToggle := false
- SendInfo("Du hast das AutoUse System " cGreen "aktiviert" cSecond "!")
- }
- }
- return
- :?:/afish::
- SendInput, {Enter}
- {
- startFish()
- }
- return
- :?:/cook::
- :?:/cooked::
- SendInput, {Enter}
- {
- checkCooked()
- }
- return
- :?:/fishes::
- :?:/fische::
- SendInput, {Enter}
- {
- checkFish()
- }
- return
- :?:/acook::
- SendInput, {Enter}
- {
- cookFish()
- }
- return
- :?:/asell::
- SendInput, {Enter}
- {
- if (IsPlayerInRangeOfPoint(2.3247, -28.8923, 1003.5494, 10)) {
- sellFish()
- } else {
- IniRead, stats_fishgeld, %stats%, Statistik, FishGeld
- SendInfo("Du kannst deine Fische hier nicht verkaufen! (Gesamter Verdienst: " . cPrimar . formatNumber(stats_fishgeld) . "$" cSecond ")")
- }
- }
- return
- :?:/setad::
- SendInput, {Enter}
- {
- adid := PlayerInput("WerbeID: ")
- if(IsNumeric(adid) && adid > 0 && adid < 4) {
- adtext := PlayerInput("Werbung: ")
- if(adtext != "" || adtext != " ") {
- settings_werbetext%adid% := adtext
- IniWrite, % adtext, %settings%, Werbung, Werbetext%adid%
- SendInfo("Du hast den " cPrimar "Werbetext " adid cSecond " auf folgendes eingestellt:")
- SendInfo(cPrimar settings_werbetext%adid%)
- }
- } else SendError("Die WerbeID muss zwischen 1 und 3 liegen!")
- }
- return
- :?:/readad::
- SendInput, {Enter}
- {
- adid := PlayerInput("WerbeID: ")
- if(IsNumeric(adid) && adid > 0 && adid < 4) {
- IniRead, settings_werbetext%aid%, %settings%, Werbung, Werbetext%adid%
- werbetext := settings_werbetext%aid%
- if(werbetext) {
- SendInfo("Eingesteller " cPrimar "Werbetext " adid cSecond ":")
- SendInfo(cPrimar werbetext)
- } else SendError("Du musst erst eine Werbung mit " cPrimar "/setad" cSecond " einstellen!")
- } else SendError("Die WerbeID muss zwischen 1 und 3 liegen!")
- }
- return
- :?:/postad::
- SendInput, {Enter}
- {
- adid := PlayerInput("WerbeID: ")
- if(IsNumeric(adid) && adid > 0 && adid < 4) {
- IniRead, settings_werbetext%aid%, %settings%, Werbung, Werbetext%adid%
- werbetext := settings_werbetext%aid%
- if(werbetext) {
- SendChat("/ad " werbetext)
- } else SendError("Du musst erst eine Werbung mit " cPrimar "/setad" cSecond " einstellen!")
- } else SendError("Die WerbeID muss zwischen 1 und 3 liegen!")
- }
- return
- :?:/aab::
- SendInput, {Enter}
- {
- SendChat("/pickup")
- SendChat("Guten Tag, mein Name ist " getUsername() ". Wie kann ich Ihnen helfen?")
- }
- return
- :?:/aauf::
- SendInput, {Enter}
- {
- SendChat("Ich wünsche ihnen noch einen angenehmen Tag.")
- SendChat("/hangup")
- }
- return
- :?:/mailbox::
- :?:/amb::
- SendInput, {Enter}
- {
- SendChat("/pickup")
- SendChat("Hallo, " getUsername() " ist gerade nicht erreichbar. Sie haben 15 Sekunden Zeit eine Nachricht zu hinterlassen.")
- sleep 15000
- SendChat("Die Nachricht wurde an " getUsername() " übermittelt.")
- SendChat("/hangup")
- }
- return
- :?:/setkd::
- SendInput, {Enter}
- {
- SendChat("/stats")
- sleep, 350
- if (RegExMatch(getDialogText(), "(.*)Morde: (.*) (.*)", kills_)) {
- kills_2 := StrReplace(kills_2, ".", "")
- IniWrite, %kills_2%, %stats%, Statistik, Kills
- }
- if (RegExMatch(getDialogText(), "(.*)Gestorben: (.*) (.*)", deaths_)) {
- deaths_2 := StrReplace(deaths_2, ".", "")
- IniWrite, %deaths_2%, %stats%, Statistik, Deaths
- }
- SendInput, {Enter}
- IniRead, stats_kills, %stats%, Statistik, Kills
- IniRead, stats_deaths, %stats%, Statistik, Deaths
- SendInfo("Du hast " . cPrimar . stats_kills . cSecond . " Kills und " . cPrimar . stats_deaths . cSecond . " Tode.")
- }
- return
- :?:/kd::
- SendInput, {Enter}
- {
- IniRead, stats_kills, %stats%, Statistik, Kills
- IniRead, stats_deaths, %stats%, Statistik, Deaths
- kd := stats_kills/stats_deaths
- SendInfo("Du hast " cPrimar stats_kills cSecond " Kills und " cPrimar stats_deaths cSecond " Tode!")
- SendInfo("Dies ist eine K/D von " cPrimar Round(kd, 2) cSecond "!")
- }
- return
- :?:/dkd::
- SendInput, {Enter}
- {
- IniRead, daystats_kills, %dstats%, Statistik, Kills[%A_DD%:%A_MM%:%A_YYYY%]
- IniRead, daystats_deaths, %dstats%, Statistik, Deaths[%A_DD%:%A_MM%:%A_YYYY%]
- dkd := daystats_kills/daystats_deaths
- SendInfo("Du hast heute " cPrimar daystats_kills cSecond " Kills und " cPrimar daystats_deaths cSecond " Tode!")
- SendInfo("Dies ist eine K/D von " cPrimar Round(dkd, 2) cSecond "!")
- }
- return
- :?:/mkd::
- SendInput, {Enter}
- {
- IniRead, monthstats_kills, %mstats%, Statistik, Kills[%A_MM%:%A_YYYY%]
- IniRead, monthstats_deaths, %mstats%, Statistik, Deaths[%A_MM%:%A_YYYY%]
- mkd := monthstats_kills/monthstats_deaths
- SendInfo("Du hast diesen Monat " cPrimar monthstats_kills cSecond " Kills und " cPrimar monthstats_deaths cSecond " Tode!")
- SendInfo("Dies ist eine K/D von " cPrimar Round(mkd, 2) cSecond "!")
- }
- return
- :?:/fkd::
- SendInput, {Enter}
- {
- IniRead, stats_kills, %stats%, Statistik, Kills
- IniRead, stats_deaths, %stats%, Statistik, Deaths
- kd := stats_kills/stats_deaths
- SendChat("/f Ich habe " stats_kills " Kills und " stats_deaths " Tode! Meine K/D: " Round(kd, 2))
- }
- return
- :?:/fdkd::
- SendInput, {Enter}
- {
- IniRead, daystats_kills, %dstats%, Statistik, Kills[%A_DD%:%A_MM%:%A_YYYY%]
- IniRead, daystats_deaths, %dstats%, Statistik, Deaths[%A_DD%:%A_MM%:%A_YYYY%]
- dkd := daystats_kills/daystats_deaths
- SendChat("/f Ich habe heute " daystats_kills " Kills und " daystats_deaths " Tode! Meine Tages K/D: " Round(dkd, 2))
- }
- return
- :?:/fmkd::
- SendInput, {Enter}
- {
- IniRead, monthstats_kills, %mstats%, Statistik, Kills[%A_MM%:%A_YYYY%]
- IniRead, monthstats_deaths, %mstats%, Statistik, Deaths[%A_MM%:%A_YYYY%]
- mkd := monthstats_kills/monthstats_deaths
- SendChat("/f Ich habe diesen Monat " monthstats_kills " Kills und " monthstats_deaths " Tode! Meine Monats K/D: " Round(mkd, 2))
- }
- return
- :?:/ckd::
- SendInput, {Enter}
- {
- IniRead, stats_kills, %stats%, Statistik, Kills
- IniRead, stats_deaths, %stats%, Statistik, Deaths
- kd := stats_kills/stats_deaths
- SendChat("/c Ich habe " stats_kills " Kills und " stats_deaths " Tode! Meine K/D: " Round(kd, 2))
- }
- return
- :?:/cdkd::
- SendInput, {Enter}
- {
- IniRead, daystats_kills, %dstats%, Statistik, Kills[%A_DD%:%A_MM%:%A_YYYY%]
- IniRead, daystats_deaths, %dstats%, Statistik, Deaths[%A_DD%:%A_MM%:%A_YYYY%]
- dkd := daystats_kills/daystats_deaths
- SendChat("/c Ich habe heute " daystats_kills " Kills und " daystats_deaths " Tode! Meine Tages K/D: " Round(dkd, 2))
- }
- return
- :?:/cmkd::
- SendInput, {Enter}
- {
- IniRead, monthstats_kills, %mstats%, Statistik, Kills[%A_MM%:%A_YYYY%]
- IniRead, monthstats_deaths, %mstats%, Statistik, Deaths[%A_MM%:%A_YYYY%]
- mkd := monthstats_kills/monthstats_deaths
- SendChat("/c Ich habe diesen Monat " monthstats_kills " Kills und " monthstats_deaths " Tode! Meine Monats K/D: " Round(mkd, 2))
- }
- return
- :?:/resms::
- {
- distanceSMS := 0
- Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
- {
- if (RegExMatch(A_LoopReadLine, "SMS: (.+), Sender: (\S+) \((\d+)\)", preSMS_)) {
- if (preSMS_2 != getUsername()) {
- RegExMatch(A_LoopReadLine, "SMS: (.+), Sender: (\S+) \((\d+)\)", sms_)
- }
- } else if (RegExMatch(A_LoopReadLine, "SMS: (.+)\.\.\.", preSMS_1_)) {
- distanceSMS := 0
- RegExMatch(A_LoopReadLine, "SMS: (.+)\.\.\.", sms_)
- } else if (RegExMatch(A_LoopReadLine, "\.\.\.(.*), Sender: (\S+) \((\d+)\)", preSMS_2_)) {
- if (distanceSMS == 2) {
- if (preSMS_2_2 != getUsername()) {
- sms_2 := preSMS_2_2
- sms_3 := preSMS_2_3
- }
- }
- }
- distanceSMS ++
- }
- if (sms_2 != "") {
- SendInfo("Letzte SMS (von " . cPrimar . sms_2 . cSecond . "):")
- SendInfo("Inhalt: " cPrimar . sms_1)
- SendInput, /sms %sms_3%{space}
- } else {
- SendError("Es wurde keine SMS gefunden.")
- }
- }
- return
- :?:/read::
- {
- Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
- {
- if (RegExMatch(A_LoopReadLine, "\[Werbung\] (.+), (\S+) \((\d+)\)")) {
- RegExMatch(A_LoopReadLine, "\[Werbung\] (.+), (\S+) \((\d+)\)", ad_)
- }
- }
- if (ad_2 != "" || ad_2 != getUsername()) {
- SendInfo("Letzte Werbung (von " . cPrimar . ad_2 . cSecond . "):")
- SendInfo("Inhalt: " cPrimar . ad_1)
- SendInput, /sms %ad_3%{space}
- } else {
- SendError("Es wurde keine Werbung gefunden.")
- }
- }
- return
- :?:/tempo::
- {
- tempoInput := PlayerInput("Tempo: ")
- if (tempoInput == "" && !IsNumeric(tempoInput))
- return
- IniRead, settings_tempomat, %settings%, Tempomat, Tempomat
- settings_tempomat := tempoInput
- SendInfo("Du hast das Tempo auf " . cPrimar . tempo . " km/h " cSecond "gesetzt. Starte den Tempomat mit " . cPrimar . %tempomatNoMods% . cSecond . "!")
- }
- return
- :?:/gf::
- :?:/gfs::
- SendInput, {Enter}
- {
- SendChat("/gangfights")
- }
- return
- :?:/ac::
- SendInput, {Enter}
- {
- SendChat("/activity")
- }
- return
- :?:/ga::
- SendInput, {Enter}
- {
- DisableCheckpoint()
- SendChat("/gpsaus")
- SendInfo("Du hast den GPS Marker " cRed "deaktiviert" cSecond "!")
- }
- return
- :?:/fg::
- SendInput, {Enter}
- {
- if(IsPlayerInRangeOfPoint(1429.6649,-996.9980,1639.7843, 3)) {
- SendChat("/festgeld 1250000")
- } else SendError("Du befindest dich nicht in der Bank!")
- }
- return
- :?:/hdf::
- :?:/ruhe::
- SendInput, {Enter}
- {
- random, tmp, 1, 3
- if (tmp == 1) {
- SendChat("Sein Sie bitte still.")
- } else if (tmp == 2) {
- SendChat("Können Sie bitte ruhig sein?")
- } else if (tmp == 3) {
- SendChat("Bitte sein Sie leise..")
- }
- }
- return
- :?:/rs::
- SendInput, {Enter}
- {
- SendChat("/rucksack")
- }
- return
- :?:/tr::
- :?:/rechner::
- SendInput, {Enter}
- {
- rechnung := PlayerInput("Rechner: ")
- SendInfo("Rechnung: " cPrimar rechnung)
- SendInfo("Das Ergebnis lautet: " cPrimar Evaluate(rechnung))
- }
- return
- :?:/cd::
- :?:/countdown::
- SendInput, {Enter}
- {
- configCountdown()
- }
- return
- :?:/at::
- SendInput, {Enter}
- {
- SendChat("/accept ticket")
- }
- return
- :?:/ap::
- SendInput, {Enter}
- {
- SendChat("/accept paket")
- }
- return
- :?:/messer::
- SendInput, {Enter}
- {
- SendChat("/sellgun " . getUsername() . " messer 1")
- }
- return
- :?:/deagle::
- SendInput, {Enter}
- {
- SendChat("/sellgun " . getUsername() . " deagle 1")
- }
- return
- :?:/mp5::
- SendInput, {Enter}
- {
- SendChat("/sellgun " . getUsername() . " mp5 1")
- }
- return
- :?:/tec9::
- SendInput, {Enter}
- {
- SendChat("/sellgun " . getUsername() . " tec9 1")
- }
- return
- :?:/shotgun::
- SendInput, {Enter}
- {
- SendChat("/sellgun " . getUsername() . " shotgun 1")
- }
- return
- :?:/rifle::
- SendInput, {Enter}
- {
- SendChat("/sellgun " . getUsername() . " rifle 1")
- }
- return
- :?:/ak47::
- SendInput, {Enter}
- {
- SendChat("/sellgun " . getUsername() . " ak47 1")
- }
- return
- :?:/gates::
- if(array_Gates.MaxIndex() > 0) {
- showGates()
- SendInfo("In der Liste kannst du ein Tor suchen und es markieren.")
- SendInfo("Wenn du an der Markierung angekommen bist kannst du das Gate mit " cPrimar "/delgate" cSecond " löschen.")
- } else if(array_Gates.MaxIndex() == "") {
- SendInfo("Du hast noch keine Tore im Keybinder eingetragen.")
- SendInfo("Das kannst du mit " cPrimar "/addgate" cSecond " an dem jeweiligen Tor machen.")
- }
- return
- :?:/addgate::
- SendInput, {Enter}
- {
- if(getPlayerInteriorId() == 0) {
- if(!IsPlayerInAnyVehicle()) {
- if(!isPlayerAtGate()) {
- GetPlayerPos(p_x, p_y, p_z)
- result := URLDownloadToVar(baseURL . "api/addgate.php?username=" getUsername() "&posx=" p_x "&posy=" p_y "&posz=" p_z)
- result := StrReplace(result, "?", "")
- if(result == "GATE_ADD_SUCCESS") {
- SendInfo("Du hast erfolgreich ein Tor hinzugefügt!")
- loadGates()
- } else SendError("Es ist ein Fehler beim hinzufügen des Tor aufgetreten!")
- } else SendError("Du stehst zu nah ein einem anderen Tor!")
- } else SendError("Du darfst nicht in einem Vehicle sein!")
- } else SendError("Du darfst dich nicht in einem Interior befinden!")
- }
- return
- :?:/delgate::
- SendInput, {Enter}
- {
- if(isPlayerAtGate()) {
- Loop % array_Gates.MaxIndex() {
- if(isPlayerInRangeOfPoint(array_Gates[A_Index]["posX"], array_Gates[A_Index]["posY"], array_Gates[A_Index]["posZ"], 5)) {
- SendInfo("Du bist an der GateID: " array_Gates[A_Index]["id"])
- result := URLDownloadToVar(baseURL . "api/delgate.php?username=" getUsername() "&gateid=" array_Gates[A_Index]["id"])
- result := StrReplace(result, "?", "")
- if(result == "GATE_DEL_SUCCESS") {
- SendInfo("Du hast erfolgreich das Tor (ID: " cPrimar array_Gates[A_Index]["id"] cSecond ") gelöscht!")
- array_Gates := []
- loadGates()
- } else SendError("Es ist ein Fehler beim löschen des Tor aufgetreten!")
- }
- }
- } else {
- SendError("Du befindest nicht an einem eingetragenen Tor!")
- SendError("Mit " cPrimar "/gates" cSecond " kannst du dir alle Tore anzeigen und markieren lassen.")
- }
- }
- return
- isAdmin(name)
- {
- result := URLDownloadToVar(baseURL . "api/admin.php?username=" name)
- result := StrReplace(result, "?", "")
- if(result == "USER_IS_ADMIN") {
- return true
- } else return false
- }
- return
- SendInfo(message)
- {
- AddChatMessage(prefix . message)
- }
- return
- SendError(message)
- {
- AddChatMessage(prefix . cRed . "[Fehler] " . cSecond . message)
- }
- return
- isBlocked()
- {
- if (isInChat() || isDialogOpen() || isPlayerInMenu() || !WinActive(gta_title) || !IsSAMPAvailable()) {
- return true
- }
- return false
- }
- return
- isPlayerAtDietrich() {
- if (isPlayerInRangeOfPoint(2292.0696,-2028.7617,13.5469, 3) || isPlayerInRangeOfPoint(2325.7764,-2009.7836,13.5469, 3)) {
- return true
- } else return false
- }
- return
- isPlayerAtTrashcan() {
- Loop % array_Trashcan.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"], 3)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtZoll() {
- Loop % array_Zoll.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Zoll[A_Index][1], array_Zoll[A_Index][2], array_Zoll[A_Index][3], 10)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtTower() {
- Loop % array_Towers.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Towers[A_Index][1], array_Towers[A_Index][2], array_Towers[A_Index][3], 5)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtGas() {
- Loop % array_Gas.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Gas[A_Index][1], array_Gas[A_Index][2], array_Gas[A_Index][3], 5)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtGate() {
- Loop % array_Gates.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Gates[A_Index]["posX"], array_Gates[A_Index]["posY"], array_Gates[A_Index]["posZ"], 5)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtFishPoint() {
- Loop % array_Fish.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Fish[A_Index][1], array_Fish[A_Index][2], array_Fish[A_Index][3], 2)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtCookPoint() {
- Loop % array_Cook.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Cook[A_Index][1], array_Cook[A_Index][2], array_Cook[A_Index][3], 3)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtSprayTag() {
- Loop % array_Sprays.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Sprays[A_Index]["posX"], array_Sprays[A_Index]["posY"], array_Sprays[A_Index]["posZ"], 2)) {
- return true
- }
- }
- return false
- }
- return
- isPlayerAtKette() {
- Loop % array_Ketten.MaxIndex() {
- if (isPlayerInRangeOfPoint(array_Ketten[A_Index][1], array_Ketten[A_Index][2], array_Ketten[A_Index][3], 3)) {
- return true
- }
- }
- return false
- }
- return
- ReuseAuslegen(currentReuse) {
- if(currentReuse == 1) {
- SendChat("/fishing")
- sleep 150
- SendInput, {Enter}
- } else if(currentReuse == 2) {
- SendChat("/fishing")
- sleep 150
- SendInput, {Down}{Enter}
- } else if(currentReuse == 3) {
- SendChat("/fishing")
- sleep 150
- SendInput, {Down}{Down}{Enter}
- } else if(currentReuse == 4) {
- SendChat("/fishing")
- sleep 150
- SendInput, {Down}{Down}{Down}{Enter}
- } else if(currentReuse == 5) {
- SendChat("/fishing")
- sleep 150
- SendInput, {Down}{Down}{Down}{Down}{Enter}
- }
- }
- return
- CountReuse() {
- Loop,
- {
- resenFishMoneyOne := 0
- chat := readChatLine(A_Index-1)
- sleep 100
- if(RegExMatch(chat, "Hering\: (\d+) Stück", hering_)) {
- reusenFishCount := reusenFishCount + hering_1
- resenFishMoneyOne := hering_1*6
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Makrele\: (\d+) Stück", makrele_)) {
- reusenFishCount := reusenFishCount + makrele_1
- resenFishMoneyOne := makrele_1*7
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Lachs\: (\d+) Stück", lachs_)) {
- reusenFishCount := reusenFishCount + lachs_1
- resenFishMoneyOne := lachs_1*8
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Forelle\: (\d+) Stück", forelle_)) {
- reusenFishCount := reusenFishCount + forelle_1
- resenFishMoneyOne := forelle_1*9
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Rotbarsch\: (\d+) Stück", rotbarsch_)) {
- reusenFishCount := reusenFishCount + rotbarsch_1
- resenFishMoneyOne := rotbarsch_1*10
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Karpfen\: (\d+) Stück", karpfen_)) {
- reusenFishCount := reusenFishCount + karpfen_1
- resenFishMoneyOne := karpfen_1*18
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Seeteufel\: (\d+) Stück", seeteufel_)) {
- reusenFishCount := reusenFishCount + seeteufel_1
- resenFishMoneyOne := seeteufel_1*30
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Schildkröten\: (\d+) Stück", schildkroete_)) {
- reusenFishCount := reusenFishCount + schildkroete_1
- resenFishMoneyOne := schildkroete_1*48
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(RegExMatch(chat, "Riesen Kalmar\: (\d+) Stück", riesenkalmar_)) {
- reusenFishCount := reusenFishCount + riesenkalmar_1
- resenFishMoneyOne := riesenkalmar_1*60
- reusenFishMoney := reusenFishMoney + resenFishMoneyOne
- } else if(InStr(chat, "Gefangene Fische:")) {
- reusenFishMoney := reusenFishMoney/2
- SendInfo("Du hast " cPrimar reusenFishCount cSecond " Fische aus der Reuse gezogen, mit einem Wert von " cPrimar FormatNumber(Round(reusenFishMoney)) "$" cSecond "!")
- if(bonusgehalt != 0) {
- pdmoney := (bonusgehalt/100) * reusenFishMoney
- SendInfo("Mit Bonusgehalt erhältst du zusätzlich " cPrimar FormatNumber(Round(pdmoney)) "$" cSecond " (Gesamt: " cPrimar FormatNumber(Round(reusenFishMoney+pdmoney)) "$" cSecond ")!")
- }
- reusenFishCount := 0
- reusenFishMoney := 0
- break
- }
- }
- }
- return
- openMaut() {
- SendChat("/zoll")
- Sleep, 200
- Loop, 5 {
- chat := readChatLine(A_Index - 1)
- if (inStr(chat, "Es ist keine Zollstation in deiner Nähe.")) {
- Sleep, 400
- SendChat("/zoll")
- break
- }
- }
- }
- return
- syncPlayer()
- {
- forceStats()
- sleep 100
- checkCooked()
- sleep 100
- autosyncCounter := 0
- SendInfo("Das automatische Synchronisieren ist " cGreen "abgeschlossen" cSecond "!")
- }
- return
- forceStats()
- {
- SendChat("/stats")
- sleep, 100
- if (RegExMatch(GetDialogText(), "(.*)Drogen: (\d+)g(.*)", drugs_)) {
- IniWrite, %drugs_2%, ini\items.ini, Items, Drogen
- }
- if (RegExMatch(getDialogText(), "(.*)Morde: (.*) (.*)", kills_)) {
- kills_2 := StrReplace(kills_2, ".", "")
- IniWrite, %kills_2%, ini\stats\stats.ini, Statistik, Kills
- } else {
- return -1
- }
- if (RegExMatch(getDialogText(), "(.*)Gestorben: (.*) (.*)", deaths_)) {
- deaths_2 := StrReplace(deaths_2, ".", "")
- IniWrite, %deaths_2%, ini\stats\stats.ini, Statistik, Deaths
- } else {
- return -1
- }
- SendInput, {Enter}
- sleep, 100
- SendChat("/inventory")
- sleep, 100
- if (inStr(getDialogText(), "Erste-Hilfe-Paket")) {
- IniWrite, 1, ini\items.ini, Items, ErsteHilfe
- } else {
- IniWrite, 0, ini\items.ini, Items, ErsteHilfe
- }
- if (inStr(getDialogText(), "Benzin Kanister")) {
- IniWrite, 1, ini\items.ini, Items, Kanister
- } else {
- IniWrite, 0, ini\items.ini, Items, Kanister
- }
- if (inStr(getDialogText(), "Lagerfeuer")) {
- if (RegExMatch(getDialogText(), "(.*)Lagerfeuer(\s+)(\d+)(.*)", campfire_)) {
- iniWrite, %campfire_3%, ini\items.ini, Items, Lagerfeuer
- }
- } else {
- iniWrite, 0, ini\items.ini, Items, Lagerfeuer
- }
- SendInput, {Enter}
- }
- return
- loadSprays()
- {
- sprayRes := URLDownloadToVar(baseURL . "api/sprays.php")
- sprayRes := StrReplace(sprayRes, "?", "")
- sprayResult := JSON.load(sprayRes)
- for newIndex, newEntry in sprayResult{
- contains := false
- for index, entry in array_Sprays {
- if (entry["id"] == newEntry["id"]) {
- contains := true
- }
- }
- if (!contains) {
- array_Sprays.Push(newEntry)
- }
- }
- }
- return
- loadTrashcans()
- {
- trashRes := URLDownloadToVar(baseURL . "api/trashs.php")
- trashRes := StrReplace(trashRes, "?", "")
- trashResult := JSON.load(trashRes)
- for newIndex, newEntry in trashResult{
- contains := false
- for index, entry in array_Trashcan {
- if (entry["id"] == newEntry["id"]) {
- contains := true
- }
- }
- if (!contains) {
- array_Trashcan.Push(newEntry)
- }
- }
- }
- return
- loadGates()
- {
- gateRes := URLDownloadToVar(baseURL . "api/gates.php?username=" getUsername())
- gateRes := StrReplace(gateRes, "?", "")
- IfNotInString, gateRes, NO_USER
- {
- IfNotInString, gateRes, ERROR_LOADING_GATES
- {
- gateResult := JSON.load(gateRes)
- for newIndex, newEntry in gateResult{
- contains := false
- for index, entry in array_Gates {
- if (entry["id"] == newEntry["id"]) {
- contains := true
- }
- }
- if (!contains) {
- array_Gates.Push(newEntry)
- }
- }
- }
- }
- }
- return
- getFishValue(fishName, fishWeight) {
- if (fishName == "Bernfisch" || fishName == "Blauer Fächerfisch") {
- value := fishWeight * 1
- } else if (fishName == "Roter Schnapper" || fishName == "Schwertfisch" || fishName == "Zackenbarsch") {
- value := fishWeight * 2
- } else if (fishName == "Katzenfisch" || fishName == "Forelle" || fishName == "Strandkrabbe") {
- value := fishWeight * 3
- } else if (fishName == "Delphin" || fishName == "Hai" || fishName == "Segelfisch") {
- value := fishWeight * 4
- } else if (fishName == "Makrele" || fishName == "Kabeljau") {
- value := fishWeight * 5
- } else if (fishName == "Aal" || fishName == "Hecht" || fishName == "Scholle") {
- value := fishWeight * 6
- } else if (fishName == "Steinbutt") {
- value := fishWeight * 7
- } else if (fishName == "Schildkröte" || fishName == "Thunfisch" || fishName == "Wolfbarsch" || fishName == "Flunder") {
- value := fishWeight * 8
- } else {
- value := 0
- }
- return value
- }
- return
- startFish() {
- if (isPlayerAtFishPoint()) {
- IniRead, settings_fishmode, ini\settings.ini, Fischen, FishMode
- fishNumber := 0
- aFishMoney := 0
- aFishHP := 0
- cheapestFish := -1
- cheapestFishName := ""
- cheapestFishValue := 100000
- cheapestFishMoney := 100000
- cheapestFishHP := 100000
- thrownAway := false
- attempt := 1
- Loop {
- SendChat("/fish")
- Sleep, 100
- fishing := readChatLine(0)
- if (RegExMatch(fishing, "Du hast ein\/e (.+) mit (\d+) LBS gefangen.", fishing_)) {
- fishNumber ++
- currentFishMoney := getFishValue(fishing_1, fishing_2)
- currentFishHealth := Floor(fishing_2 * 0.3)
- if (settings_fishmode) {
- fishValue := currentFishMoney
- } else {
- fishValue := fishing_2
- }
- SendInfo(cPrimar . fishNumber . cSecond . ": " . fishing_1 . " | LBS: " . cPrimar . fishing_2 . cSecond . " | Preis: $" . cPrimar . formatNumber(currentFishMoney) . cSecond . " | HP: " . cPrimar . currentFishHealth)
- aFishMoney += numberFormat(currentFishMoney)
- aFishHP += fishing_2
- if (cheapestFishValue > fishValue) {
- cheapestFish := fishNumber
- cheapestFishName := fishing_1
- cheapestFishValue := fishValue
- cheapestFishMoney := currentFishMoney
- cheapestFishHP := fishing_2
- }
- } else if (RegExMatch(fishing, "Du kannst nur 5 Fische bei dir tragen.")) {
- if (cheapestFish == -1) {
- SendInfo("Du musst deine Fische erst verkaufen/kochen!")
- break
- }
- if (thrownAway == true) {
- break
- }
- aFishMoney -= cheapestFishMoney
- aFishHP -= cheapestFishHP
- SendChat("/releasefish " . cheapestFish)
- sleep, 100
- if (settings_fishmode) {
- SendInfo("Du hast den Fisch " cPrimar . cheapestFish . cSecond . ": " . cheapestFishName . " im Wert von " . cPrimar . formatNumber(cheapestFishValue) . "$" . cSecond . " weggeworfen")
- } else {
- SendInfo("Du hast den Fisch " cPrimar . cheapestFish . cSecond . ": " . cheapestFishName . " mit " . cPrimar . formatNumber(cheapestFishValue) . " LBS" . cSecond . " weggeworfen")
- }
- thrownAway := true
- } else if (RegExMatch(fishing, "Du bist an keinem Angelplatz \(Big Wheel Rods\).")) {
- if (attempt == 3) {
- SendInfo("Du kannst hier nicht angeln!")
- break
- }
- attempt ++
- } else if (RegExMatch(fishing, "Du kannst erst in (\d+) (\S+) wieder angeln\.", ftime_)) {
- if (aFishMoney + aFishHP > 0) {
- Sleep, 100
- checkFish()
- break
- } else {
- SendInfo("Du kannst noch nicht angeln.")
- break
- }
- }
- }
- }
- }
- return
- sellFish() {
- sellFishMoney := 0
- Loop, 5 {
- SendChat("/sell fish " . A_Index)
- Sleep, 250
- chat := readChatLine(0)
- if (RegExMatch(chat, "Du hast deinen (.+) \((\d+) LBS\) für (\d+)\$ verkauft.", chat_)) {
- sellFishMoney += numberFormat(chat_3)
- }
- }
- IniRead, stats_fishgeld, ini\stats\stats.ini, Statistik, FishGeld
- sellFishMoney := StrReplace(sellFishMoney, ".", "")
- stats_fishgeld := stats_fishgeld + sellFishMoney
- IniWrite, % stats_fishgeld, ini\stats\stats.ini, Statistik, FishGeld
- SendInfo("Du hast für deine Fische " . cPrimar . formatNumber(sellFishMoney) . "$" cSecond " erhalten.")
- SendInfo("Gesamt hast du " . cPrimar . formatNumber(stats_fishgeld) . "$" cSecond " durch Fische verdient.")
- }
- return
- checkCooked() {
- fishHP := 0
- allHP := 0
- SendChat("/cooked")
- Sleep, 200
- Loop, 15 {
- GetChatLine(A_Index, cooked)
- if (RegExMatch(cooked, "\*\* \((\d+)\) Hergestellt: (.+) \((\d+) LBS\)", fish_)) {
- fishHP := floor(fish_3 / 3)
- allHP += fishHP
- fishName_%fish_1% := fish_2
- fishLBS_%fish_1% := fish_3
- fishHP_%fish_1% := fishHP
- message%fish_1% := "(" . fish_1 . ") " . cPrimar . fishName_%fish_1% . cSecond . ": " . cPrimar . fishLBS_%fish_1% . cSecond . " LBS | " . cPrimar . fishHP_%fish_1% . cSecond . " HP"
- }
- }
- fishes := 5
- Loop, 5 {
- setChatLine(fishes, message%A_Index%)
- fishes -= 1
- }
- SendInfo("Gesamt HP: " . cPrimar . formatNumber(allHP) . cSecond . " HP.")
- return allHP
- }
- return
- checkFish() {
- fishHP := 0
- fishMoney := 0
- allFishHP := 0
- allFishMoney := 0
- SendChat("/fishes")
- Sleep, 200
- Loop, 15 {
- if (RegExMatch(readChatLine(A_Index), "^\*\* \((\d+)\) Fisch: (.+) \((\d+) LBS\)$", fish_)) {
- fishMoney := getFishValue(fish_2, fish_3)
- fishHP := Floor(fish_3 * 0.3)
- allFishHP += fishHP
- allFishMoney += fishMoney
- fishName%fish_1% := fish_2
- fishLBS%fish_1% := fish_3
- fishHP%fish_1% := fishHP
- fishPrice%fish_1% := fishMoney
- message%fish_1% := prefix . "(" . fish_1 . ") " . cPrimar . fishName%fish_1% . cSecond . ": " . cPrimar . fishHP%fish_1% . cSecond . " HP | $" . cPrimar . fishPrice%fish_1% . cSecond . " | " . cPrimar . fishLBS%fish_1% . cSecond . " LBS"
- }
- }
- fishes := 5
- Loop, 5 {
- setChatLine(fishes, message%A_Index%)
- fishes -= 1
- }
- SendInfo("Gesamt HP: " . cPrimar . formatNumber(allFishHP) . cSecond . " HP | Gesamt Wert: $" . cPrimar . formatNumber(allFishMoney))
- return allHP
- }
- return
- cookFish() {
- if (getPlayerInteriorId() == 0) {
- IniRead, items_lagerfeuer, ini\items.ini, Items, Lagerfeuer
- if (items_lagerfeuer) {
- if (RegExMatch(chat, "^* (\S+) hat ein Lagerfeuer plaziert und es angezündet..", chat_)) {
- return
- } else
- SendChat("/campfire")
- IniWrite, 0, ini\items.ini, Items, Lagerfeuer
- Sleep, 200
- }
- Loop, 5 {
- SendChat("/cook fish " . A_Index)
- }
- } else {
- if (isPlayerAtCookPoint()) {
- Loop, 5 {
- SendChat("/cook fish " . A_Index)
- }
- } else {
- SendError("Du kannst hier nicht kochen.")
- }
- }
- Sleep, 200
- checkCooked()
- }
- return
- numberFormat(input_var) {
- StringReplace, output, input_var,.,,All
- return output
- }
- return
- configCountdown() {
- cdChat := PlayerInput("Countdown Chat (nix/f/c/..): ")
- countdownChat := cdChat
- cdTime := PlayerInput("Countdown Zeit in Sekunden: ")
- if(IsNumeric(cdTime)) {
- IniRead, stopHotkey, ini\hotkeys.ini, Hotkeys, stopAutomaticSystem
- stopHotkey := StrReplace(stopHotkey, "~", "")
- countdownTime := cdTime
- SendInfo("Du hast den Countdown mit " countdownTime " gestartet!")
- SendInfo("Du kannst den Countdown mit '" cPrimar stopHotkey cSecond "' stoppen!")
- countdownActive := true
- } else SendError("Die Zeit muss in Sekunden angegeben werden!")
- }
- return
- useDrugs() {
- SendChat("/usedrugs")
- IniRead, items_drogen, ini\items.ini, Items, Drogen
- items_drogen := items_drogen-2
- IniWrite, % items_drogen, ini\items.ini, Items, Drogen
- drug_timer := 30
- sleep 100
- SendInfo("Du hast Drogen konsumiert. Noch " cPrimar items_drogen " Gramm" cSecond " übrig!")
- }
- return
- usePak() {
- SendChat("/erstehilfe")
- items_erstehilfe := 0
- IniWrite, 0, ini\items.ini, Items, ErsteHilfe
- pak_timer := 10*60
- sleep 100
- SendInfo("Du hast ein Erste-Hilfe-Paket bentzt. Kaufe dir wieder eins!")
- }
- return
- useFish() {
- Loop, 5 {
- fishLBS := fishLBS_%A_Index%
- lostHP := getPlayerHealth()
- lostHP += fishHP_%A_Index%
- if (fishHP_%A_Index% > 0 && fishLBS_%A_Index% && fishName_%A_Index% != "nichts") {
- SendChat("/eat " . A_Index)
- fishName_%A_Index% := "nichts"
- fishLBS_%A_Index% := 0
- fishHP_%A_Index% := 0
- return
- }
- }
- }
- return
- ownHotkey(id) {
- global
- if (isBlocked())
- return
- if (!ownHotkey%id%Active)
- return
- if (ownHotkey%id%Text == "")
- return
- chatActionsArray := StrSplit(ownHotkey%id%Text, "`n")
- Loop % chatActionsArray.MaxIndex()
- {
- sendLine(chatActionsArray[A_Index])
- }
- }
- sendLine(line, local := false) {
- IniRead, stats_kills, ini\stats\stats.ini, Statistik, Kills
- IniRead, stats_deaths, ini\stats\stats.ini, Statistik, Deaths
- IniRead, daystats_kills, ini\stats\daystats.ini, Statistik, Kills[%A_DD%:%A_MM%:%A_YYYY%]
- IniRead, daystats_deaths, ini\stats\daystats.ini, Statistik, Deaths[%A_DD%:%A_MM%:%A_YYYY%]
- IniRead, monthstats_kills, ini\stats\monthstats.ini, Statistik, Kills[%A_MM%:%A_YYYY%]
- IniRead, monthstats_deaths, ini\stats\monthstats.ini, Statistik, Deaths[%A_MM%:%A_YYYY%]
- allKD := Round(stats_kills / stats_deaths, 2)
- dKD := Round(daystats_kills / daystats_deaths, 2)
- mKD := Round(monthstats_kills / monthstats_deaths, 2)
- line := StrReplace(line, "[name]", getUsername())
- line := StrReplace(line, "[id]", getId())
- line := StrReplace(line, "[ping]", getPlayerPingById(getId()))
- line := StrReplace(line, "[fps]", getFPS())
- line := StrReplace(line, "[zone]", getPlayerZone())
- line := StrReplace(line, "[city]", getPlayerCity())
- line := StrReplace(line, "[location]", getLocation())
- line := StrReplace(line, "[hp]", getPlayerHealth())
- line := StrReplace(line, "[armour]", getPlayerArmor())
- line := StrReplace(line, "[money]", FormatNumber(getPlayerMoney()))
- line := StrReplace(line, "[skin]", getPlayerSkinId())
- line := StrReplace(line, "[weaponid]", getPlayerWeaponId())
- line := StrReplace(line, "[weapon]", getPlayerWeaponName())
- line := StrReplace(line, "[freezed]", (IsPlayerFreezed() ? "ja" : "nein"))
- line := StrReplace(line, "[vhealth]", getVehicleHealth())
- line := StrReplace(line, "[vmodelid]", getVehicleModelId())
- line := StrReplace(line, "[vmodel]", getVehicleModelName())
- line := StrReplace(line, "[vspeed]", round(getVehicleSpeed()))
- line := StrReplace(line, "[kills]", FormatNumber(stats_kills))
- line := StrReplace(line, "[deaths]", FormatNumber(stats_deaths))
- line := StrReplace(line, "[daykills]", FormatNumber(daystats_kills))
- line := StrReplace(line, "[daydeaths]", FormatNumber(daystats_deaths))
- line := StrReplace(line, "[monthkills]", FormatNumber(monthstats_kills))
- line := StrReplace(line, "[monthdeaths]", FormatNumber(monthstats_deaths))
- line := StrReplace(line, "[tode]", FormatNumber(stats_deaths))
- line := StrReplace(line, "[kd]", allKD)
- line := StrReplace(line, "[mkd]", mKD)
- line := StrReplace(line, "[dkd]", dKD)
- if (RegExMatch(line, "(.*)\[sleep (\d+)\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- Sleep, %line_2%
- if (line_3 != "")
- sendLine(line_3, local)
- } if (RegExMatch(line, "(.*)\[nexttrash\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- showNextTrashcan()
- if (line_3 != "")
- sendLine(line_3, local)
- } else if (RegExMatch(line, "(.*)\[local\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- if (line_2 != "")
- sendLine(line_2, true)
- } else if (RegExMatch(line, "(.*)\[usepak\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- GoSub, usePakLabel
- if (line_2 != "")
- sendLine(line_2, local)
- } else if (RegExMatch(line, "(.*)\[eatfish\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- GoSub, useFishLabel
- if (line_2 != "")
- sendLine(line_2, local)
- } else if (RegExMatch(line, "(.*)\[usedrugs\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- GoSub, useDrugsLabel
- if (line_2 != "")
- sendLine(line_2, local)
- } else if (RegExMatch(line, "(.*)\[motor\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- GoSub, motorSystemLabel
- if (line_2 != "")
- sendLine(line_2, local)
- } else {
- if (local) {
- SendInfo(line)
- } else {
- SendChat(line)
- }
- }
- }
- showGates()
- {
- loadGates()
- sleep 200
- dialog := ""
- coords := getCoordinates()
- igates := array_Gates.MaxIndex()
- jgates := 0
- while (igates > 1) {
- igates --
- jgates := 0
- while (jgates < igates) {
- jgates := jgates + 1
- coordsGate1 := [ array_Gates[jgates]["posX"],array_Gates[jgates]["posY"], array_Gates[jgates]["posZ"] ]
- coordsGate2 := [ array_Gates[jgates+1]["posX"],array_Gates[jgates+1]["posY"], array_Gates[jgates+1]["posZ"] ]
- if (Floor(getDistanceBetweenTwoPoints(coords, coordsGate1)) > Floor(getDistanceBetweenTwoPoints(coords, coordsGate2))) {
- temp := array_Gates[jgates]
- array_Gates[jgates] := array_Gates[jgates + 1]
- array_Gates[jgates + 1] := temp
- }
- }
- }
- Loop % array_Gates.MaxIndex() {
- coordsGate := [array_Gates[A_Index]["posX"],array_Gates[A_Index]["posY"], array_Gates[A_Index]["posZ"]]
- zone := calculateZone(array_Gates[A_Index]["posX"], array_Gates[A_Index]["posY"], array_Gates[A_Index]["posZ"])
- dialog .= array_Gates[A_Index]["id"] . "`t" . zone . "`t" . Floor(getDistanceBetweenTwoPoints(coords, coordsGate)) . " Meter`n"
- }
- ShowDialog(5, "Übersicht deiner Tore", "ID`tOrt`tEntfernung`n" dialog, "Markieren", "Abbrechen")
- }
- return
- showTrashcans()
- {
- loadTrashcans()
- sleep 200
- dialog := ""
- coords := getCoordinates()
- itrash := array_Trashcan.MaxIndex()
- jtrash := 0
- while (itrash > 1) {
- itrash --
- jtrash := 0
- while (jtrash < itrash) {
- jtrash := jtrash + 1
- coordsTrash1 := [ array_Trashcan[jtrash]["posX"],array_Trashcan[jtrash]["posY"], array_Trashcan[jtrash]["posZ"] ]
- coordsTrash2 := [ array_Trashcan[jtrash+1]["posX"],array_Trashcan[jtrash+1]["posY"], array_Trashcan[jtrash+1]["posZ"] ]
- if (Floor(getDistanceBetweenTwoPoints(coords, coordsTrash1)) > Floor(getDistanceBetweenTwoPoints(coords, coordsTrash2))) {
- temp := array_Trashcan[jtrash]
- array_Trashcan[jtrash] := array_Trashcan[jtrash + 1]
- array_Trashcan[jtrash + 1] := temp
- }
- }
- }
- Loop % array_Trashcan.MaxIndex() {
- coordsTrash := [array_Trashcan[A_Index]["posX"],array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"]]
- zone := calculateZone(array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"])
- blockedTime := array_Trashcan[A_Index]["blockedTime"]
- currentTime := getUnixTimestamp(A_NowUTC)
- timediff := currentTime - blockedTime
- if (timediff >= 1800) {
- dialog .= array_Trashcan[A_Index]["id"] . "`t" . zone . "`t{00FF00}Frei`t" . Floor(getDistanceBetweenTwoPoints(coords, coordsTrash)) . "m`n"
- } else {
- min := Floor(timediff / 60)
- sec := mod(timediff, 60)
- if (min == 0) {
- dialog .= array_Trashcan[A_Index]["id"] . "`t" . zone . "`t{00FF00}Frei`t" . Floor(getDistanceBetweenTwoPoints(coords, coordsTrash)) . "m`n"
- } else {
- dialog .= array_Trashcan[A_Index]["id"] . "`t" . zone . "`t{CC0000}" . min . " Minuten, " . sec . " Sekunden`t" . Floor(getDistanceBetweenTwoPoints(coords, coordsTrash)) . "m`n"
- }
- }
- }
- ShowDialog(5, "Übersicht der Mülltonnen", "ID`tOrt`tStatus`tEntfernung`n" dialog, "Markieren", "Abbrechen")
- }
- return
- showNextTrashcan()
- {
- loadTrashcans()
- sleep 100
- dialog := ""
- coords := getCoordinates()
- itrash := array_Trashcan.MaxIndex()
- jtrash := 0
- while (itrash > 1) {
- itrash --
- jtrash := 0
- while (jtrash < itrash) {
- jtrash := jtrash + 1
- coordsTrash1 := [ array_Trashcan[jtrash]["posX"],array_Trashcan[jtrash]["posY"], array_Trashcan[jtrash]["posZ"] ]
- coordsTrash2 := [ array_Trashcan[jtrash+1]["posX"],array_Trashcan[jtrash+1]["posY"], array_Trashcan[jtrash+1]["posZ"] ]
- if (Floor(getDistanceBetweenTwoPoints(coords, coordsTrash1)) > Floor(getDistanceBetweenTwoPoints(coords, coordsTrash2))) {
- temp := array_Trashcan[jtrash]
- array_Trashcan[jtrash] := array_Trashcan[jtrash + 1]
- array_Trashcan[jtrash + 1] := temp
- }
- }
- }
- Loop % array_Trashcan.MaxIndex() {
- blockedTime := array_Trashcan[A_Index]["blockedTime"]
- currentTime := getUnixTimestamp(A_NowUTC)
- timediff := currentTime - blockedTime
- if (timediff < 1800) {
- continue
- } else {
- coordsTrash := [array_Trashcan[A_Index]["posX"],array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"]]
- zone := calculateZone(array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"])
- SetCheckPoint(array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"], 3)
- zone := calculateZone(array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"])
- city := calculateCity(array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"])
- zc := zone . ", " . city
- SendInfo("Mülltonne " cPrimar array_Trashcan[A_Index]["id"] cSecond " in " cPrimar zc cSecond " wurde markiert.")
- break
- }
- }
- }
- return
- onDialogResponse()
- {
- if (GetDialogCaption() == "Übersicht der Mülltonnen") {
- if (!trashDialog) {
- return
- }
- index := GetDialogIndex()
- sleep 100
- SetCheckPoint(array_Trashcan[index]["posX"], array_Trashcan[index]["posY"], array_Trashcan[index]["posZ"], 5)
- zone := calculateZone(array_Trashcan[index]["posX"], array_Trashcan[index]["posY"], array_Trashcan[index]["posZ"])
- city := calculateCity(array_Trashcan[index]["posX"], array_Trashcan[index]["posY"], array_Trashcan[index]["posZ"])
- zc := zone . ", " . city
- SendInfo("Die Mülltonne (ID: " cPrimar array_Trashcan[index]["id"] cSecond ") in " cPrimar zc cSecond " wurde markiert.")
- trashDialog := false
- } else if (GetDialogCaption() == "Übersicht deiner Tore") {
- if (!gateDialog) {
- return
- }
- index := GetDialogIndex()
- sleep 100
- SetCheckPoint(array_Gates[index]["posX"], array_Gates[index]["posY"], array_Gates[index]["posZ"], 5)
- zone := calculateZone(array_Gates[index]["posX"], array_Gates[index]["posY"], array_Gates[index]["posZ"])
- city := calculateCity(array_Gates[index]["posX"], array_Gates[index]["posY"], array_Gates[index]["posZ"])
- zc := zone . ", " . city
- SendInfo("Das Tor (ID: " cPrimar array_Gates[index]["id"] cSecond ") in " cPrimar zc cSecond " wurde markiert.")
- gateDialog := false
- }
- }
- return
- updateTrashcan(time)
- {
- Loop % array_Trashcan.MaxIndex() {
- if(isPlayerInRangeOfPoint(array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"], 15)) {
- currentTime := getUnixTimestamp(A_NowUTC)
- blockedTime := currentTime + (time-60)
- array_Trashcan[A_Index]["blockedTime"] := blockedTime
- diff := blockedTime - currentTime
- if(diff > 59) {
- SendInfo("Die Zeit von Mülltonne " . cPrimar . array_Trashcan[A_Index]["id"] . cSecond . " wurde auf " . cPrimar . round(time/60) " Minuten" . cSecond . " gesetzt!")
- } else SendInfo("Die Zeit von Mülltonne " . cPrimar . array_Trashcan[A_Index]["id"] . cSecond . " wurde auf " . cPrimar . round(time) " Sekunden" . cSecond . " gesetzt!")
- res := UrlDownloadToVar(baseURL . "api/updatetrash.php?trashid=" . array_Trashcan[A_Index]["id"] . "&username=" GetUsername() "&blockedtime=" blockedTime)
- res := StrReplace(res, "?", "")
- if (isMarkerCreated()) {
- coordsMarker := coordsFromRedmarker()
- coordsTrash := [array_Trashcan[A_Index]["posX"], array_Trashcan[A_Index]["posY"], array_Trashcan[A_Index]["posZ"]]
- if( Floor(getDistanceBetweenTwoPoints(coords, coordsTrash) <= 15)) {
- DisableCheckpoint()
- SendChat("/gpsaus")
- }
- }
- }
- }
- }
- return
- ~R::
- if(isBlocked() || getUsername() != "Marschl") {
- return
- } else {
- if(GetVehicleModelId() == 452 || GetVehicleModelId() == 453 || GetVehicleModelId() == 484){
- SendChat("/fishing")
- } else if(GetVehicleModelId() == 454){
- SendChat("/drugs show")
- } else if(GetVehicleModelId() == 499){
- SendChat("/drugs start")
- } else if(IsPlayerInRangeOfPoint(2696.8633,-2452.0420,13.6404, 3)) {
- SendChat("/drugs deliver")
- } else if(!IsPlayerInAnyVehicle()) {
- SendChat("/hide")
- }
- }
- return
- ~NumpadMult::
- if(isBlocked() || getUsername() != "Marschl") {
- return
- } else {
- SendInput, t/dl{Enter}
- }
- return
- :?:/ci::
- SendInput, {Enter}
- {
- if(getUsername() != "Marschl") {
- return
- }
- sleep 500
- carid := PlayerInput("CarID: ")
- if (carid != "" || carid != " " || !IsNumeric(carid)) {
- SendChat("/carinfo " carid)
- } else SendError("Falsche CarID")
- }
- return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement