Hab das alles mal etwas vereinfachter umgeschrieben. Das was du mit TextSetPos und TextSetColor machst, wäre nur nötig, wenn du bei einem bereits bestehenden TextCreate-String etwas ändern würdest. Da du aber ein paar Zeilen weiter oben die Funktion TextCreate aufrufst und dort alles definieren kannst, ist das eigentlich nur verschwendeter Platz und unnötig das doppelt zu definieren.
SendMode, Input
#Warn
#UseHook
#NoEnv
#SingleInstance, force
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#include api.ahk
:?:/overlayoff::
Suspend Permit
DestroyAllVisual() ;Schalltet alle Overlays ab
SetTimer, Alles, off
SetTimer, hpoverlay, off
return
:?:/overlay::
Suspend Permit
;;;;;;;;;;;;;;;;;;;;;;Orts anzeige;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
zone := TextCreate("Arial", 15, false, false, 650, 430, 0xFFFFFFFF, "", true, true) ;Schrifftart
;;;;;;;;;;;;;;;;;;;;;HP Overlay;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
hp := TextCreate("Arial", 9, false, false, 713, 90, 0xFFFFFFFF, "", true, true) ;Das selbe, nur andere Posi und Variable
Settimer, Alles, 150 ;Die Zeit der Abfragen
SetTimer, hpoverlay, 20
return
hpoverlay:
#IfWinActive, GTA:SA:MP
{
TextSetString(hp, GetPlayerHealth())
}
return
Alles:
#IfWinActive, GTA:SA:MP
{
GetZoneName(Zone)
TextSetString(zone, Zone)
}
return
Alles anzeigen
Wenn du das Script jetzt startest und im Chat /overlay eingibst, sollte das Overlay in der Theorie angezeigt werden.
MfG