Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #IfWinActive, GTA:SA:MP
- #SingleInstance, force
- #Persistent
- #NoEnv
- #Include, include/UDF.ahk
- #Include, include/API.ahk
- #Include, include/JSON.ahk
- #DEFINE overlay
- SetWorkingDir, %A_ScriptDir%
- SetTimer, AntiDecompile, 100
- IfExist, update.bat
- {
- FileDelete, update.bat
- }
- global baseURL := "https://comniemeer.de/projects/8bitbinder/"
- global robBaseURL := "https://comniemeer.de/projects/robbinder/"
- global gkBaseURL := "https://lsmd.comniemeer.de/"
- projectName := "8Bit"
- version := "1.3.7"
- IniRead, kVersion, settings.ini, Info, Version, %A_Space%
- if (kVersion != version) {
- IniWrite, %version%, settings.ini, Info, Version
- if (version == "1.0.1") {
- FileDelete, images\Banner.png
- } else if (version == "1.1.3") {
- IniWrite, 0, stats.ini, Fischsystem, Fischgeld
- }
- }
- errorMessage := "Es ist ein unbekannter Fehler aufgetreten!"
- if (IsSAMPAvailable()) {
- if (!InStr(getServerName(), "GTA-City Reallife") || (getServerIP() != "31.214.160.11" && getServerIP() != "5.83.163.101") || getServerPort() != "7777") {
- errorMessage := "Du musst auf RPG-City verbunden sein (server.rpg-city.de bzw. blue.rpg-city.de)!`n"
- errorMessage .= "`nEs kann sein, dass der Keybinder auch nicht funktioniert, weil du mit der SA:MP-Version 0.3.7-R2 spielst.`nDeshalb solltest du diese Version zuerst über die SAMPUninstall.exe in deinem GTA-Verzeichnis deinstallieren.`nAnschließend installierst du die alte Version, die du über folgenden Link herunterladen kannst: http://files.sa-mp.com/sa-mp-0.3.7-install.exe`nNun sollte der Keybinder wieder starten!"
- } else {
- result := UrlDownloadToVar(baseURL . "api/checkwhitelist.php?name=" . getUsername() . "&version=" . version)
- if (result == "true") {
- Goto, Start
- } else if (result == "false") {
- errorMessage := "Du stehst nicht auf der Whitelist!`nBitte lass dich im Forum im Keybinder-Thema eintragen."
- } else if (result == "ERROR_CONNECTION") {
- errorMessage := "Aktuell liegt ein Fehler in der Verbindung zum Server (comniemeer.de) vor, bitte versuche es gleich oder später erneut!"
- } else {
- errorMessage := "Fehler bei der Überprüfung der Whitelist: " . result
- }
- }
- } else {
- errorMessage := "Der Keybinder hat keinen Zugriff auf dein GTA, um deinen Namen auslesen zu können.`nEine mögliche Lösung ist das Starten des Keybinders als Administrator (Rechtsklick -> Als Administrator ausführen).`n`nSollte der Keybinder immer noch nicht starten, versuche AutoHotkey zu installieren.`nLade es dir hier herunter: https://autohotkey.com/download/`nInstalliere das Programm, aber achte darauf, dass du unten bei Version 'ANSI 32-bit' auswählst!`nAnschließend versuche den Keybinder zu starten.`n`nSollte das alles auch nicht funktionieren, kann ich dir leider nicht helfen."
- }
- MsgBox, 16, Fehler, Es ist ein Fehler bei der Authentifizierung aufgetreten`, der Zugriff wurde verweigert.`n`n%errorMessage%
- ExitApp
- return
- Start:
- {
- newver := URLDownloadToVar(baseURL . "downloads/version.txt")
- if (compareVersions(version, newver) == -1) {
- changelog := URLDownloadToVar(baseURL . "downloads/updatelog.single.txt")
- MsgBox, 68, %projectName% Keybinder - Version %version%, Es wurde eine neue Keybinderversion (Version %newver%) veröffentlicht!`nMöchtest du diese nun herunterladen?`n`n%changelog%
- IfMsgBox, Yes
- {
- Progress, 25, Lädt neue Version herunter, Der Keybinder wird nun geupdated..., Update
- #IFDEF nooverlay
- extraVersion := "_nov"
- #ELSE
- extraVersion := ""
- #ENDIF
- UrlDownloadToFile, %baseURL%downloads/%projectName%%extraVersion%.exe, %projectName%%extraVersion%.new.exe
- Progress, 75, Installiere Update, Der Keybinder wird nun geupdated..., Update
- Sleep, 500
- updateBat =
- (LTrim
- ping 127.0.0.1 -n 2 > nul
- Del "%projectName%%extraVersion%.exe"
- Rename "%projectName%%extraVersion%.new.exe" "%projectName%%extraVersion%.exe"
- "%projectName%%extraVersion%.exe"
- )
- FileAppend, %updateBat%, update.bat
- Run, update.bat, , hide
- Progress, 100, Abgeschlossen, Der Keybinder wird nun geupdated..., Update
- ExitApp
- }
- }
- unBlockChatInput()
- chatLogFile := FileOpen(A_MyDocuments . "\GTA San Andreas User Files\SAMP\chatlog.txt", "r")
- firstChatLogRun := true
- chatLogLines := []
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- IfNotExist, bin
- {
- FileCreateDir, bin
- }
- IfNotExist, bin\sqlite3.dll
- {
- URLDownloadToFile, %baseURL%downloads/bin/sqlite3.dll, bin\sqlite3.dll
- }
- IniRead, SQLite3DllPath, SQLiteDB.ini, Main, DllPath, %A_Space%
- if (SQLite3DllPath != "bin\SQLite3.dll") {
- IniWrite, % "bin\SQLite3.dll", SQLiteDB.ini, Main, DllPath
- }
- #Include, include/Class_SQLiteDB.ahk
- SQLiteDB := new SQLiteDB
- SQLiteDB.OpenDB(projectName . ".db")
- if (!SQLiteDB.Exec("CREATE TABLE IF NOT EXISTS enemies (name VARCHAR(35), fraction TINYINT(2), updated INT(10), PRIMARY KEY (name));")) {
- MsgBox, 16, SQLite Fehler, % "Es ist ein Fehler beim Erstellen der Gegner-Datenbank aufgetreten!`n`nFehlernachricht:`t" . SQLiteDB.ErrorMsg . "`nFehlercode:`t" . SQLiteDB.ErrorCode . "`n`nBitte melde dich bei Martin im Forum!"
- SQLiteDB.CloseDB()
- ExitApp
- }
- if (!SQLiteDB.Exec("CREATE TABLE IF NOT EXISTS friends (name VARCHAR(35), added INT(10), PRIMARY KEY (name));")) {
- MsgBox, 16, SQLite Fehler, % "Es ist ein Fehler beim Erstellen der Freunde-Datenbank aufgetreten!`n`nFehlernachricht:`t" . SQLiteDB.ErrorMsg . "`nFehlercode:`t" . SQLiteDB.ErrorCode . "`n`nBitte melde dich bei Martin im Forum!"
- SQLiteDB.CloseDB()
- ExitApp
- }
- SQLiteDB.Exec("UPDATE enemies SET fraction = '0' WHERE fraction = '1' OR fraction = '2' OR fraction = '3';")
- registeredHotkeys := Object()
- defaultHotkeysArray := Object()
- defaultHotkeysArray["motorSystem"] := "~m"
- defaultHotkeysArray["jobexecute"] := "~j"
- defaultHotkeysArray["stats"] := "~-"
- defaultHotkeysArray["tempomat"] := "~."
- defaultHotkeysArray["equipProfile1"] := "F1"
- defaultHotkeysArray["equipProfile2"] := "F2"
- defaultHotkeysArray["equipProfile3"] := "F3"
- defaultHotkeysArray["robstore"] := "~r"
- defaultHotkeysArray["stores"] := "~^r"
- defaultHotkeysArray["repeat"] := "~ä"
- defaultHotkeysArray["stopAutomaticSystems"] := "~<"
- defaultHotkeysArray["pause"] := "!Pause"
- IfNotExist, Hotkeys.ini
- {
- for key, value in defaultHotkeysArray {
- IniWrite, %value%, Hotkeys.ini, Hotkeys, %key%
- }
- }
- for key, value in defaultHotkeysArray {
- IniRead, hk, Hotkeys.ini, 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) {
- ;IniWrite, %value%, Hotkeys.ini, Hotkeys, %key%
- Hotkey, %value%, %key%Label
- StringReplace, %key%NoMods, value, ~
- registeredHotkeys[key] := value
- } else {
- FileAppend, [%time%] Der Standard-Hotkey für %key% (%value%) ist bereits registriert (%alreadyRegisteredKey% - %alreadyRegisteredValue%)!`n, log.txt
- }
- } 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 {
- FileAppend, [%time%] Der Hotkey für %key% (%hk%) ist bereits registriert (%alreadyRegisteredKey% - %alreadyRegisteredValue%)!`n, log.txt
- }
- }
- }
- global ownHotkeyCount := 48
- IfNotExist, ownhotkeys.ini
- {
- defaultOwnHotkeysArray := []
- defaultOwnHotkeysArray.InsertAt(1, ["~1", "[usepak]"])
- defaultOwnHotkeysArray.InsertAt(2, ["~2", "[eatfish]"])
- defaultOwnHotkeysArray.InsertAt(3, ["~3", "/usedrugs"])
- defaultOwnHotkeysArray.InsertAt(4, ["F4", "/ausruesten"])
- defaultOwnHotkeysArray.InsertAt(5, ["F5", "/heal"])
- defaultOwnHotkeysArray.InsertAt(6, ["~Y", "/lock"])
- defaultOwnHotkeysArray.InsertAt(7, ["~L", "/licht"])
- defaultOwnHotkeysArray.InsertAt(8, ["~Numpad7", "Danke!"])
- defaultOwnHotkeysArray.InsertAt(9, ["~Numpad8", "Kein Problem!"])
- defaultOwnHotkeysArray.InsertAt(10, ["~Numpad9", "Entschuldigung!"])
- defaultOwnHotkeysArray.InsertAt(11, ["~NumpadSub", "/auf"])
- defaultOwnHotkeysArray.InsertAt(12, ["~sc135", "/gpsaus"])
- defaultOwnHotkeysArray.InsertAt(13, ["~N", "/members"])
- defaultOwnHotkeysArray.InsertAt(14, ["~O", "/crewmembers"])
- defaultOwnHotkeysArray.InsertAt(15, ["~B", "/fixveh"])
- defaultOwnHotkeysArray.InsertAt(16, ["~I", "/zoll"])
- defaultOwnHotkeysArray.InsertAt(17, ["~P", "/f Ich befinde mich aktuell in [zone], [city] | HP: [hp]"])
- defaultOwnHotkeysArray.InsertAt(18, ["~^P", "/crew Ich befinde mich aktuell in [zone], [city] | HP: [hp]"])
- defaultOwnHotkeysArray.InsertAt(19, ["~NumpadAdd", "/f Ich benötige DRINGEND Verstärkung in [zone], [city] | HP: [hp]"])
- defaultOwnHotkeysArray.InsertAt(20, ["~!NumpadAdd", "/f Ich benötige keine Verstärkung mehr!"])
- defaultOwnHotkeysArray.InsertAt(21, ["~Numpad7", "/hide~/s Stop, ich stelle mich!"])
- for key, value in defaultOwnHotkeysArray {
- hk := value[1]
- text := value[2]
- IniWrite, 1, ownhotkeys.ini, %key%, Active
- IniWrite, %hk%, ownhotkeys.ini, %key%, Hotkey
- IniWrite, %text%, ownhotkeys.ini, %key%, Text
- }
- }
- Loop, %ownHotkeyCount% {
- outerIndex := A_Index
- IniRead, ownHotkey%outerIndex%Active, ownhotkeys.ini, %outerIndex%, Active, 0
- IniRead, ownHotkey%outerIndex%Text, ownhotkeys.ini, %outerIndex%, Text, %A_Space%
- IniRead, hk, ownhotkeys.ini, %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 {
- FileAppend, [%time%] Der Hotkey für ownHotkey%outerIndex% (%hk%) ist bereits registriert (%alreadyRegisteredKey% - %alreadyRegisteredValue%)!`n, log.txt
- }
- }
- }
- IfNotExist, images
- {
- FileCreateDir, images
- }
- IfNotExist, images\Banner.png
- {
- URLDownloadToFile, %baseURL%downloads/images/Banner.png, Banner.png
- FileMove, Banner.png, images\Banner.png
- }
- #IFNDEF nooverlay
- IfNotExist, bin
- {
- FileCreateDir, bin
- }
- IfNotExist, bin\overlay.dll
- {
- URLDownloadToFile, %baseURL%downloads/bin/overlay.dll, bin\overlay.dll
- }
- #Include, include/overlay.ahk
- SetParam("use_window", "1")
- SetParam("window", "GTA:SA:MP")
- #ENDIF
- IniRead, taxes, settings.ini, Einstellungen, Steuersatz, 1
- IniRead, tempo, settings.ini, Einstellungen, Tempo, 80
- IniRead, lockSystem, settings.ini, Einstellungen, Locksystem, 1
- IniRead, motorSystem, settings.ini, Einstellungen, Motorsystem, 1
- IniRead, fillSystem, settings.ini, Einstellungen, Tanksystem, 1
- IniRead, customsSystem, settings.ini, Einstellungen, Zollsystem, 1
- IniRead, lottoSystem, settings.ini, Einstellungen, Lottosystem, 1
- IniRead, lottoNumber, settings.ini, Einstellungen, Lottozahl, 0
- IniRead, chatlogSaver, settings.ini, Einstellungen, Chatlog, 1
- IniRead, admin, settings.ini, Einstellungen, Admin, 0
- IniRead, primaryColor, settings.ini, Einstellungen, Primärfarbe, %A_Space%
- IniRead, secondaryColor, settings.ini, Einstellungen, Sekundärfarbe, %A_Space%
- IniRead, antispamSystem, settings.ini, Einstellungen, Antispamsystem, 1
- IniRead, statsFormatted, settings.ini, Einstellungen, StatistikFormatiert, 1
- IniRead, fishMode, settings.ini, Einstellungen, FischModus, 0
- IniRead, autoBuyCanister, settings.ini, Einstellungen, AutoKanister, 0
- IniRead, ownPrefix, settings.ini, Einstellungen, OwnPrefix, %A_Space%
- IniRead, killCounter, settings.ini, Einstellungen, Killzähler, 1
- IniRead, killMessageLocal, settings.ini, Einstellungen, KillspruchLokal, 0
- IniRead, killMessageActive, settings.ini, Einstellungen, KillspruchAktiv, 1
- IniRead, killMessage, settings.ini, Einstellungen, Killspruch, /f +1 Kill in [zone], [city] | [kills]
- IniRead, deathCounter, settings.ini, Einstellungen, Todeszähler, 1
- IniRead, deathMessageLocal, settings.ini, Einstellungen, TodesspruchLokal, 0
- IniRead, deathMessageActive, settings.ini, Einstellungen, TodesspruchAktiv, 1
- IniRead, deathMessage, settings.ini, Einstellungen, Todesspruch, /f +1 Tod in [zone], [city] | [deaths]
- IniRead, sortStoresBy, settings.ini, Einstellungen, SortStoresBy, 1
- IniRead, robcountdown, settings.ini, Einstellungen, RobCountdown, 1
- IniRead, enemyAddedMessage, settings.ini, Einstellungen, GegnerHinzugefügtNachricht, 1
- IniRead, enemyUpdatedMessage, settings.ini, Einstellungen, GegnerGeupdatetNachricht, 0
- IniRead, enemyJoinLeaveMessage, settings.ini, Einstellungen, GegnerJoinLeaveNachricht, 0
- IniRead, packetMessages, settings.ini, Einstellungen, PaketNachrichten, 1
- IniRead, paintballMessages, settings.ini, Einstellungen, PaintballNachrichten, 1
- IniRead, friendMessages, settings.ini, Einstellungen, FreundeNachrichten, 1
- IniRead, job, settings.ini, Job, Job, %A_Space%
- IniRead, jobLine, settings.ini, Job, Linie, %A_Space%
- IniRead, busRestartLine, settings.ini, Job, BusLinieAutoNeustart, 1
- IniRead, busSendToJobChat, settings.ini, Job, BusSendJobChat, 0
- IniRead, jobWeapondealerSkill, settings.ini, Job, Waffendealerskill, %A_Space%
- IniRead, jobDetectiveSkill, settings.ini, Job, Detektivskill, %A_Space%
- IniRead, alternativePlayerInput, settings.ini, Einstellungen, AltPlayerInput, %A_Space%
- if (alternativePlayerInput == "") {
- alternativePlayerInput := false
- IniWrite, %alternativePlayerInput%, settings.ini, Einstellungen, AltPlayerInput
- }
- IniRead, debug, settings.ini, Einstellungen, Debug, %A_Space%
- if (debug == "") {
- debug := false
- IniWrite, %debug%, settings.ini, Einstellungen, Debug
- }
- Loop, 3 {
- profileID := A_Index
- Loop, 6 {
- IniRead, profile%profileID%_%A_Index%, settings.ini, Ausrüstungsprofile, Profil%profileID%_%A_Index%, %A_Space%
- }
- }
- primaryColor := StrReplace(primaryColor, "{", "")
- primaryColor := StrReplace(primaryColor, "}", "")
- secondaryColor := StrReplace(secondaryColor, "{", "")
- secondaryColor := StrReplace(secondaryColor, "}", "")
- if (primaryColor == "") {
- primaryColor := "000C64"
- }
- if (secondaryColor == "") {
- secondaryColor := "FFC000"
- }
- global PRIMCOL := "{" . primaryColor . "}"
- global SECCOL := "{" . secondaryColor . "}"
- global PREFIX := PRIMCOL . "[" . SECCOL . projectName . PRIMCOL . "] {FFFFFF}"
- if (ownPrefix != "") {
- PREFIX := ownPrefix . " "
- }
- #IFNDEF nooverlay
- ; Statistik-Overlay
- IniRead, statsOverlayContent, settings.ini, StatsOverlay, Content, %A_Space%
- IniRead, statsOverlayAutostart, settings.ini, StatsOverlay, Autostart, 0
- IniRead, statsOverlayPosX, settings.ini, StatsOverlay, PosX, 20
- IniRead, statsOverlayPosY, settings.ini, StatsOverlay, PosY, 215
- IniRead, statsOverlayColors, settings.ini, StatsOverlay, Colors, 1
- IniRead, statsOverlayItalic, settings.ini, StatsOverlay, Italic, 0
- IniRead, statsOverlayFont, settings.ini, StatsOverlay, Font, Arial
- IniRead, statsOverlayFontSize, settings.ini, StatsOverlay, FontSize, 7
- IniRead, statsOverlayBold, settings.ini, StatsOverlay, Bold, 1
- IniRead, statsOverlayColor, settings.ini, StatsOverlay, Color, FFFFFF
- if (statsOverlayContent == "") {
- statsOverlayContent := "[white]Name: [primcol][name][white], ID: [primcol][id]~[white]HP: [primcol][hp][white], Ping: [primcol][ping][white], FPS: [primcol][fps]~[white]Standort: [primcol][zone][white], [primcol][city]~[white]Datum: [primcol][date]~[white]Geld durch Fischen: [primcol][fishmoney]$~[white]Du kannst wieder fischen in: [primcol][fishtime]~[white]Distanz zum Checkpoint: [primcol][checkpoint]~[white]Payday: [primcol][pdmoney]$ [white]([primcol][pdmoneynetto]$[white])~[white]Tages-Kills: [primcol][daykills][white], Tages-Tode: [primcol][daydeaths]~[white]Tages-K/D: [primcol][daykd]~[motor]~[lock]~[light]"
- IniWrite, %statsOverlayContent%, settings.ini, StatsOverlay, Content
- }
- statsOverlayContent := StrReplace(statsOverlayContent, "~", "`n")
- statsOverlayPrimColor := SECCOL
- statsOverlaySecColor := "{" . statsOverlayColor . "}"
- statsOverlayPositiveColor := "{00FF00}"
- statsOverlayNegativeColor := "{FF0000}"
- ; Gegner-Overlay
- IniRead, enemyOverlayAutostart, settings.ini, EnemyOverlay, Autostart, 0
- IniRead, enemyOverlayPosX, settings.ini, EnemyOverlay, PosX, 660
- IniRead, enemyOverlayPosY, settings.ini, EnemyOverlay, PosY, 250
- IniRead, enemyOverlayColors, settings.ini, EnemyOverlay, Colors, 1
- IniRead, enemyOverlayItalic, settings.ini, EnemyOverlay, Italic, 0
- IniRead, enemyOverlayFont, settings.ini, EnemyOverlay, Font, Arial
- IniRead, enemyOverlayFontSize, settings.ini, EnemyOverlay, FontSize, 7
- IniRead, enemyOverlayBold, settings.ini, EnemyOverlay, Bold, 1
- IniRead, enemyOverlayColor, settings.ini, EnemyOverlay, Color, FFFFFF
- IniRead, enemyOverlayShowCops, settings.ini, EnemyOverlay, Cops, 1
- IniRead, enemyOverlayShowOwnFraction, settings.ini, EnemyOverlay, EigeneFraktion, 1
- enemyOverlayPrimColor := SECCOL
- enemyOverlaySecColor := "{" . statsOverlayColor . "}"
- enemyOverlayPositiveColor := "{00FF00}"
- enemyOverlayNegativeColor := "{FF0000}"
- statsOverlayEnabled := false
- enemyOverlayEnabled := false
- if (statsOverlayAutostart) {
- createOverlay(1)
- statsOverlayEnabled := true
- }
- if (enemyOverlayAutostart) {
- createOverlay(2)
- enemyOverlayEnabled := true
- }
- #ENDIF
- hpText := -1
- armourText := -1
- IniRead, hpTextAutostart, settings.ini, HPText, Autostart, 1
- IniRead, hpTextPosX, settings.ini, HPText, HPPosX, 576
- IniRead, hpTextPosY, settings.ini, HPText, HPPosY, 66.5
- IniRead, armourTextPosX, settings.ini, HPText, ArmourPosX, 576
- IniRead, armourTextPosY, settings.ini, HPText, ArmourPosY, 44.5
- IniRead, hpTextFont, settings.ini, HPText, Font, 1
- IniRead, hpTextFontSize, settings.ini, HPText, FontSize, 0.3
- IniRead, hpTextColor, settings.ini, HPText, HPColor, 1
- IniRead, armourTextColor, settings.ini, HPText, ArmourColor, 1
- if (hpTextAutostart) {
- createText(1)
- hpTextEnabled := true
- }
- fpsText := -1
- IniRead, fpsTextAutostart, settings.ini, FPSText, Autostart, 1
- IniRead, fpsTextPosX, settings.ini, FPSText, PosX, 20
- IniRead, fpsTextPosY, settings.ini, FPSText, PosY, 376
- IniRead, fpsTextFont, settings.ini, FPSText, Font, 3
- IniRead, fpsTextFontSize, settings.ini, FPSText, FontSize, 0.4
- IniRead, fpsTextColor, settings.ini, FPSText, Color, 1
- if (fpsTextAutostart) {
- createText(3)
- fpsTextEnabled := true
- }
- ; Sonstige Variablen
- global tv := false
- global tvName := ""
- global afk := false
- global oldHour := -1
- global fishTime := 0
- global timeout := true
- global pbKillStreak := 0
- global paydayMoney := 0
- global pedStates := {}
- ; Tempomat-Variablen
- global tempo := 80
- global tempomat := false
- global currentSpeed := 0
- ; Jobsystem-Variablen
- global currentFish := 1
- global fishTraps := []
- global fishingFull := false
- global drugStatus := false
- global drugTime := 0
- global drugGrowTime := -1
- ; Store-Rob-Variablen
- global stores := []
- global allStores := []
- global updated := false
- global showNamechanges := false
- global showFriendLabels := true
- global onlinePlayers := []
- global onlineFriends := []
- global onlineEnemies := []
- global lspdData := []
- global fbiData := []
- global firstFriendsTimerRun := true
- global firstEnemiesTimerRun := true
- global gasstations := []
- global countdownRunning := false
- global autoFindRunning := false
- global autoShowRunning := false
- global autoFindChatRunning := false
- global statsFormat := "Personalien:\tGeschlecht: (\S+)\n\t\tPartner: (\S+)\n\n\t\tLevel: (\d+)\n\t\tRespekt: (\d+)\/(\d+)\n\t\tPayday: (\d+)\/(\d+) Minuten\n\nBerufe:\t\tFraktion: (.+)\tRang: (\d+)\n\t\tNebenjob: (\S+)\n\t\tCrew: (.+)\n\nFinanzen:\tBargeld: (\S+)\$\n\t\tKonto: (\S+)\$\n\t\tFestgeld: (\d+)\$\tZinssatz: (\d+)\.(\d+)\n\nStatistik:\tMorde: (\d+)\n\t\tGestorben: (\d+)\n\t\tVerbrechen: (\d+)\n\t\tSpielzeit: (\d+)h\n\t\tKnast: (\d+)\n\t\tWanteds: (\d+)\n\t\tVerwarnungen: (\d+)\/(\d+)\n\nInventar:\tMaterialien: (\d+) \(Safe: (\d+)\)\n\t\tDrogen: (\d+)g \(Safe: (\d+)g\)\n\t\tHandy \(Nr\. (\d+)\)(\n\t\tErste-Hilfe-Paket)?(\n\t\tBenzin Kanister)?\n\nSkills:\t\tWaffendealer: (\d+) \((\d+)\)\n\t\tDrogendealer: (\d+) \((\d+)\)\n\t\tAngler: (\d+)\n\t\tBusfahrer: (\d+)\t\tExp: (\d+)\/(\d+)\n\t\tAnwalt: (\d+)\t\tExp: (\d+)\n\t\tDetektiv: (\d+)\t\tExp: (\d+)\n\t\tPilot: (\d+)\n\t\tHochseefischer: (\d+)\n\t\tFarmer: (\d+)\n\t\tHolzfäller: (\d+)(\n\n\n{(\S+)}(\S+)( \(noch (.+)\))?)?"
- SetTimer, ChatTimer, 100
- SetTimer, TankTimer, 100
- SetTimer, FillCustoms, 500
- SetTimer, ChatlogSaveTimer, 500
- SetTimer, LottoTimer, 1000
- SetTimer, TempoTimer, 100
- SetTimer, KillTimer, 100
- SetTimer, SearchEnemyTimer, 2500
- SetTimer, FriendsTimer, 1000
- SetTimer, GasstationsTimer, 500
- SetTimer, RefreshCops, 60000
- GoSub, RefreshCops
- Gui, Color, white
- Gui, Font, S10 CDefault, Verdana
- Gui, Add, Picture, x10 y10 w600 h200, images\Banner.png
- Gui, Add, Button, x320 y230 w140 h40 gSettingsGUI, Einstellungen
- Gui, Add, Button, x470 y230 w140 h40 gHotkeysGUI, Hotkeys
- Gui, Add, Button, x320 y280 w140 h40 gHelpGUI, Hilfe
- Gui, Add, Button, x470 y280 w140 h40 gNewsGUI, News
- Gui, Add, Button, x470 y330 w140 h40 gRPGConnect, RPG Connect
- Gui, Add, Button, x470 y450 w140 h40 gGuiClose, Schließen
- Gui, Add, Groupbox, x10 y220 w300 h270, Neuigkeiten (Version %version%)
- msg := URLDownloadToVar(baseURL . "downloads/updatelog.txt")
- StringReplace, update, msg, ', `r`n, All
- Gui, Add, Edit, x20 y240 w280 h240 ReadOnly, %update%
- Gui, Add, Groupbox, x320 y445 w140 h45, Versionsinfo
- #IFDEF overlay
- Gui, Add, Text, x330 y465 w120 h20, Overlay aktiv
- #ELSE
- Gui, Add, Text, x330 y465 w120 h20, Kein Overlay
- #ENDIF
- Gui, Show, w620 h500, %projectName% - Version: %version%
- }
- return
- GuiClose:
- {
- #IFNDEF nooverlay
- if (statsOverlayEnabled) {
- TextDestroy(statsOverlay)
- }
- if (enemyOverlayEnabled) {
- TextDestroy(enemyOverlay)
- }
- #ENDIF
- deleteTextDraw(hpText)
- deleteTextDraw(armourText)
- deleteTextDraw(fpsText)
- for friendName, textLabelID in onlineFriends {
- if (textLabelID != -1) {
- deleteTextLabel(textLabelID)
- }
- }
- for playerName, textLabelID in onlinePlayers {
- if (textLabelID != -1) {
- deleteTextLabel(textLabelID)
- }
- }
- SQLiteDB.CloseDB()
- ExitApp
- }
- return
- RPGConnect:
- {
- RegRead GTA_SA_EXE, HKEY_CURRENT_USER, Software\SAMP, gta_sa_exe
- SplitPath, GTA_SA_EXE,, PFAD
- run, %PFAD%\samp.exe server.rpg-city.de, %PFAD%
- }
- return
- SettingsGUI:
- {
- Gui, Settings: Destroy
- Gui, Settings: Color, white
- Gui, Settings: Font, S10 CDefault, Verdana
- #IFDEF nooverlay
- Gui, Settings: Add, Button, x10 y695 w130 h40 voverlayButton, Overlay
- GuiControl, Settings: Disable, overlayButton
- #ELSE
- Gui, Settings: Add, Button, x10 y695 w130 h40 gOverlaySettingsGUI, Overlays
- #ENDIF
- Gui, Settings: Add, Button, x150 y695 w130 h40 gTextDrawSettingsGUI, TextDraws
- Gui, Settings: Add, Button, x340 y695 w130 h40 gSettingsSave, Speichern
- Gui, Settings: Add, Button, x480 y695 w130 h40 gSettingsGuiClose, Schließen
- Gui, Settings: Add, GroupBox, x10 y10 w600 h170, Allgemeine Einstellungen
- Gui, Settings: Add, CheckBox, x20 y30 w170 h20 vlockSystem Checked%lockSystem%, Locksystem
- Gui, Settings: Add, CheckBox, x20 y60 w170 h20 vfillSystem Checked%fillSystem%, Tanksystem
- Gui, Settings: Add, CheckBox, x20 y90 w170 h20 vlottoSystem Checked%lottoSystem%, Lottosystem
- Gui, Settings: Add, CheckBox, x20 y120 w170 h20 vantispamSystem Checked%antispamSystem%, Spamschutz-System
- Gui, Settings: Add, CheckBox, x20 y150 w370 h20 vfishMode Checked%fishMode%, Fisch mit dem geringsten $-Wert wegwerfen
- Gui, Settings: Add, CheckBox, x190 y30 w200 h20 vmotorSystem Checked%motorSystem%, Motor aus beim Aussteigen
- Gui, Settings: Add, CheckBox, x190 y60 w200 h20 vcustomsSystem Checked%customsSystem%, Zollsystem
- Gui, Settings: Add, Text, x190 y90 w150 h20, Lottozahl (0 = zufällig)
- Gui, Settings: Add, Edit, x350 y90 w40 h20 vlottoNumber, %lottoNumber%
- Gui, Settings: Add, CheckBox, x190 y120 w200 h20 vstatsFormatted Checked%statsFormatted%, Statistik formatiert
- Gui, Settings: Add, CheckBox, x400 y30 w110 h20 vchatlogSaver Checked%chatlogSaver%, Chatlog-Save
- Gui, Settings: Add, CheckBox, x530 y30 w70 h20 vadmin Checked%admin%, Admin
- Gui, Settings: Add, Text, x400 y60 w110 h20, Primärfarbe
- Gui, Settings: Add, Edit, x530 y60 w70 h20 vprimaryColor, %primaryColor%
- Gui, Settings: Add, Text, x400 y90 w110 h20, Sekundärfarbe
- Gui, Settings: Add, Edit, x530 y90 w70 h20 vsecondaryColor, %secondaryColor%
- Gui, Settings: Add, Text, x400 y120 w110 h20, Eigener Prefix
- Gui, Settings: Add, Edit, x530 y120 w70 h20 vownPrefix, %ownPrefix%
- Gui, Settings: Add, CheckBox, x400 y150 w200 h20 vautoBuyCanister Checked%autoBuyCanister%, Kanister autom. kaufen
- Gui, Settings: Add, GroupBox, x10 y190 w600 h140, Kill- und Todeszähler
- Gui, Settings: Add, CheckBox, x20 y210 w150 h20 vkillCounter Checked%killCounter%, Killzähler aktiv
- Gui, Settings: Add, CheckBox, x190 y210 w180 h20 vkillMessageLocal Checked%killMessageLocal%, Spruch nur lokal senden
- Gui, Settings: Add, CheckBox, x20 y240 w120 h20 vkillMessageActive Checked%killMessageActive%, Killspruch:
- Gui, Settings: Add, Edit, x140 y240 w460 h20 vkillMessage, %killMessage%
- Gui, Settings: Add, CheckBox, x20 y270 w150 h20 vdeathCounter Checked%deathCounter%, Todeszähler aktiv
- Gui, Settings: Add, CheckBox, x190 y270 w180 h20 vdeathMessageLocal Checked%deathMessageLocal%, Spruch nur lokal senden
- Gui, Settings: Add, CheckBox, x20 y300 w120 h20 vdeathMessageActive Checked%deathMessageActive%, Todesspruch:
- Gui, Settings: Add, Edit, x140 y300 w460 h20 vdeathMessage, %deathMessage%
- Gui, Settings: Add, GroupBox, x10 y340 w600 h55, Store-Rob Funktionen
- Gui, Settings: Add, Text, x20 y360 w200 h20, Sortierung des Store-Dialogs
- Gui, Settings: Add, DropDownList, x230 y360 w130 h100 vsortStoresBy choose%sortStoresBy%, Standard|Store-Name|Entfernung|Status
- Gui, Settings: Add, CheckBox, x370 y360 w210 h20 vrobcountdown checked%robcountdown%, Countdown beim Store-Rob
- Gui, Settings: Add, GroupBox, x10 y405 w600 h50, Gegner-Meldungen
- Gui, Settings: Add, CheckBox, x20 y425 w150 h20 venemyAddedMessage checked%enemyAddedMessage%, Gegner hinzugefügt
- Gui, Settings: Add, CheckBox, x190 y425 w170 h20 venemyUpdatedMessage checked%enemyUpdatedMessage%, Gegner geupdated
- Gui, Settings: Add, CheckBox, x370 y425 w230 h20 venemyJoinLeaveMessage checked%enemyJoinLeaveMessage%, Server betreten/verlassen
- Gui, Settings: Add, GroupBox, x10 y465 w600 h50, Sonstige Meldungen
- Gui, Settings: Add, CheckBox, x20 y485 w150 h20 vpacketMessages checked%packetMessages%, Paket-Nachrichten
- Gui, Settings: Add, CheckBox, x190 y485 w170 h20 vpaintballMessages checked%paintballMessages%, Paintball-Nachrichten
- Gui, Settings: Add, CheckBox, x370 y485 w230 h20 vfriendMessages checked%friendMessages%, Freunde-Nachrichten
- Gui, Settings: Add, GroupBox, x10 y525 w600 h160, Ausrüstungsprofile
- userFriendlyEquipProfile1 := getUserFriendlyHotkeyName(equipProfile1NoMods)
- userFriendlyEquipProfile2 := getUserFriendlyHotkeyName(equipProfile2NoMods)
- userFriendlyEquipProfile3 := getUserFriendlyHotkeyName(equipProfile3NoMods)
- Gui, Settings: Add, Text, x20 y545 w580 h115, Hier kannst du dir drei Ausrüsten-Profile zusammenstellen und direkt Ingame abrufen.`nDie Profile können mit %userFriendlyEquipProfile1%, %userFriendlyEquipProfile2% und %userFriendlyEquipProfile3% ausgewählt werden.
- Gui, Settings: Add, Text, x30 y590 w70 h20, Profil 1:
- Gui, Settings: Add, DropDownList, x100 y590 w75 h120 vprofile1_1, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x183 y590 w75 h120 vprofile1_2, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x266 y590 w75 h120 vprofile1_3, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x349 y590 w75 h120 vprofile1_4, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x432 y590 w75 h120 vprofile1_5, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x515 y590 w75 h120 vprofile1_6, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- GuiControl, Settings: Choose, profile1_1, %profile1_1%
- GuiControl, Settings: Choose, profile1_2, %profile1_2%
- GuiControl, Settings: Choose, profile1_3, %profile1_3%
- GuiControl, Settings: Choose, profile1_4, %profile1_4%
- GuiControl, Settings: Choose, profile1_5, %profile1_5%
- GuiControl, Settings: Choose, profile1_6, %profile1_6%
- Gui, Settings: Add, Text, x30 y620 w70 h20 , Profil 2:
- Gui, Settings: Add, DropDownList, x100 y620 w75 h120 vprofile2_1, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x183 y620 w75 h120 vprofile2_2, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x266 y620 w75 h120 vprofile2_3, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x349 y620 w75 h120 vprofile2_4, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x432 y620 w75 h120 vprofile2_5, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x515 y620 w75 h120 vprofile2_6, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- GuiControl, Settings: Choose, profile2_1, %profile2_1%
- GuiControl, Settings: Choose, profile2_2, %profile2_2%
- GuiControl, Settings: Choose, profile2_3, %profile2_3%
- GuiControl, Settings: Choose, profile2_4, %profile2_4%
- GuiControl, Settings: Choose, profile2_5, %profile2_5%
- GuiControl, Settings: Choose, profile2_6, %profile2_6%
- Gui, Settings: Add, Text, x30 y650 w70 h20 , Profil 3:
- Gui, Settings: Add, DropDownList, x100 y650 w75 h120 vprofile3_1, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x183 y650 w75 h120 vprofile3_2, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x266 y650 w75 h120 vprofile3_3, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x349 y650 w75 h120 vprofile3_4, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x432 y650 w75 h120 vprofile3_5, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- Gui, Settings: Add, DropDownList, x515 y650 w75 h120 vprofile3_6, ||Deagle|Shotgun|AK47|MP5|Rifle|M4|Sniper|Baseballschläger|Golfschläger|Katana
- GuiControl, Settings: Choose, profile3_1, %profile3_1%
- GuiControl, Settings: Choose, profile3_2, %profile3_2%
- GuiControl, Settings: Choose, profile3_3, %profile3_3%
- GuiControl, Settings: Choose, profile3_4, %profile3_4%
- GuiControl, Settings: Choose, profile3_5, %profile3_5%
- GuiControl, Settings: Choose, profile3_6, %profile3_6%
- Menu, SettingsInformations, Add, &Informationen, SettingsInformations
- Gui, Settings: Menu, SettingsInformations
- Gui, Settings: Show, h745 w620, %projectName% - Einstellungen - Version %version%
- }
- return
- SettingsInformations:
- {
- MsgBox, 64, Informationen zu den Einstellungen,
- (LTrim
- Allgemeine Einstellungen:
- Locksystem - Fahrzeug beim Einsteigen abschließen
- Motor aus beim Aussteigen - Motor beim Aussteigen abstellen
- Chatlog-Save - Chatlog beim Beenden des Spiels speichern
- Admin - Keine Delays - Achtung: Spamkick möglich!
- Tanksystem - An den Tankstellen nur X zum Tanken drücken
- Zollsystem - An den Zollstationen nur X zum Öffnen drücken
- Lottosystem - Zur vollen Stunde mit X Lotterie-Ticket kaufen
- Lottozahl - Deine Lottozahl - 0 = zufällig, 201 = deine ID
- Spamschutz-System - Chat blockieren, wenn du spammst
- Statistik formatiert - Statistik besser anzeigen
- Primärfarbe - Hauptfarbe als Hex-Farbe - Standard: 2550A7
- Sekundärfarbe - Nebenfarbe als Hex-Farbe - Standard: FF9900
- Eigener Prefix - Dein eigener Prefix für den Keybinder - Standard (leer): {2550A7}|%projectName%|{FFFFFF}
- Platzhalter für die Kill- und Todessprüche:
- [name] - Dein Name
- [id] - Deine ID
- [zone] - Deine Zone
- [city] - Deine Stadt
- [location] - Dein Autenthaltsort (Zone+Stadt)
- [hp] - Deine HP
- [armour] - Deine Armour
- [kills] - Gesamte Kills
- [daykills] - Tages-Kills
- [deaths] - Gesamte Tode
- [daydeaths] - Tages-Tode
- [kd] - Gesamte K/D
- [daykd] - Tages-K/D
- )
- }
- return
- SettingsSave:
- {
- Gui, Settings: Submit, NoHide
- IniWrite, %lockSystem%, settings.ini, Einstellungen, Locksystem
- IniWrite, %motorSystem%, settings.ini, Einstellungen, Motorsystem
- IniWrite, %fillSystem%, settings.ini, Einstellungen, Tanksystem
- IniWrite, %customsSystem%, settings.ini, Einstellungen, Zollsystem
- IniWrite, %lottoSystem%, settings.ini, Einstellungen, Lottosystem
- IniWrite, %lottoNumber%, settings.ini, Einstellungen, Lottozahl
- IniWrite, %chatlogSaver%, settings.ini, Einstellungen, Chatlog
- IniWrite, %admin%, settings.ini, Einstellungen, Admin
- IniWrite, %primaryColor%, settings.ini, Einstellungen, Primärfarbe
- IniWrite, %secondaryColor%, settings.ini, Einstellungen, Sekundärfarbe
- IniWrite, %antispamSystem%, settings.ini, Einstellungen, Antispamsystem
- IniWrite, %statsFormatted%, settings.ini, Einstellungen, StatistikFormatiert
- IniWrite, %fishMode%, settings.ini, Einstellungen, FischModus
- IniWrite, %autoBuyCanister%, settings.ini, Einstellungen, AutoKanister
- IniWrite, %ownPrefix%, settings.ini, Einstellungen, OwnPrefix
- if (ownPrefix != "") {
- PREFIX := ownPrefix . " "
- }
- IniWrite, %killCounter%, settings.ini, Einstellungen, Killzähler
- IniWrite, %killMessageLocal%, settings.ini, Einstellungen, KillspruchLokal
- IniWrite, %killMessageActive%, settings.ini, Einstellungen, KillspruchAktiv
- IniWrite, %killMessage%, settings.ini, Einstellungen, Killspruch
- IniWrite, %deathCounter%, settings.ini, Einstellungen, Todeszähler
- IniWrite, %deathMessageLocal%, settings.ini, Einstellungen, TodesspruchLokal
- IniWrite, %deathMessageActive%, settings.ini, Einstellungen, TodesspruchAktiv
- IniWrite, %deathMessage%, settings.ini, Einstellungen, Todesspruch
- if (sortStoresBy == "Standard") {
- sortStoresBy := 1
- } else if (sortStoresBy == "Store-Name") {
- sortStoresBy := 2
- } else if (sortStoresBy == "Entfernung") {
- sortStoresBy := 3
- } else if (sortStoresBy == "Status") {
- sortStoresBy := 4
- }
- IniWrite, %sortStoresBy%, settings.ini, Einstellungen, SortStoresBy
- IniWrite, %robcountdown%, settings.ini, Einstellungen, RobCountdown
- IniWrite, %enemyAddedMessage%, settings.ini, Einstellungen, GegnerHinzugefügtNachricht
- IniWrite, %enemyUpdatedMessage%, settings.ini, Einstellungen, GegnerGeupdatetNachricht
- IniWrite, %enemyJoinLeaveMessage%, settings.ini, Einstellungen, GegnerJoinLeaveNachricht
- IniWrite, %packetMessages%, settings.ini, Einstellungen, PaketNachrichten
- IniWrite, %paintballMessages%, settings.ini, Einstellungen, PaintballNachrichten
- IniWrite, %friendMessages%, settings.ini, Einstellungen, FreundeNachrichten
- IniWrite, %profile1_1%, settings.ini, Ausrüstungsprofile, Profil1_1
- IniWrite, %profile1_2%, settings.ini, Ausrüstungsprofile, Profil1_2
- IniWrite, %profile1_3%, settings.ini, Ausrüstungsprofile, Profil1_3
- IniWrite, %profile1_4%, settings.ini, Ausrüstungsprofile, Profil1_4
- IniWrite, %profile1_5%, settings.ini, Ausrüstungsprofile, Profil1_5
- IniWrite, %profile1_6%, settings.ini, Ausrüstungsprofile, Profil1_6
- IniWrite, %profile2_1%, settings.ini, Ausrüstungsprofile, Profil2_1
- IniWrite, %profile2_2%, settings.ini, Ausrüstungsprofile, Profil2_2
- IniWrite, %profile2_3%, settings.ini, Ausrüstungsprofile, Profil2_3
- IniWrite, %profile2_4%, settings.ini, Ausrüstungsprofile, Profil2_4
- IniWrite, %profile2_5%, settings.ini, Ausrüstungsprofile, Profil2_5
- IniWrite, %profile2_6%, settings.ini, Ausrüstungsprofile, Profil2_6
- IniWrite, %profile3_1%, settings.ini, Ausrüstungsprofile, Profil3_1
- IniWrite, %profile3_2%, settings.ini, Ausrüstungsprofile, Profil3_2
- IniWrite, %profile3_3%, settings.ini, Ausrüstungsprofile, Profil3_3
- IniWrite, %profile3_4%, settings.ini, Ausrüstungsprofile, Profil3_4
- IniWrite, %profile3_5%, settings.ini, Ausrüstungsprofile, Profil3_5
- IniWrite, %profile3_6%, settings.ini, Ausrüstungsprofile, Profil3_6
- global PRIMCOL := "{" . primaryColor . "}"
- global SECCOL := "{" . secondaryColor . "}"
- global PREFIX := PRIMCOL . "[" . SECCOL . projectName . PRIMCOL . "] {FFFFFF}"
- MsgBox, 64, Speicherung, Alle Eingaben und Daten wurden erfolgreich gespeichert!
- Gui, Settings: Destroy
- }
- return
- SettingsGuiClose:
- {
- Gui, Settings: Destroy
- }
- return
- #IFNDEF nooverlay
- OverlaySettingsGUI:
- {
- Gui, OverlaySettings: Destroy
- Gui, OverlaySettings: Color, white
- Gui, OverlaySettings: Font, S10 CDefault, Verdana
- Gui, OverlaySettings: Add, Button, x10 y670 w160 h40 gOverlaySettingsSave, Speichern
- Gui, OverlaySettings: Add, Button, x370 y670 w160 h40 gOverlaySettingsGuiClose, Schließen
- Gui, OverlaySettings: Add, GroupBox, x10 y10 w520 h260, Overlay-Inhalt
- Gui, OverlaySettings: Add, Edit, x20 y30 w500 h230 vstatsOverlayContent, %statsOverlayContent%
- ; Statistik-Overlay Einstellungen
- Gui, OverlaySettings: Add, GroupBox, x10 y280 w520 h170, Statistik-Overlay Einstellungen
- Gui, OverlaySettings: Add, Text, x20 y300 w200 h20, Beim Keybinderstart starten:
- Gui, OverlaySettings: Add, CheckBox, x230 y300 w80 h20 vstatsOverlayAutostart checked%statsOverlayAutostart%, on / off
- Gui, OverlaySettings: Add, Text, x20 y330 w90 h20, Koordinaten:
- Gui, OverlaySettings: Add, Text, x130 y330 w10 h20, x
- Gui, OverlaySettings: Add, Text, x130 y360 w10 h20, y
- Gui, OverlaySettings: Add, Text, x20 y390 w120 h20, Farben anzeigen:
- Gui, OverlaySettings: Add, Text, x20 y420 w120 h20, Kursiv anzeigen:
- Gui, OverlaySettings: Add, Edit, x150 y330 w70 h20 vstatsOverlayPosX, %statsOverlayPosX%
- Gui, OverlaySettings: Add, Edit, x150 y360 w70 h20 vstatsOverlayPosY, %statsOverlayPosY%
- Gui, OverlaySettings: Add, CheckBox, x150 y390 w80 h20 vstatsOverlayColors checked%statsOverlayColors%, on / off
- Gui, OverlaySettings: Add, CheckBox, x150 y420 w80 h20 vstatsOverlayItalic checked%statsOverlayItalic%, on / off
- Gui, OverlaySettings: Add, Text, x230 y330 w145 h20, Schriftart (z.B. Arial):
- Gui, OverlaySettings: Add, Text, x230 y360 w140 h20, Schriftgröße:
- Gui, OverlaySettings: Add, Text, x230 y390 w140 h20, Fett anzeigen:
- Gui, OverlaySettings: Add, Text, x230 y420 w140 h20, Sekundärfarbe:
- Gui, OverlaySettings: Add, Edit, x380 y330 w140 h20 vstatsOverlayFont, %statsOverlayFont%
- Gui, OverlaySettings: Add, Edit, x380 y360 w140 h20 vstatsOverlayFontSize, %statsOverlayFontSize%
- Gui, OverlaySettings: Add, CheckBox, x380 y390 w140 h20 vstatsOverlayBold checked%statsOverlayBold%, on / off
- Gui, OverlaySettings: Add, Edit, x380 y420 w140 h20 vstatsOverlayColor, %statsOverlayColor%
- ; Gegner-Overlay Einstellungen
- Gui, OverlaySettings: Add, GroupBox, x10 y460 w520 h200, Gegner-Overlay Einstellungen
- Gui, OverlaySettings: Add, Text, x20 y480 w200 h20, Beim Keybinderstart starten:
- Gui, OverlaySettings: Add, CheckBox, x230 y480 w80 h20 venemyOverlayAutostart checked%enemyOverlayAutostart%, on / off
- Gui, OverlaySettings: Add, Text, x20 y510 w90 h20, Koordinaten:
- Gui, OverlaySettings: Add, Text, x130 y510 w10 h20, x
- Gui, OverlaySettings: Add, Text, x130 y540 w10 h20, y
- Gui, OverlaySettings: Add, Text, x20 y570 w120 h20, Farben anzeigen:
- Gui, OverlaySettings: Add, Text, x20 y600 w120 h20, Kursiv anzeigen:
- Gui, OverlaySettings: Add, Text, x20 y630 w120 h20, Cops anzeigen:
- Gui, OverlaySettings: Add, Edit, x150 y510 w70 h20 venemyOverlayPosX, %enemyOverlayPosX%
- Gui, OverlaySettings: Add, Edit, x150 y540 w70 h20 venemyOverlayPosY, %enemyOverlayPosY%
- Gui, OverlaySettings: Add, CheckBox, x150 y570 w80 h20 venemyOverlayColors checked%enemyOverlayColors%, on / off
- Gui, OverlaySettings: Add, CheckBox, x150 y600 w80 h20 venemyOverlayItalic checked%enemyOverlayItalic%, on / off
- Gui, OverlaySettings: Add, CheckBox, x150 y630 w80 h20 venemyOverlayShowCops checked%enemyOverlayShowCops%, on / off
- Gui, OverlaySettings: Add, Text, x230 y510 w145 h20, Schriftart (z.B. Arial):
- Gui, OverlaySettings: Add, Text, x230 y540 w140 h20, Schriftgröße:
- Gui, OverlaySettings: Add, Text, x230 y570 w140 h20, Fett anzeigen:
- Gui, OverlaySettings: Add, Text, x230 y600 w140 h20, Sekundärfarbe:
- Gui, OverlaySettings: Add, Text, x230 y630 w180 h20, Eigene Fraktion anzeigen:
- Gui, OverlaySettings: Add, Edit, x380 y510 w140 h20 venemyOverlayFont, %enemyOverlayFont%
- Gui, OverlaySettings: Add, Edit, x380 y540 w140 h20 venemyOverlayFontSize, %enemyOverlayFontSize%
- Gui, OverlaySettings: Add, CheckBox, x380 y570 w140 h20 venemyOverlayBold checked%enemyOverlayBold%, on / off
- Gui, OverlaySettings: Add, Edit, x380 y600 w140 h20 venemyOverlayColor, %enemyOverlayColor%
- Gui, OverlaySettings: Add, CheckBox, x420 y630 w100 h20 venemyOverlayShowOwnFraction checked%enemyOverlayShowOwnFraction%, on / off
- Menu, OverlaySettingsInformations, Add, &Informationen, OverlaySettingsInformations
- Gui, OverlaySettings: Menu, OverlaySettingsInformations
- Gui, OverlaySettings: Show, h720 w540, %projectName% - Overlay - Version: %version%
- }
- return
- OverlaySettingsGuiClose:
- {
- Gui, OverlaySettings: Destroy
- }
- return
- OverlaySettingsSave:
- {
- Gui, OverlaySettings: Submit, NoHide
- savedStatsOverlayContent := StrReplace(statsOverlayContent, "`n", "~")
- IniWrite, %savedStatsOverlayContent%, settings.ini, StatsOverlay, Content
- IniWrite, %statsOverlayAutostart%, settings.ini, StatsOverlay, Autostart
- IniWrite, %statsOverlayPosX%, settings.ini, StatsOverlay, PosX
- IniWrite, %statsOverlayPosY%, settings.ini, StatsOverlay, PosY
- IniWrite, %statsOverlayColors%, settings.ini, StatsOverlay, Colors
- IniWrite, %statsOverlayItalic%, settings.ini, StatsOverlay, Italic
- IniWrite, %statsOverlayFont%, settings.ini, StatsOverlay, Font
- IniWrite, %statsOverlayFontSize%, settings.ini, StatsOverlay, FontSize
- IniWrite, %statsOverlayBold%, settings.ini, StatsOverlay, Bold
- IniWrite, %statsOverlayColor%, settings.ini, StatsOverlay, Color
- statsOverlayPrimColor := SECCOL
- statsOverlaySecColor := "{" . statsOverlayColor . "}"
- statsOverlayPositiveColor := "{00FF00}"
- statsOverlayNegativeColor := "{FF0000}"
- if (statsOverlayEnabled) {
- SetTimer, StatsOverlayTimer, Off
- TextDestroy(statsOverlay)
- createOverlay(1)
- }
- IniWrite, %enemyOverlayAutostart%, settings.ini, EnemyOverlay, Autostart
- IniWrite, %enemyOverlayPosX%, settings.ini, EnemyOverlay, PosX
- IniWrite, %enemyOverlayPosY%, settings.ini, EnemyOverlay, PosY
- IniWrite, %enemyOverlayColors%, settings.ini, EnemyOverlay, Colors
- IniWrite, %enemyOverlayItalic%, settings.ini, EnemyOverlay, Italic
- IniWrite, %enemyOverlayFont%, settings.ini, EnemyOverlay, Font
- IniWrite, %enemyOverlayFontSize%, settings.ini, EnemyOverlay, FontSize
- IniWrite, %enemyOverlayBold%, settings.ini, EnemyOverlay, Bold
- IniWrite, %enemyOverlayColor%, settings.ini, EnemyOverlay, Color
- IniWrite, %enemyOverlayShowCops%, settings.ini, EnemyOverlay, Cops
- IniWrite, %enemyOverlayShowOwnFraction%, settings.ini, EnemyOverlay, EigeneFraktion
- enemyOverlayPrimColor := SECCOL
- enemyOverlaySecColor := "{" . enemyOverlayColor . "}"
- enemyOverlayPositiveColor := "{00FF00}"
- enemyOverlayNegativeColor := "{FF0000}"
- if (enemyOverlayEnabled) {
- SetTimer, EnemyOverlayTimer, Off
- TextDestroy(enemyOverlay)
- createOverlay(2)
- }
- MsgBox, 64, Speicherung, Alle Eingaben und Daten wurden erfolgreich gespeichert!
- Gui, OverlaySettings: Destroy
- }
- return
- OverlaySettingsInformations:
- {
- Gui, OverlayVariables: Destroy
- Gui, OverlayVariables: Default
- Gui, OverlayVariables: Color, white
- Gui, OverlayVariables: Font, S10 CDefault, Verdana
- Gui, OverlayVariables: Add, ListView, x10 y10 r20 w460 gOverlayVariablesLV, Platzhalter|Beschreibung
- Gui, OverlayVariables: Add, Button, x310 y450 w160 h40 gOverlayVariablesGuiClose, Schließen
- LV_Add("", "-----------------", "Allgemeine Variablen")
- LV_Add("", "[primcol]", "Primärfarbe")
- LV_Add("", "[seccol]", "Sekundärfarbe")
- LV_Add("", "[white]", "Weiß")
- LV_Add("", "[name]", "Dein Name")
- LV_Add("", "[id]", "Deine ID")
- LV_Add("", "[ping]", "Dein Ping")
- LV_Add("", "[fps]", "Deine FPS")
- LV_Add("", "[zone]", "Deine Zone")
- LV_Add("", "[city]", "Deine Stadt")
- LV_Add("", "[hp]", "Deine HP")
- LV_Add("", "[armour]", "Deine Armour")
- LV_Add("", "[money]", "Geld auf der Hand")
- LV_Add("", "[bankmoney]", "Geld auf dem Konto")
- LV_Add("", "[allmoney]", "Gesamtgeld")
- LV_Add("", "[skin]", "Deine Skin-ID")
- LV_Add("", "[weaponid]", "Weapon-ID der aktuellen Waffe")
- LV_Add("", "[weapon]", "Name der aktuellen Waffe")
- LV_Add("", "[freezed]", "ja/nein, ob man gefreezed ist")
- LV_Add("", "[vhealth]", "Fahrzeugzustand in Prozent")
- LV_Add("", "[vmodelid]", "Fahrzeug-Modell-ID")
- LV_Add("", "[vmodel]", "Fahrzeug-Modell-Name")
- LV_Add("", "[vspeed]", "Fahrzeug-Geschwindigkeit")
- LV_Add("", "[fishmoney]", "Fisch-Verdienst")
- LV_Add("", "[fishtime]", "Fisch-Zeit")
- LV_Add("", "[date]", "Aktuelles Datum im Format TT.MM.JJJJ")
- LV_Add("", "[motor]", "Motor-Status")
- LV_Add("", "[lock]", "Lock-Status")
- LV_Add("", "[light]", "Licht-Status")
- LV_Add("", "[checkpoint]", "Distanz zum Checkpoint")
- LV_Add("", "[pdmoney]", "Geld am nächsten Payday (brutto)")
- LV_Add("", "[pdmoneynetto]", "Geld am nächsten Payday (netto)")
- LV_Add("", "-----------------", "Kill- und StoreRob-Variablen")
- LV_Add("", "[kills]", "Gesamte Kills")
- LV_Add("", "[kills]", "Gesamte Kills")
- LV_Add("", "[daykills]", "Tages-Kills")
- LV_Add("", "[deaths]", "Gesamte Tode")
- LV_Add("", "[daydeaths]", "Tages-Tode")
- LV_Add("", "[kd]", "Gesamte K/D")
- LV_Add("", "[daykd]", "Tages-K/D")
- LV_Add("", "[stores]", "Gesamte Anzahl ausgeraubter Stores")
- LV_Add("", "[daystores]", "Heutige Anzahl ausgeraubter Stores")
- LV_Add("", "[storemoney]", "Durch Überfälle verdientes Geld (gesamt)")
- LV_Add("", "[daystoremoney]", "Durch Überfälle verdientes Geld (heute)")
- LV_Add("", "-----------------", "Jobsystem-Variablen")
- LV_Add("", "[garbagexp]", "Müllmann-XP")
- LV_Add("", "[garbagekubik]", "Müllmann-Kubik")
- LV_Add("", "[garbagemoney]", "Müllmann-Verdienst")
- LV_Add("", "[fishingxp]", "Hochseefischer-XP")
- LV_Add("", "[fishingmoney]", "Hochseefischer-Verdienst")
- LV_Add("", "[truckerxp]", "Trucker-XP")
- LV_Add("", "[truckermoney]", "Trucker-Verdienst")
- LV_Add("", "[trainxp]", "Zugfahrer-XP")
- LV_Add("", "[trainmoney]", "Zugfahrer-Verdienst")
- LV_Add("", "[gardenerxp]", "Gärtner-XP")
- LV_Add("", "[gardenermoney]", "Gärtner-Verdienst")
- LV_Add("", "[gardenermaxmoney]", "Höchster Verdienst als Gärtner")
- LV_Add("", "[farmerxp]", "Farmer-XP")
- LV_Add("", "[farmermoney]", "Farmer-Verdienst")
- LV_Add("", "[farmermaxmoney]", "Höchster Verdienst als Farmer")
- LV_Add("", "[busrounds]", "Als Busfahrer gefahrene Runden")
- LV_Add("", "[busmoney]", "Busfahrer-Verdienst")
- LV_Add("", "[drugsbought]", "Anzahl der gekauften Drogen")
- LV_Add("", "[drugsmoney]", "Drogen-Verdienst")
- LV_Add("", "[drugxp]", "Drogen-XP")
- LV_Add("", "[drugs]", "Anzahl der gefarmten Drogen")
- LV_Add("", "[drugstatus]", "Zeigt den Drogenstatus mit Zeit an")
- LV_Add("", "[matsbought]", "Anzahl der gekauften Materialien")
- LV_Add("", "[matsmoney]", "Materialien-Verdienst")
- LV_Add("", "[matsxp]", "Materialien-XP")
- LV_Add("", "[mats]", "Anzahl der gefarmten Materialien")
- LV_Add("", "[waffenstahl]", "Anzahl des gefarmten Waffenstahls")
- LV_ModifyCol()
- Gui, OverlayVariables: Show, h500 w480, %projectName% - Overlay-Variablen - Version: %version%
- }
- return
- OverlayVariablesLV:
- {
- if A_GuiEvent = DoubleClick
- {
- LV_GetText(RowText, A_EventInfo)
- clipboard := RowText
- ToolTip, Die Variable "%RowText%" wurde in die Zwischenablage kopiert!
- SetTimer, RemoveToolTip, 1000
- }
- }
- return
- RemoveToolTip:
- {
- SetTimer, RemoveToolTip, Off
- ToolTip
- }
- return
- OverlayVariablesGuiClose:
- {
- Gui, OverlayVariables: Destroy
- }
- return
- #ENDIF
- TextDrawSettingsGUI:
- {
- Gui, TextDrawSettings: Destroy
- Gui, TextDrawSettings: Color, white
- Gui, TextDrawSettings: Font, S10 CDefault, Verdana
- Gui, TextDrawSettings: Add, Button, x10 y340 w160 h40 gTextDrawSettingsSave, Speichern
- Gui, TextDrawSettings: Add, Button, x370 y340 w160 h40 gTextDrawSettingsGuiClose, Schließen
- ; HP- und Armour-TextDraw Einstellungen
- Gui, TextDrawSettings: Add, GroupBox, x10 y10 w520 h170, HP- und Armour-TextDraw Einstellungen
- Gui, TextDrawSettings: Add, Text, x20 y30 w200 h20, Beim Keybinderstart starten:
- Gui, TextDrawSettings: Add, CheckBox, x230 y30 w80 h20 vhpTextAutostart checked%hpTextAutostart%, on / off
- Gui, TextDrawSettings: Add, Text, x20 y60 w100 h50, Koordinaten:`n(HP- TextDraw)
- Gui, TextDrawSettings: Add, Text, x130 y60 w10 h20, x
- Gui, TextDrawSettings: Add, Text, x130 y90 w10 h20, y
- Gui, TextDrawSettings: Add, Text, x20 y120 w100 h50, Koordinaten:`n(Armour- TextDraw)
- Gui, TextDrawSettings: Add, Text, x130 y120 w10 h20, x
- Gui, TextDrawSettings: Add, Text, x130 y150 w10 h20, y
- Gui, TextDrawSettings: Add, Edit, x150 y60 w70 h20 vhpTextPosX, %hpTextPosX%
- Gui, TextDrawSettings: Add, Edit, x150 y90 w70 h20 vhpTextPosY, %hpTextPosY%
- Gui, TextDrawSettings: Add, Edit, x150 y120 w70 h20 varmourTextPosX, %armourTextPosX%
- Gui, TextDrawSettings: Add, Edit, x150 y150 w70 h20 varmourTextPosY, %armourTextPosY%
- Gui, TextDrawSettings: Add, Text, x230 y60 w140 h20, Schriftart (0-3):
- Gui, TextDrawSettings: Add, Text, x230 y90 w140 h20, Schriftgröße:
- Gui, TextDrawSettings: Add, Text, x230 y120 w140 h20, Farbe HP
- Gui, TextDrawSettings: Add, Text, x230 y150 w140 h20, Farbe Armour
- Gui, TextDrawSettings: Add, Edit, x380 y60 w140 h20
- Gui, TextDrawSettings: Add, UpDown, vhpTextFont Range0-3, %hpTextFont%
- Gui, TextDrawSettings: Add, Edit, x380 y90 w140 h20 vhpTextFontSize, %hpTextFontSize%
- Gui, TextDrawSettings: Add, DropDownList, x380 y120 w140 h140 vhpTextColor choose%hpTextColor%, Weiß|Schwarz|Rot|Grün|Blau|Gelb|Lila
- Gui, TextDrawSettings: Add, DropDownList, x380 y150 w140 h140 varmourTextColor choose%armourTextColor%, Weiß|Schwarz|Rot|Grün|Blau|Gelb|Lila
- ; FPS-TextDraw Einstellungen
- Gui, TextDrawSettings: Add, GroupBox, x10 y190 w520 h140, FPS-TextDraw Einstellungen
- Gui, TextDrawSettings: Add, Text, x20 y210 w200 h20, Beim Keybinderstart starten:
- Gui, TextDrawSettings: Add, CheckBox, x230 y210 w80 h20 vfpsTextAutostart checked%fpsTextAutostart%, on / off
- Gui, TextDrawSettings: Add, Text, x20 y240 w100 h50, Koordinaten:
- Gui, TextDrawSettings: Add, Text, x130 y240 w10 h20, x
- Gui, TextDrawSettings: Add, Text, x130 y270 w10 h20, y
- Gui, TextDrawSettings: Add, Edit, x150 y240 w70 h20 vfpsTextPosX, %fpsTextPosX%
- Gui, TextDrawSettings: Add, Edit, x150 y270 w70 h20 vfpsTextPosY, %fpsTextPosY%
- Gui, TextDrawSettings: Add, Text, x230 y240 w140 h20, Schriftart (0-3):
- Gui, TextDrawSettings: Add, Text, x230 y270 w140 h20, Schriftgröße:
- Gui, TextDrawSettings: Add, Text, x230 y300 w140 h20, Farbe
- Gui, TextDrawSettings: Add, Edit, x380 y240 w140 h20
- Gui, TextDrawSettings: Add, UpDown, vfpsTextFont Range0-3, %fpsTextFont%
- Gui, TextDrawSettings: Add, Edit, x380 y270 w140 h20 vfpsTextFontSize, %fpsTextFontSize%
- Gui, TextDrawSettings: Add, DropDownList, x380 y300 w140 h140 vfpsTextColor choose%fpsTextColor%, Weiß|Schwarz|Rot|Grün|Blau|Gelb|Lila
- Gui, TextDrawSettings: Show, h390 w540, %projectName% - TextDraws - Version: %version%
- }
- return
- TextDrawSettingsGuiClose:
- {
- Gui, TextDrawSettings: Destroy
- }
- return
- TextDrawSettingsSave:
- {
- Gui, TextDrawSettings: Submit, NoHide
- IniWrite, %hpTextAutostart%, settings.ini, HPText, Autostart
- IniWrite, %hpTextPosX%, settings.ini, HPText, HPPosX
- IniWrite, %hpTextPosY%, settings.ini, HPText, HPPosY
- IniWrite, %armourTextPosX%, settings.ini, HPText, ArmourPosX
- IniWrite, %armourTextPosY%, settings.ini, HPText, ArmourPosY
- IniWrite, %hpTextFont%, settings.ini, HPText, Font
- IniWrite, %hpTextFontSize%, settings.ini, HPText, FontSize
- if (hpTextColor == "Weiß") {
- hpTextColor := 1
- } else if (hpTextColor == "Schwarz") {
- hpTextColor := 2
- } else if (hpTextColor == "Rot") {
- hpTextColor := 3
- } else if (hpTextColor == "Grün") {
- hpTextColor := 4
- } else if (hpTextColor == "Blau") {
- hpTextColor := 5
- } else if (hpTextColor == "Gelb") {
- hpTextColor := 6
- } else if (hpTextColor == "Lila") {
- hpTextColor := 7
- }
- if (armourTextColor == "Weiß") {
- armourTextColor := 1
- } else if (armourTextColor == "Schwarz") {
- armourTextColor := 2
- } else if (armourTextColor == "Rot") {
- armourTextColor := 3
- } else if (armourTextColor == "Grün") {
- armourTextColor := 4
- } else if (armourTextColor == "Blau") {
- armourTextColor := 5
- } else if (armourTextColor == "Gelb") {
- armourTextColor := 6
- } else if (armourTextColor == "Lila") {
- armourTextColor := 7
- }
- IniWrite, %hpTextColor%, settings.ini, HPText, HPColor
- IniWrite, %armourTextColor%, settings.ini, HPText, ArmourColor
- SetTimer, HealthTextDrawTimer, Off
- deleteTextDraw(hpText)
- deleteTextDraw(armourText)
- if (hpTextEnabled) {
- createText(1)
- }
- IniWrite, %fpsTextAutostart%, settings.ini, FPSText, Autostart
- IniWrite, %fpsTextPosX%, settings.ini, FPSText, PosX
- IniWrite, %fpsTextPosY%, settings.ini, FPSText, PosY
- IniWrite, %fpsTextFont%, settings.ini, FPSText, Font
- IniWrite, %fpsTextFontSize%, settings.ini, FPSText, FontSize
- if (fpsTextColor == "Weiß") {
- fpsTextColor := 1
- } else if (fpsTextColor == "Schwarz") {
- fpsTextColor := 2
- } else if (fpsTextColor == "Rot") {
- fpsTextColor := 3
- } else if (fpsTextColor == "Grün") {
- fpsTextColor := 4
- } else if (fpsTextColor == "Blau") {
- fpsTextColor := 5
- } else if (fpsTextColor == "Gelb") {
- fpsTextColor := 6
- } else if (fpsTextColor == "Lila") {
- fpsTextColor := 7
- }
- IniWrite, %fpsTextColor%, settings.ini, FPSText, Color
- SetTimer, FPSTextDrawTimer, Off
- deleteTextDraw(fpsText)
- if (fpsTextEnabled) {
- createText(3)
- }
- MsgBox, 64, Speicherung, Alle Eingaben und Daten wurden erfolgreich gespeichert!
- Gui, TextDrawSettings: Destroy
- }
- return
- HotkeysGUI:
- {
- Gui, Hotkeys: Destroy
- Gui, Hotkeys: Color, white
- Gui, Hotkeys: Font, S10 CDefault, Verdana
- Gui, Hotkeys: Add, Button, x10 y400 w140 h40 gResetHotkeys, Werkseinstellungen
- Gui, Hotkeys: Add, Button, x160 y400 w140 h40 gOwnHotkeysGUI, Eigene Hotkeys
- Gui, Hotkeys: Add, Button, x310 y400 w110 h40 gHotkeysGuiClose, Schließen
- Gui, Hotkeys: Add, GroupBox, x10 y10 w410 h380, Hotkeys
- Gui, Hotkeys: Add, Text, x20 y30 w220 h20, Motorsystem
- Gui, Hotkeys: Add, Text, x20 y60 w220 h20, Jobsystem
- Gui, Hotkeys: Add, Text, x20 y90 w220 h20, Statistik anzeigen
- Gui, Hotkeys: Add, Text, x20 y120 w220 h20, Tempomat starten/stoppen
- Gui, Hotkeys: Add, Text, x20 y150 w220 h20, Ausrüstungsprofil 1
- Gui, Hotkeys: Add, Text, x20 y180 w220 h20, Ausrüstungsprofil 2
- Gui, Hotkeys: Add, Text, x20 y210 w220 h20, Ausrüstungsprofil 3
- Gui, Hotkeys: Add, Text, x20 y240 w220 h20, Robstore-Hotkey
- Gui, Hotkeys: Add, Text, x20 y270 w220 h20, Store-Dialog-Hotkey
- Gui, Hotkeys: Add, Text, x20 y300 w220 h20, Letzte Eingabe wiederholen
- Gui, Hotkeys: Add, Text, x20 y330 w220 h20, Automatische Systeme beenden
- Gui, Hotkeys: Add, Text, x20 y360 w220 h20, Keybinder pausieren
- Gui, Hotkeys: Add, Hotkey, x260 y30 w150 h20 vmotorSystemHotkey gSaveHotkeyLabel, %motorSystemNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y60 w150 h20 vjobexecuteHotkey gSaveHotkeyLabel, %jobexecuteNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y90 w150 h20 vstatsHotkey gSaveHotkeyLabel, %statsNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y120 w150 h20 vtempomatHotkey gSaveHotkeyLabel, %tempomatNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y150 w150 h20 vequipProfile1Hotkey gSaveHotkeyLabel, %equipProfile1NoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y180 w150 h20 vequipProfile2Hotkey gSaveHotkeyLabel, %equipProfile2NoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y210 w150 h20 vequipProfile3Hotkey gSaveHotkeyLabel, %equipProfile3NoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y240 w150 h20 vrobstoreHotkey gSaveHotkeyLabel, %robstoreNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y270 w150 h20 vstoresHotkey gSaveHotkeyLabel, %storesNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y300 w150 h20 vrepeatHotkey gSaveHotkeyLabel, %repeatNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y330 w150 h20 vstopAutomaticSystemsHotkey gSaveHotkeyLabel, %stopAutomaticSystemsNoMods%
- Gui, Hotkeys: Add, Hotkey, x260 y360 w150 h20 vpauseHotkey gSaveHotkeyLabel, %pauseNoMods%
- Menu, HotkeyInformations, Add, &Informationen, HotkeyInformations
- Gui, Hotkeys: Menu, HotkeyInformations
- Gui, Hotkeys: Show, h450 w430, %projectName% - Hotkeys - Version: %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.ini 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.ini durchgeführt haben, musst du den Keybinder neustarten!
- )
- }
- return
- ResetHotkeys:
- {
- FileDelete, Hotkeys.ini
- 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.ini, 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.ini, Hotkeys, %name%
- registeredHotkeys[name] := hk
- } else {
- IniWrite, ---, Hotkeys.ini, 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
- OwnHotkeysGUI:
- {
- Gui, OwnHotkeys: Destroy
- Gui, OwnHotkeys: Color, white
- 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, 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 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 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 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 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 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 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, OwnHotkeysInformations, Add, &Informationen, OwnHotkeysInformations
- Gui, OwnHotkeys: Menu, OwnHotkeysInformations
- Gui, OwnHotkeys: Show, h580 w1010, %projectName% - Eigene Hotkeys - Version %version%
- }
- return
- OwnHotkeysInformations:
- {
- MsgBox, 64, Informationen zu eigenen Hotkeys,
- (LTrim
- Hier können eigene Hotkeys definiert werden.
- Das Setzen eines Hakens an der entsprechendene Stelle aktiviert den Hotkey. Im Feld darunter kann der Hotkey eingegeben werden, welcher Ingame gedrückt werden muss, damit der Text in dem Feld daneben ausgeführt wird. Im großen Textfeld daneben kann der Text eingegeben werden, welcher beim Ausführen Ingame an den Chat gesendet wird. Jede Zeile entspricht einer Chat-Nachricht.
- 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
- [fishtime] - Fisch-Zeit
- [kills] - Gesamte Kills
- [daykills] - Tages-Kills
- [deaths] - Gesamte Tode
- [daydeaths] - Tages-Tode
- [kd] - Gesamte K/D
- [daykd] - Tages-K/D
- [stores] - Gesamte Anzahl ausgeraubter Stores
- [daystores] - Heutige Anzahl ausgeraubter Stores
- [storemoney] - Durch Überfälle verdientes Geld (gesamt)
- [daystoremoney] - Durch Überfälle verdientes Geld (heute)
- [motor] - Führt das Motor-System aus
- [usepak] - Benutzt ein Erste-Hilfe-Paket (nur wenn weniger als 95 HP)
- [eatfish] - Isst den nächsten Fisch (Nummer wird auch erhöht)
- [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.ini, %outerIndex%, Active
- IniWrite,% savedOwnHotkey%outerIndex%Text, ownhotkeys.ini, %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.ini, %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.ini, %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
- 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
- ownHotkey(id) {
- global
- if (isInChat())
- 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) {
- global fishTime
- IniRead, alltimeKills, stats.ini, Gesamt, Kills, 0
- IniRead, dayKills, stats.ini, Tag, Kills[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, alltimeDeaths, stats.ini, Gesamt, Tode, 0
- IniRead, dayDeaths, stats.ini, Tag, Tode[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, storeRobCount, stats.ini, StoreRob, Anzahl, 0
- IniRead, storeRobCountToday, stats.ini, StoreRob, Anzahl[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, storeRobMoney, stats.ini, StoreRob, Geld, 0
- IniRead, storeRobMoneyToday, stats.ini, StoreRob, Geld[%A_DD%:%A_MM%:%A_YYYY%], 0
- allKD := Round(alltimeKills / alltimeDeaths, 2)
- dayKD := Round(dayKills / dayDeaths, 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, "[fishtime]", formatTime(fishTime))
- line := StrReplace(line, "[kills]", FormatNumber(alltimeKills))
- line := StrReplace(line, "[daykills]", FormatNumber(daykills))
- line := StrReplace(line, "[deaths]", FormatNumber(alltimeDeaths))
- line := StrReplace(line, "[tode]", FormatNumber(alltimeDeaths))
- line := StrReplace(line, "[daydeaths]", FormatNumber(dayDeaths))
- line := StrReplace(line, "[kd]", allKD)
- line := StrReplace(line, "[daykd]", dayKD)
- line := StrReplace(line, "[stores]", FormatNumber(storeRobCount))
- line := StrReplace(line, "[daystores]", FormatNumber(storeRobCountToday))
- line := StrReplace(line, "[storemoney]", FormatNumber(storeRobMoney))
- line := StrReplace(line, "[daystoremoney]", FormatNumber(storeRobMoneyToday))
- if (RegExMatch(line, "(.*)\[sleep (\d+)\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- Sleep, %line_2%
- 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, firstAidLabel
- if (line_2 != "")
- sendLine(line_2, local)
- } else if (RegExMatch(line, "(.*)\[eatfish\](.*)", line_)) {
- if (line_1 != "")
- sendLine(line_1, local)
- GoSub, eatFishLabel
- 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) {
- SendClientMessage(PREFIX . line)
- } else {
- SendChat(line)
- }
- }
- }
- HelpGUI:
- {
- Gui, Help: Destroy
- cheatsheet := URLDownloadToVar(baseURL . "downloads/Cheatsheet.txt")
- StringReplace, cheatsheet, cheatsheet, ', `r`n, All
- Gui, Help: Color, white
- Gui, Help: Font, S10 CDefault, Verdana
- Gui, Help: Add, Button, x240 y450 w220 h40 gSaveCheatsheet, Speichern (Cheatsheet.txt)
- Gui, Help: Add, Button, x470 y450 w140 h40 gHelpGuiClose, Schließen
- Gui, Help: Add, Groupbox, x10 y10 w600 h430, Befehle und Funktionen des Keybinders (Standardkonfiguration)
- Gui, Help: Add, Edit, x20 y30 w580 h400 ReadOnly, %cheatsheet%
- Gui, Help: Show, w620 h500, %projectName% - Hilfe - Version: %version%
- }
- return
- SaveCheatsheet:
- {
- IfExist, Cheatsheet.txt
- {
- FileDelete, Cheatsheet.txt
- }
- FileAppend, %cheatsheet%, Cheatsheet.txt
- MsgBox, 0, Speichern erfolgreich, Das Cheatsheet mit den Befehlen und Hotkeys wurde erfolgreich im Ordner des Keybinders gespeichert!
- }
- HelpGuiClose:
- {
- Gui, Help: Destroy
- }
- return
- NewsGUI:
- {
- Gui, News: Destroy
- msg := URLDownloadToVar(baseURL . "downloads/news.txt")
- StringReplace, news, msg, ', `r`n, All
- Gui, News: Color, white
- Gui, News: Font, S10 CDefault, Verdana
- Gui, News: Add, Button, x470 y450 w140 h40 gNewsGuiClose, Schließen
- Gui, News: Add, Groupbox, x10 y10 w600 h430, Neuigkeiten und Informationen
- Gui, News: Add, Edit, x20 y30 w580 h400 ReadOnly, %news%
- Gui, News: Show, w620 h500, %projectName% - News - Version: %version%
- }
- return
- NewsGuiClose:
- {
- Gui, News: Destroy
- }
- return
- ; ----------- ;
- ; Timer ;
- ; ----------- ;
- AntiDecompile:
- {
- if (WinExist("Cheat Engine") || WinExist("OllyDbg") || WinExist("Process Hacker") || WinExist("Resource Hacker") || WinExist("ArtMoney") || WinExist("Exe2ahk")) {
- ExitApp
- }
- }
- return
- FillCustoms:
- {
- if (timeout) {
- if (isPlayerInAnyVehicle() && isPlayerDriver()) {
- if (fillSystem
- && (isPlayerInRangeOfPoint(700, -1930, 0, 10) ; Verona Beach
- || isPlayerInRangeOfPoint(1833, -2431, 14, 10) ; LS Airport
- || isPlayerInRangeOfPoint(615, 1689, 7, 10) ; Bone County
- || isPlayerInRangeOfPoint(-1328, 2677, 40, 10) ; Tierra Robada
- || isPlayerInRangeOfPoint(1596, 2199, 11, 10) ; Redsands West
- || isPlayerInRangeOfPoint(2202, 2474, 11, 10) ; Emerald Isle
- || isPlayerInRangeOfPoint(2114, 920, 11, 10) ; The Strip
- || isPlayerInRangeOfPoint(-2408, 976, 45, 10) ; Juniper Hill
- || isPlayerInRangeOfPoint(-2029, 156, 29, 10) ; Doherty
- || isPlayerInRangeOfPoint(-1676, 414, 7, 10) ; Easter Basin
- || isPlayerInRangeOfPoint(1004, -939, 43, 10) ; Temple
- || isPlayerInRangeOfPoint(1944, -1773, 14, 10) ; Idlewood
- || isPlayerInRangeOfPoint(-90, -1169, 3, 10) ; Flint County
- || isPlayerInRangeOfPoint(-1605, -2714, 49, 10) ; Whetstone
- || isPlayerInRangeOfPoint(-2243, -2560, 32, 10) ; Angel Pine
- || isPlayerInRangeOfPoint(1381, 457, 20, 10) ; Montgomery
- || isPlayerInRangeOfPoint(70, 1218, 19, 10))) { ; Fort Carson
- SendClientMessage(PREFIX . "Du kannst dein Fahrzeug jetzt durch Drücken der Taste " . SECCOL . "X {FFFFFF}betanken!")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- timeout := false
- if (getVehicleEngineState()) {
- SendChat("/motor")
- }
- SendChat("/fill")
- Sleep, 10000
- SendChat("/motor")
- SendChat("/licht")
- tankTimeout := 0
- if (autoBuyCanister) {
- SendClientMessage(PREFIX . "Möchtest du noch einen Kanister kaufen? Steig aus dem Fahrzeug aus und drücke " . SECCOL . "X{FFFFFF}!")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- SendChat("/kanister")
- }
- }
- SetTimer, FillCustomsTimer, 5000
- } else {
- timeout := true
- }
- } else if (customsSystem
- && (isPlayerInRangeOfPoint(1733.47, 546.37, 26, 10) ; Zoll 1
- || isPlayerInRangeOfPoint(1741.11, 543.47, 26, 10) ; Zoll 1
- || isPlayerInRangeOfPoint(1744.03, 523.63, 27, 10) ; Zoll 1
- || isPlayerInRangeOfPoint(1752.71, 521.69, 27, 10) ; Zoll 1
- || isPlayerInRangeOfPoint(512.54, 476.62, 18, 10) ; Zoll 2
- || isPlayerInRangeOfPoint(529.22, 467.21, 18, 10) ; Zoll 2
- || isPlayerInRangeOfPoint(-159.79, 414.18, 11, 10) ; Zoll 3
- || isPlayerInRangeOfPoint(-157.44, 392.24, 11, 10) ; Zoll 3
- || isPlayerInRangeOfPoint(-1408.23, 824.19, 47, 10) ; Zoll 4
- || isPlayerInRangeOfPoint(-1414.77, 803.59, 47, 10) ; Zoll 4
- || isPlayerInRangeOfPoint(-2695.05, 1284.63, 55, 10) ; Zoll 5
- || isPlayerInRangeOfPoint(-2686.34, 1284.24, 55, 10) ; Zoll 5
- || isPlayerInRangeOfPoint(-2676.62, 1265.37, 55, 10) ; Zoll 5
- || isPlayerInRangeOfPoint(-2668.18, 1264.91, 55, 10) ; Zoll 5
- || isPlayerInRangeOfPoint(-963.08, -343.05, 36, 10) ; Zoll 6
- || isPlayerInRangeOfPoint(-968.00, -322.33, 36, 10) ; Zoll 6
- || isPlayerInRangeOfPoint(-71.76, -892.47, 15, 10) ; Zoll 7
- || isPlayerInRangeOfPoint(-68.74, -867.96, 15, 10) ; Zoll 7
- || isPlayerInRangeOfPoint(100.20, -1284.37, 14, 10) ; Zoll 8
- || isPlayerInRangeOfPoint(94.40, -1277.82, 14, 10) ; Zoll 8
- || isPlayerInRangeOfPoint(97.19, -1254.11, 14, 10) ; Zoll 8
- || isPlayerInRangeOfPoint(94.69, -1245.59, 14, 10) ; Zoll 8
- || isPlayerInRangeOfPoint(42.71, -1537.98, 5, 10) ; Zoll 9
- || isPlayerInRangeOfPoint(58.02, -1524.93, 5, 10))) { ; Zoll 9
- SendClientMessage(PREFIX . "Du kannst den Zoll jetzt durch Drücken der Taste " . SECCOL . "X {FFFFFF}öffnen!")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- timeout := false
- Sleep, 100
- SendChat("/zoll")
- Sleep, 200
- chat := readChatLine(0)
- if (RegExMatch(chat, "Es ist keine Zollstation in deiner Nähe\.")) {
- Sleep, 800
- SendChat("/zoll")
- }
- tankTimeout := 0
- SetTimer, FillCustomsTimer, 5000
- } else {
- timeout := true
- }
- }
- }
- }
- }
- return
- FillCustomsTimer:
- {
- tankTimeout++
- if (tankTimeout >= 4) {
- SetTimer, FillCustomsTimer, off
- timeout := true
- }
- }
- return
- TankTimer:
- {
- if (isPlayerInAnyVehicle() && isPlayerDriver()) {
- 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], " ")
- }
- if (RegExMatch(o, "Tank: (\S+)\/(\d+) L", tank_)) {
- if (tank_1 <= 5 && oldTank != Ceil(tank_1)) {
- SendClientMessage(PREFIX . "Achtung! Dein Tank ist fast leer, es befinde" . (tank_1 == 1 ? "t" : "n") . " sich nur noch " . SECCOL . tank_1 . " Liter {FFFFFF}darin.")
- oldTank := Ceil(tank_1)
- break
- }
- }
- }
- }
- }
- return
- findLinie() {
- busLine := 0
- distance := 10000000
- coords := getCoordinates()
- global oTextLabelData
- if (!updateTextLabelData())
- return
- vehicleID := getVehicleID()
- for i, o in oTextLabelData {
- if (o.VEHICLEID == vehicleID) {
- if (RegExMatch(o.TEXT, "Linie (\d+)\n(.+)", label_)) {
- busLine := label_1
- }
- break
- }
- }
- return busLine
- }
- ChatlogSaveTimer:
- {
- if (chatlogSaver) {
- WinWait, GTA:SA:MP, , 1
- if (ErrorLevel) {
- return
- }
- WinWaitClose, GTA:SA:MP, , 1
- if (ErrorLevel) {
- return
- }
- FileCreateDir, %A_MyDocuments%\GTA San Andreas User Files\SAMP\ChatlogBackups
- FormatTime, time, %A_Now%, dd.MM.yy - HH.mm
- FileCopy, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %A_MyDocuments%\GTA San Andreas User Files\SAMP\ChatlogBackups\chatlog %time% Uhr.txt, 0
- MsgBox, Der Chatlog wurde gespeichert.
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Der Chatlog wurde gespeichert. Beginne von Vorne.`n, log.txt
- }
- }
- return
- LottoTimer:
- {
- if (lottoSystem) {
- if (A_Min == 0 && A_Hour != oldHour) {
- SendChat("/lotto")
- SendClientMessage(PREFIX . "Möchtest du dir ein Lottoticket kaufen? Drücke " . SECCOL . "X {FFFFFF}zum Bestätigen.")
- oldHour := A_Hour
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- if (lottoNumber == 0) {
- Random, randomNumber, 1, 200
- SendChat("/lotto " . randomNumber)
- } else if (lottoNumber == 201) {
- SendChat("/lotto " . getId())
- } else {
- SendChat("/lotto " . lottoNumber)
- }
- }
- }
- }
- }
- return
- isConnected() {
- coords := getCoordinates()
- if ((coords[1] == 384 && coords[2] == -1557 && coords[3] == 20) || (Round(coords[1]) == 1531 && Round(coords[2]) == -1734 && Round(coords[3]) == 13)) {
- return false
- }
- return true
- }
- KillTimer:
- {
- data := getKills()
- if (data && isConnected()) {
- For index, object in data
- {
- IniRead, alltimeKills, stats.ini, Gesamt, Kills, 0
- IniRead, dayKills, stats.ini, Tag, Kills[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, alltimeDeaths, stats.ini, Gesamt, Tode, 0
- IniRead, dayDeaths, stats.ini, Tag, Tode[%A_DD%:%A_MM%:%A_YYYY%], 0
- if (object.victim.local) {
- Sleep, 100
- chat0 := readChatLine(0)
- chat1 := readChatLine(1)
- chat2 := readChatLine(2)
- if (RegExMatch(chat0 . chat1 . chat2, "Paintball: (\S+) wurde von (\S+) getötet\.")) {
- return
- }
- alltimeDeaths++
- dayDeaths++
- allKD := Round(alltimeKills / alltimeDeaths, 2)
- dayKD := Round(dayKills / dayDeaths, 2)
- IniWrite, %alltimeDeaths%, stats.ini, Gesamt, Tode
- IniWrite, %dayDeaths%, stats.ini, Tag, Tode[%A_DD%:%A_MM%:%A_YYYY%]
- if (killCounter) {
- SendClientMessage(PREFIX . "Tode: " . SECCOL . FormatNumber(alltimeDeaths) . " {FFFFFF}Tages-Tode: " . SECCOL . FormatNumber(dayDeaths) . " {FFFFFF}K/D: " . SECCOL . allKD . " {FFFFFF}Tages-K/D: " . SECCOL . dayKD)
- }
- if (deathMessageActive && deathMessage != "") {
- deathMessageText := deathMessage
- deathMessageText := StrReplace(deathMessageText, "[name]", getUsername())
- deathMessageText := StrReplace(deathMessageText, "[id]", getId())
- deathMessageText := StrReplace(deathMessageText, "[zone]", getPlayerZone())
- deathMessageText := StrReplace(deathMessageText, "[city]", getPlayerCity())
- deathMessageText := StrReplace(deathMessageText, "[hp]", getPlayerHealth())
- deathMessageText := StrReplace(deathMessageText, "[armour]", getPlayerArmor())
- deathMessageText := StrReplace(deathMessageText, "[kills]", FormatNumber(alltimeKills))
- deathMessageText := StrReplace(deathMessageText, "[daykills]", FormatNumber(daykills))
- deathMessageText := StrReplace(deathMessageText, "[deaths]", FormatNumber(alltimeDeaths))
- deathMessageText := StrReplace(deathMessageText, "[tode]", FormatNumber(alltimeDeaths))
- deathMessageText := StrReplace(deathMessageText, "[daydeaths]", FormatNumber(dayDeaths))
- deathMessageText := StrReplace(deathMessageText, "[kd]", allKD)
- deathMessageText := StrReplace(deathMessageText, "[daykd]", dayKD)
- if (deathMessageLocal) {
- SendClientMessage(PREFIX . deathMessageText)
- } else {
- SendChat(deathMessageText)
- }
- }
- } else if (object.murderer.local) {
- ; Funktioniert nicht besonders gut
- /*
- Sleep, 100
- chat0 := readChatLine(0)
- chat1 := readChatLine(1)
- chat2 := readChatLine(2)
- if (RegExMatch(chat0 . chat1 . chat2, "Paintball: (\S+) wurde von (\S+) getötet\.")) {
- return
- }
- */
- }
- }
- }
- chat := readChatLine(0) . readChatLine(1) . readChatLine(2)
- gameText := getGameText(3, 28)
- if (InStr(chat, "( Mord ). Zeuge: ") || InStr(gameText, "~g~Gang") || InStr(gameText, "~g~Team")) {
- if (InStr(chat, "Kills: ") && InStr(chat, "Tages-Kills: ") && InStr(chat, "K/D: ")) {
- return
- }
- IniRead, alltimeKills, stats.ini, Gesamt, Kills, 0
- IniRead, dayKills, stats.ini, Tag, Kills[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, alltimeDeaths, stats.ini, Gesamt, Tode, 0
- IniRead, dayDeaths, stats.ini, Tag, Tode[%A_DD%:%A_MM%:%A_YYYY%], 0
- alltimeKills++
- dayKills++
- allKD := Round(alltimeKills / alltimeDeaths, 2)
- dayKD := Round(dayKills / dayDeaths, 2)
- IniWrite, %alltimeKills%, stats.ini, Gesamt, Kills
- IniWrite, %dayKills%, stats.ini, Tag, Kills[%A_DD%:%A_MM%:%A_YYYY%]
- if (deathCounter) {
- SendClientMessage(PREFIX . "Kills: " . SECCOL . FormatNumber(alltimeKills) . " {FFFFFF}Tages-Kills: " . SECCOL . FormatNumber(dayKills) . " {FFFFFF}K/D: " . SECCOL . allKD . " {FFFFFF}Tages-K/D: " . SECCOL . dayKD)
- }
- if (killMessageActive && killMessage != "") {
- killMessageText := killMessage
- killMessageText := StrReplace(killMessageText, "[name]", getUsername())
- killMessageText := StrReplace(killMessageText, "[id]", getId())
- killMessageText := StrReplace(killMessageText, "[zone]", getPlayerZone())
- killMessageText := StrReplace(killMessageText, "[city]", getPlayerCity())
- killMessageText := StrReplace(killMessageText, "[hp]", getPlayerHealth())
- killMessageText := StrReplace(killMessageText, "[armour]", getPlayerArmor())
- killMessageText := StrReplace(killMessageText, "[kills]", FormatNumber(alltimeKills))
- killMessageText := StrReplace(killMessageText, "[daykills]", FormatNumber(daykills))
- killMessageText := StrReplace(killMessageText, "[deaths]", FormatNumber(alltimeDeaths))
- killMessageText := StrReplace(killMessageText, "[tode]", FormatNumber(alltimeDeaths))
- killMessageText := StrReplace(killMessageText, "[daydeaths]", FormatNumber(dayDeaths))
- killMessageText := StrReplace(killMessageText, "[kd]", allKD)
- killMessageText := StrReplace(killMessageText, "[daykd]", dayKD)
- if (killMessageLocal) {
- SendClientMessage(PREFIX . killMessageText)
- } else {
- SendChat(killMessageText)
- }
- if (InStr(gameText, "~g~Gang") || InStr(gameText, "~g~Team")) {
- Sleep, 5500
- }
- }
- }
- }
- return
- ChatTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- if (chatLogFile.Length < chatLogLines.Length()) {
- chatLogFile := FileOpen(A_MyDocuments . "\GTA San Andreas User Files\SAMP\chatlog.txt", "r")
- chatLogLines := []
- }
- while (!chatLogFile.AtEOF) {
- line := chatLogFile.ReadLine()
- line := RegExReplace(line, "U)^\[\d{2}:\d{2}:\d{2}\] ")
- line := StrReplace(line, "`r`n")
- line := StrReplace(line, "`r")
- line := RegExReplace(line, "{\S{6}}", "")
- if (line != "") {
- chatLogLines.Push(line)
- if (!firstChatLogRun) {
- handleChatMessage(line, chatLogLines.Length(), chatLogLines)
- }
- }
- }
- firstChatLogRun := false
- }
- return
- handleChatMessage(message, index, arr) {
- global
- if (RegExMatch(message, "^WARNUNG: Hör auf zu Spamen, sonst wirst du gekickt!$")) {
- if (antispamSystem) {
- blockChatInput()
- SendClientMessage(PREFIX . "Spamschutz-System {00FF00}aktiviert{FFFFFF}!")
- SetTimer, SpamTimer, -1500
- }
- } else if (RegExMatch(message, "^\* Du kannst mit \/service einen Wheelman rufen, der dich befreien kann \(für bis zu (\d+)\$\)\.$")) {
- SetTimer, WheelmanTimer, -1
- } else if (RegExMatch(message, "^\* Sanitäter (\S+) bietet dir ein Erste-Hilfe-Paket für \$(\d+) an\. Benutze \/accept Paket$", message_)) {
- medicName := message_1
- SetTimer, PaketTimer, -1
- } else if (RegExMatch(message, "^\* \$(\d+) werden am nächsten Payday Gutgeschrieben\.$", stats_)) {
- IniRead, pilotXP, stats.ini, Pilot, XP, 0
- IniRead, pilotMoney, stats.ini, Pilot, Geld, 0
- pilotXP++
- pilotMoney += stats_1
- paydayMoney += stats_1
- IniWrite, %pilotXP%, stats.ini, Pilot, XP
- IniWrite, %pilotMoney%, stats.ini, Pilot, Geld
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(pilotXP) . " {FFFFFF}Runden geflogen und hast ingesamt " . SECCOL . FormatNumber(pilotMoney) . "$ {FFFFFF}(brutto) verdient.")
- } else if (RegExMatch(message, "^Du hast (\S+) Kubikmeter Müll abgeliefert und erhälst am nächsten Payday (\d+)\$\.$", stats_)) {
- IniRead, garbageXP, stats.ini, Müllmann, XP, 0
- IniRead, garbageKubik, stats.ini, Müllmann, Kubik, 0
- IniRead, garbageMoney, stats.ini, Müllmann, Geld, 0
- garbageXP++
- garbageKubik += stats_1
- garbageMoney += stats_2
- paydayMoney += stats_2
- IniWrite, %garbageXP%, stats.ini, Müllmann, XP
- IniWrite, %garbageKubik%, stats.ini, Müllmann, Kubik
- IniWrite, %garbageMoney%, stats.ini, Müllmann, Geld
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(garbageXP) . " {FFFFFF}Runden gefahren und hast ingesamt " . SECCOL . FormatNumber(garbageMoney) . "$ {FFFFFF}(brutto) verdient.")
- SendClientMessage(PREFIX . "Du hast ingesamt " . SECCOL . Round(garbageKubik, 1) . " Kubik {FFFFFF}abgeliefert.")
- } else if (RegExMatch(message, "^In der Nähe vom Hafen kannst du keine Reuse auslegen\.$")) {
- playerCoords := getCoordinates()
- distance := Round(getDistanceToPoint(-2330, 2207, 5, playerCoords[1], playerCoords[2], playerCoords[3]))
- SendClientMessage(PREFIX . "Du bist noch zu nah am Hafen. Fahre noch " . SECCOL . (500 - distance) . "m")
- } else if (RegExMatch(message, "^Du legst Reuse (\d+) an dieser Position aus\.$", message_)) {
- fishTraps[message_1] := getCoordinates()
- SendClientMessage(PREFIX . "Reuse " . message_1 . " wurde hier erfolgreich ausgelegt. Fahre 400m um die nächste Reuse auslegen zu können.")
- } else if (RegExMatch(message, "^Du hast bereits in der Nähe eine Reuse ausgelegt\.$")) {
- playerCoords := getCoordinates()
- nearest := false
- nearestDistance := 10000000
- for index, entry in fishTraps {
- if (entry) {
- distance := getDistanceToPoint(playerCoords[1], playerCoords[2], playerCoords[3], entry[1], entry[2], entry[3])
- if (distance < nearestDistance) {
- nearest := entry
- nearestDistance := distance
- }
- }
- }
- if (nearest) {
- SendClientMessage(PREFIX . "Du bist noch zu nah an der letzten Reuse. Fahre noch " . SECCOL . (400 - Round(nearestDistance)) . "m")
- }
- } else if (RegExMatch(message, "^(\S+): (\d+) \((\d+)\$\)$", message_)) {
- IniRead, fishStats, stats.ini, Hochseefischer, %message_1%, 0
- fishStats += message_2
- IniWrite, %fishStats%, stats.ini, Hochseefischer, %message_1%
- } else if (RegExMatch(message, "^Du hast deine Fische am Hafen verkauft und erhälst am nächsten Payday (\d+)\$\.$", message_)) {
- IniRead, fishingMoney, stats.ini, Hochseefischer, Geld, 0
- IniRead, fishingXP, stats.ini, Hochseefischer, XP, 0
- fishingMoney += message_1
- paydayMoney += message_1
- IniWrite, %fishingMoney%, stats.ini, Hochseefischer, Geld
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(fishingXP) . " {FFFFFF}Reusen eingeholt und ingesamt " . SECCOL . FormatNumber(fishingMoney) . "$ {FFFFFF}(brutto) verdient.")
- fishingFull := false
- } else if (RegExMatch(message, "^Du hast Reuse (\d) aus dem Wasser gezogen und folgende Fische gefunden:$", message_)) {
- IniRead, fishingXP, stats.ini, Hochseefischer, XP, 0
- fishingXP++
- IniWrite, %fishingXP%, stats.ini, Hochseefischer, XP
- } else if (RegExMatch(message, "^Du ziehst nun Reuse (\d+) aus dem Wasser\.$", message_)) {
- fishTraps[message_1] := false
- } else if (RegExMatch(message, "^Es passen keine Fische mehr in das Boot, die restlichen Fische in der Reuse wurden freigelassen\.$")) {
- fishingFull := true
- } else if (RegExMatch(message, "^Du hast den Auftrag (\d+) \((.+)\) abgeschlossen und erhälst am nächsten Payday (\d+)\$\.$", stats_)) {
- IniRead, truckerXP, stats.ini, Trucker, XP, 0
- IniRead, truckerMoney, stats.ini, Trucker, Geld, 0
- truckerXP++
- truckerMoney += stats_3
- paydayMoney += stats_3
- IniWrite, %truckerXP%, stats.ini, Trucker, XP
- IniWrite, %truckerMoney%, stats.ini, Trucker, Geld
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(truckerXP) . " {FFFFFF}Runden gefahren und hast ingesamt " . SECCOL . FormatNumber(truckerMoney) . "$ {FFFFFF}(brutto) verdient.")
- } else if (RegExMatch(message, "^\* Du hast die Fahrt Beendet\. \$(\d+) werden am nächsten Payday Gutgeschrieben!$", stats_)) {
- IniRead, trainXP, stats.ini, Zugfahrer, XP, 0
- IniRead, trainMoney, stats.ini, Zugfahrer, Geld, 0
- trainXP++
- trainMoney += stats_1
- paydayMoney += stats_1
- IniWrite, %trainXP%, stats.ini, Zugfahrer, XP
- IniWrite, %trainMoney%, stats.ini, Zugfahrer, Geld
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(trainXP) . " {FFFFFF}Runden gefahren und hast ingesamt " . SECCOL . FormatNumber(trainMoney) . "$ {FFFFFF}(brutto) verdient.")
- } else if (RegExMatch(message, "^Total: (\d+)\$$", stats_)) {
- Loop, 10 {
- gardener := arr[index - A_Index]
- if (RegExMatch(gardener, "^--------------- Gärtner: Gehaltscheck ---------------$")) {
- IniRead, gardenerXP, stats.ini, Gärtner, XP, 0
- IniRead, gardenerMoney, stats.ini, Gärtner, Geld, 0
- IniRead, gardenerMaxMoney, stats.ini, Gärtner, Höchstverdienst, 0
- if (stats_1 > gardenerMaxMoney) {
- SendClientMessage(PREFIX . "Das war bisher deine beste Tour! Neuer Höchstverdienst: " . SECCOL . FormatNumber(stats_1) . "$")
- IniWrite, %stats_1%, stats.ini, Gärtner, Höchstverdienst
- }
- gardenerXP++
- gardenerMoney += stats_1
- paydayMoney += stats_1
- IniWrite, %gardenerXP%, stats.ini, Gärtner, XP
- IniWrite, %gardenerMoney%, stats.ini, Gärtner, Geld
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(gardenerXP) . " {FFFFFF}Runden gefahren und hast ingesamt " . SECCOL . FormatNumber(gardenerMoney) . "$ {FFFFFF}(brutto) verdient.")
- break
- }
- }
- } else if (RegExMatch(message, "^\[Gärtner\]: Die Runde wurde beendet und du erhältst (.+) deines Fortschrittes \((\d+)\$\) am nächsten Payday ausgezahlt\.$", message_)) {
- if (message_2 > 0) {
- IniRead, gardenerXP, stats.ini, Gärtner, XP, 0
- IniRead, gardenerMoney, stats.ini, Gärtner, Geld, 0
- IniRead, gardenerMaxMoney, stats.ini, Gärtner, Höchstverdienst, 0
- if (message_2 > gardenerMaxMoney) {
- SendClientMessage(PREFIX . "Das war bisher deine beste Tour! Neuer Höchstverdienst: " . SECCOL . FormatNumber(message_2) . "$")
- IniWrite, %message_2%, stats.ini, Gärtner, Höchstverdienst
- }
- gardenerXP++
- gardenerMoney += message_2
- paydayMoney += message_2
- IniWrite, %gardenerXP%, stats.ini, Gärtner, XP
- IniWrite, %gardenerMoney%, stats.ini, Gärtner, Geld
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(gardenerXP) . " {FFFFFF}Runden gefahren und hast ingesamt " . SECCOL . FormatNumber(gardenerMoney) . "$ {FFFFFF}(brutto) verdient.")
- }
- } else if (RegExMatch(message, "^Gesamte XP: (\d+) \(\+(\d+) XP\)$", message_)) {
- IniWrite, %stats_1%, stats.ini, Farmer, XP
- farmer := arr[index - 1]
- if (RegExMatch(farmer, "^Total: (\d+)\$\.$", farmer_)) {
- IniRead, farmerMoney, stats.ini, Farmer, Geld, 0
- IniRead, farmerMaxMoney, stats.ini, Farmer, Höchstverdienst, 0
- if (farmer_1 > farmerMaxMoney) {
- SendClientMessage(PREFIX . "Das war bisher deine beste Tour! Neuer Höchstverdienst: " . SECCOL . FormatNumber(farmer_1) . "$")
- IniWrite, %farmer_1%, stats.ini, Farmer, Höchstverdienst
- }
- farmerMoney += farmer_1
- paydayMoney += farmer_1
- IniWrite, %farmerMoney%, stats.ini, Farmer, Geld
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(message_1) . " {FFFFFF}Touren gefahren und hast ingesamt " . SECCOL . FormatNumber(farmerMoney) . "$ {FFFFFF}(brutto) verdient.")
- }
- } else if (RegExMatch(message, "^Du hast (\d+)g Marihuana im Crew Lager abgeliefert \(\+(\d+) XP\)\.$", message_)) {
- IniRead, drugXP, stats.ini, Drogen, XP, 0
- IniRead, drugs, stats.ini, Drogen, Gramm, 0
- drugXP += message_2
- drugs += message_1
- IniWrite, %drugXP%, stats.ini, Drogen, XP
- IniWrite, %drugs%, stats.ini, Drogen, Gramm
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(drugXP) . " EXP {FFFFFF}gesammelt und " . SECCOL . FormatNumber(drugs) . "g {FFFFFF}Drogen am Crewlager abgeliefert.")
- } else if (RegExMatch(message, "^Du hast (\d+) Samen für (\d+)\$ gekauft\.$", message_)) {
- IniRead, drugsBought, stats.ini, Drogen, AnzahlGekauft, 0
- IniRead, moneySpent, stats.ini, Drogen, Ausgaben, 0
- drugsBought += message_1
- moneySpent += message_2
- IniWrite, %drugsBought%, stats.ini, Drogen, AnzahlGekauft
- IniWrite, %moneySpent%, stats.ini, Drogen, Ausgaben
- drugStatus := false
- SendClientMessage(PREFIX . "Du hast erfolgreich " . SECCOL . FormatNumber(message_1) . " {FFFFFF}Samen für " . SECCOL . FormatNumber(message_2) . "$ {FFFFFF}gekauft.")
- SendClientMessage(PREFIX . "Gesamte Anzahl gekaufter Samen: " . SECCOL . FormatNumber(drugsBought) . " {FFFFFF}Gesamtausgaben: " . SECCOL . FormatNumber(moneySpent) . "$")
- } else if (RegExMatch(message, "^Inklusive Zeitbonus in Höhe von (\d+)g hast du insgesamt (\d+)g Marihuana aus deinen (\d+) Samen geerntet\.$", message_)) {
- IniRead, drugsHarvested, stats.ini, Drogen, AnzahlGeerntet, 0
- drugsHarvested += message_2
- IniWrite, %drugsHarvested%, stats.ini, Drogen, AnzahlGeerntet
- SendClientMessage(PREFIX . "Du hast deine Drogen nach " . SECCOL . formatTime(drugGrowTime) . " {FFFFFF}geerntet.")
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(drugsHarvested) . "g {FFFFFF}Drogen geerntet. Du kannst nun wieder neue Drogen kaufen.")
- drugStatus := false
- drugGrowTime := -1
- drugTime := 0
- SetTimer, DrugTimer, Off
- } else if (RegExMatch(message, "^Der Mindestertrag an Drogen ist abhängig von der Zeit, mindestens jedoch werden (\d+) Minuten benötigt\.$", message_)) {
- drugStatus := true
- SendClientMessage(PREFIX . "Du hast deine Samen hier gepflanzt. Du wirst in " . SECCOL . message_1 . " Minuten {FFFFFF}informiert, dass du ernten kannst.")
- drugGrowTime := 0
- drugTime := message_1 * 60
- SetTimer, DrugTimer, 1000
- } else if (RegExMatch(message, "^Du besitzt keine Samen\.$")) {
- SendChat("/seed buy")
- } else if (RegExMatch(message, "^Du hast (\d+)g Waffenstahl für deine (\d+) Pakete erhalten\.$", chatLine0_)) {
- IniRead, matsFarmed, stats.ini, Materialien, Waffenstahl, 0
- matsFarmed += chatLine0_1
- IniWrite, %matsFarmed%, stats.ini, Materialien, Waffenstahl
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(matsFarmed) . "g {FFFFFF}Waffenstahl gefarmt. Du musst diese nun am Lagerhaus abliefern.")
- } else if (RegExMatch(message, "^Fehler: Du hast keine Pakete bei dir\. Kaufe Pakete mit \/materials get\.$")) {
- SendChat("/materials get")
- } else if (RegExMatch(message, "^Fehler: Du transportierst keine Pakete im Fahrzeug\.$")) {
- SendChat("/materials get")
- } else if (RegExMatch(message, "^Du hast (\d+) Materialien-Pakete für (\d+)\$ erworben\. Du (\S+) nun (\d+) Pakete (.+)\.$", message_)) {
- IniRead, matsBought, stats.ini, Materialien, AnzahlGekauft, 0
- IniRead, moneySpent, stats.ini, Materialien, Ausgaben, 0
- matsBought += message_1
- moneySpent += message_2
- IniWrite, %matsBought%, stats.ini, Materialien, AnzahlGekauft
- IniWrite, %moneySpent%, stats.ini, Materialien, Ausgaben
- SendClientMessage(PREFIX . "Du hast erfolgreich " . SECCOL . FormatNumber(message_1) . " {FFFFFF}Materialpakete für " . SECCOL . FormatNumber(message_2) . "$ {FFFFFF}gekauft.")
- SendClientMessage(PREFIX . "Gesamte Anzahl gekaufter Materialpakete: " . SECCOL . FormatNumber(matsBought) . " {FFFFFF}Gesamtausgaben: " . SECCOL . FormatNumber(moneySpent) . "$")
- } else if (RegExMatch(message, "^Du hast (\d+)g Waffenstahl im Crew Lager abgeliefert \(\+(\d+) XP\)\.$", message_)) {
- IniRead, matsXP, stats.ini, Materialien, XP, 0
- IniRead, mats, stats.ini, Materialien, Anzahl, 0
- matsXP += message_2
- mats += message_1
- IniWrite, %matsXP%, stats.ini, Materialien, XP
- IniWrite, %mats%, stats.ini, Materialien, Anzahl
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(matsXP) . " EXP {FFFFFF}gesammelt und " . SECCOL . FormatNumber(mats) . "g {FFFFFF}Materialien am Crewlager abgeliefert.")
- } else if (RegExMatch(message, "^Du hast (\d+) Produkte für (\d+)\$ gekauft\.$", message_)) {
- IniRead, prodBought, stats.ini, Produkte, Gekauft, 0
- IniRead, moneySpent, stats.ini, Produkte, Ausgaben, 0
- prodBought += message_1
- moneySpent += message_2
- IniWrite, %prodBought%, stats.ini, Produkte, Gekauft
- IniWrite, %moneySpent%, stats.ini, Produkte, Ausgaben
- SendClientMessage(PREFIX . "Du hast erfolgreich " . SECCOL . FormatNumber(message_1) . " {FFFFFF}Produkte für " . SECCOL . FormatNumber(message_2) . "$ {FFFFFF}gekauft.")
- SendClientMessage(PREFIX . "Gesamte Anzahl gekaufter Produkte: " . SECCOL . FormatNumber(prodBought) . " {FFFFFF}Gesamtausgaben: " . SECCOL . FormatNumber(moneySpent) . "$")
- } else if (RegExMatch(message, "^Du hast (\d+) Produkte im Crew Lager abgeliefert\.$", message_)) {
- IniRead, prods, stats.ini, Produkte, Anzahl, 0
- prods += message_1
- IniWrite, %prods%, stats.ini, Produkte, Anzahl
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(prods) . " {FFFFFF}Produkte am Crewlager abgeliefert.")
- } else if (RegExMatch(message, "^Du hast (\d+) L Rohöl für (\d+)\$ gekauft\.$", message_)) {
- IniRead, oilBought, stats.ini, Oil, Gekauft, 0
- IniRead, moneySpent, stats.ini, Oil, Ausgaben, 0
- oilBought += message_1
- moneySpent += message_2
- IniWrite, %oilBought%, stats.ini, Oil, Gekauft
- IniWrite, %moneySpent%, stats.ini, Oil, Ausgaben
- SendClientMessage(PREFIX . "Du hast erfolgreich " . SECCOL . FormatNumber(message_1) . " Liter {FFFFFF}Rohöl für " . SECCOL . FormatNumber(message_2) . "$ {FFFFFF}gekauft.")
- SendClientMessage(PREFIX . "Gesamte Anzahl gekauftes Rohöl: " . SECCOL . FormatNumber(oilBought) . " Liter {FFFFFF}Gesamtausgaben: " . SECCOL . FormatNumber(moneySpent) . "$")
- } else if (RegExMatch(message, "^Du hast (\d+) L Rohöl im Crew Lager abgeliefert\.$", stats_)) {
- IniRead, oil, stats.ini, Oil, Liter, 0
- oil += stats_1
- IniWrite, %oil%, stats.ini, Oil, Liter
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(oil) . " Liter {FFFFFF}Rohöl am Crewlager abgeliefert.")
- } else if (RegExMatch(message, "^Du hast diesen Store erfolgreich überfallen, die Beute wurde der Crew Kasse gutgeschrieben\.$")) {
- store := arr[index - 1]
- if (RegExMatch(store, "^\*\* (.+) " . getUsername() . " hat ein Store im GK (\S+) erfolgreich überfallen\. Beute: (\d+)\$$", store_)) {
- IniRead, storeRobCount, stats.ini, StoreRob, Anzahl, 0
- IniRead, storeRobCountToday, stats.ini, StoreRob, Anzahl[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, storeRobMoney, stats.ini, StoreRob, Geld, 0
- IniRead, storeRobMoneyToday, stats.ini, StoreRob, Geld[%A_DD%:%A_MM%:%A_YYYY%], 0
- storeRobCount++
- storeRobCountToday++
- storeRobMoney += store_3
- storeRobMoneyToday += store_3
- IniWrite, %storeRobCount%, stats.ini, StoreRob, Anzahl
- IniWrite, %storeRobCountToday%, stats.ini, StoreRob, Anzahl[%A_DD%:%A_MM%:%A_YYYY%]
- IniWrite, %storeRobMoney%, stats.ini, StoreRob, Geld
- IniWrite, %storeRobMoneyToday%, stats.ini, StoreRob, Geld[%A_DD%:%A_MM%:%A_YYYY%]
- Sleep, 250
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(storeRobCount) . " Läden {FFFFFF}und " . SECCOL . FormatNumber(storeRobMoney) . "$ {FFFFFF}ausgeraubt (gesamt).")
- SendClientMessage(PREFIX . "Heute: " . SECCOL . FormatNumber(storeRobCountToday) . " Läden{FFFFFF}, " . SECCOL . FormatNumber(storeRobMoneyToday) . "$")
- }
- } else if (RegExMatch(message, "^Paintball: (\S+) wurde von (\S+) getötet\.$", message_)) {
- if (message_1 == getUsername()) {
- IniRead, pbDeaths, stats.ini, Paintball, Tode, 0
- pbDeaths++
- IniWrite, %pbDeaths%, stats.ini, Paintball, Tode
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(pbDeaths) . "{FFFFFF}-mal im Paintball gestorben.")
- if (pbKillStreak > 0 && paintballMessages)
- SendChat("/l Meine Killstreak war: " . pbKillStreak)
- pbKillStreak := 0
- } else if (message_2 == getUsername()) {
- IniRead, pbKills, stats.ini, Paintball, Kills, 0
- pbKills++
- IniWrite, %pbKills%, stats.ini, Paintball, Kills
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . FormatNumber(pbKills) . " {FFFFFF}Spieler im Paintball getötet.")
- pbKillStreak++
- if (paintballMessages) {
- IniRead, pbHighestKillStreak, stats.ini, Paintball, Killstreak, 0
- if (pbKillStreak > pbHighestKillStreak) {
- IniWrite, %pbKillStreak%, stats.ini, Paintball, Killstreak
- SendChat("/l Meine neue beste Killstreak: " . pbKillStreak)
- } else {
- SendChat("/l Meine Killstreak: " . pbKillStreak)
- }
- }
- }
- } else if (RegExMatch(message, "^\|=================\|\|============\|\|=================\|$")) {
- Loop {
- chat := arr[index - A_Index]
- if (InStr(chat, "KFZ Steuer:")) {
- RegExMatch(chat, "KFZ Steuer: -(\d*)\$", car)
- }
- if (InStr(chat, "Lohn: ")) {
- RegExMatch(chat, "Lohn: (\d*)\$ \(davon (\d+\$) Bonus durch Upgrade\) Miete: -(\d*)\$ Lohnsteuer: -(\d*)\$", general)
- }
- if (InStr(chat, "Stromrechnung: ")) {
- RegExMatch(chat, "Stromrechnung: -(.*)\$", electricity)
- }
- if (InStr(chat, "|================| Gehalts-Check |================|")) {
- break
- }
- }
- money := general1
- money -= general3
- money -= general4
- money -= car1
- money -= electricity1
- SendClientMessage(PREFIX . "Errechneter Payday: " . SECCOL . FormatNumber(paydayMoney) . "$ {FFFFFF}(Brutto) " . SECCOL . FormatNumber(Round(paydayMoney * taxes)) . "$ {FFFFFF}(Netto)")
- SendClientMessage(PREFIX . "Gehaltsscheck: " . SECCOL . FormatNumber(money) . "$")
- paydayMoney := 0
- } else if (RegExMatch(message, "^ > " . getUsername() . " beobachtet (\S+)\.$", message_)) {
- tv := true
- tvName := message_1
- SendClientMessage(PREFIX . "Beobachtungsmodus aktiviert")
- } else if (RegExMatch(message, "^ > " . getUsername() . " hat die Beobachtung beendet\.$")) {
- tv := false
- SendClientMessage(PREFIX . "Beobachtungsmodus deaktiviert")
- } else if (RegExMatch(message, "^Leerfahrt$")) {
- start := -1
- busLine := -1
- SendClientMessage(PREFIX . "Du hast deine Linie abgebrochen!")
- } else if (RegExMatch(message, "^Nächste Haltestelle: (.+)$", chat_)) {
- if (chat_1 == "Busbahnhof Süd" || chat_1 == "Busbahnhof Ost" || chat_1 == "San Fierro Hauptbahnhof" || chat_1 == "Las Venturas Busbahnhof" || chat_1 == "Foster Valley FZ A" || chat_1 == "Foster Valley FZ B") {
- if (start == -1) {
- Sleep, 1000
- start := getUnixTimestamp(A_Now)
- tempLine := findLinie()
- if (tempLine != 0) {
- busLine := tempLine
- SendClientMessage(PREFIX . "Du beginnst Linie " . busLine . "!")
- } else {
- busLine := -1
- SendClientMessage(PREFIX . "Deine Linie konnte nicht korrekt erkannt werden, sie wird vorerst ignoriert!")
- }
- }
- } else {
- if (start != -1 && busLine == -1) {
- tempLine := findLinie()
- if (tempLine != 0) {
- busLine := tempLine
- SendClientMessage(PREFIX . "Deine Linie wurde soeben erkannt: Linie " . busLine)
- }
- }
- }
- } else if (RegExMatch(message, "^\* Du erhälst am nächsten Payday (\d+)\$ gutgeschrieben\. Erhaltene Exp: (\d+)$", chat_)) {
- if (start != -1) {
- IniRead, busRounds, stats.ini, Busfahrer, Runden, 0
- IniRead, busMoney, stats.ini, Busfahrer, Geld, 0
- busRounds++
- busMoney += chat_1
- paydayMoney += chat_1
- IniWrite, %busRounds%, stats.ini, Busfahrer, Runden
- IniWrite, %busMoney%, stats.ini, Busfahrer, Geld
- end := getUnixTimestamp(A_Now)
- diff := end - start
- SendClientMessage(PREFIX . "Du hast Linie " . busLine . " für " . SECCOL . FormatNumber(chat_1) . "$ {FFFFFF}beendet und " . SECCOL . chat_2 . " EXP {FFFFFF}erhalten. Zeit: " . SECCOL . formatTime(diff))
- SendClientMessage(PREFIX . "Du bist bereits " . SECCOL . FormatNumber(busRounds) . " Runden {FFFFFF}gefahren und hast " . SECCOL . FormatNumber(busMoney) . "$ {FFFFFF}verdient.")
- if (busSendToJobChat) {
- SendChat("/j Ich habe Linie " . busLine . " für " . FormatNumber(chat_1) . "$ beendet und " . chat_2 . " EXP erhalten. Zeit: " . formatTime(diff))
- }
- start := -1
- if (busRestartLine) {
- if (busLine == 4) {
- busLine := 5
- } else if (busLine == 5) {
- busLine := 4
- } else if (busLine == 8) {
- busLine := 9
- } else if (busLine == 9) {
- busLine := 8
- } else if (busLine == 13) {
- busLine := 14
- } else if (busLine == 14) {
- busLine := 13
- } else if (busLine == 16) {
- busLine := 17
- } else if (busLine == 17) {
- busLine := 16
- } else if (busLine == 19) {
- busLine := 20
- } else if (busLine == 20) {
- busLine := 19
- }
- selectLine(busLine)
- }
- }
- } else if (RegExMatch(message, "^\*\* (.+) " . getUsername() . " hat ein Überfall im GK (\d+)\.(\d+) \((\S+)\) gestartet\.$", message_)) {
- storerobTime := 89
- if (robcountdown) {
- SetTimer, RobTimer, 1000
- }
- data := []
- data["username"] := getUsername()
- data["store"] := message_4
- data["gk"] := message_2 . "." . message_3
- jsonData := JSON.Dump(data)
- result := URLDownloadToVar(robBaseURL . "api/updatestore.php?data=" . jsonData)
- SendClientMessage(PREFIX . result)
- } else if (RegExMatch(message, "Gestartet von der Rebellen Crew (.+), Beute: (\d+)\$", chat0_)) {
- chat1 := arr[index - 1]
- if (RegExMatch(chat1, "Dieser Store wurde bereits ausgeraubt \(noch (.+) gesperrt\)\.", chat1_)) {
- if (RegExMatch(chat1_1, "(\d+) Stunden und (\d+) Minuten", time)) {
- robtime := time1 * 60 + time2
- } else if (RegExMatch(chat1_1, "(\d+) Minuten", time)) {
- robtime := time1
- } else {
- return
- }
- SendChat("/crewmembers")
- Sleep, 200
- Loop {
- if (A_Index > 100)
- break
- chat := readChatLine(A_Index - 1)
- if (RegExMatch(chat, getUsername() . ", (.+) \((.+)\), GK (\d+).(\d+)", chat_)) {
- store := ""
- if (chat_3 == "10") {
- if (IsPlayerInRangeOfPoint(0, -17, 1003, 20)) {
- store := "SM"
- } else if (IsPlayerInRangeOfPoint(372.5, -66, 1001, 20)) {
- store := "BS"
- }
- } else if (chat_3 == "15") {
- store := "CS"
- } else if (chat_3 == "9") {
- store := "CB"
- } else if (chat_3 == "5") {
- store := "PS"
- }
- if (store == "") {
- SendClientMessage(PREFIX . "Der Store konnte nicht ermittelt werden!")
- return
- }
- data := []
- data["username"] := getUsername()
- data["store"] := store
- data["gk"] := chat_3 . "." . chat_4
- data["robtime"] := robtime
- jsonData := JSON.Dump(data)
- result := URLDownloadToVar(robBaseURL . "api/updatestore.php?data=" . jsonData)
- SendClientMessage(PREFIX . result)
- break
- }
- if (InStr(chat, "\*\*Members online\*\*")) {
- break
- }
- }
- }
- } else if (RegExMatch(message, "^\*\* Der Überfall von " . getUsername() . " ist gescheitert \((.+)\)\.$")) {
- SetTimer, RobTimer, Off
- }
- }
- SpamTimer:
- {
- unBlockChatInput()
- SendClientMessage(PREFIX . "Spamschutz-System {FF0000}deaktiviert{FFFFFF}!")
- }
- return
- WheelmanTimer:
- {
- SendClientMessage(PREFIX . "Möchtest du einen Wheelman anfordern? Drücke " . SECCOL . "X {FFFFFF}zum Bestätigen.")
- KeyWait, X, D T10
- if (!ErrorLevel) {
- SendChat("/service")
- Sleep, 200
- SendInput, {down 6}{enter}
- }
- }
- return
- PaketTimer:
- {
- SendClientMessage(PREFIX . SECCOL . medicName . " {FFFFFF}bietet dir ein Paket an, drücke " . SECCOL . "X {FFFFFF}zum Annehmen.")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- SendChat("/accept paket")
- Sleep, 200
- chat := readChatLine(0) . readChatLine(1) . readChatLine(2)
- if (RegExMatch(chat, "Du hast bereits ein Erste-Hilfe-Paket\. Verwende \/erstehilfe")) {
- if (packetMessages) {
- SendChat("/l Vielen Dank " . medicName . ", doch ich habe bereits ein Paket!")
- }
- } else if (RegExMatch(chat, "\* Du hast für \$(\d+) ein Erste-Hilfe-Paket von (\S+) gekauft\.", chat_)) {
- if (packetMessages) {
- SendChat("/l Vielen Dank " . chat_2 . " für das Paket!")
- }
- }
- }
- }
- return
- ; ---------- ;
- ; Timer Ende ;
- ; ---------- ;
- :?:/tempo::
- {
- tempoInput := PlayerInput("Tempo: ")
- if (tempoInput == "")
- return
- if tempoInput is not number
- return
- tempo := tempoInput
- IniWrite, %tempo%, settings.ini, Einstellungen, Tempo
- SendClientMessage(PREFIX . "Du hast das Tempo auf " . SECCOL . tempo . " km/h {FFFFFF}gesetzt. Starte den Tempomat mit " . SECCOL . tempomatNoMods)
- }
- return
- tempomatLabel:
- {
- if (isInChat())
- return
- if (tempomat) {
- SendInput, {W up}
- tempomat := false
- SendClientMessage(PREFIX . "Du hast den Tempomat {FF0000}deaktiviert{FFFFFF}.")
- } else {
- tempomat := true
- SendClientMessage(PREFIX . "Du hast den Tempomat {00FF00}aktiviert{FFFFFF} (Tempo: " . SECCOL . tempo . " km/h{FFFFFF}).")
- }
- }
- TempoTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- if (!tempomat || tempo <= 0)
- return
- if (isInChat())
- return
- if (isPlayerInAnyVehicle() && isPlayerDriver()) {
- currentSpeed := getVehicleSpeed()
- if (currentSpeed < tempo) {
- SendInput, {W down}
- } else {
- SendInput, {W up}
- }
- }
- }
- return
- #IFNDEF nooverlay
- StatsOverlayTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- IniRead, accountMoney, stats.ini, Vermögen, Bank, 0
- IniRead, depositMoney, stats.ini, Vermögen, Festgeld, 0
- allMoney := accountMoney + depositMoney + getPlayerMoney()
- IniRead, fishMoney, stats.ini, Fischsystem, Fischgeld, 0
- IniRead, alltimeKills, stats.ini, Gesamt, Kills, 0
- IniRead, dayKills, stats.ini, Tag, Kills[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, alltimeDeaths, stats.ini, Gesamt, Tode, 0
- IniRead, dayDeaths, stats.ini, Tag, Tode[%A_DD%:%A_MM%:%A_YYYY%], 0
- allKD := Round(alltimeKills / alltimeDeaths, 2)
- dayKD := Round(dayKills / dayDeaths, 2)
- IniRead, storeRobCount, stats.ini, StoreRob, Anzahl, 0
- IniRead, storeRobCountToday, stats.ini, StoreRob, Anzahl[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, storeRobMoney, stats.ini, StoreRob, Geld, 0
- IniRead, storeRobMoneyToday, stats.ini, StoreRob, Geld[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, garbageXP, stats.ini, Müllmann, XP, 0
- IniRead, garbageKubik, stats.ini, Müllmann, Kubik, 0
- IniRead, garbageMoney, stats.ini, Müllmann, Geld, 0
- IniRead, fishingXP, stats.ini, Hochseefischer, XP, 0
- IniRead, fishingMoney, stats.ini, Hochseefischer, Geld, 0
- IniRead, truckerXP, stats.ini, Trucker, XP, 0
- IniRead, truckerMoney, stats.ini, Trucker, Geld, 0
- IniRead, trainXP, stats.ini, Zugfahrer, XP, 0
- IniRead, trainMoney, stats.ini, Zugfahrer, Geld, 0
- IniRead, gardenerXP, stats.ini, Gärtner, XP, 0
- IniRead, gardenerMoney, stats.ini, Gärtner, Geld, 0
- IniRead, gardenerMaxMoney, stats.ini, Gärtner, Höchstverdienst, 0
- IniRead, farmerXP, stats.ini, Farmer, XP, 0
- IniRead, farmerMoney, stats.ini, Farmer, Geld, 0
- IniRead, farmerMaxMoney, stats.ini, Farmer, Höchstverdienst, 0
- IniRead, busRounds, stats.ini, Busfahrer, Runden, 0
- IniRead, busMoney, stats.ini, Busfahrer, Geld, 0
- IniRead, drugsBought, stats.ini, Drogen, AnzahlGekauft, 0
- IniRead, drugsMoney, stats.ini, Drogen, Ausgaben, 0
- IniRead, drugXP, stats.ini, Drogen, XP, 0
- IniRead, drugs, stats.ini, Drogen, Gramm, 0
- IniRead, matsBought, stats.ini, Materialien, AnzahlGekauft, 0
- IniRead, matsMoney, stats.ini, Materialien, Ausgaben, 0
- IniRead, matsXP, stats.ini, Materialien, XP, 0
- IniRead, mats, stats.ini, Materialien, Anzahl, 0
- IniRead, waffenstahl, stats.ini, Materialien, Waffenstahl, 0
- motorStatus := ""
- lockStatus := ""
- lightStatus := ""
- checkpointDistance := "-"
- drugOverlayStatus := ""
- if (isPlayerInAnyVehicle()) {
- if (getVehicleEngineState()) {
- motorStatus := statsOverlayPositiveColor . "Motor an{FFFFFF}"
- } else {
- motorStatus := statsOverlayNegativeColor . "Motor aus{FFFFFF}"
- }
- }
- if (isPlayerInAnyVehicle()) {
- if (getVehicleLockState()) {
- lockStatus := statsOverlayNegativeColor . "Fahrzeug abgeschlossen{FFFFFF}"
- } else {
- lockStatus := statsOverlayPositiveColor . "Fahrzeug aufgeschlossen{FFFFFF}"
- }
- }
- if (isPlayerInAnyVehicle()) {
- if (getVehicleLightState()) {
- lightStatus := statsOverlayPositiveColor . "Licht angeschalten{FFFFFF}"
- } else {
- lightStatus := statsOverlayNegativeColor . "Licht abgeschalten{FFFFFF}"
- }
- }
- if (IsMarkerCreated()) {
- coordsFromRedmarker := CoordsFromRedmarker()
- playerCoords := getCoordinates()
- distance := getDistanceToPoint(coordsFromRedmarker[1], coordsFromRedmarker[2], coordsFromRedmarker[3], playerCoords[1], playerCoords[2], playerCoords[3])
- checkpointDistance := FormatNumber(Floor(distance)) . "m"
- }
- if (drugGrowTime == -1) {
- drugOverlayStatus := "[white]Keine Drogen gepflanzt"
- } else {
- if (drugTime >= 0) {
- drugOverlayStatus := "[white]Drogenzeit: [primcol]" . formatTime(drugTime)
- } else {
- drugOverlayStatus := "[white]Drogen reif seit: [primcol]" . formatTime(drugTime * -1)
- }
- }
- statsOverlayText := statsOverlayContent
- statsOverlayText := StrReplace(statsOverlayText, "[name]", getUsername())
- statsOverlayText := StrReplace(statsOverlayText, "[id]", getId())
- statsOverlayText := StrReplace(statsOverlayText, "[ping]", getPlayerPingById(getId()))
- statsOverlayText := StrReplace(statsOverlayText, "[fps]", getFPS())
- statsOverlayText := StrReplace(statsOverlayText, "[zone]", getPlayerZone())
- statsOverlayText := StrReplace(statsOverlayText, "[city]", getPlayerCity())
- statsOverlayText := StrReplace(statsOverlayText, "[hp]", getPlayerHealth())
- statsOverlayText := StrReplace(statsOverlayText, "[armour]", getPlayerArmor())
- statsOverlayText := StrReplace(statsOverlayText, "[money]", FormatNumber(getPlayerMoney()))
- statsOverlayText := StrReplace(statsOverlayText, "[bankmoney]", FormatNumber(accountMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[allmoney]", FormatNumber(allMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[skin]", getPlayerSkinId())
- statsOverlayText := StrReplace(statsOverlayText, "[weaponid]", getPlayerWeaponId())
- statsOverlayText := StrReplace(statsOverlayText, "[weapon]", getPlayerWeaponName())
- statsOverlayText := StrReplace(statsOverlayText, "[freezed]", (IsPlayerFreezed() ? "ja" : "nein"))
- statsOverlayText := StrReplace(statsOverlayText, "[vhealth]", getVehicleHealth())
- statsOverlayText := StrReplace(statsOverlayText, "[vmodelid]", getVehicleModelId())
- statsOverlayText := StrReplace(statsOverlayText, "[vmodel]", getVehicleModelName())
- statsOverlayText := StrReplace(statsOverlayText, "[vspeed]", round(getVehicleSpeed()))
- statsOverlayText := StrReplace(statsOverlayText, "[fishmoney]", FormatNumber(fishMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[fishtime]", formatTime(fishTime))
- statsOverlayText := StrReplace(statsOverlayText, "[date]", A_DD . "." . A_MM . "." . A_Year)
- statsOverlayText := StrReplace(statsOverlayText, "[motor]", motorStatus)
- statsOverlayText := StrReplace(statsOverlayText, "[lock]", lockStatus)
- statsOverlayText := StrReplace(statsOverlayText, "[light]", lightStatus)
- statsOverlayText := StrReplace(statsOverlayText, "[checkpoint]", checkpointDistance)
- statsOverlayText := StrReplace(statsOverlayText, "[kills]", FormatNumber(alltimeKills))
- statsOverlayText := StrReplace(statsOverlayText, "[daykills]", FormatNumber(daykills))
- statsOverlayText := StrReplace(statsOverlayText, "[deaths]", FormatNumber(alltimeDeaths))
- statsOverlayText := StrReplace(statsOverlayText, "[tode]", FormatNumber(alltimeDeaths))
- statsOverlayText := StrReplace(statsOverlayText, "[daydeaths]", FormatNumber(dayDeaths))
- statsOverlayText := StrReplace(statsOverlayText, "[kd]", allKD)
- statsOverlayText := StrReplace(statsOverlayText, "[daykd]", dayKD)
- statsOverlayText := StrReplace(statsOverlayText, "[pdmoney]", FormatNumber(paydayMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[pdmoneynetto]", FormatNumber(Round(paydayMoney * taxes)))
- statsOverlayText := StrReplace(statsOverlayText, "[stores]", FormatNumber(storeRobCount))
- statsOverlayText := StrReplace(statsOverlayText, "[daystores]", FormatNumber(storeRobCountToday))
- statsOverlayText := StrReplace(statsOverlayText, "[storemoney]", FormatNumber(storeRobMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[daystoremoney]", FormatNumber(storeRobMoneyToday))
- statsOverlayText := StrReplace(statsOverlayText, "[garbagexp]", FormatNumber(garbageXP))
- statsOverlayText := StrReplace(statsOverlayText, "[garbagekubik]", FormatNumber(garbageKubik))
- statsOverlayText := StrReplace(statsOverlayText, "[garbagemoney]", FormatNumber(garbageMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[fishingxp]", FormatNumber(fishingXP))
- statsOverlayText := StrReplace(statsOverlayText, "[fishingmoney]", FormatNumber(fishingMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[truckerxp]", FormatNumber(truckerXP))
- statsOverlayText := StrReplace(statsOverlayText, "[truckermoney]", FormatNumber(truckerMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[trainxp]", FormatNumber(trainXP))
- statsOverlayText := StrReplace(statsOverlayText, "[trainmoney]", FormatNumber(trainMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[gardenerxp]", FormatNumber(gardenerXP))
- statsOverlayText := StrReplace(statsOverlayText, "[gardenermoney]", FormatNumber(gardenerMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[gardenermaxmoney]", FormatNumber(gardenerMaxMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[farmerxp]", FormatNumber(farmerXP))
- statsOverlayText := StrReplace(statsOverlayText, "[farmermoney]", FormatNumber(farmerMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[farmermaxmoney]", FormatNumber(farmerMaxMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[busrounds]", FormatNumber(busRounds))
- statsOverlayText := StrReplace(statsOverlayText, "[busmoney]", FormatNumber(busMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[drugsbought]", FormatNumber(drugsBought))
- statsOverlayText := StrReplace(statsOverlayText, "[drugsmoney]", FormatNumber(drugsMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[drugxp]", FormatNumber(drugXP))
- statsOverlayText := StrReplace(statsOverlayText, "[drugs]", FormatNumber(drugs))
- statsOverlayText := StrReplace(statsOverlayText, "[drugstatus]", drugOverlayStatus)
- statsOverlayText := StrReplace(statsOverlayText, "[matsbought]", FormatNumber(matsBought))
- statsOverlayText := StrReplace(statsOverlayText, "[matsmoney]", FormatNumber(matsMoney))
- statsOverlayText := StrReplace(statsOverlayText, "[matsxp]", FormatNumber(matsXP))
- statsOverlayText := StrReplace(statsOverlayText, "[mats]", FormatNumber(mats))
- statsOverlayText := StrReplace(statsOverlayText, "[waffenstahl]", FormatNumber(waffenstahl))
- statsOverlayText := StrReplace(statsOverlayText, "[primcol]", statsOverlayPrimColor)
- statsOverlayText := StrReplace(statsOverlayText, "[seccol]", statsOverlaySecColor)
- statsOverlayText := StrReplace(statsOverlayText, "[white]", "{FFFFFF}")
- if (!statsOverlayColors) {
- statsOverlayText := RegExReplace(statsOverlayText, "{\S{6}}", "")
- }
- TextSetString(statsOverlay, statsOverlayText)
- }
- return
- :?:/ov::
- :?:/overlay::
- {
- SendClientMessage(PREFIX . SECCOL . "1{FFFFFF}: Statistik-Overlay " . SECCOL . "2{FFFFFF}: Gegner-Overlay")
- overlayInput := PlayerInput("Overlay de-/aktivieren: ")
- if (overlayInput == "1") {
- if (statsOverlayEnabled) {
- TextDestroy(statsOverlay)
- statsOverlayEnabled := false
- if (ovMoveMode == 1) {
- ovMoveMode := 0
- }
- SetTimer, StatsOverlayTimer, Off
- SendClientMessage(PREFIX . "Statistik-Overlay {FF0000}deaktiviert{FFFFFF}.")
- } else {
- createOverlay(1)
- statsOverlayEnabled := true
- SendClientMessage(PREFIX . "Statistik-Overlay {00FF00}aktiviert{FFFFFF}.")
- }
- } else if (overlayInput == "2") {
- if (enemyOverlayEnabled) {
- TextDestroy(enemyOverlay)
- enemyOverlayEnabled := false
- if (ovMoveMode == 2) {
- ovMoveMode := 0
- }
- SetTimer, EnemyOverlayTimer, Off
- SendClientMessage(PREFIX . "Gegner-Overlay {FF0000}deaktiviert{FFFFFF}.")
- } else {
- createOverlay(2)
- enemyOverlayEnabled := true
- SendClientMessage(PREFIX . "Gegner-Overlay {00FF00}aktiviert{FFFFFF}.")
- }
- }
- }
- return
- createOverlay(id) {
- global
- if (id == 1) {
- statsOverlay := TextCreate(statsOverlayFont, statsOverlayFontSize, statsOverlayBold, statsOverlayItalic, statsOverlayPosX, statsOverlayPosY, 0xFFFFFFFF, "", true, true)
- SetTimer, StatsOverlayTimer, 1000
- } else if (id == 2) {
- enemyOverlay := TextCreate(enemyOverlayFont, enemyOverlayFontSize, enemyOverlayBold, enemyOverlayItalic, enemyOverlayPosX, enemyOverlayPosY, 0xFFFFFFFF, "", true, true)
- SetTimer, EnemyOverlayTimer, 1000
- }
- }
- updateOverlay(id) {
- global
- if (id == 1) {
- if (statsOverlayEnabled) {
- TextSetPos(statsOverlay, statsOverlayPosX, statsOverlayPosY)
- }
- } else if (id == 2) {
- if (enemyOverlayEnabled) {
- TextSetPos(enemyOverlay, enemyOverlayPosX, enemyOverlayPosY)
- }
- }
- }
- :?:/ovmove::
- {
- if (ovMoveMode) {
- ovMoveMode := 0
- SendClientMessage(PREFIX . "Der Overlay-Bearbeitungsmodus wurde {FF0000}deaktiviert{FFFFFF}!")
- } else {
- SendClientMessage(PREFIX . SECCOL . "1{FFFFFF}: Statistik-Overlay " . SECCOL . "2{FFFFFF}: Gegner-Overlay")
- overlayInput := PlayerInput("Overlay verschieben: ")
- if (overlayInput == "1") {
- if (statsOverlayEnabled) {
- ovMoveMode := 1
- SendClientMessage(PREFIX . "Der Overlay-Bearbeitungsmodus wurde {00FF00}aktiviert{FFFFFF}!")
- SendClientMessage(PREFIX . "Das Overlay kann nun mit den Pfeiltasten verschoben werden!")
- SendClientMessage(PREFIX . "Wenn du fertig bist, tippe " . SECCOL . "/ovsave {FFFFFF}ein, um die Einstellung zu speichern!")
- } else {
- SendClientMessage(PREFIX . "Das Statistik-Overlay muss aktiviert sein, um es zu verschieben!")
- }
- } else if (overlayInput == "2") {
- if (enemyOverlayEnabled) {
- ovMoveMode := 2
- SendClientMessage(PREFIX . "Der Overlay-Bearbeitungsmodus wurde {00FF00}aktiviert{FFFFFF}!")
- SendClientMessage(PREFIX . "Das Overlay kann nun mit den Pfeiltasten verschoben werden!")
- SendClientMessage(PREFIX . "Wenn du fertig bist, tippe " . SECCOL . "/ovsave {FFFFFF}ein, um die Einstellung zu speichern!")
- } else {
- SendClientMessage(PREFIX . "Das Gegner-Overlay muss aktiviert sein, um es zu verschieben!")
- }
- }
- }
- }
- return
- :?:/ovsave::
- {
- if (ovMoveMode == 1) {
- IniWrite, %statsOverlayPosX%, settings.ini, StatsOverlay, PosX
- IniWrite, %statsOverlayPosY%, settings.ini, StatsOverlay, PosY
- ovMoveMode := 0
- SendClientMessage(PREFIX . "Die Overlay-Position wurde {00FF00}gespeichert {FFFFFF}und der Bearbeitungsmodus {FF0000}deaktiviert{FFFFFF}!")
- } else if (ovMoveMode == 2) {
- IniWrite, %enemyOverlayPosX%, settings.ini, EnemyOverlay, PosX
- IniWrite, %enemyOverlayPosY%, settings.ini, EnemyOverlay, PosY
- ovMoveMode := 0
- SendClientMessage(PREFIX . "Die Overlay-Position wurde {00FF00}gespeichert {FFFFFF}und der Bearbeitungsmodus {FF0000}deaktiviert{FFFFFF}!")
- } else {
- SendClientMessage(PREFIX . "Der Overlay-Bearbeitungsmodus ist nicht aktiviert!")
- }
- }
- return
- #ENDIF
- ~Up::
- {
- #IFNDEF nooverlay
- if (ovMoveMode) {
- if (ovMoveMode == 1) {
- statsOverlayPosY -= 3
- } else if (ovMoveMode == 2) {
- enemyOverlayPosY -= 3
- }
- updateOverlay(ovMoveMode)
- }
- #ENDIF
- if (textMoveMode) {
- if (textMoveMode == 1) {
- hpTextPosY -= 1
- } else if (textMoveMode == 2) {
- armourTextPosY -= 1
- } else if (textMoveMode == 3) {
- fpsTextPosY -= 1
- }
- updateText(textMoveMode)
- }
- }
- return
- ~Down::
- {
- #IFNDEF nooverlay
- if (ovMoveMode) {
- if (ovMoveMode == 1) {
- statsOverlayPosY += 3
- } else if (ovMoveMode == 2) {
- enemyOverlayPosY += 3
- }
- updateOverlay(ovMoveMode)
- }
- #ENDIF
- if (textMoveMode) {
- if (textMoveMode == 1) {
- hpTextPosY += 1
- } else if (textMoveMode == 2) {
- armourTextPosY += 1
- } else if (textMoveMode == 3) {
- fpsTextPosY += 1
- }
- updateText(textMoveMode)
- }
- }
- return
- ~Left::
- {
- #IFNDEF nooverlay
- if (ovMoveMode) {
- if (ovMoveMode == 1) {
- statsOverlayPosX -= 3
- } else if (ovMoveMode == 2) {
- enemyOverlayPosX -= 3
- }
- updateOverlay(ovMoveMode)
- }
- #ENDIF
- if (textMoveMode) {
- if (textMoveMode == 1) {
- hpTextPosX -= 1
- } else if (textMoveMode == 2) {
- armourTextPosX -= 1
- } else if (textMoveMode == 3) {
- fpsTextPosX -= 1
- }
- updateText(textMoveMode)
- }
- }
- return
- ~Right::
- {
- #IFNDEF nooverlay
- if (ovMoveMode) {
- if (ovMoveMode == 1) {
- statsOverlayPosX += 3
- } else if (ovMoveMode == 2) {
- enemyOverlayPosX += 3
- }
- updateOverlay(ovMoveMode)
- }
- #ENDIF
- if (textMoveMode) {
- if (textMoveMode == 1) {
- hpTextPosX += 1
- } else if (textMoveMode == 2) {
- armourTextPosX += 1
- } else if (textMoveMode == 3) {
- fpsTextPosX += 1
- }
- updateText(textMoveMode)
- }
- }
- return
- ; ---------------- ;
- ; Job-System ;
- ; ---------------- ;
- :?:/setjob::
- {
- jobInput := PlayerInput("Job: ")
- if (InStr(jobInput, "Dro")) {
- job := 2
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Drogendealer {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Waf")) {
- job := 3
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Waffendealer {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Bus")) {
- job := 4
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Busfahrer {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Pil")) {
- job := 5
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Pilot {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Fis") || InStr(jobInput, "Hoch")) {
- job := 6
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Hochseefischer {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Anw")) {
- job := 7
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Anwalt {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Det")) {
- job := 8
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Detektiv {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Tru")) {
- job := 9
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Trucker {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Far")) {
- job := 10
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Farmer {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Zug")) {
- job := 11
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Zugfahrer {FFFFFF}gesetzt!")
- } else if (InStr(jobInput, "Gär") || InStr(jobInput, "Gar")) {
- job := 12
- SendClientMessage(PREFIX . "Du hast deinen Job auf " . SECCOL . "Gärtner {FFFFFF}gesetzt!")
- } else {
- SendClientMessage(PREFIX . "Unbekannter Job!")
- return
- }
- IniWrite, %job%, settings.ini, Job, Job
- }
- return
- :?:/setline::
- :?:/setlinie::
- {
- lineInput := PlayerInput("Linie: ")
- if lineInput is number
- {
- if (lineInput < 1 || lineInput > 21) {
- SendClientMessage(PREFIX . "Du musst eine Linie zwischen 1 und 21 eingeben.")
- } else {
- jobLine := lineInput + 1
- IniWrite, %jobLine%, settings.ini, Job, Linie
- SendClientMessage(PREFIX . "Du hast deine Linie auf " . SECCOL . lineInput . " {FFFFFF}gesetzt!")
- }
- } else {
- SendClientMessage(PREFIX . "Bitte eine Zahl als Linie eingeben!")
- }
- }
- return
- :?:/wskill::
- :?:/wdskill::
- {
- skillInput := PlayerInput("Waffendealer-Skill: ")
- if skillInput is number
- {
- if (skillInput < 1 || skillInput > 5) {
- SendClientMessage(PREFIX . "Du musst einen Skill zwischen 1 und 5 eingeben.")
- } else {
- jobWeapondealerSkill := skillInput + 1
- IniWrite, %jobWeapondealerSkill%, settings.ini, Job, Waffendealerskill
- SendClientMessage(PREFIX . "Du hast deinen Waffendealer-Skill auf " . SECCOL . skillInput . " {FFFFFF}gesetzt!")
- }
- } else {
- SendClientMessage(PREFIX . "Bitte eine Zahl als Skill eingeben!")
- }
- }
- return
- :?:/dskill::
- {
- skillInput := PlayerInput("Detektiv-Skill: ")
- if skillInput is number
- {
- if (skillInput < 1 || skillInput > 5) {
- SendClientMessage(PREFIX . "Du musst einen Skill zwischen 1 und 5 eingeben.")
- } else {
- jobDetectiveSkill := skillInput + 1
- IniWrite, %jobDetectiveSkill%, settings.ini, Job, Detektivskill
- SendClientMessage(PREFIX . "Du hast deinen Detektiv-Skill auf " . SECCOL . skillInput . " {FFFFFF}gesetzt!")
- }
- } else {
- SendClientMessage(PREFIX . "Bitte eine Zahl als Skill eingeben!")
- }
- }
- return
- :?:/drugstatus::
- {
- drugStatus := !drugStatus
- if (drugStatus) {
- SendClientMessage(PREFIX . "Du hast den Drogenstatus auf " . SECCOL . "Ernten {FFFFFF}gesetzt.")
- } else {
- SendClientMessage(PREFIX . "Du hast den Drogenstatus auf " . SECCOL . "Pflanzen {FFFFFF}gesetzt.")
- }
- }
- return
- jobexecuteLabel:
- {
- if (isInChat())
- return
- if ((job == "") || (job <= 1)) {
- SendClientMessage(PREFIX . "Du hast keinen Job angegeben! Benutze /setjob.")
- } else if (job == 2) {
- if (isPlayerInRangeOfPoint(330, -41, 1, 15)) {
- SendChat("/seed buy")
- } else if (isPlayerInRangeOfPoint(834, -1853, 7, 5) || isPlayerInRangeOfPoint(-1479, 324, 7, 5) || isPlayerInRangeOfPoint(1098, 1686, 6, 5) || isPlayerInRangeOfPoint(1297, -984, 32, 5) || isPlayerInRangeOfPoint(2743, -2453, 13, 5) || isPlayerInRangeOfPoint(1230, -807, 1084, 5)) {
- SendChat("/put drugs")
- Sleep, 200
- chatLine0 := readChatLine(0)
- if (RegExMatch(chatLine0, "Befehl: \/put \[Drugs\] \[Menge\] \(Du hast (\d+)g\)", chatLine0_)) {
- SendChat("/put drugs " . chatLine0_1)
- }
- } else if (isPlayerInRangeOfPoint(2737, -2466, 14, 10)) {
- SendChat("/seed warehouse")
- } else {
- if (drugStatus) {
- SendChat("/seed harvest")
- } else {
- SendChat("/seed plant")
- }
- }
- } else if (job == 3) {
- if ((jobWeapondealerSkill == "") || (jobWeapondealerSkill <= 1)) {
- SendClientMessage(PREFIX . "Du hast keinen Waffendealerskill angegeben! Benutze /wdskill.")
- return
- } else if (isPlayerInRangeOfPoint(597.0953, -1248.6184, 18.2718, 10) || isPlayerInRangeOfPoint(2789.554, -2494.1433, 14.2481, 10)) {
- if (jobWeapondealerSkill == 2) {
- packets := 5
- } else if (jobWeapondealerSkill == 3) {
- packets := 10
- } else if (jobWeapondealerSkill == 4) {
- packets := 15
- } else if (jobWeapondealerSkill == 5) {
- packets := 20
- } else if (jobWeapondealerSkill == 6) {
- packets := 25
- }
- if (GetVehicleModelId() == 482) {
- packets := 50
- }
- SendChat("/materials get " . packets)
- } else if (isPlayerInRangeOfPoint(2737, -2466, 14, 10)) {
- SendChat("/materials warehouse")
- Sleep, 300
- SendChat("/prod warehouse")
- Sleep, 300
- SendChat("/oil warehouse")
- } else if (isPlayerInRangeOfPoint(834, -1853, 7, 5) || isPlayerInRangeOfPoint(-1479, 324, 7, 5) || isPlayerInRangeOfPoint(1098, 1686, 6, 5) || isPlayerInRangeOfPoint(1297, -984, 32, 5) || isPlayerInRangeOfPoint(2743, -2453, 13, 5) || isPlayerInRangeOfPoint(1230, -807, 1084, 5)) {
- SendChat("/put mats")
- Sleep, 200
- chatLine0 := readChatLine(0)
- if (RegExMatch(chatLine0, "Befehl: \/put \[Mats\] \[Menge\] \(Du hast (\d+) Mats\)", chatLine0_)) {
- SendChat("/put mats " . chatLine0_1)
- }
- } else if (isPlayerInRangeOfPoint(274, 1411, 11, 5)) {
- SendChat("/oil buy")
- } else if (isPlayerInRangeOfPoint(-1548, 124, 4, 5)) {
- SendChat("/prod buy")
- } else {
- SendChat("/materials deliver")
- }
- } else if (job == 4) {
- if ((jobLine == "") || (jobLine <= 1)) {
- SendClientMessage(PREFIX . "Du hast keine Linie eingegeben! Benutze /setline.")
- SendChat("/linie")
- } else {
- busLine := jobLine - 1
- selectLine(busLine)
- }
- } else if (job == 5) {
- if ((GetVehicleModelId() == 511) || (GetVehicleModelId() == 553) || (GetVehicleModelId() == 577)) {
- SendChat("/duty")
- } else {
- SendClientMessage(PREFIX . "Du befindest dich in keinem Flugzeug!")
- }
- } else if (job == 6) {
- if (GetVehicleModelId() == 453 || GetVehicleModelId() == 484) {
- SendChat("/fishing")
- Sleep, 200
- if (getDialogCaption() == "Hochseefischer") {
- if (fishingFull) {
- SendInput, {down 7}{Enter}
- } else {
- freeTrap := false
- highestTimeTrap := false
- highestTime := 0
- for index, line in getDialogLines() {
- if (RegExMatch(line, "Reuse (\d+): Auslegen", line_)) {
- if (!freeTrap) {
- freeTrap := line_1
- }
- } else if (RegExMatch(line, "Reuse (\d+): Ausgelegt vor (\d+) Minuten", line_)) {
- if (line_2 > highestTime) {
- highestTimeTrap := line_1
- highestTime := line_2
- }
- }
- }
- if (highestTimeTrap && highestTime >= 5) {
- downCount := highestTimeTrap - 1
- SendInput, {down %downCount%}{Enter}
- SendClientMessage(PREFIX . "Du fährst nun zu Reuse " . highestTimeTrap . ", welche seit " . (highestTime - 5) . " Minute(n) eingeholt werden kann.")
- } else if (freeTrap) {
- downCount := freeTrap - 1
- SendInput, {down %downCount%}{Enter}
- } else {
- SendClientMessage(PREFIX . "Es ist noch keine Reuse bereit zum Einholen.")
- }
- }
- }
- } else {
- SendClientMessage(PREFIX . "Du befindest dich auf keinem Boot!")
- }
- } else if (job == 7) {
- if (isPlayerInRangeOfPoint(253.7230, 68.9150, 1003.6406, 3)) {
- SendChat("/freeinfo")
- } else {
- freeName := PlayerInput("Spielername: ")
- freeKaution := PlayerInput("Kaution: ")
- SendChat("/free " . freeName . " " . freeKaution)
- }
- } else if (job == 8) {
- if (jobDetectiveSkill == "" || jobDetectiveSkill <= 1 || jobDetectiveSkill > 6) {
- SendClientMessage(PREFIX . "Du hast keinen oder einen ungültigen Detektivskill angegeben! Benutze /dskill.")
- return
- }
- playerToFindInput := PlayerInput("Spieler-ID: ")
- if (playerToFindInput == "")
- return
- playerToFind := playerToFindInput
- SendClientMessage(PREFIX . "Das automatische Suchen kann mit der Taste {FF0000}" . stopAutomaticSystemsNoMods . " {FFFFFF}deaktiviert werden.")
- if (autoShowRunning) {
- SetTimer, AutoShowPosTimer, Off
- autoShowRunning := false
- }
- GoSub, AutoFindTimer
- if (jobDetectiveSkill == 2) {
- SetTimer, AutoFindTimer, 120500
- } else if (jobDetectiveSkill == 3) {
- SetTimer, AutoFindTimer, 90500
- } else if (jobDetectiveSkill == 4) {
- SetTimer, AutoFindTimer, 60500
- } else if (jobDetectiveSkill == 5) {
- SetTimer, AutoFindTimer, 30500
- } else if (jobDetectiveSkill == 6) {
- SetTimer, AutoFindTimer, 5500
- } else {
- return
- }
- autoFindRunning := true
- } else if (job == 9) {
- if (GetVehicleModelId() == 455) {
- blockDialog()
- SendChat("/delivery")
- Sleep, 200
- dialog := getDialogText()
- newDialog := "ID`tAuftrag und Gehalt`tStrecke`tZeit"
- unblockDialog()
- deliveries := []
- if (RegExMatch(dialog, "s)Du kannst einen Auftrag mit \/delivery \[Auftrag\] annehmen\.\n\nVerfügbare Aufträge:\n\n(.+)", dialog_)) {
- Loop, parse, dialog_1, `n
- {
- if (RegExMatch(A_LoopField, "^Auftrag (\d+): (.+) \(von (.+) nach (.+)\), Gehalt: (\d+)\$, noch (\d+) Minuten verfügbar\.$", delivery_)) {
- inserted := false
- newDelivery := Object()
- newDelivery["id"] := delivery_1
- newDelivery["delivery"] := delivery_2
- newDelivery["money"] := delivery_5
- newDelivery["location"] := "von " . delivery_3 . " nach " . delivery_4
- newDelivery["time"] := delivery_6
- for index, delivery in deliveries {
- money := delivery["money"]
- if (delivery_5 > money) {
- deliveries.InsertAt(index, newDelivery)
- inserted := true
- break
- }
- }
- if (!inserted) {
- deliveries.Push(newDelivery)
- }
- }
- }
- }
- for, index, delivery in deliveries {
- money := delivery["money"]
- if (money > 3000) {
- money := "{00FF00}" . money . "${FFFFFF}"
- } else if (money > 2000) {
- money := "{FF9900}" . money . "${FFFFFF}"
- } else {
- money := "{FF0000}" . money . "${FFFFFF}"
- }
- time := delivery["time"]
- if (time > 30) {
- time := "{00FF00}" . time . " Minuten"
- } else if (time > 10) {
- time := "{FF9900}" . time . " Minuten"
- } else {
- time := "{FF0000}" . time . " Minuten"
- }
- newDialog .= "`n" . delivery["id"] . "`t" . delivery["delivery"] . " (" . money . ")`t" . delivery["location"] . "`t" . time
- }
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, "Verfügbare Aufträge", newDialog, "OK")
- } else {
- SendClientMessage(PREFIX . "Du befindest dich nicht im Truck!")
- }
- } else if (job == 10) {
- SendChat("/farmer start")
- } else if (job == 11) {
- SendChat("/duty")
- } else if (job == 12) {
- if (isPlayerInRangeOfPoint(1449, -2287, 14, 5)) {
- SendChat("/gardener start")
- } else {
- if (GetVehicleModelId() == 543) {
- if (isPlayerInRangeOfPoint(1751, -2054, 14, 10)) {
- SendChat("/gardener sell")
- } else {
- SendChat("/gardener show")
- }
- } else {
- SendChat("/gardener park")
- }
- }
- }
- }
- return
- :?:/l1::
- selectLine(1)
- return
- :?:/l2::
- selectLine(2)
- return
- :?:/l3::
- selectLine(3)
- return
- :?:/l4::
- selectLine(4)
- return
- :?:/l5::
- selectLine(5)
- return
- :?:/l6::
- selectLine(6)
- return
- :?:/l7::
- selectLine(7)
- return
- :?:/l8::
- selectLine(8)
- return
- :?:/l9::
- selectLine(9)
- return
- :?:/l10::
- selectLine(10)
- return
- :?:/l11::
- selectLine(11)
- return
- :?:/l12::
- selectLine(12)
- return
- :?:/l13::
- selectLine(13)
- return
- :?:/l14::
- selectLine(14)
- return
- :?:/l15::
- selectLine(15)
- return
- :?:/l16::
- selectLine(16)
- return
- :?:/l17::
- selectLine(17)
- return
- :?:/l18::
- selectLine(18)
- return
- :?:/l19::
- selectLine(19)
- return
- :?:/l20::
- selectLine(20)
- return
- :?:/l21::
- selectLine(21)
- return
- selectLine(busLine) {
- line := busLine - 1
- BlockInput, On
- SendChat("/linie")
- Sleep, 200
- SendInput, {down %line%}{enter}
- BlockInput, Off
- }
- DrugTimer:
- {
- if (drugTime == 60) {
- SendClientMessage(PREFIX . "Du kannst deine Drogen in " . SECCOL . "1 Minute {FFFFFF}ernten!")
- } else if (drugTime == 0) {
- SendClientMessage(PREFIX . "Du kannst deine Drogen " . SECCOL . "jetzt {FFFFFF}ernten!")
- }
- drugTime--
- drugGrowTime++
- }
- return
- ; --------------- ;
- ; Job-System Ende ;
- ; --------------- ;
- ; --------------- ;
- ; Ausrüsten ;
- ; --------------- ;
- equipProfile1Label:
- {
- if (IsInChat())
- return
- equipment := ""
- Loop, 6 {
- if (profile1_%A_Index% != "") {
- equipment .= " " . profile1_%A_Index%
- }
- }
- SendChat("/ausruesten" . equipment)
- Sleep, 200
- chat := readChatLine(0) . readChatLine(1)
- if (RegExMatch(chat, "Du hast dich ausgerüstet, es wurden (\d+) Materialien benötigt\. \(Verbleibend: (\d+) Materialien\)", chat_)) {
- SendClientMessage(PREFIX . "Ausrüstungsprofil " . SECCOL . "1 {FFFFFF}genutzt, es wurden " . chat_1 . " Materialien verbraucht.")
- }
- SendChat("/heal")
- }
- return
- equipProfile2Label:
- {
- if (IsInChat())
- return
- equipment := ""
- Loop, 6 {
- if (profile2_%A_Index% != "") {
- equipment .= " " . profile2_%A_Index%
- }
- }
- SendChat("/ausruesten" . equipment)
- Sleep, 200
- chat := readChatLine(0) . readChatLine(1)
- if (RegExMatch(chat, "Du hast dich ausgerüstet, es wurden (\d+) Materialien benötigt\. \(Verbleibend: (\d+) Materialien\)", chat_)) {
- SendClientMessage(PREFIX . "Ausrüstungsprofil " . SECCOL . "2 {FFFFFF}genutzt, es wurden " . chat_1 . " Materialien verbraucht.")
- }
- SendChat("/heal")
- }
- return
- equipProfile3Label:
- {
- if (IsInChat())
- return
- equipment := ""
- Loop, 6 {
- if (profile3_%A_Index% != "") {
- equipment .= " " . profile3_%A_Index%
- }
- }
- SendChat("/ausruesten" . equipment)
- Sleep, 200
- chat := readChatLine(0) . readChatLine(1)
- if (RegExMatch(chat, "Du hast dich ausgerüstet, es wurden (\d+) Materialien benötigt\. \(Verbleibend: (\d+) Materialien\)", chat_)) {
- SendClientMessage(PREFIX . "Ausrüstungsprofil " . SECCOL . "3 {FFFFFF} genutzt, es wurden " . chat_1 . " Materialien verbraucht.")
- }
- SendChat("/heal")
- }
- return
- ; ---------------- ;
- ; Fahrzeug-Systeme ;
- ; ---------------- ;
- motorSystemLabel:
- {
- if (IsInChat())
- return
- if (IsPlayerInAnyVehicle()) {
- if (IsPlayerDriver()) {
- if (getVehicleEngineState()) {
- SendChat("/motor")
- } else {
- if (lockSystem) {
- if (!getVehicleLockState()) {
- SendChat("/lock")
- }
- }
- SendChat("/motor")
- Sleep, 200
- SendChat("/licht")
- }
- } else {
- SendClientMessage(PREFIX . "Du bist nicht der Fahrer eines Fahrzeuges.")
- }
- } else {
- SendClientMessage(PREFIX . "Du bist in keinem Fahrzeug.")
- }
- }
- return
- ~F::
- {
- if (IsInChat())
- return
- if (IsPlayerInAnyVehicle()) {
- if (motorSystem) {
- if (IsPlayerDriver() && getVehicleEngineState()) {
- SendChat("/motor")
- Sleep, 500
- } else {
- if (debug) {
- SendClientMessage(PREFIX . "Spieler ist kein Fahrer oder der Motor ist aus: " . IsPlayerDriver() . ":" . getVehicleEngineState())
- }
- }
- } else {
- if (debug) {
- SendClientMessage(PREFIX . "Motorsystem ist nicht aktiv")
- }
- }
- } else {
- if (lockSystem) {
- Loop {
- if (IsPlayerDriver() && !getVehicleLockState()) {
- Sleep, 200
- if (!getVehicleLockState())
- SendChat("/lock")
- return
- }
- }
- if (debug) {
- SendClientMessage(PREFIX . "Spieler ist in keinem Fahrzeug")
- }
- }
- }
- }
- return
- ; -------------------- ;
- ; Automatische Systeme ;
- ; -------------------- ;
- :?:/cd::
- {
- if (countdownRunning) {
- SetTimer, CountdownTimer, Off
- countdownRunning := false
- SendChat("/" . cdChat . " Der Countdown wurde gestoppt!")
- } else {
- countdownTime := PlayerInput("Sekunden: ")
- if (countdownTime == "")
- countdownTime := 3
- if countdownTime is not number
- return
- cdChat := PlayerInput("Chat: ")
- if (cdChat == "")
- cdChat := "l"
- SendChat("/" . cdChat . " Countdown:")
- SetTimer, CountdownTimer, 1000
- countdownRunning := true
- }
- }
- return
- CountdownTimer:
- {
- if (countdownTime == 0) {
- SendChat("/" . cdChat . " Go Go Go!")
- SetTimer, CountdownTimer, Off
- countdownRunning := false
- return
- }
- SendChat("/" . cdChat . " >>> " . countdownTime . " <<<")
- countdownTime--
- }
- return
- stopAutomaticSystemsLabel:
- {
- if (IsInChat())
- return
- if (countdownRunning) {
- SetTimer, CountdownTimer, Off
- countdownRunning := false
- SendChat("/" . cdChat . " Der Countdown wurde abgebrochen!")
- }
- if (autoFindRunning) {
- SetTimer, AutoFindTimer, Off
- autoFindRunning := false
- SendClientMessage(PREFIX . "Das automatische Suchen wurde deaktiviert.")
- }
- if (autoShowRunning) {
- SetTimer, AutoShowPosTimer, Off
- autoShowRunning := false
- SendChat("/l Das automatische Zeigen wurde deaktiviert.")
- }
- if (autoFindChatRunning) {
- SetTimer, AutoFindChat, Off
- autoFindChatRunning := false
- SendChat("/" . autoFindChat . " Das automatische Suchen von " . playerToFindInChat . " wurde deaktiviert.")
- }
- }
- return
- :?:/af::
- :?:/afind::
- {
- playerToFind := PlayerInput("Spieler: ")
- if (playerToFind == "")
- return
- GoSub, AutoFindTimer
- SetTimer, AutoFindTimer, 5500
- autoFindRunning := true
- SendClientMessage(PREFIX . "Das automatische Suchen wird mit der Taste " . SECCOL . stopAutomaticSystemsNoMods . "{FFFFFF} beendet.")
- }
- return
- AutoFindTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- SendChat("/find " . playerToFind)
- Sleep, 200
- adrGTA2 := getModuleBaseAddress("gta_sa.exe", hGTA)
- cText := readString(hGTA, adrGTA2 + 0x7AAD43, 512)
- if (InStr(cText, "Handy aus"))
- return
- if (getDistanceBetween(CoordsFromRedmarker()[1], CoordsFromRedmarker()[2], CoordsFromRedmarker()[3], 1163.2358, -1323.2552, 15.3945, 5)) {
- SendClientMessage(PREFIX . "Der Spieler befindet sich im Krankenhaus!")
- }
- }
- return
- :?:/as::
- :?:/asp::
- {
- playerToShowTo := PlayerInput("Spieler, dem gezeigt werden soll: ")
- if (playerToShowTo == "")
- return
- playerToShow := PlayerInput("Gesuchter Spieler: ")
- if (playerToShow == "")
- return
- GoSub, AutoShowPosTimer
- SetTimer, AutoShowPosTimer, 5500
- autoShowRunning := true
- SendClientMessage(PREFIX . "Das automatische Zeigen wird mit der Taste " . SECCOL . stopAutomaticSystemsNoMods . "{FFFFFF} beendet.")
- }
- return
- AutoShowPosTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- SendChat("/showpos " . playerToShowTo . " " . playerToShow)
- Sleep, 200
- adrGTA2 := getModuleBaseAddress("gta_sa.exe", hGTA)
- cText := readString(hGTA, adrGTA2 + 0x7AAD43, 512)
- if (InStr(cText, "Handy aus"))
- return
- if (getDistanceBetween(CoordsFromRedmarker()[1], CoordsFromRedmarker()[2], CoordsFromRedmarker()[3], 1163.2358, -1323.2552, 15.3945, 5)) {
- SendChat("/l Der Spieler befindet sich im Krankenhaus!")
- }
- }
- return
- :?:/cfind::
- :?:/ffind::
- {
- playerToFindInChat := PlayerInput("Spieler: ")
- playerToFindInChat := getFullName(playerToFindInChat)
- if (playerToFindInChat == "")
- return
- autoFindChat := PlayerInput("Chat: ")
- if (autoFindChat == "")
- return
- GoSub, AutoFindChat
- SetTimer, AutoFindChat, 5500
- autoFindChatRunning := true
- SendClientMessage(PREFIX . "Das automatische Suchen wird mit der Taste " . SECCOL . stopAutomaticSystemsNoMods . "{FFFFFF} beendet.")
- }
- return
- AutoFindChat:
- {
- IfWinNotActive, GTA:SA:MP
- return
- SendChat("/find " . playerToFindInChat)
- Sleep, 200
- adrGTA2 := getModuleBaseAddress("gta_sa.exe", hGTA)
- cText := readString(hGTA, adrGTA2 + 0x7AAD43, 512)
- if (!InStr(cText, "Handy aus")) {
- if (getDistanceBetween(CoordsFromRedmarker()[1], CoordsFromRedmarker()[2], CoordsFromRedmarker()[3], 1163.2358, -1323.2552, 15.3945, 5)) {
- SendChat("/" . autoFindChat . " Der Spieler " . playerToFindInChat . " befindet sich im Krankenhaus!")
- return
- }
- }
- findChat0 := readChatLine(0)
- if (RegExMatch(findChat0, "^Der Spieler befindet sich in einem (.+)\.$", findChat0_)) {
- findChat1 := readChatLine(1)
- if (RegExMatch(findChat1, "^Der Spieler befindet sich in (.+)$", findChat1_)) {
- SendChat("/" . autoFindChat . " Der Spieler " . playerToFindInChat . " befindet sich in " . findChat1_1 . " in einem " . findChat0_1 . "!")
- }
- } else if (RegExMatch(findChat0, "^Der Spieler befindet sich in (.+)$", findChat0_)) {
- SendChat("/" . autoFindChat . " Der Spieler " . playerToFindInChat . " befindet sich in " . findChat0_1 . "!")
- }
- }
- return
- ; ---------------------------- ;
- ; Einsatz-Funktionen ;
- ; ---------------------------- ;
- :?:/wo::
- {
- SendChat("/f Wo befindet ihr euch und was ist das Problem?")
- }
- return
- :?:/cwo::
- {
- SendChat("/crew Wo befindet ihr euch und was ist das Problem?")
- }
- return
- :?:/ver::
- {
- SendChat("/f Verstanden und bestätigt!")
- }
- return
- :?:/cver::
- {
- SendChat("/crew Verstanden und bestätigt!")
- }
- return
- :?:/needbk::
- {
- SendChat("/f Wird Verstärkung weiterhin benötigt?")
- }
- return
- :?:/cneedbk::
- {
- SendChat("/crew Wird Verstärkung weiterhin benötigt?")
- }
- return
- :?:/go::
- {
- SendChat("/f Einsatzleiter erlaubt Zugriff, GOGOGO!")
- }
- return
- :?:/cgo::
- {
- SendChat("/crew Einsatzleiter erlaubt Zugriff, GOGOGO!")
- }
- return
- :?:/abholung::
- {
- zone := getPlayerZone()
- city := getPlayerCity()
- if (city == "" || city == "Unbekannt") {
- SendChat("/f Erbitte Abholung in " . zone . "!")
- } else {
- SendChat("/f Erbitte Abholung in " . zone . ", " . city . "!")
- }
- }
- return
- :?:/cabholung::
- {
- zone := getPlayerZone()
- city := getPlayerCity()
- if (city == "" || city == "Unbekannt") {
- SendChat("/crew Erbitte Abholung in " . zone . "!")
- } else {
- SendChat("/crew Erbitte Abholung in " . zone . ", " . city . "!")
- }
- }
- return
- :?:/kabholung::
- {
- SendChat("/f Eine Abholung wird nicht mehr benötigt.")
- }
- return
- :?:/ckabholung::
- {
- SendChat("/crew Eine Abholung wird nicht mehr benötigt.")
- }
- return
- :?:/verf::
- :?:/verfolgung::
- {
- name := PlayerInput("Spieler: ")
- name := getFullName(name)
- if (name == "")
- return
- id := getPlayerIdByName(name, true)
- SendChat("/f Erbitte Unterstützung bei der Verfolgung von " . name . " (ID: " . id . ")!")
- }
- return
- :?:/cverf::
- :?:/cverfolgung::
- {
- name := PlayerInput("Spieler: ")
- name := getFullName(name)
- if (name == "")
- return
- id := getPlayerIdByName(name, true)
- SendChat("/crew Erbitte Unterstützung bei der Verfolgung von " . name . " (ID: " . id . ")!")
- }
- return
- :?:/ort::
- {
- position := PlayerInput("Letzter bekannter Aufenthaltsort: ")
- if (position == "")
- return
- SendChat("/f Letzter bekannter Aufenthaltsort: " . position . ".")
- }
- return
- :?:/cort::
- {
- position := PlayerInput("Letzter bekannter Aufenthaltsort: ")
- if (position == "")
- return
- SendChat("/crew Letzter bekannter Aufenthaltsort: " . position . ".")
- }
- return
- repeatLabel:
- {
- if (IsInChat())
- return
- SendInput, t{up}{enter}
- }
- return
- stopwatchLabel:
- {
- if (IsInChat())
- return
- SendChat("/l Stoppuhr gestartet!")
- SendClientMessage(PREFIX . "Um die Stoppuhr zu beenden, drücke " . SECCOL . "Punkt (.){FFFFFF}!")
- stopwatch := 0
- Loop {
- stopwatch++
- KeyWait, ., D T1
- if (!ErrorLevel) {
- minutes := Floor(stopwatch / 60)
- seconds := stopwatch - (minutes * 60)
- SendChat("/l Stoppuhr gestoppt: " . minutes . " Minuten, " . seconds . " Sekunden")
- SendChat("/l Gesamt: " . stopwatch . " Sekunden")
- break
- }
- }
- }
- return
- ; -------------------- ;
- ; Fisch-System ;
- ; -------------------- ;
- eatFishLabel:
- {
- if (IsInChat())
- return
- SendChat("/eat " . currentFish)
- currentFish++
- if (currentFish == 6) {
- currentFish := 1
- }
- }
- return
- :?:/fischtyp::
- :?:/fishtype::
- :?:/fishtyp::
- {
- SendClientMessage(PREFIX . SECCOL . "1: {FFFFFF}geringste LBS/HP - " . SECCOL . "2: {FFFFFF}geringster Geldwert")
- fishType := PlayerInput("Typ: ")
- if (fishType == "1") {
- fishMode := 0
- SendClientMessage(PREFIX . "Du wirfst nun den Fisch mit dem geringsten " . SECCOL . "LBS/HP-Wert {FFFFFF}weg.")
- IniWrite, %fishMode%, settings.ini, Einstellungen, FischModus
- } else if (fishType == "2") {
- fishMode := 1
- SendClientMessage(PREFIX . "Du wirfst nun den Fisch mit dem geringsten " . SECCOL . "Geldwert {FFFFFF}weg.")
- IniWrite, %fishMode%, settings.ini, Einstellungen, FischModus
- }
- }
- return
- :?:/afish::
- {
- fishNumber := 0
- aFishMoney := 0
- aFishHP := 0
- cheapestFish := -1
- cheapestFishName := ""
- cheapestFishValue := 100000
- cheapestFishMoney := 100000
- cheapestFishHP := 100000
- thrownAway := false
- attempt := 1
- Loop {
- SendChat("/fish")
- Sleep, 200
- fishing := readChatLine(0)
- if (RegExMatch(fishing, "Du hast ein\/e (.+) mit (\d+) LBS gefangen.", fishing_)) {
- fishNumber++
- currentFishMoney := getFishValue(fishing_1, fishing_2)
- if (fishMode) {
- fishValue := currentFishMoney
- } else {
- fishValue := fishing_2
- }
- setChatLine(0, PREFIX . "Fisch Nr. " . fishNumber . ": " . SECCOL . fishing_1 . "{FFFFFF} mit " . SECCOL . fishing_2 . " LBS{FFFFFF} - Wert: " . SECCOL . FormatNumber(currentFishMoney) . "$")
- aFishMoney += 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) {
- SendClientMessage(PREFIX . "Du musst deine Fische erst verkaufen!")
- break
- }
- if (thrownAway)
- break
- aFishMoney -= cheapestFishMoney
- aFishHP -= cheapestFishHP
- SendChat("/releasefish " . cheapestFish)
- Sleep, 200
- if (fishMode) {
- setChatLine(0, PREFIX . "Fisch Nr. " . cheapestFish . ": " . SECCOL . cheapestFishName . " {FFFFFF}mit einem Wert von " . SECCOL . FormatNumber(cheapestFishValue) . "$ {FFFFFF}wurde weggeworfen!")
- } else {
- setChatLine(0, PREFIX . "Fisch Nr. " . cheapestFish . ": " . SECCOL . cheapestFishName . " {FFFFFF}mit " . SECCOL . FormatNumber(cheapestFishValue) . " LBS {FFFFFF}wurde weggeworfen!")
- }
- thrownAway := true
- } else if (RegExMatch(fishing, "Du bist an keinem Angelplatz \(Big Wheel Rods\) oder an einem Fischerboot!")) {
- if (attempt == 3) {
- SendClientMessage(PREFIX . "Du kannst hier nicht angeln!")
- break
- }
- attempt++
- } else if (RegExMatch(fishing, "Du kannst erst in (\d+) (\S+) wieder angeln\.")) {
- if (aFishMoney + aFishHP > 0) {
- SendClientMessage(PREFIX . "Gesamtwert: " . SECCOL . FormatNumber(aFishMoney) . "$ {FFFFFF}- " . SECCOL . FormatNumber(aFishHP) . " LBS {FFFFFF}- " . SECCOL . Floor(aFishHP / 3) . " HP")
- fishTime := 900
- SetTimer, FishTimer, 1000
- break
- } else {
- SendClientMessage(PREFIX . "Du kannst noch nicht angeln!")
- break
- }
- }
- if (!admin)
- Sleep, 650
- }
- }
- return
- FishTimer:
- {
- if (fishTime == 60) {
- SendClientMessage(PREFIX . "Du kannst in einer Minute wieder zum Angeln gehen!")
- } else if (fishTime <= 0) {
- SendClientMessage(PREFIX . "Du kannst nun wieder zum Angeln gehen!")
- SetTimer, FishTimer, Off
- fishTime := 0
- return
- }
- fishTime--
- }
- return
- :?:/asell::
- {
- if (IsPlayerInRangeOfPoint(2.3247, -28.8923, 1003.5494, 10)) {
- SendClientMessage(PREFIX . "Deine Fische werden nun verkauft!")
- sellFishMoney := 0
- Loop, 5 {
- SendChat("/sell fish " . A_Index)
- Sleep, 200
- chat := readChatLine(0)
- if (RegExMatch(chat, "Du hast deinen (.+) \((\d+) LBS\) für (\d+)\$ verkauft\.", chat_)) {
- sellFishMoney += chat_3
- }
- if (!admin)
- Sleep, 550
- }
- IniRead, totalFishMoney, stats.ini, Fischsystem, Fischgeld, 0
- totalFishMoney += sellFishMoney
- IniWrite, %totalFishMoney%, stats.ini, Fischsystem, Fischgeld
- SendClientMessage(PREFIX . "Verdienst: " . SECCOL . FormatNumber(sellFishMoney) . "$ {FFFFFF}Gesamter Verdienst: " . SECCOL . FormatNumber(totalFishMoney) . "$")
- } else {
- IniRead, totalFishMoney, stats.ini, Fischsystem, Fischgeld, 0
- SendClientMessage(PREFIX . "Du kannst deine Fische hier nicht verkaufen! (Gesamter Verdienst: " . SECCOL . FormatNumber(totalFishMoney) . "${FFFFFF})")
- }
- }
- return
- :?:/acook::
- {
- Loop, 5 {
- SendChat("/cook fish " . A_Index)
- if (!admin)
- Sleep, 750
- }
- }
- return
- :?:/fische::
- {
- SendChat("/fishes")
- Sleep, 250
- fishNumber := 5
- fishMoney := 0
- totalHP := 0
- Loop, 5 {
- fish := readChatLine(fishNumber)
- RegExMatch(fish, "\*\* \((\d)\) Fisch: (.+) \((\d+) LBS\)", fish_)
- fishValue := getFishValue(fish_2, fish_3)
- fishMoney += fishValue
- hp := Floor(fish_3 / 3)
- totalHP += hp
- message%A_Index% := PREFIX . "(" . fish_1 . ") " . fish_2 . " (" . fish_3 . " LBS) - " . SECCOL . fishValue . "$ {FFFFFF}- " . SECCOL . hp . " HP"
- fishNumber -= 1
- }
- fishNumber := 5
- Loop, 5 {
- setChatLine(fishNumber, message%A_Index%)
- fishNumber -= 1
- }
- SendClientMessage(PREFIX . "Gesamt: " . SECCOL . FormatNumber(fishMoney) . "$ {FFFFFF}- " . SECCOL . FormatNumber(totalHP) . " HP")
- }
- return
- :?:/hp::
- {
- SendChat("/cooked")
- Sleep, 250
- fishNumber := 5
- totalHP := 0
- Loop, 5 {
- fish := readChatLine(fishNumber)
- if (RegExMatch(fish, "\*\* \((\d)\) Hergestellt: gekochten (.+) \((\d+) LBS\)", fish_)) {
- HP := Floor(fish_3 / 3)
- totalHP += HP
- message%A_Index% := PREFIX . "(" . fish_1 . ") " . fish_2 . " (" . fish_3 . " LBS) - " . SECCOL . HP . " HP"
- } else if (RegExMatch(fish, "\*\* \((\d)\) Hergestellt: Nichts \(0 LBS\)", fish_)) {
- message%A_Index% := PREFIX . "(" . fish_1 . ") Nichts"
- }
- fishNumber -= 1
- }
- fishNumber := 5
- Loop, 5 {
- setChatLine(fishNumber, message%A_Index%)
- fishNumber -= 1
- }
- SendClientMessage(PREFIX . "Gesamt: " . SECCOL . FormatNumber(totalHP) . " HP")
- }
- return
- getFishValue(fishName, fishWeight) {
- if (fishName == "Bernfisch") {
- value := fishWeight * 1
- } else if (fishName == "Blauer Fächerfisch") {
- value := fishWeight * 1
- } else if (fishName == "Roter Schnapper") {
- value := fishWeight * 2
- } else if (fishName == "Schwertfisch") {
- value := fishWeight * 2
- } else if (fishName == "Zackenbarsch") {
- value := fishWeight * 2
- } else if (fishName == "Katzenfisch") {
- value := fishWeight * 3
- } else if (fishName == "Forelle") {
- value := fishWeight * 3
- } else if (fishName == "Delphin") {
- value := fishWeight * 4
- } else if (fishName == "Hai") {
- value := fishWeight * 4
- } else if (fishName == "Segelfisch") {
- value := fishWeight * 4
- } else if (fishName == "Makrele") {
- value := fishWeight * 5
- } else if (fishName == "Aal") {
- value := fishWeight * 6
- } else if (fishName == "Hecht") {
- value := fishWeight * 6
- } else if (fishName == "Schildkröte") {
- value := fishWeight * 8
- } else if (fishName == "Thunfisch") {
- value := fishWeight * 8
- } else if (fishName == "Wolfbarsch") {
- value := fishWeight * 8
- } else {
- value := 0
- }
- return value
- }
- ; ------------------- ;
- ; Sonstige Funktionen ;
- ; ------------------- ;
- :?:/kills::
- :?:/tode::
- :?:/deaths::
- :?:/kd::
- {
- IniRead, alltimeKills, stats.ini, Gesamt, Kills, 0
- IniRead, dayKills, stats.ini, Tag, Kills[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, alltimeDeaths, stats.ini, Gesamt, Tode, 0
- IniRead, dayDeaths, stats.ini, Tag, Tode[%A_DD%:%A_MM%:%A_YYYY%], 0
- allKD := Round(alltimeKills / alltimeDeaths, 2)
- dayKD := Round(dayKills / dayDeaths, 2)
- SendClientMessage(PREFIX . "Kills: " . SECCOL . FormatNumber(alltimeKills) . " {FFFFFF}Tages-Kills: " . SECCOL . FormatNumber(dayKills))
- SendClientMessage(PREFIX . "Tode: " . SECCOL . FormatNumber(alltimeDeaths) . " {FFFFFF}Tages-Tode: " . SECCOL . FormatNumber(dayDeaths))
- SendClientMessage(PREFIX . "K/D: " . SECCOL . allKD . " {FFFFFF}Tages-K/D: " . SECCOL . dayKD)
- }
- return
- :?:/fkd::
- :?:/crewkd::
- {
- if (RegExMatch(A_ThisHotkey, "i)^:\?:\/(\S+)kd$", hstring_)) {
- IniRead, alltimeKills, stats.ini, Gesamt, Kills, 0
- IniRead, dayKills, stats.ini, Tag, Kills[%A_DD%:%A_MM%:%A_YYYY%], 0
- IniRead, alltimeDeaths, stats.ini, Gesamt, Tode, 0
- IniRead, dayDeaths, stats.ini, Tag, Tode[%A_DD%:%A_MM%:%A_YYYY%], 0
- allKD := Round(alltimeKills / alltimeDeaths, 2)
- dayKD := Round(dayKills / dayDeaths, 2)
- SendChat("/" . hstring_1 . " K/D: " . allKD . " (" . alltimeKills . " Kills/" . alltimeDeaths . " Tode) - Tages-K/D: " . dayKD . " (" . dayKills . " Kills/" . dayDeaths . " Tode)")
- }
- }
- return
- :?:/setkills::
- :?:/settode::
- :?:/setdeaths::
- {
- blockDialog()
- SendChat("/stats")
- Sleep, 100
- title := getDialogCaption()
- dialog := getDialogText()
- unblockDialog()
- if (RegExMatch(dialog, statsFormat, dialog_)) {
- kills := dialog_17
- deaths := dialog_18
- IniWrite, %deaths%, stats.ini, Gesamt, Tode
- IniWrite, %kills%, stats.ini, Gesamt, Kills
- } else {
- SendClientMessage(PREFIX . "Beim automatischen Auslesen der Kills und Tode ist ein Fehler aufgetreten.")
- SendClientMessage(PREFIX . "Du kannst deine Statistiken nun manuell eintragen.")
- kills := PlayerInput("Kills: ")
- if kills is not number
- return
- deaths := PlayerInput("Tode: ")
- if deaths is not number
- return
- IniWrite, %deaths%, stats.ini, Gesamt, Tode
- IniWrite, %kills%, stats.ini, Gesamt, Kills
- }
- SendClientMessage(PREFIX . "Deine Kills wurden auf " . SECCOL . FormatNumber(kills) . " {FFFFFF}und deine Tode auf " . SECCOL . FormatNumber(deaths) . " {FFFFFF}gesetzt.")
- }
- return
- statsLabel:
- if (isInChat())
- return
- :?:/stats::
- {
- if (statsFormatted) {
- showStats()
- } else {
- if (tv) {
- SendChat("/check " . tvName)
- } else {
- SendChat("/stats")
- }
- }
- }
- return
- showStats() {
- blockDialog()
- if (tv) {
- SendChat("/check " . tvName)
- } else {
- SendChat("/stats")
- }
- Sleep, 100
- title := getDialogCaption()
- dialog := getDialogText()
- unblockDialog()
- if (RegExMatch(dialog, statsFormat, dialog_)) {
- gender := dialog_1
- partner := dialog_2
- level := dialog_3
- rp := dialog_4
- levelRP := dialog_5
- timeToPayday := dialog_6
- maxTimePayday := dialog_7
- fraction := dialog_8
- fractionRank := dialog_9
- job := dialog_10
- crew := dialog_11
- cashMoney := dialog_12
- accountMoney := dialog_13
- depositMoney := dialog_14
- depositMoneyInterest := dialog_15 . "." . dialog_16
- kills := dialog_17
- deaths := dialog_18
- crimes := FormatNumber(dialog_19)
- playingTime := FormatNumber(dialog_20)
- jail := FormatNumber(dialog_21)
- wanteds := dialog_22
- warns := dialog_23
- maxWarns := dialog_24
- mats := FormatNumber(dialog_25)
- matsSafe := FormatNumber(dialog_26)
- drugs := FormatNumber(dialog_27)
- drugsSafe := FormatNumber(dialog_28)
- number := dialog_29
- packet := dialog_30
- canister := dialog_31
- wdSkill := dialog_32
- wdExp := dialog_33
- ddSkill := dialog_34
- ddExp := dialog_35
- anglerSkill := dialog_36
- busSkill := dialog_37
- busExp := dialog_38
- busMaxExp := dialog_39
- lawyerSkill := dialog_40
- lawerExp := dialog_41
- detectiveSkill := dialog_42
- detectiveExp := dialog_43
- pilotExp := dialog_44
- fisherExp := dialog_45
- farmerExp := dialog_46
- woodExp := dialog_47
- rank := dialog_48
- if (partner != "Niemand") {
- partnerID := getPlayerIdByName(partner, true)
- if (partnerID != -1) {
- partner .= " [ID: " . partnerID . "]"
- }
- }
- level .= " (" . Round(rp / levelRP * 100) . "%)"
- respect := rp . "/" . levelRP . " (noch " . (levelRP - rp) . " Punkte)"
- payday := timeToPayday . "/" . maxTimePayday . " Minuten (noch " . (maxTimePayday - timeToPayday) . " Minuten)"
- crewInfos := ""
- if (RegExMatch(crew, "(.+)`tRang: (\d+)`n`t`tCrew-Motto: (\S+)", crew_)) {
- crewInfos := crew_1 . "`t{FFFF00}Rang: {FFFFFF}" . crew_2 . "`n`t`t{FFFF00}Crew-Motto: {FFFFFF}" . crew_3
- } else if (RegExMatch(crew, "(.+)`tRang: (\d+)", crew_)) {
- crewInfos := crew_1 . "`t{FFFF00}Rang: {FFFFFF}" . crew_2
- } else {
- crewInfos := crew
- }
- if (!tv) {
- IniWrite, %accountMoney%, stats.ini, Vermögen, Bank
- IniWrite, %depositMoney%, stats.ini, Vermögen, Festgeld
- }
- allMoney := FormatNumber(cashMoney + accountMoney + depositMoney)
- cashMoney := FormatNumber(cashMoney)
- accountMoney := FormatNumber(accountMoney)
- depositMoney := FormatNumber(depositMoney)
- kd := Round(kills / deaths, 2)
- if (!tv) {
- IniWrite, %deaths%, stats.ini, Gesamt, Tode
- IniWrite, %kills%, stats.ini, Gesamt, Kills
- }
- kills := FormatNumber(kills)
- deaths := FormatNumber(deaths)
- if (wdSkill <= 1) {
- wdMaxExp := 50
- } else if (wdSkill == 2) {
- wdMaxExp := 50
- } else if (wdSkill == 3) {
- wdMaxExp := 100
- } else if (wdSkill >= 4) {
- wdMaxExp := 200
- }
- if (wdSkill == 1) {
- wdLevelExp := wdExp
- } else {
- wdLevelExp := wdExp - wdMaxExp
- }
- if (ddSkill <= 1) {
- ddMaxExp := 50
- } else if (ddSkill == 2) {
- ddMaxExp := 50
- } else if (ddSkill == 3) {
- ddMaxExp := 100
- } else if (ddSkill >= 4) {
- ddMaxExp := 200
- }
- if (ddSkill == 1) {
- ddLevelExp := ddExp
- } else {
- ddLevelExp := ddExp - ddMaxExp
- }
- lawyerMaxExp := lawyerSkill * 50
- if (detectiveSkill <= 1) {
- detectiveMaxExp := 50
- } else if (detectiveSkill == 2) {
- detectiveMaxExp := 100
- } else if (detectiveSkill == 3) {
- detectiveMaxExp := 200
- } else if (detectiveSkill >= 4) {
- detectiveMaxExp := 400
- }
- if (!tv) {
- IniWrite, %fisherExp%, stats.ini, Hochseefischer, XP
- IniWrite, %farmerExp%, stats.ini, Farmer, XP
- IniWrite, %ddExp%, stats.ini, Drogen, XP
- IniWrite, %wdExp%, stats.ini, Materialien, XP
- jobWeapondealerSkill := wdSkill + 1
- jobDetectiveSkill := detectiveSkill + 1
- IniWrite, %jobWeapondealerSkill%, settings.ini, Job, Waffendealerskill
- IniWrite, %jobDetectiveSkill%, settings.ini, Job, Detektivskill
- }
- statistik =
- (LTrim
- {FFFFFF}Personalien:`t{FFFF00}Geschlecht: {FFFFFF}%gender%
- `t`t{FFFF00}Partner: {FFFFFF}%partner%
- `t`t{FFFF00}Level: {FFFFFF}%level%
- `t`t{FFFF00}Respekt: {FFFFFF}%respect%
- `t`t{FFFF00}Payday: {FFFFFF}%payday%
- Berufe:`t`t{FFFF00}Fraktion: {FFFFFF}%fraction% {FFFF00}Rang: {FFFFFF}%fractionRank%
- `t`t{FFFF00}Nebenjob: {FFFFFF}%job%
- `t`t{FFFF00}Crew: {FFFFFF}%crewInfos%
- Finanzen:`t{FFFF00}Bargeld: {FFFFFF}%cashMoney%$
- `t`t{FFFF00}Konto: {FFFFFF}%accountMoney%$
- `t`t{FFFF00}Festgeld: {FFFFFF}%depositMoney%$ {FFFF00}Zinssatz: {FFFFFF}%depositMoneyInterest%
- `t`t{FFFF00}Gesamtgeld: {FFFFFF}%allMoney%$
- Statistik:`t{FFFF00}Morde: {FFFFFF}%kills%
- `t`t{FFFF00}Gestorben: {FFFFFF}%deaths%
- `t`t{FFFF00}K/D: {FFFFFF}%kd%
- `t`t{FFFF00}Verbrechen: {FFFFFF}%crimes%
- `t`t{FFFF00}Spielzeit: {FFFFFF}%playingTime%h
- `t`t{FFFF00}Knast: {FFFFFF}%jail%
- `t`t{FFFF00}Wanteds: {FFFFFF}%wanteds%
- `t`t{FFFF00}Verwarnungen: {FFFFFF}%warns%/%maxWarns%
- Inventar:`t{FFFF00}Materialien: {FFFFFF}%mats% ({FFFF00}Safe: {FFFFFF}%matsSafe%)
- `t`t{FFFF00}Drogen: {FFFFFF}%drugs%g ({FFFF00}Safe: {FFFFFF}%drugsSafe%g)
- `t`t{FFFF00}Handy {FFFFFF}({FFFF00}Nr. {FFFFFF}%number%)%packet%%canister%
- Skills:`t`t{FFFF00}Waffendealer: {FFFFFF}%wdSkill% (%wdExp%)`t{FFFF00}Exp: {FFFFFF}%wdLevelExp%/%wdMaxExp%
- `t`t{FFFF00}Drogendealer: {FFFFFF}%ddSkill% (%ddExp%)`t{FFFF00}Exp: {FFFFFF}%ddLevelExp%/%ddMaxExp%
- `t`t{FFFF00}Busfahrer: {FFFFFF}%busSkill%`t`t{FFFF00}Exp: {FFFFFF}%busExp%/%busMaxExp%
- `t`t{FFFF00}Anwalt: {FFFFFF}%lawyerSkill%`t`t{FFFF00}Exp: {FFFFFF}%lawerExp%/%lawyerMaxExp%
- `t`t{FFFF00}Detektiv: {FFFFFF}%detectiveSkill%`t`t{FFFF00}Exp: {FFFFFF}%detectiveExp%/%detectiveMaxExp%
- `t`t{FFFF00}Pilot: {FFFFFF}%pilotExp%
- `t`t{FFFF00}Angler: {FFFFFF}%anglerSkill%
- `t`t{FFFF00}Hochseefischer: {FFFFFF}%fisherExp%
- `t`t{FFFF00}Farmer: {FFFFFF}%farmerExp%
- `t`t{FFFF00}Holzfäller: {FFFFFF}%woodExp%%rank%`n
- )
- Sleep, 100
- ShowDialog(0, title, statistik, "Schließen")
- }
- }
- firstAidLabel:
- {
- if (!tv) {
- if (IsInChat())
- return
- hp := getPlayerHealth()
- if (hp > 95) {
- SendClientMessage(PREFIX . "Du kannst aktuell kein Erste-Hilfe-Paket benutzen, da du mehr als " . SECCOL . "95 HP {FFFFFF}hast!")
- } else {
- SendChat("/erstehilfe")
- }
- }
- }
- return
- :?:/pd::
- :?:/payday::
- {
- if (taxes == 1) {
- SendClientMessage(PREFIX . "Es wurde noch kein Steuersatz eingetragen, gib bitte " . SECCOL . "/settax {FFFFFF}ein!")
- }
- SendClientMessage(PREFIX . "Geld am nächsten Payday: " . SECCOL . FormatNumber(paydayMoney) . "$ {FFFFFF}(Brutto) " . SECCOL . FormatNumber(Round(paydayMoney * taxes)) . "$ {FFFFFF}(Netto)")
- blockDialog()
- SendChat("/stats")
- Sleep, 200
- unBlockDialog()
- if (RegExMatch(getDialogText(), statsFormat, dialog_)) {
- paydayTime := dialog_7 - dialog_6
- SendClientMessage(PREFIX . "Du hast in " . SECCOL . paydayTime . " Minute" . (paydayTime == 1 ? "" : "n") . " {FFFFFF}Payday.")
- }
- }
- return
- :?:/resetpd::
- :?:/resetpayday::
- {
- SendClientMessage(PREFIX . "Geld am nächsten Payday: " . SECCOL . FormatNumber(paydayMoney) . "$ {FFFFFF}(Brutto) " . SECCOL . FormatNumber(Round(paydayMoney * taxes)) . "$ {FFFFFF}(Netto)")
- paydayMoney := 0
- SendClientMessage(PREFIX . "Du hast das Geld für den nächsten Payday auf 0$ zurückgesetzt!")
- }
- return
- :?:/settax::
- {
- taxClass := PlayerInput("Steuerklasse: ")
- if (taxClass == "")
- return
- if taxClass is not number
- {
- SendClientMessage(PREFIX . "Gib bitte eine gültige Steuerklasse (1-4) ein!")
- return
- }
- if (taxClass < 1 || taxClass > 4) {
- SendClientMessage(PREFIX . "Gib bitte eine gültige Steuerklasse (1-4) ein!")
- return
- }
- SendChat("/tax")
- Sleep, 250
- chat := readChatLine(4 - taxClass)
- RegExMatch(chat, "Steuerklasse " . taxClass . ": (\d*) Prozent", chat_)
- taxes := (100 - chat_1) / 100
- IniWrite, %taxes%, settings.ini, Einstellungen, Steuersatz
- SendClientMessage(PREFIX . "Der Steuersatz (Steuerklasse " . SECCOL . taxClass . "{FFFFFF}) wurde auf " . SECCOL . chat_1 . " {FFFFFF}Prozent gesetzt.")
- }
- return
- :?:/gf::
- :?:/gfs::
- {
- SendChat("/gangfights")
- result := URLDownloadToVar("https://comniemeer.de/api/gangfights.php")
- try {
- data := JSON.Load(result)
- } catch {
- SendClientMessage(PREFIX . "{FF0000}Es ist ein unbekannter Fehler aufgetreten!")
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden der Gangfightgebiete ist ein Fehler aufgetreten: %result%`n, log.txt
- return
- }
- dialog_header := "Gebiet`tBesitzer`tStatus"
- dialog := ""
- for index, entry in data["entries"] {
- name := entry["name"]
- owner := entry["owner"]
- status := (entry["status"] == "frei" ? "{00FF00}" . entry["status"] . "{FFFFFF}" : "{FFFF00}" . entry["status"] . "{FFFFFF}")
- if (owner == "Yakuza") {
- owner := "{FFFFFF}Yakuza{FFFFFF}"
- } else if (owner == "Grove Street") {
- owner := "{078C09}Grove Street{FFFFFF}"
- } else if (owner == "Los Chickos Malos") {
- owner := "{0046FF}Los Chickos Malos{FFFFFF}"
- } else if (owner == "Triaden") {
- owner := "{FF8000}Triaden Mafia{FFFFFF}"
- } else if (owner == "Russenmafia") {
- owner := "{85847F}Russen Mafia{FFFFFF}"
- } else if (owner == "San Fierro Rifa") {
- owner := "{00DCFF}San Fierro Rifa{FFFFFF}"
- } else if (owner == "Vagos") {
- owner := "{FFFF00}Los Santos Vagos{FFFFFF}"
- } else if (owner == "Ballas") {
- owner := "{9300FF}Ballas{FFFFFF}"
- }
- if (entry["running"]) {
- dialog_header := "Gebiet`tBesitzer`tStatus`tFlaggen"
- status := "Angreifer: " . getFraktionColorByName(entry["attacker"]) . getFraktionNameShort(entry["attacker"]) . " {FFFFFF}Punktestand: " . getFraktionColorByName(entry["owner"]) . entry["pointsA"] . "{FFFFFF}:" . getFraktionColorByName(entry["attacker"]) . entry["pointsB"] . "`tA: " . getFraktionColorByName(entry["flagA"]) . getFraktionNameShort(entry["flagA"]) . " {FFFFFF}B: " . getFraktionColorByName(entry["flagB"]) . getFraktionNameShort(entry["flagB"]) . " {FFFFFF}C: " . getFraktionColorByName(entry["flagB"]) . getFraktionNameShort(entry["flagC"])
- }
- dialog .= "`n{FFFFFF}" . name . "`t" . owner . "`t" . status
- }
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, "Gangfightgebiete", dialog_header . dialog, "OK")
- }
- return
- :?:/hdf::
- :?:/ruhe::
- {
- SendChat("/l Sein Sie bitte still.")
- }
- return
- :?:/afk::
- {
- if (afk) {
- afk := false
- SendChat("/f Ich bin nun nicht mehr AFK und melde mich zurück!")
- SendChat("/crew Ich bin nun nicht mehr AFK und melde mich zurück!")
- } else {
- afkTime := PlayerInput("Zeit: ")
- if (afkTime != "") {
- if afkTime is number
- {
- afk := true
- SendChat("/f Ich melde mich AFK, Zeit: " . afkTime . " Minuten")
- SendChat("/crew Ich melde mich AFK, Zeit: " . afkTime . " Minuten")
- } else {
- SendClientMessage(PREFIX . "{FF0000}Du musst eine Zeit angeben!")
- }
- }
- }
- }
- return
- :?:/time::
- {
- SendChat("/time")
- Sleep, 100
- adrGTA2 := getModuleBaseAddress("gta_sa.exe", hGTA)
- cText := readString(hGTA, adrGTA2 + 0x7AAD43, 512)
- if (RegExMatch(cText, "(.+)In Behandlung: (\d+)", cText_)) {
- time := formatTime(cText_2)
- writeString(hGTA, adrGTA2 + 0x7AAD43, cText_1 . "Noch " . time . " im KH")
- SendClientMessage(PREFIX . "Du bist noch " . SECCOL . time . " {FFFFFF}im Krankenhaus.")
- } else if (RegExMatch(cText, "(.+)Knastzeit: (\d+)", cText_)) {
- time := formatTime(cText_2)
- if (getPlayerInteriorId() == 1) {
- writeString(hGTA, adrGTA2 + 0x7AAD43, cText_1 . "Noch " . time . " im Prison")
- SendClientMessage(PREFIX . "Du bist noch " . SECCOL . time . " {FFFFFF}im Prison.")
- } else {
- writeString(hGTA, adrGTA2 + 0x7AAD43, cText_1 . "Noch " . time . " im Knast")
- SendClientMessage(PREFIX . "Du bist noch " . SECCOL . time . " {FFFFFF}im Knast, die Kaution beträgt " . SECCOL . FormatNumber(Floor(cText_2 / 60) * 500) . "${FFFFFF}.")
- }
- }
- }
- return
- :?:/anwalt::
- {
- SendChat("/time")
- Sleep, 100
- adrGTA2 := getModuleBaseAddress("gta_sa.exe", hGTA)
- cText := readString(hGTA, adrGTA2 + 0x7AAD43, 512)
- if (RegExMatch(cText, "(.+)Knastzeit: (\d+)", cText_)) {
- if (getPlayerInteriorId() != 1) {
- time := formatTime(cText_2)
- min := Floor(cText_2 / 60)
- writeString(hGTA, adrGTA2 + 0x7AAD43, cText_1 . "Noch " . time . " im Knast")
- SendClientMessage(PREFIX . "Du bist noch " . SECCOL . time . " {FFFFFF}im Knast, die Kaution beträgt " . SECCOL . FormatNumber(min * 500) . "${FFFFFF}.")
- SendClientMessage(PREFIX . "Möchtest du nun einen Anwalt rufen? Drücke " . SECCOL . "X {FFFFFF}zum Bestätigen.")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- if (getPlayerInteriorId() == 6) {
- SendChat("/ad Anwalt LSPD! Kaution: " . FormatNumber(min * 500) . "$, /call")
- } else if (getPlayerInteriorId() == 10) {
- SendChat("/ad Anwalt FBI! Kaution: " . FormatNumber(min * 500) . "$, /call")
- } else if (getPlayerInteriorId() == 3) {
- SendChat("/ad Anwalt LVPD! Kaution: " . FormatNumber(min * 500) . "$, /call")
- }
- }
- } else {
- SendClientMessage(PREFIX . "Du bist im Prison, somit kannst du leider keinen Anwalt rufen.")
- }
- }
- }
- return
- :?:/alotto::
- {
- if (lottoNumber == 0) {
- Random, randomNumber, 1, 200
- SendChat("/lotto " . randomNumber)
- } else if (lottoNumber == 201) {
- SendChat("/lotto " . getId())
- } else {
- SendChat("/lotto " . lottoNumber)
- }
- }
- return
- :?:/re::
- :?:/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 != "") {
- SendClientMessage(PREFIX . "Letzte SMS (von " . SECCOL . sms_2 . "{FFFFFF}):")
- SendClientMessage(PREFIX . SECCOL . sms_1)
- SendInput, /sms %sms_3%{space}
- } else {
- SendClientMessage(PREFIX . "Keiner hat dich angeschrieben!")
- }
- }
- return
- :?:/readv::
- {
- 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 != "") {
- SendClientMessage(PREFIX . "Letzte Werbung (von " . ad_2 . "):")
- SendClientMessage(PREFIX . ad_1)
- SendInput, /sms %ad_3%{space}
- } else {
- SendClientMessage(PREFIX . "Keine letzte Werbung gefunden!")
- }
- }
- return
- :?:/fan::
- {
- name := PlayerInput("Fan: ")
- name := getFullName(name)
- if (name != "") {
- SendChat("/me gibt " . name . " ein Autogramm.")
- }
- }
- return
- :?:/pb::
- :?:/paintball::
- {
- SendChat("/paintball")
- Sleep, 200
- players := 0
- Loop, 100 {
- chat := readChatLine(players)
- if (InStr(chat, "Punkte")) {
- players++
- } else {
- SendClientMessage(PREFIX . "Spieler im Paintball: " . SECCOL . players)
- return
- }
- }
- }
- return
- :?:/savestats::
- {
- FormatTime, time,, dd.MM.yyyy HH:mm
- SendClientMessage(PREFIX . "Statistiken werden gespeichert! Datum: " . SECCOL . time)
- SendChat("/time")
- SendChat("/stats")
- Sleep, 250
- SendInput, {F8}
- Sleep, 250
- SendInput, {ESC}
- }
- return
- :?:/ja::
- :?:/jas::
- :?:/jam::
- {
- SendChat("Ja, was kann ich für dich tun?")
- }
- return
- :?:/kcall::
- {
- name := PlayerInput("Name: ")
- if (name != "") {
- SendChat("/number " . name)
- Sleep, 200
- chat := readChatLine(0)
- if (RegExMatch(chat, "Name: (\S*), Ph: (\d*)", number_)) {
- SendChat("/call " . number_2)
- } else {
- SendClientMessage(PREFIX . "Anruf fehlgeschlagen!")
- }
- }
- }
- return
- :?:/ksms::
- {
- name := PlayerInput("Name: ")
- if (name != "") {
- SendChat("/number " . name)
- Sleep, 200
- chat := readChatLine(0)
- if (RegExMatch(chat, "Name: (\S*), Ph: (\d*)", number_)) {
- SendInput, t/sms %number_2%{space}
- } else {
- SendClientMessage(PREFIX . "Senden der SMS fehlgeschlagen!")
- }
- }
- }
- return
- :?:/p::
- {
- called := false
- Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
- {
- if (RegExMatch(A_LoopReadLine, "Dein Handy klingelt. Tippe /pickup. Anrufer-ID: (\S+)")) {
- RegExMatch(A_LoopReadLine, "Dein Handy klingelt. Tippe /pickup. Anrufer-ID: (\S+)", caller_)
- called := true
- } else if (RegExMatch(A_LoopReadLine, "Der Gesprächspartner hat aufgelegt\.") || RegExMatch(A_LoopReadLine, "Du hast aufgelegt\.") || RegExMatch(A_LoopReadLine, "Die Verbindung zu deinem Gesprächspartner wurde unterbrochen\.")) {
- called := false
- }
- }
- if (called && caller_1 != "") {
- name := getUsername()
- FormatTime, time,, HH
- SendChat("/pickup")
- if (time >= 12 && time < 18) {
- SendChat("Guten Tag " . caller_1 . ", du sprichst mit " . name . ".")
- } else if (time >= 18 || time == 0) {
- SendChat("Guten Abend " . caller_1 . ", du sprichst mit " . name . ".")
- } else if (time >= 1 && time < 12) {
- SendChat("Guten Morgen " . caller_1 . ", du sprichst mit " . name . ".")
- }
- SendChat("Wie kann ich dir helfen?")
- } else {
- SendClientMessage(PREFIX . "Niemand hat dich angerufen!")
- }
- }
- return
- :?:/h::
- {
- called := false
- pickedup := false
- Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
- {
- if (RegExMatch(A_LoopReadLine, "Dein Handy klingelt. Tippe /pickup. Anrufer-ID: (\S+)") || RegExMatch(A_LoopReadLine, "Der Spieler hat abgehoben\.")) {
- RegExMatch(A_LoopReadLine, "Dein Handy klingelt. Tippe /pickup. Anrufer-ID: (\S+)", caller_)
- called := true
- pickedup := true
- } else if (RegExMatch(A_LoopReadLine, "Bitte Warte bis der Spieler annimmt\.")) {
- called := true
- pickedup := false
- } else if (RegExMatch(A_LoopReadLine, "Der Gesprächspartner hat aufgelegt\.") || RegExMatch(A_LoopReadLine, "Du hast aufgelegt\.") || RegExMatch(A_LoopReadLine, "Die Verbindung zu deinem Gesprächspartner wurde unterbrochen\.")) {
- called := false
- pickedup := false
- }
- }
- if (called) {
- if (pickedup) {
- if (caller_1 != "") {
- SendChat("Vielen Dank für deinen Anruf, " . caller_1 . ".")
- } else {
- SendChat("Vielen Dank für deinen Anruf.")
- }
- FormatTime, time,, HH
- if (time >= 12 && time < 18) {
- SendChat("Ich wünsche dir noch einen schönen Tag.")
- } else if (time >= 18 || time == 0) {
- SendChat("Ich wünsche dir noch einen schönen Abend.")
- } else if (time >= 1 && time < 12) {
- SendChat("Ich wünsche dir noch einen schönen Morgen.")
- }
- }
- SendChat("/hangup")
- } else {
- SendClientMessage(PREFIX . "Niemand hat dich angerufen!")
- }
- }
- return
- :?:/ab::
- {
- called := false
- Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
- {
- if (RegExMatch(A_LoopReadLine, "Dein Handy klingelt. Tippe /pickup. Anrufer-ID: (\S+)")) {
- RegExMatch(A_LoopReadLine, "Dein Handy klingelt. Tippe /pickup. Anrufer-ID: (\S+)", caller_)
- called := true
- } else if (RegExMatch(A_LoopReadLine, "Der Gesprächspartner hat aufgelegt\.") || RegExMatch(A_LoopReadLine, "Du hast aufgelegt\.") || RegExMatch(A_LoopReadLine, "Die Verbindung zu deinem Gesprächspartner wurde unterbrochen\.")) {
- called := false
- }
- }
- if (called) {
- FormatTime, time,, HH
- SendChat("/pickup")
- if (time >= 12 && time < 18) {
- SendChat("Guten Tag " . caller_1 . ",")
- } else if (time >= 18 || time == 0) {
- SendChat("Guten Abend " . caller_1 . ",")
- } else if (time >= 1 && time < 12) {
- SendChat("Guten Morgen " . caller_1 . ",")
- }
- SendChat("Sie sind verbunden mit dem Anrufbeantworter von " . getUsername() . ":")
- SendChat("Ich bin leider beschäftigt, bitte rufe mich später erneut an!")
- SendChat("/hangup")
- } else {
- SendClientMessage(PREFIX . "Niemand hat dich angerufen!")
- }
- }
- return
- :?:/tag::
- {
- FormatTime, time,, HH
- if (time >= 12 && time < 20) {
- SendChat("Guten Tag, wie kann ich dir helfen?")
- } else if (time >= 20 || time == 0) {
- SendChat("Guten Abend, wie kann ich dir helfen?")
- } else if (time >= 1 && time < 12) {
- SendChat("Guten Morgen, wie kann ich dir helfen?")
- }
- }
- return
- :?:/bye::
- {
- FormatTime, time,, HH
- if (time >= 12 && time < 20) {
- SendChat("Ich wünsche dir noch einen schönen Tag. Auf Wiedersehen!")
- } else if (time >= 20 || time == 0) {
- SendChat("Ich wünsche dir noch einen schönen Abend. Auf Wiedersehen!")
- } else if (time >= 1 && time < 12) {
- SendChat("Ich wünsche dir noch einen schönen Tag. Auf Wiedersehen!")
- }
- }
- return
- :?:/fg::
- {
- blockDialog()
- SendChat("/stats")
- Sleep, 200
- unBlockDialog()
- if (RegExMatch(getDialogText(), statsFormat, dialog_)) {
- deposit := dialog_14
- account := dialog_13
- if (deposit == 0) {
- if (getPlayerInteriorId() == 20) {
- if (IsPlayerInRangeOfPoint(1429.6781, -997.2040, 1639.7843, 5)) {
- if (account >= 1250000) {
- SendChat("/festgeld 1250000")
- } else if (account >= 50000 && account < 1250000) {
- SendClientMessage(PREFIX . "Du hast aktuell nur " . SECCOL . formatNumber(account) . "$ {FFFFFF}auf dem Konto.")
- SendClientMessage(PREFIX . "Möchtest du diesen Betrag als Festgeld anlegen? Drücke " . SECCOL . "X {FFFFFF}zum Bestätigen.")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- SendChat("/festgeld " . account)
- }
- } else {
- SendClientMessage(PREFIX . "Du hast nicht genügend Geld auf deinem Konto, um Festgeld anzulegen.")
- }
- } else {
- SendClientMessage(PREFIX . "Du befindest dich nicht am Bankschalter.")
- }
- } else {
- SendClientMessage(PREFIX . "Du hast derzeit kein Festgeld angelegt.")
- SendClientMessage(PREFIX . "Begebe dich in die Bank, um Festgeld anzulegen.")
- }
- } else {
- if (getPlayerInteriorId() == 20) {
- if (IsPlayerInRangeOfPoint(1429.6781, -997.2040, 1639.7843, 5)) {
- SendClientMessage(PREFIX . "Du hast bereits " . SECCOL . formatNumber(deposit) . "$ {FFFFFF}Festgeld angelegt. Möchtest du es abbrechen? Drücke " . SECCOL . "X {FFFFFF}zum Bestätigen.")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- SendChat("/cancelfestgeld")
- }
- } else {
- if (account >= 1) {
- SendChat("/festgeld 1")
- } else {
- SendClientMessage(PREFIX . "Du hast aktuell " . SECCOL . formatNumber(deposit) . "$ {FFFFFF}Festgeld angelegt. Um zu sehen, wie lange es noch dauert, brauchst du mind. 1$ auf deinem Konto.")
- }
- }
- } else {
- if (account >= 1) {
- SendChat("/festgeld 1")
- } else {
- SendClientMessage(PREFIX . "Du hast aktuell " . SECCOL . formatNumber(deposit) . "$ {FFFFFF}Festgeld angelegt. Um zu sehen, wie lange es noch dauert, brauchst du mind. 1$ auf deinem Konto.")
- }
- }
- }
- }
- }
- return
- :?:/ap::
- {
- SendChat("/accept paket")
- }
- return
- :?:/tanken::
- {
- if (isPlayerInAnyVehicle()) {
- if (getVehicleEngineState()) {
- SendChat("/motor")
- }
- SendChat("/fill")
- Sleep, 10000
- SendChat("/motor")
- SendChat("/licht")
- if (autoBuyCanister) {
- SendClientMessage(PREFIX . "Möchtest du noch einen Kanister kaufen? Steig aus dem Fahrzeug aus und drücke " . SECCOL . "X{FFFFFF}!")
- KeyWait, X, D, T10
- if (!ErrorLevel) {
- SendChat("/kanister")
- }
- }
- } else {
- SendClientMessage(PREFIX . "Du bist in keinem Fahrzeug!")
- }
- }
- return
- :?:/minuten::
- {
- seconds := PlayerInput("Sekunden: ")
- if (seconds != "") {
- minutes := Floor(seconds / 60)
- SendClientMessage(PREFIX . SECCOL . FormatNumber(seconds) . " {FFFFFF}Sekunden sind " . SECCOL . FormatNumber(minutes) " {FFFFFF}Minuten.")
- }
- }
- return
- :?:/link::
- {
- Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
- {
- if (RegExMatch(A_LoopReadLine, "(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})(\S*)")) {
- RegExMatch(A_LoopReadLine, "(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})(\S*)", url_)
- }
- if (RegExMatch(A_LoopReadLine, "http:\/\/(\S+)")) {
- RegExMatch(A_LoopReadLine, "http\:\/\/(\S+)", url_)
- url := "http://" . url_1
- } else if (RegExMatch(A_LoopReadLine, "https:\/\/(\S+)")) {
- RegExMatch(A_LoopReadLine, "https\:\/\/(\S+)", url_)
- url := "https://" . url_1
- } else if (RegExMatch(A_LoopReadLine, "www.(\S+)")) {
- RegExMatch(A_LoopReadLine, "www.(\S+)", url_)
- url := "www." . url_1
- }
- }
- clipboard := url
- SendClientMessage(PREFIX . "Der folgende Link wurde in die Zwischenablage kopiert:")
- SendClientMessage(PREFIX . SECCOL . url)
- }
- return
- :?:/savechat::
- {
- FileCreateDir, %A_MyDocuments%\GTA San Andreas User Files\SAMP\ChatlogBackups
- FormatTime, zeit, %A_Now%,dd.MM.yy - HH.mm
- FileCopy, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %A_MyDocuments%\GTA San Andreas User Files\SAMP\ChatlogBackups\chatlog %zeit% Uhr.txt, 0
- SendClientMessage(PREFIX . "Es wurde ein Backup des aktuellen Chatlogs erstellt!")
- }
- return
- :?:/cc::
- :?:/chatclear::
- {
- Loop, 100 {
- AddChatMessage("")
- }
- SendClientMessage(PREFIX . "Der Chat wurde erfolgreich geleert!")
- }
- return
- :?:/sani::
- {
- zone := getPlayerZone()
- SendChat("/service")
- Sleep, 250
- SendInput, {enter}
- if (!admin)
- Sleep, 250
- SendChat("/f Ich habe einen Sanitäter in " . zone . " gerufen!")
- SendChat("/crew Ich habe einen Sanitäter in " . zone . " gerufen!")
- }
- return
- :?:/gk::
- {
- id := PlayerInput("Gebäudekomplex: ")
- if (id == "")
- return
- if (RegExMatch(id, "^(\d+)\.(\d+)$")) {
- gk(id)
- }
- }
- return
- gk(id, showGK := false) {
- result := URLDownloadToVar(gkBaseURL . "api/newgk.php?gk=" . id)
- if (result == "ERROR_CONNECTION") {
- SendClientMessage(PREFIX . "{FF0000}Fehler bei der Verbindung zum Server!")
- } else if (result == "ERROR_BAD_LINK") {
- SendClientMessage(PREFIX . "{FF0000}Fehlerhafte Parameterübergabe!")
- } else if (result == "ERROR_ACCESS_DENIED") {
- SendClientMessage(PREFIX . "{FF0000}Zugriff verweigert, das Passwort ist falsch!")
- } else if (result == "ERROR_WRONG_FORMAT") {
- SendClientMessage(PREFIX . "{FF0000}Fehlerhaftes Format!")
- } else if (result == "ERROR_NOT_FOUND") {
- SendClientMessage(PREFIX . "{FF0000}Der Komplex wurde nicht in der Datenbank gefunden!")
- } else {
- SendClientMessage(PREFIX . "Gebäudekomplex {FF0000}" . id . "{FFFFFF}:")
- try {
- data := JSON.Load(result)
- } catch {
- SendClientMessage(PREFIX . "{FF0000}Es ist ein unbekannter Fehler aufgetreten!")
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden des GK ist ein Fehler aufgetreten: %result%`n, log.txt
- return
- }
- for index, entry in data {
- name := entry["name"]
- location := ""
- if (entry["type"] == "public") {
- color := "{00FF00}"
- location := " (" . calculateZone(entry["x"], entry["y"], 0.0) . ", " . calculateCity(entry["x"], entry["y"], 0.0) . ")"
- } else if (entry["type"] == "house") {
- color := "{00FFFF}"
- if (name == "Nobody") {
- name := "Haus (frei)"
- } else if (name == "Auktion im CP") {
- name := "Haus (" . name . ")"
- } else {
- name := "Haus von " . name
- }
- location := " (" . calculateZone(entry["x"], entry["y"], 0.0) . ", " . calculateCity(entry["x"], entry["y"], 0.0) . ")"
- } else if (entry["type"] == "faction") {
- color := "{7F00FF}"
- location := " (" . calculateZone(entry["x"], entry["y"], 0.0) . ", " . calculateCity(entry["x"], entry["y"], 0.0) . ")"
- } else if (entry["type"] == "vehicle") {
- color := "{FF00FF}"
- }
- if (entry["x"] == -5000 || entry["y"] == -5000) {
- location := ""
- }
- SendClientMessage(PREFIX . SECCOL . "[GK] " . color . "[ID: " . entry["type"] . "." . entry["id"] . "] " . name . location)
- }
- }
- }
- :?:/showgk::
- {
- id := PlayerInput("Gebäudekomplex-ID: ")
- showGK(id)
- }
- return
- showGK(gk, ignoreExisting := false) {
- if (RegExMatch(gk, "^(public|house|faction)\.(\d+)$", regex_)) {
- result := UrlDownloadToVar(gkBaseURL . "api/newgk.php?id=" . gk)
- if (result == "ERROR_CONNECTION") {
- SendClientMessage(PREFIX . "{FF0000}Fehler bei der Verbindung zum Server!")
- } else if (result == "ERROR_BAD_LINK") {
- SendClientMessage(PREFIX . "{FF0000}Fehlerhafte Parameterübergabe!")
- } else if (result == "ERROR_ACCESS_DENIED") {
- SendClientMessage(PREFIX . "{FF0000}Zugriff verweigert, das Passwort ist falsch!")
- } else if (result == "ERROR_WRONG_FORMAT") {
- SendClientMessage(PREFIX . "{FF0000}Fehlerhaftes Format!")
- } else if (result == "ERROR_NOT_FOUND") {
- SendClientMessage(PREFIX . "{FF0000}Der Komplex wurde nicht in der Datenbank gefunden!")
- } else {
- try {
- data := JSON.Load(result)
- } catch {
- SendClientMessage(PREFIX . "{FF0000}Es ist ein unbekannter Fehler aufgetreten!")
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden des showGK ist ein Fehler aufgetreten: %result%`n, log.txt
- return
- }
- if (IsMarkerCreated() && !ignoreExisting) {
- SendClientMessage(PREFIX . "Es ist bereits ein Checkpoint gesetzt, wenn du diesen überschreiben willst, drücke " . SECCOL . "X{FFFFFF}!")
- KeyWait, X, D, T10
- if (ErrorLevel) {
- return
- }
- }
- zPos := data["z"]
- if (zPos == -1)
- zPos := 20
- if (setCheckpoint(data["x"], data["y"], zPos, 5)) {
- SendClientMessage(PREFIX . "Der Checkpoint zum GK mit der ID " . SECCOL . gk . " {FFFFFF}wurde erfolgreich gesetzt!")
- } else {
- SendClientMessage(PREFIX . "Beim Setzen des Checkpoints ist ein Fehler aufgetreten!")
- }
- }
- } else {
- SendClientMessage(PREFIX . SECCOL . "[GK] {FF0000}Fehler: Die ID wurde falsch formatiert. " . SECCOL . "Beispiel: public.12")
- }
- }
- :?:/checkpoint::
- {
- x := PlayerInput("x: ")
- y := PlayerInput("y: ")
- z := PlayerInput("z: ")
- if (x != "" && y != "" && z != "") {
- if (IsMarkerCreated()) {
- SendClientMessage(PREFIX . "Es ist bereits ein Checkpoint gesetzt, wenn du diesen überschreiben willst, drücke " . SECCOL . "X{FFFFFF}!")
- KeyWait, X, D, T10
- if (ErrorLevel) {
- return
- }
- }
- if (setCheckpoint(x, y, z, 0.5)) {
- SendClientMessage(PREFIX . "ERFOLG!")
- } else {
- SendClientMessage(PREFIX . "FEHLER!")
- }
- }
- }
- return
- :?:/sanis::
- {
- result := UrlDownloadToVar("https://comniemeer.de/api/fractionmembers.php?id=4")
- sanis := "Name`tRang`tID"
- Loop, Parse, result, ~
- {
- if (RegExMatch(A_LoopField, "(\S+),(\d+)", member_)) {
- id := getPlayerIdByName(member_1, true)
- if (id != -1) {
- sanis .= "`n{00FF00}" . member_1 . "`t{FF8000}" . member_2 . "`t" . id
- } else {
- sanis .= "`n{FF0000}" . member_1 . "`t{FF8000}" . member_2 . "`t-"
- }
- }
- }
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, "LSMD Mitgliederliste", sanis, "OK")
- }
- return
- :?:/onsanis::
- {
- result := UrlDownloadToVar("https://comniemeer.de/api/fractionmembers.php?id=4")
- SendClientMessage(PREFIX . "Es werden nur Mitglieder des LSMD angezeigt, die online sind.")
- Loop, Parse, result, ~
- {
- RegExMatch(A_LoopField, "(\S+),(\d+)", member)
- id := getPlayerIdByName(member1, true)
- if (member1 != "") {
- if (id != -1) {
- SendClientMessage(PREFIX . member1 . " " . SECCOL . "[ID: " . id "] {FFFFFF}Rang: " . SECCOL . member2)
- }
- }
- }
- }
- return
- :?:/coords::
- {
- GetPlayerPos(posX, posY, posZ)
- SendClientMessage(PREFIX . "x: " . SECCOL . posX . " {FFFFFF}y: " . SECCOL . posY . " {FFFFFF}z: " . SECCOL . posZ)
- }
- return
- :?:/fpslock::
- {
- if (fpsLock()) {
- SendClientMessage(PREFIX . "Deine FPS wurden wieder beschränkt.")
- } else {
- SendClientMessage(PREFIX . "Beim Beschränken deiner FPS ist ein Fehler aufgetreten.")
- }
- }
- return
- :?:/fpsunlock::
- {
- if (fpsUnlock()) {
- SendClientMessage(PREFIX . "Die Beschränkung deiner FPS wurde aufgehoben.")
- } else {
- SendClientMessage(PREFIX . "Beim Aufheben der Beschränkung deiner FPS ist ein Fehler aufgetreten.")
- }
- }
- return
- :?:/relog::
- {
- SendClientMessage(PREFIX . "Du verbindest nun neu...")
- restart()
- }
- return
- ; ------------- ;
- ; Gegner-System ;
- ; ------------- ;
- SearchEnemyTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- players := getStreamedInPlayersInfo()
- for i, o in players {
- updatePlayerFraction(o.ID)
- }
- if (enemyJoinLeaveMessage) {
- if (!SQLiteDB.Query("SELECT name, fraction FROM enemies WHERE fraction != '0' ORDER BY fraction ASC, name ASC;", recordSet)) {
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return
- }
- if (recordSet.HasRows) {
- while (recordSet.Next(row) >= 1) {
- enemyName := row[1]
- enemyFraction := row[2]
- showEnemyMessage(enemyName, enemyFraction)
- }
- }
- recordSet.Free()
- for index, entry in lspdData {
- showEnemyMessage(entry, 1)
- }
- for index, entry in fbiData {
- showEnemyMessage(entry, 2)
- }
- if (firstEnemiesTimerRun) {
- firstEnemiesTimerRun := false
- }
- }
- }
- return
- showEnemyMessage(name, fraction) {
- global debug
- playerID := getPlayerIdByName(name, true)
- if (ErrorLevel || playerID == -2) {
- if (debug) {
- SendClientMessage(PREFIX . "Fehler beim Auslesen der ID von " . name . " (" . playerID . "): " . ErrorLevel)
- }
- return
- }
- if (playerID != -1) {
- if (!onlineEnemies.HasKey(name)) {
- onlineEnemies[name] := fraction
- if (!firstEnemiesTimerRun) {
- SendClientMessage(PREFIX . SECCOL . name . " {FFFFFF}aus der Fraktion " . SECCOL . getFraktionByID(fraction) . " {FFFFFF}ist {00FF00}online {FFFFFF}gekommen.")
- }
- }
- } else {
- if (onlineEnemies.HasKey(name)) {
- onlineEnemies.Delete(name)
- if (!firstEnemiesTimerRun) {
- SendClientMessage(PREFIX . SECCOL . name . " {FFFFFF}aus der Fraktion " . SECCOL . getFraktionByID(fraction) . " {FFFFFF}ist {FF0000}offline {FFFFFF}gegangen.")
- }
- }
- }
- }
- RefreshCops:
- {
- lspdResult := UrlDownloadToVar("https://lspd.comniemeer.de/api/members")
- fbiResult := UrlDownloadToVar("https://fbi.comniemeer.de/api/members")
- try {
- lspdData := JSON.Load(lspdResult)
- fbiData := JSON.Load(fbiResult)
- } catch {
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden der Cops ist ein Fehler aufgetreten:`nLSPD: %lspdResult%`nFBI: %fbiResult%`n, log.txt
- return
- }
- }
- return
- ~RButton::
- {
- while GetKeyState("RButton", "P")
- {
- playerPed := getTargetPed()
- playerID := getIdByPed(playerPed)
- if (updatePlayerFraction(playerID)) {
- Sleep, 1500
- }
- }
- }
- return
- updatePlayerFraction(playerID) {
- global SQLiteDB
- playerName := getPlayerNameByID(playerID)
- playerSkin := getTargetPlayerSkinIdById(playerID)
- playerFraction := getFraktionBySkinID(playerSkin)
- if (playerName != "" && playerID != -1 && playerSkin != -1 && !ErrorLevel) {
- if (!SQLiteDB.Query("SELECT fraction FROM enemies WHERE name LIKE '" . playerName . "';", recordSet)) {
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return false
- }
- if (!recordSet.HasRows) {
- if (SQLiteDB.exec("INSERT INTO enemies (name, fraction, updated) VALUES ('" . playerName . "', '" . playerFraction . "', '" . getUnixTimestamp(A_Now) . "');")) {
- if (playerFraction != 0 && enemyAddedMessage) {
- SendClientMessage(PREFIX . SECCOL . playerName . " {FFFFFF}(" . SECCOL . getFraktionByID(playerFraction) . "{FFFFFF}) wurde in die Gegnerliste aufgenommen!")
- }
- }
- } else {
- if (recordSet.Next(row)) {
- oldFraction := row[1]
- if (oldFraction != playerFraction) {
- if (SQLiteDB.exec("UPDATE enemies SET name = '" . playerName . "', fraction = '" . playerFraction . "', updated = '" . getUnixTimestamp(A_Now) . "' WHERE name = '" . playerName . "';")) {
- if (enemyUpdatedMessage) {
- if (playerFraction != 0) {
- SendClientMessage(PREFIX . SECCOL . playerName . " {FFFFFF}(" . SECCOL . getFraktionByID(playerFraction) . "{FFFFFF}) wurde in der Gegnerliste aktualisiert (Alte Fraktion: " . getFraktionByID(oldFraction) . ")!")
- } else {
- SendClientMessage(PREFIX . SECCOL . playerName . " {FFFFFF}wurde aus der Gegnerliste entfernt (Alte Fraktion: " . getFraktionByID(oldFraction) . ")!")
- }
- }
- }
- }
- }
- }
- recordSet.Free()
- return true
- }
- return false
- }
- :?:/remgegner::
- :?:/delgegner::
- :?:/remenemy::
- :?:/delenemy::
- {
- enemyName := PlayerInput("Gegner: ")
- if (enemyName == "")
- return
- if (!SQLiteDB.Query("SELECT fraction, name FROM enemies WHERE name LIKE '" . enemyName . "';", recordSet)) {
- SendClientMessage(PREFIX . "Es ist ein SQLite-Fehler aufgetreten! Sieh' bitte in der log.txt nach und informiere Martin im Forum.")
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return
- }
- if (recordSet.HasRows) {
- if (recordSet.Next(row)) {
- enemyFraction := row[1]
- enemyName := row[2]
- if (SQLiteDB.exec("UPDATE enemies SET fraction = '0', updated = '" . getUnixTimestamp(A_Now) . "' WHERE name = '" . enemyName . "';")) {
- SendClientMessage(PREFIX . SECCOL . enemyName . " {FFFFFF}wurde aus der Gegnerliste entfernt (Alte Fraktion: " . getFraktionByID(enemyFraction) . ")!")
- return
- }
- }
- }
- SendClientMessage(PREFIX . "Der Spieler " . SECCOL . enemyName . " {FFFFFF}wurde nicht in der Gegnerliste gefunden!")
- }
- return
- :?:/gegner::
- :?:/enemies::
- :?:/enemys::
- {
- if (!SQLiteDB.Query("SELECT fraction, name FROM enemies WHERE fraction != '0' ORDER BY fraction ASC, name ASC;", recordSet)) {
- SendClientMessage(PREFIX . "Es ist ein SQLite-Fehler aufgetreten! Sieh' bitte in der log.txt nach und informiere Martin im Forum.")
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return
- }
- dialog := "Fraktion`tName`tID"
- playerCount := 0
- for index, entry in lspdData {
- playerFraction := 1
- playerName := entry
- playerID := getPlayerIdByName(playerName, true)
- if (playerID != -1) {
- playerCount++
- dialog .= "`n" . getFraktionColorByID(playerFraction) . getFraktionByID(playerFraction) . "`t" . playerName . "`t" . playerID
- }
- }
- for index, entry in fbiData {
- playerFraction := 2
- playerName := entry
- playerID := getPlayerIdByName(playerName, true)
- if (playerID != -1) {
- playerCount++
- dialog .= "`n" . getFraktionColorByID(playerFraction) . getFraktionByID(playerFraction) . "`t" . playerName . "`t" . playerID
- }
- }
- if (recordSet.HasRows) {
- while (recordSet.Next(row) >= 1) {
- playerFraction := getFraktionByID(row[1])
- playerName := row[2]
- playerID := getPlayerIdByName(playerName, true)
- if (playerID != -1) {
- playerCount++
- dialog .= "`n" . getFraktionColorByID(row[1]) . playerFraction . "`t" . playerName . "`t" . playerID
- }
- }
- Sleep, 100
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Gegner online: " . SECCOL . playerCount, dialog, "OK")
- } else {
- SendClientMessage(PREFIX . "Es wurden noch keine Gegner gefunden! Begebe dich in die Nähe von potentiellen Gegnern, um sie hinzuzufügen.")
- }
- recordSet.Free()
- }
- return
- :?:/lspd::
- :?:/fbi::
- :?:/cops::
- {
- RegExMatch(A_ThisHotkey, "^:\?:\/(\S+)$", hstring_)
- dialog := "Fraktion`tName`tID`tStatus"
- playerCount := 0
- if (hstring_1 = "cops" || hstring_1 = "lspd") {
- for index, entry in lspdData {
- playerID := getPlayerIdByName(entry, true)
- dialog .= "`n" . getFraktionColorByID(1) . getFraktionByID(1) . "`t" . entry . "`t" . (playerID == -1 ? "-" : playerID) . "`t" . (playerID == -1 ? "{FF0000}offline" : "{00FF00}online")
- if (playerID != -1) {
- playerCount++
- }
- }
- }
- if (hstring_1 = "cops" || hstring_1 = "fbi") {
- for index, entry in fbiData {
- playerID := getPlayerIdByName(entry, true)
- dialog .= "`n" . getFraktionColorByID(2) . getFraktionByID(2) . "`t" . entry . "`t" . (playerID == -1 ? "-" : playerID) . "`t" . (playerID == -1 ? "{FF0000}offline" : "{00FF00}online")
- if (playerID != -1) {
- playerCount++
- }
- }
- }
- Sleep, 100
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, SECCOL . "Copliste {FFFFFF}(" . SECCOL . playerCount . " {FFFFFF}online)", dialog, "OK")
- }
- return
- :?:/oncops::
- {
- dialog := "Fraktion`tName`tID`tStatus"
- playerCount := 0
- for index, entry in lspdData {
- playerID := getPlayerIdByName(entry, true)
- if (playerID != -1) {
- dialog .= "`n" . getFraktionColorByID(1) . getFraktionByID(1) . "`t" . entry . "`t" . (playerID == -1 ? "-" : playerID) . "`t" . (playerID == -1 ? "{FF0000}offline" : "{00FF00}online")
- playerCount++
- }
- }
- for index, entry in fbiData {
- playerID := getPlayerIdByName(entry, true)
- if (playerID != -1) {
- dialog .= "`n" . getFraktionColorByID(2) . getFraktionByID(2) . "`t" . entry . "`t" . (playerID == -1 ? "-" : playerID) . "`t" . (playerID == -1 ? "{FF0000}offline" : "{00FF00}online")
- playerCount++
- }
- }
- Sleep, 100
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, SECCOL . "Copliste {FFFFFF}(" . SECCOL . playerCount . " {FFFFFF}online)", dialog, "OK")
- }
- return
- :?:/lvpd::
- :?:/russen::
- :?:/yakuza::
- :?:/grove::
- :?:/ballas::
- :?:/lcm::
- :?:/rifa::
- :?:/vagos::
- :?:/triaden::
- {
- if (RegExMatch(A_ThisHotkey, "^:\?:\/(\S+)$", hstring_)) {
- fraction := fractions[hstring_1][1]
- if (!SQLiteDB.Query("SELECT name FROM enemies WHERE fraction = '" . fraction . "' ORDER BY name ASC;", recordSet)) {
- SendClientMessage(PREFIX . "Es ist ein SQLite-Fehler aufgetreten! Sieh' bitte in der log.txt nach und informiere Martin im Forum.")
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return
- }
- if (recordSet.HasRows) {
- dialog := "Name`tID`tStatus"
- playerCount := 0
- while (recordSet.Next(row) >= 1) {
- playerName := row[1]
- playerID := getPlayerIdByName(playerName, true)
- dialog .= "`n" . playerName . "`t" . (playerID == -1 ? "-" : playerID) . "`t" . (playerID == -1 ? "{FF0000}offline" : "{00FF00}online")
- if (playerID != -1) {
- playerCount++
- }
- }
- Sleep, 100
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, SECCOL . getFraktionByID(fraction) . " {FFFFFF}(" . SECCOL . playerCount . " {FFFFFF}online)", dialog, "OK")
- } else {
- SendClientMessage(PREFIX . "Es wurden noch keine Gegner der angegebenen Fraktion gefunden! Begebe dich in die Nähe von potentiellen Gegnern, um sie hinzuzufügen.")
- }
- recordSet.Free()
- }
- }
- return
- #IFNDEF nooverlay
- EnemyOverlayTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- enemyOverlayText := ""
- playerCount := 0
- if (enemyOverlayShowCops) {
- for index, entry in lspdData {
- playerName := entry
- playerFraction := 1
- playerID := getPlayerIdByName(playerName, true)
- if (playerID != -1) {
- enemyOverlayText .= "`n" . getFraktionColorByID(playerFraction) . getFraktionByID(playerFraction) . " {FFFFFF}- " . enemyOverlayPrimColor . playerName . enemyOverlaySecColor " (" . enemyOverlayPrimColor . playerID . enemyOverlaySecColor . ")"
- playerCount++
- }
- }
- for index, entry in fbiData {
- playerName := entry
- playerFraction := 2
- playerID := getPlayerIdByName(playerName, true)
- if (playerID != -1) {
- enemyOverlayText .= "`n" . getFraktionColorByID(playerFraction) . getFraktionByID(playerFraction) . " {FFFFFF}- " . enemyOverlayPrimColor . playerName . enemyOverlaySecColor " (" . enemyOverlayPrimColor . playerID . enemyOverlaySecColor . ")"
- playerCount++
- }
- }
- }
- if (!SQLiteDB.Query("SELECT name, fraction FROM enemies WHERE fraction != 0 ORDER BY fraction ASC, name ASC;", recordSet)) {
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return
- }
- if (recordSet.HasRows) {
- while (recordSet.Next(row) >= 1) {
- if ((row[2] >= 1 && row[2] <= 3) && !enemyOverlayShowCops) {
- continue
- }
- skin := getPlayerSkinId()
- if (skin != -1) {
- fraction := getFraktionBySkinID(skin)
- if (fraction == row[2] && !enemyOverlayShowOwnFraction) {
- continue
- }
- }
- playerName := row[1]
- playerFraction := getFraktionByID(row[2])
- playerID := getPlayerIdByName(playerName, true)
- if (playerID != -1) {
- enemyOverlayText .= "`n" . getFraktionColorByID(row[2]) . playerFraction . " {FFFFFF}- " . enemyOverlayPrimColor . playerName . enemyOverlaySecColor " (" . enemyOverlayPrimColor . playerID . enemyOverlaySecColor . ")"
- playerCount++
- }
- }
- }
- recordSet.Free()
- enemyOverlayText := enemyOverlayPrimColor . playerCount . enemyOverlaySecColor . " Gegner online:" . enemyOverlayText
- if (!enemyOverlayColors) {
- enemyOverlayText := RegExReplace(enemyOverlayText, "{\S{6}}", "")
- }
- TextSetString(enemyOverlay, enemyOverlayText)
- }
- return
- #ENDIF
- ; ------------- ;
- ; TextDraws ;
- ; ------------- ;
- :?:/hptd::
- :?:/hptext::
- {
- if (hpTextEnabled) {
- SetTimer, HealthTextDrawTimer, Off
- hpTextEnabled := false
- if (textMoveMode == 1 || textMoveMode == 2) {
- textMoveMode := 0
- }
- deleteTextDraw(hpText)
- deleteTextDraw(armourText)
- SendClientMessage(PREFIX . "Das HP-TextDraw wurde deaktiviert!")
- } else {
- createText(1)
- hpTextEnabled := true
- SendClientMessage(PREFIX . "Das HP-TextDraw wurde aktiviert!")
- }
- }
- return
- :?:/fps::
- :?:/fpstd::
- :?:/fpstext::
- {
- if (fpsTextEnabled) {
- SetTimer, FPSTextDrawTimer, Off
- fpsTextEnabled := false
- if (textMoveMode == 3) {
- textMoveMode := 0
- }
- deleteTextDraw(fpsText)
- SendClientMessage(PREFIX . "Das FPS-TextDraw wurde deaktiviert!")
- } else {
- createText(3)
- fpsTextEnabled := true
- SendClientMessage(PREFIX . "Das FPS-TextDraw wurde aktiviert!")
- }
- }
- return
- :?:/tdmove::
- :?:/textmove::
- {
- if (textMoveMode) {
- textMoveMode := 0
- SendClientMessage(PREFIX . "Der TextDraw-Bearbeitungsmodus wurde {FF0000}deaktiviert{FFFFFF}!")
- } else {
- SendClientMessage(PREFIX . SECCOL . "1{FFFFFF}: HP-TextDraw " . SECCOL . "2{FFFFFF}: Armour-TextDraw " . SECCOL . "3{FFFFFF}: FPS-TextDraw")
- textInput := PlayerInput("Text verschieben: ")
- if (textInput == "1") {
- if (hpText != -1) {
- textMoveMode := 1
- SendClientMessage(PREFIX . "Der TextDraw-Bearbeitungsmodus wurde {00FF00}aktiviert{FFFFFF}!")
- SendClientMessage(PREFIX . "Das HP-TextDraw kann nun mit den Pfeiltasten verschoben werden.")
- SendClientMessage(PREFIX . "Wenn du fertig bist, tippe " . SECCOL . "/textsave {FFFFFF}ein, um die Einstellung zu speichern!")
- } else {
- SendClientMessage(PREFIX . "Das HP-TextDraw muss aktiviert sein, um ihn zu verschieben!")
- }
- } else if (textInput == "2") {
- if (armourText != -1) {
- textMoveMode := 2
- SendClientMessage(PREFIX . "Der TextDraw-Bearbeitungsmodus wurde {00FF00}aktiviert{FFFFFF}!")
- SendClientMessage(PREFIX . "Das Armour-TextDraw kann nun mit den Pfeiltasten verschoben werden.")
- SendClientMessage(PREFIX . "Wenn du fertig bist, tippe " . SECCOL . "/textsave {FFFFFF}ein, um die Einstellung zu speichern!")
- } else {
- SendClientMessage(PREFIX . "Das Armour-TextDraw muss aktiviert sein, um ihn zu verschieben! (Du musst Armour haben)")
- }
- } else if (textInput == "3") {
- if (fpsText != -1) {
- textMoveMode := 3
- SendClientMessage(PREFIX . "Der TextDraw-Bearbeitungsmodus wurde {00FF00}aktiviert{FFFFFF}!")
- SendClientMessage(PREFIX . "Das FPS-TextDraw kann nun mit den Pfeiltasten verschoben werden.")
- SendClientMessage(PREFIX . "Wenn du fertig bist, tippe " . SECCOL . "/textsave {FFFFFF}ein, um die Einstellung zu speichern!")
- } else {
- SendClientMessage(PREFIX . "Das FPS-TextDraw muss aktiviert sein, um ihn zu verschieben!")
- }
- }
- }
- }
- return
- :?:/tdsave::
- :?:/textsave::
- {
- if (textMoveMode == 1) {
- IniWrite, %hpTextPosX%, settings.ini, HPText, HPPosX
- IniWrite, %hpTextPosY%, settings.ini, HPText, HPPosY
- textMoveMode := 0
- SendClientMessage(PREFIX . "Die HP-TextDraw-Position wurde {00FF00}gespeichert{FFFFFF}!")
- } else if (textMoveMode == 2) {
- IniWrite, %armourTextPosX%, settings.ini, HPText, ArmourPosX
- IniWrite, %armourTextPosY%, settings.ini, HPText, ArmourPosY
- textMoveMode := 0
- SendClientMessage(PREFIX . "Die Armour-TextDraw-Position wurde {00FF00}gespeichert{FFFFFF}!")
- } else if (textMoveMode == 3) {
- IniWrite, %fpsTextPosX%, settings.ini, FPSText, PosX
- IniWrite, %fpsTextPosY%, settings.ini, FPSText, PosY
- textMoveMode := 0
- SendClientMessage(PREFIX . "Die FPS-TextDraw-Position wurde {00FF00}gespeichert{FFFFFF}!")
- } else {
- SendClientMessage(PREFIX . "Der TextDraw-Bearbeitungsmodus ist nicht aktiviert!")
- }
- }
- return
- createText(id) {
- global
- if (id == 1) {
- hpText := createTextDraw(getTextDrawColor(hpTextColor) . getPlayerHealth(), hpTextPosX, hpTextPosY, 0xFFFFFFFF, hpTextFont, hpTextFontSize, hpTextFontSize * 3)
- armourText := -1
- SetTimer, HealthTextDrawTimer, 500
- } else if (id == 3) {
- fpsText := createTextDraw(getTextDrawColor(fpsTextColor) . getFPS(), fpsTextPosX, fpsTextPosY, 0xFFFFFFFF, fpsTextFont, fpsTextFontSize, fpsTextFontSize * 3)
- SetTimer, FPSTextDrawTimer, 500
- }
- }
- updateText(id) {
- global
- if (id == 1) {
- if (hpText != -1) {
- moveTextDraw(hpText, hpTextPosX, hpTextPosY)
- }
- } else if (id == 2) {
- if (armourText != -1) {
- moveTextDraw(armourText, armourTextPosX, armourTextPosY)
- }
- } else if (id == 3) {
- if (fpsText != -1) {
- moveTextDraw(fpsText, fpsTextPosX, fpsTextPosY)
- }
- }
- }
- getTextDrawColor(id) {
- color := ""
- if (id == 1) {
- color := "~w~"
- } else if (id == 2) {
- color := "~l~"
- } else if (id == 3) {
- color := "~r~"
- } else if (id == 4) {
- color := "~g~"
- } else if (id == 5) {
- color := "~b~"
- } else if (id == 6) {
- color := "~y~"
- } else if (id == 7) {
- color := "~p~"
- }
- return color
- }
- HealthTextDrawTimer:
- {
- if (hpText != -1) {
- updateTextDraw(hpText, getTextDrawColor(hpTextColor) . getPlayerHealth())
- }
- armour := getPlayerArmor()
- if (armour > 1) {
- if (armourText != -1) {
- updateTextDraw(armourText, getTextDrawColor(armourTextColor) . armour)
- } else {
- armourText := createTextDraw(getTextDrawColor(armourTextColor) . TextColor . armour, armourTextPosX, armourTextPosY, 0xFFFFFFFF, hpTextFont, hpTextFontSize, hpTextFontSize * 3)
- }
- } else {
- if (armourText != -1) {
- deleteTextDraw(armourText)
- }
- }
- }
- return
- FPSTextDrawTimer:
- {
- if (fpsText != -1) {
- updateTextDraw(fpsText, getTextDrawColor(fpsTextColor) . getFPS())
- }
- }
- return
- ; -------------- ;
- ; Freunde-System ;
- ; -------------- ;
- :?:/addfreund::
- :?:/addfriend::
- {
- friendNameInput := PlayerInput("Name/ID des Freundes: ")
- if (friendNameInput == "")
- return
- friendName := getFullName(friendNameInput)
- if (friendName == "") {
- friendName := friendNameInput
- }
- if (!SQLiteDB.Query("SELECT name FROM friends WHERE name LIKE '" . friendName . "';", recordSet)) {
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- SendClientMessage(PREFIX . "Es ist ein Fehler aufgetreten! Schau bitte in die log.txt und melde den Fehler bei Martin!")
- }
- if (!recordSet.HasRows) {
- if (SQLiteDB.exec("INSERT INTO friends (name, added) VALUES ('" . friendName . "', '" . getUnixTimestamp(A_Now) . "');")) {
- SendClientMessage(PREFIX . SECCOL . friendName . " {FFFFFF}wurde in die Freundesliste aufgenommen!")
- } else {
- FileAppend, % "SQLite Error: Query - Msg: '" . SQLiteDB.ErrorMsg . "' - Code: " . SQLiteDB.ErrorCode, log.txt
- SendClientMessage(PREFIX . "Es ist ein Fehler aufgetreten! Schau bitte in die log.txt und melde den Fehler bei Martin!")
- }
- } else {
- if (recordSet.Next(row)) {
- if (SQLiteDB.exec("UPDATE friends SET name = '" . friendName . "', updated = '" . getUnixTimestamp(A_Now) . "' WHERE name = '" . friendName . "';")) {
- SendClientMessage(PREFIX . SECCOL . friendName . " {FFFFFF}wurde in der Freundesliste aktualisiert!")
- } else {
- FileAppend, % "SQLite Error: Query - Msg: '" . SQLiteDB.ErrorMsg . "' - Code: " . SQLiteDB.ErrorCode, log.txt
- SendClientMessage(PREFIX . "Es ist ein Fehler aufgetreten! Schau bitte in die log.txt und melde den Fehler bei Martin!")
- }
- }
- }
- recordSet.Free()
- }
- return
- :?:/remfreund::
- :?:/delfreund::
- :?:/remfriend::
- :?:/delfriend::
- {
- friendNameInput := PlayerInput("Name/ID des Freundes: ")
- if (friendNameInput == "")
- return
- friendName := getFullName(friendNameInput)
- if (friendName == "") {
- friendName := friendNameInput
- }
- if (SQLiteDB.exec("DELETE FROM friends WHERE name = '" . friendName . "';")) {
- SendClientMessage(PREFIX . SECCOL . friendName . " {FFFFFF}wurde aus der Freundesliste entfernt!")
- if (onlineFriends.HasKey(friendName)) {
- textLabelID := onlineFriends.Delete(friendName)
- if (textLabelID != -1) {
- deleteTextLabel(textLabelID)
- }
- }
- }
- }
- return
- :?:/dall::
- {
- Loop, 2048 {
- deleteTextLabel(A_Index - 1)
- }
- SendClientMessage(PREFIX . "Es wurden ALLE TextLabel gelöscht (auch serverseitige).")
- }
- return
- :?:/freunde::
- :?:/friends::
- {
- if (!SQLiteDB.Query("SELECT name FROM friends ORDER BY name ASC;", recordSet)) {
- SendClientMessage(PREFIX . "Es ist ein SQLite-Fehler aufgetreten! Sieh' bitte in der log.txt nach und informiere Martin im Forum.")
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return
- }
- if (recordSet.HasRows) {
- dialog := "Name`tID`tStatus"
- playerCount := 0
- while (recordSet.Next(row) >= 1) {
- playerName := row[1]
- playerID := getPlayerIdByName(playerName, true)
- dialog .= "`n" . playerName . "`t" . (playerID == -1 ? "-" : playerID) . "`t" . (playerID == -1 ? "{FF0000}offline" : "{00FF00}online")
- if (playerID != -1) {
- playerCount++
- }
- }
- Sleep, 100
- ShowDialog(DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Freunde online: " . SECCOL . playerCount, dialog, "OK")
- } else {
- SendClientMessage(PREFIX . "Du hast noch keine Freunde eingespeichert! Benutze " . SECCOL . "/addfriend")
- }
- recordSet.Free()
- }
- return
- :?:/freundelabel::
- :?:/friendslabel::
- :?:/friendlabels::
- :?:/friendslabels::
- :?:/freundlabels::
- :?:/freundelabels::
- {
- if (showFriendLabels) {
- showFriendLabels := false
- for friendName, textLabelID in onlineFriends {
- if (textLabelID != -1) {
- deleteTextLabel(textLabelID)
- onlineFriends[friendName] := -1
- }
- }
- SendClientMessage(PREFIX . "TextLabel über den Köpfen von Freunden {FF0000}deaktiviert{FFFFFF}.")
- } else {
- showFriendLabels := true
- for friendName, textLabelID in onlineFriends {
- if (textLabelID == -1) {
- playerID := getPlayerIdByName(friendName)
- if (playerID != -1) {
- textLabelID := createTextLabel("[Freund]", 0xFF0000FF, 0, 0, 0.5, 20.0, 1, playerID)
- onlineFriends[friendName] := textLabelID
- }
- }
- }
- SendClientMessage(PREFIX . "TextLabel über den Köpfen von Freunden {00FF00}aktiviert{FFFFFF}.")
- }
- }
- return
- FriendsTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- if (!SQLiteDB.Query("SELECT name FROM friends ORDER BY name ASC;", recordSet)) {
- FileAppend, % "SQLite Error: Query - Msg: '" . recordSet.ErrorMsg . "' - Code: " . recordSet.ErrorCode, log.txt
- return
- }
- if (recordSet.HasRows) {
- while (recordSet.Next(row) >= 1) {
- friendName := row[1]
- playerID := getPlayerIdByName(friendName, true)
- if (ErrorLevel || playerID == -2) {
- if (debug) {
- SendClientMessage(PREFIX . "Fehler beim Auslesen der ID von " . friendName . " (" . playerID . "): " . ErrorLevel)
- }
- continue
- }
- if (playerID != -1) {
- if (!onlineFriends.HasKey(friendName)) {
- textLabelID := -1
- if (showFriendLabels) {
- textLabelID := createTextLabel("[Freund]", 0xFF0000FF, 0, 0, 0.5, 20.0, 1, playerID)
- }
- onlineFriends[friendName] := textLabelID
- if (!firstFriendsTimerRun && friendMessages) {
- SendClientMessage(PREFIX . "Dein Freund " . SECCOL . friendName . " {FFFFFF}ist {00FF00}online {FFFFFF}gekommen.")
- }
- }
- } else {
- if (onlineFriends.HasKey(friendName)) {
- textLabelID := onlineFriends.Delete(friendName)
- if (textLabelID != -1) {
- deleteTextLabel(textLabelID)
- }
- if (!firstFriendsTimerRun && friendMessages) {
- SendClientMessage(PREFIX . "Dein Freund " . SECCOL . friendName . " {FFFFFF}ist {FF0000}offline {FFFFFF}gegangen.")
- }
- }
- }
- }
- }
- recordSet.Free()
- if (firstFriendsTimerRun) {
- firstFriendsTimerRun := false
- }
- }
- return
- ; ------------------ ;
- ; Namechange-Systeme ;
- ; ------------------ ;
- :?:/whois::
- {
- newName := PlayerInput("Name: ")
- newNameFull := getFullName(newName)
- if (newNameFull != "")
- newName := newNameFull
- result := UrlDownloadToVar("https://comniemeer.de/api/namechange.php?name=" . newName, true)
- if (result == "ERROR_CONNECTION")
- return
- try {
- data := JSON.Load(result)
- } catch {
- SendClientMessage(PREFIX . "{FF0000}Es ist ein unbekannter Fehler aufgetreten!")
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden des alten Namen ist ein Fehler aufgetreten: %result%`n, log.txt
- return
- }
- if (data["error"] != "") {
- SendClientMessage(PREFIX . "{FF0000}" . data["error"])
- return
- }
- if (data["namechanges"].Length() == 0) {
- SendClientMessage(PREFIX . "Es wurden keine Namensänderungen zu dem angegebenen Spieler gefunden!")
- return
- }
- for i, namechange in data["namechanges"] {
- if (InStr(newName, namechange["old_name"])) {
- newName := namechange["old_name"]
- break
- } else if (InStr(newName, namechange["new_name"])) {
- newName := namechange["new_name"]
- break
- }
- }
- SendClientMessage(PREFIX . "Namechange-Verlauf von " . SECCOL . newName . "{FFFFFF}:")
- for i, namechange in data["namechanges"] {
- SendClientMessage(PREFIX . SECCOL . namechange["old_name"] . " {FFFFFF}-> " . SECCOL . namechange["new_name"] . " {FFFFFF}(" . namechange["date"] . ")")
- }
- }
- return
- :?:/namechanges::
- {
- if (showNamechanges) {
- SetTimer, NamechangeTimer, Off
- showNamechanges := false
- toRemove := []
- for playerName, textLabelID in onlinePlayers {
- if (textLabelID != -1) {
- deleteTextLabel(textLabelID)
- toRemove.Push(playerName)
- }
- }
- for i, playerName in toRemove {
- onlinePlayers.Delete(playerName)
- }
- SendClientMessage(PREFIX . "Namechange-Informationen über den Köpfen der Spieler {FF0000}deaktiviert{FFFFFF}.")
- } else {
- GoSub, NamechangeTimer
- SetTimer, NamechangeTimer, 5000
- showNamechanges := true
- SendClientMessage(PREFIX . "Namechange-Informationen über den Köpfen der Spieler {00FF00}aktiviert{FFFFFF}.")
- }
- }
- return
- NamechangeTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- toRemove := []
- for playerName, textLabelID in onlinePlayers {
- playerID := getPlayerIdByName(playerName, true)
- if (playerID == -1) {
- if (textLabelID != -1) {
- deleteTextLabel(textLabelID)
- }
- toRemove.Push(playerName)
- }
- }
- for i, playerName in toRemove {
- onlinePlayers.Delete(playerName)
- }
- players := getStreamedInPlayersInfo()
- for i, o in players {
- playerID := o.ID
- playerName := getPlayerNameByID(playerID)
- if (playerName != "") {
- if (!onlinePlayers.HasKey(playerName)) {
- result := UrlDownloadToVar("https://comniemeer.de/api/namechange.php?name=" . playerName)
- if (result == "ERROR_CONNECTION")
- continue
- try {
- data := JSON.Load(result)
- } catch {
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden der Namechange-History ist ein Fehler aufgetreten: %result%`n, log.txt
- continue
- }
- if (data["error"] != "") {
- continue
- }
- textLabelID := -1
- if (data["namechanges"].Length() == 0) {
- onlinePlayers[playerName] := textLabelID
- continue
- }
- namechanges := ""
- nLines := 0
- for i, namechange in data["namechanges"] {
- namechanges .= SECCOL . namechange["old_name"] . " {FFFFFF}-> " . SECCOL . namechange["new_name"] . "`n"
- nLines++
- }
- textLabelID := -1
- if (namechanges != "") {
- textLabelID := createTextLabel(namechanges, 0xFFFFFFFF, 0, 0, 0.65 + (nLines * 0.05), 20.0, 1, playerID)
- }
- onlinePlayers[playerName] := textLabelID
- }
- }
- }
- }
- return
- ; ----------------------- ;
- ; Ende Namechange-Systeme ;
- ; ----------------------- ;
- :?:/tankstelle::
- :?:/tankstellen::
- {
- coords := getCoordinates()
- result := URLDownloadToVar("https://comniemeer.de/api/tankstellen.php?x=" . coords[1] . "&y=" . coords[2] . "&z=" . coords[3])
- try {
- data := JSON.Load(result)
- } catch {
- SendClientMessage(PREFIX . "{FF0000}Es ist ein unbekannter Fehler aufgetreten!")
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden der Tankstellen ist ein Fehler aufgetreten: %result%`n, log.txt
- return
- }
- if (data["error"]) {
- SendClientMessage(PREFIX . "{FF0000}" . data["error"])
- } else {
- gasstations := data["gasstations"]
- dialog := "Tankstelle`tBesitzer`tTankpreis & Entfernung`tZuletzt geupdated"
- for i, entry in gasstations {
- name := entry["name"]
- owner := entry["owner"]
- price := entry["price"]
- x := entry["x"]
- y := entry["y"]
- z := entry["z"]
- distance := entry["distance"]
- lastupdated := entry["lastupdated"]
- updatedby := entry["updatedby"]
- if (price <= 20) {
- price := "{00FF00}" . price
- } else if (price >= 50) {
- price := "{FF0000}" . price
- } else {
- price := "{FFFF00}" . price
- }
- dialog .= "`n" . SECCOL . name . "`t" . owner . "`t" . price . "$ {FFFFFF}- " . FormatNumber(distance) . " m`t" . SECCOL . lastupdated . " {FFFFFF}(" . updatedby . ")"
- }
- showDialog(DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Übersicht der Tankstellen", dialog, "Schließen")
- }
- }
- return
- GasstationsTimer:
- {
- IfWinNotActive, GTA:SA:MP
- return
- if (!updateTextLabelData()) {
- return
- }
- coords := getCoordinates()
- data := []
- data["name"] := getUsername()
- data["gasstations"] := []
- for i, o in oTextLabelData {
- if (o.PLAYERID == 65535 && o.VEHICLEID == 65535) {
- if (RegExMatch(o.TEXT, "(.+)\n\nBesitzer: (.+)\nTeilhaber: (\S+)\nLiterpreis: (\d+)\$\nBenötigte Liter: (\d+)\nBezugspreis: (\d+)\$\n\nFahrzeug mit \/fill betanken", label_)) {
- gasstation := []
- gasstation["owner"] := StrReplace(StrReplace(label_2, "]", "%5D"), "[", "%5B")
- gasstation["partner"] := StrReplace(StrReplace(label_3, "]", "%5D"), "[", "%5B")
- gasstation["description"] := StrReplace(StrReplace(StrReplace(label_1, "&", "%26"), "]", "%5D"), "[", "%5B")
- gasstation["price"] := label_4
- gasstation["x"] := o.XPOS
- gasstation["y"] := o.YPOS
- gasstation["z"] := o.ZPOS
- data["gasstations"].Push(gasstation)
- }
- }
- }
- if (data["gasstations"].Length() > 0) {
- jsonData := JSON.Dump(data)
- result := URLDownloadToVar("https://comniemeer.de/api/updatetankstelle.php?data=" . jsonData)
- Sleep, 30000
- }
- }
- return
- ; -------------------- ;
- ; Store-Rob Funktionen ;
- ; -------------------- ;
- RobTimer:
- {
- if (storerobTime == 0) {
- SetTimer, RobTimer, Off
- } else if ((Mod(storerobTime, 30) == 0) || (storerobTime <= 15 && Mod(storerobTime, 5) == 0)) {
- SendClientMessage(PREFIX . "Der Store-Rob dauert noch " . SECCOL . storerobTime . " Sekunden{FFFFFF}!")
- }
- storerobTime--
- }
- return
- robstoreLabel:
- {
- if (IsInChat())
- return
- if (getPlayerInteriorId() == 0) {
- loadStores()
- showNearestStore()
- } else {
- SendChat("/robstore")
- }
- }
- return
- storesLabel:
- {
- if (IsInChat())
- return
- sortByString := ""
- if (sortStoresBy == 1) {
- sortByString := ""
- } else if (sortStoresBy == 2) {
- sortByString := "type"
- } else if (sortStoresBy == 3) {
- sortByString := "distance"
- } else if (sortStoresBy == 4) {
- sortByString := "status"
- } else {
- SendClientMessage(PREFIX . "Ungültige Sortierung! Verwende Standardsortierung.")
- }
- coords := getCoordinates()
- result := URLDownloadToVar(robBaseURL . "api/loadallstores.php?x=" . coords[1] . "&y=" . coords[2] . "&z=" . coords[3] . "&sort=" . sortByString)
- allStores := JSON.Load(result)
- if (allStores["error"]) {
- SendClientMessage(PREFIX . "Beim Laden der Stores ist ein Fehler aufgetreten!")
- } else {
- dialog := "Typ`tGK`tOrt und Entfernung`tStatus`n"
- for i, entry in allStores["stores"] {
- store := entry["store"]
- gk := entry["gk"]
- x := entry["x"]
- y := entry["y"]
- z := entry["z"]
- status := entry["status"]
- distance := entry["distance"]
- dialog .= store . "`t" . gk . "`t" . calculateZone(x, y, z) . " (" . distance . "m)`t" . status
- if (i < allStores["stores"].Length())
- dialog .= "`n"
- }
- showDialog(DIALOG_STYLE_TABLIST_HEADERS, "Übersicht der Stores", dialog, "Schließen")
- }
- }
- return
- ~LButton::
- {
- Sleep, 200
- if (isDialogOpen()) {
- caption := getDialogCaption()
- if (RegExMatch(caption, "Übersicht der Stores")) {
- line := getDialogLine(getDialogIndex())
- if (RegExMatch(line, "(\S+)`t(\S+)`t(.+)`t(.+)", line_)) {
- type := line_1
- gk := line_2
- for index, entry in allStores["stores"] {
- if (entry["store"] == type && entry["gk"] == gk) {
- if (RegExMatch(type, "{(\S+)}(\S+)", type_)) {
- type := type_2
- }
- x := entry["x"]
- y := entry["y"]
- z := entry["z"]
- playerCoords := getCoordinates()
- distance := Round(getDistanceToPoint(x, y, z, playerCoords[1], playerCoords[2], playerCoords[3]))
- setCheckpoint(x, y, z, 3)
- SendClientMessage(PREFIX . "Store " . SECCOL . gk . " {FFFFFF}(" . type . ") in " . SECCOL . calculateZone(x, y, z) . " {FFFFFF}(" . SECCOL . distance . "m {FFFFFF}entfernt)")
- }
- }
- }
- } else if (RegExMatch(caption, "Verfügbare Aufträge")) {
- line := getDialogLine(getDialogIndex())
- if (RegExMatch(line, "(\d+)`t(.+) \((\S+)\)`t(.+)`t(.+)", line_)) {
- SendChat("/delivery " . line_1)
- }
- } else if (RegExMatch(caption, "Übersicht der Tankstellen")) {
- line := getDialogLine(getDialogIndex())
- if (RegExMatch(line, "{\S+}(.+)`t(.+)`t{\S+}(\d+)\$ {\S+}- \S+ m`t{\S+}.+ {\S+}\(\S+\)", line_)) {
- name := line_1
- owner := line_2
- for index, entry in gasstations {
- if (entry["name"] == name && entry["owner"] == owner) {
- x := entry["x"]
- y := entry["y"]
- z := entry["z"]
- playerCoords := getCoordinates()
- distance := Round(getDistanceToPoint(x, y, z, playerCoords[1], playerCoords[2], playerCoords[3]))
- setCheckpoint(x, y, z, 3)
- SendClientMessage(PREFIX . "Tankstelle " . SECCOL . name . " {FFFFFF}(" . SECCOL . entry["price"] . "${FFFFFF}) in " . SECCOL . FormatNumber(distance) . " m {FFFFFF}Entfernung.")
- }
- }
- }
- }
- }
- }
- return
- :?:/showstores::
- {
- loadStores()
- showStores()
- }
- return
- loadStores() {
- coords := getCoordinates()
- result := URLDownloadToVar(robBaseURL . "api/loadstores.php?x=" . coords[1] . "&y=" . coords[2] . "&z=" . coords[3])
- try {
- stores := JSON.Load(result)
- } catch {
- SendClientMessage(PREFIX . "{FF0000}Es ist ein unbekannter Fehler aufgetreten!")
- FormatTime, time, , dd.MM.yyyy HH:mm:ss
- FileAppend, [%time%] Beim Laden des showGK ist ein Fehler aufgetreten: %result%`n, log.txt
- return
- }
- updated := true
- }
- showStores() {
- if (!updated) {
- SendClientMessage(PREFIX . "Stores müssen erst geladen werden!")
- } else {
- if (stores["error"]) {
- SendClientMessage(PREFIX . "Beim Laden der Stores ist ein Fehler aufgetreten!")
- } else {
- storesCount := stores["stores"].Length()
- if (storesCount == 0) {
- SendClientMessage(PREFIX . "Es sind keine Stores zum Ausrauben vorhanden!")
- } else {
- page := 1
- pages := Ceil(storesCount / 10)
- if (storesCount > 10) {
- pageInput := PlayerInput("Seite (Standard 1, max. " . pages . "): ")
- if (pageInput != "") {
- if pageInput is not number
- {
- SendClientMessage(PREFIX . "Bitte eine Zahl eingeben!")
- return
- }
- if (pageInput > pages) {
- SendClientMessage(PREFIX . "Maximale Seitenzahl: " . SECCOL . pages)
- return
- } else {
- page := pageInput
- }
- }
- }
- for i, entry in stores["stores"] {
- x := entry["x"]
- y := entry["y"]
- z := entry["z"]
- distance := entry["distance"]
- if (i > page * 10 - 10 && i <= page * 10) {
- SendClientMessage(PREFIX . "ID: " . SECCOL . i . " {FFFFFF}- In: " . SECCOL . calculateZone(x, y, z) . ", " . calculateCity(x, y, z) . " {FFFFFF}- " . SECCOL . distance . "m {FFFFFF}entfernt")
- }
- }
- }
- }
- }
- }
- showNearestStore() {
- if (!updated) {
- SendClientMessage(PREFIX . "Stores müssen erst geladen werden!")
- return
- }
- if (stores["stores"].Length() != 0) {
- store := stores["stores"][1]
- type := store["store"]
- gk := store["gk"]
- x := store["x"]
- y := store["y"]
- z := store["z"]
- distance := store["distance"]
- setCheckpoint(x, y, z, 3)
- SendClientMessage(PREFIX . "Store " . SECCOL . gk . " {FFFFFF}(" . type . ") in " . SECCOL . calculateZone(x, y, z) . " {FFFFFF}(" . SECCOL . distance . "m {FFFFFF}entfernt) verfügbar.")
- } else {
- SendClientMessage(PREFIX . "Keine freien Stores zum Ausrauben verfügbar!")
- }
- }
- ; ------------------------- ;
- ; Ende Store-Rob Funktionen ;
- ; ------------------------- ;
- pauseLabel:
- Suspend, permit
- Suspend
- if (A_IsSuspended) {
- SendClientMessage(PREFIX . "Keybinder & Timer {FF0000}pausiert{FFFFFF}.")
- SetTimer, ChatTimer, Off
- SetTimer, TankTimer, Off
- SetTimer, FillCustoms, Off
- SetTimer, LottoTimer, Off
- SetTimer, TempoTimer, Off
- SetTimer, KillTimer, Off
- SetTimer, SearchEnemyTimer, Off
- SetTimer, FriendsTimer, Off
- SetTimer, GasstationsTimer, Off
- } else {
- SendClientMessage(PREFIX . "Keybinder & Timer {00FF00}aktiviert{FFFFFF}.")
- SetTimer, ChatTimer, 100
- SetTimer, TankTimer, 100
- SetTimer, FillCustoms, 500
- SetTimer, LottoTimer, 1000
- SetTimer, TempoTimer, 100
- SetTimer, KillTimer, 100
- SetTimer, SearchEnemyTimer, 2500
- SetTimer, FriendsTimer, 1000
- SetTimer, GasstationsTimer, 500
- }
- return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement