Die theoretische Lösung für das "Der Hotkey wird nicht gesendet, wenn der Chat offen ist"-Problem ist eigentlich relativ simpel.
Man sendet einfach die gedrückte Taste, wenn der Chat offen ist und fertig.
Wenn man das macht, denkt Autohotkey aber, dass die Taste erneut gedrückt worden ist und so wird eine Endlosschleife entstehen..
Sieht bei mir so aus:
4::
if(IsChatOpen())
{
SendInput {%A_ThisHotkey%}
return
}
addchatmessage("test")
return
Bisher habe ich keine Lösung für das Problem gefunden.
Bei deinem anderen Fehler kann ich dir aber helfen.
Wie der Fehler selbst schon aussagt, werden zu viele Parameter an die Funktion gesendet.
Wenn eine Funktion z.B. so aussieht:
SendMessageToChat(string, color){
CoolFunction(color, string)
}
Werden zum Aufruf der Funktion Parameter verlangt, die durch ein Kommata getrennt sind.
Die Funktion, die du aufrufst, verlangt keinen Parameter:
GetPlayerHealth()
{
global GetPlayerHealth_func
return DllCall(GetPlayerHealth_func)
}
Bei der Funktion ist wichtig, wie du den Wert erhälst. Bei einigen API's ist es so, dass man eine Variable in die Funktion einsetzen muss, die dann die von der Funktion ausgegebene Variable übergibt.
Bei der SAMP-API ist es aber so, dass die Lebenspunkte dort "wiedergegeben" werden, wo du die Funktion aufrufst.
So werden die Lebenspunkte auch direkt in den Chat geschrieben, wenn du die Funktion so einsetzt:
SendChat("Meine HP: " GetPlayerHealth())
MfG