Beiträge von Renz

    Die bessere Variante ist meiner Meinung nach, einfach auf GetChatLine zu verzichten und mit FileOpen und dem File Object Interface zu arbeiten. Dadurch liest man 1. jede Zeile nur einmal aus, 2. liest wirklich jede Nachricht aus, auch wenn viele auf einmal geschrieben werden und 3. spart Performance, da nicht jedes Mal das gesamte Chatlog ausgelesen wird.

    Ich benutze immer diese Funktion, da ich es genau so wie du sehe,
    Bin mit der immer besser gefahren als mit GetChatline, vorallem weil man Zeilen Bereiche überwachen kann...



    SetTimer, AutoTogHi, 1000

    PHP
    AutoTogHi:
    {
        chat := GetChatLine(0)
        if(InStr(chat, "[Spieler]Der Spieler"
        sleep, 5000
        SendChat("Hallo.")
    }
    return

    Hab es nicht gestestet, müsste aber so gehen :D

    Da is genau der selbe fehler drin wie vom Thread ersteller + GetChatline() falsch angewendet.... :dash:

    Ursache deines Fehlers:


    Settimer, AutoTogHi, 1000 ; Beispiel[tt][/tt]
    Das Label AutoTogHi wird jede Sekunde (1000 Millisekunden) aufgerufen...
    GetChatLine() liest somit alle X Sekunden den SAMP Chatlog aus,
    heisst sollange sich Zeile 0 (Definiert als Parameter) nicht ändert, wird er immer wieder die If() bedingung ausführen.
    Nach einem If() muss immer ein Block {} folgen, wenn mehr als 1 Zeile Code folgt.


    Falsch:


    Dies bewirkt, Ist in Chatline1, "[NACHRICHT] Der Spieler" zufinden... ruht das Skript 500 Millisekunden da es sich direkt unter if(InStr(Chatline1, "[NACHRICHT] Der Spieler")) befindet
    und gibt anschliessend die NAchricht aus SendChat("/f Hallo c:") egal ob die If() bedingung erfüllt wurde oder nicht.


    Richtig:


    So wird der ganze Block {} ausgeführt sollte die If() bedingung wahr sein...


    Kleiner Tip:
    Speichere dir die Letzte ausgelesene Zeile als Variable zwischen und frage am anfang ab ob sie gleich == der letzten aktuell gelesenen Chatlog zeile ist.
    Sollte sie gleich sein, kannst du dir den ganzen durchlauf des Labels sparen... Kann bei grossen Keybindern sehr ressourcenschonend sein, jenachdem wie lang der "Baum" wird^^


    Ps.: Da war der Madd92 wohl schneller!

    Kurz und knapp ein paar Wegweiser!


    • Einen Timer erstellen falls noch kein Globaler oder Spielerbezogener Timer existiert
    • Aus der SAMP.ahk die Funktion GetPlayerArmor() benutzen
    • in dem Timer Checken ob GetPlayerArmor() kleiner als 49 ist...
      falls ja, Sleep timer setzen, dannach Sendchat("/Befehl")
    • Bibedibabedibu Fertig!!!

    Wie mache es es, das beide Guis geladen werden? danke

    Wenn du mit mehreren Gui´s arbeitest weise ihnen eine ID zu, damit kannst du besser arbeiten, bzw auch 2 gleichzeitig anzeigen lassen etc...
    Gui ID: Typ, Optionen, Text


    Das Problem war du hattest unter... FileDelete, DeleteOldKeybinder.ini

    Code
    } else {
    	FileDelete, %OldKeybinder%
    	FileDelete, Version.ini
    	FileDelete, DeleteOldKeybinder.ini
           ;Return <--- 
    }

    Das muss weg, da das Script sonst hier Stoppt wenn "Kein" Update verfügbar ist.
    Ich habe es nicht getestet da der link zur Version.ini einen Fehler anzeigt 404!
    Aber so sollte es funktionieren


    Und Labels wie ...


    Code
    Update:
    filename = News-Keybinder_v%n_version%.exe
    UrlDownloadToFile, %dlink%, %filename%
    oldfilename = News-Keybinder_v%version%.exe
    IniWrite, %oldfilename%, DeleteOldKeybinder.ini, OldKeybinder, Name
    Run, %filename%
    ExitApp
    return

    ...solltest du immer unter Gui´s setzen, Da diese bei Laden des Scripts fehler verursachen können...

    Nein, am Radius sollte es nicht liegen...
    Schraub ihn doch einfach mal hoch auf 15 oder so, und guckmal ob du dann eine Chatausgabe bekommst...
    Ich vermute das dass Label des Timers nicht aufgerufen wird... Warum auch immer ^^


    btw..
    Wo steht Settimer, LABELNAME, 1000? Ganz oben im Skript? Bzw unter den Includes?

    Leider klappt das nicht so wie ich es mir erhofft hatte. :(


    Ich habe es nun im Keybinder drinne, aber wenn ich in die Garage fahre passiert nix. :(

    Hast du das Skript als Admin gestartet?


    Versuch es mal so....
    Was sagen die Chatausgaben?

    IsPlayerInRangeOfPoint2D(XPos,YPos,Radius)
    Du hast aber X,Y,Z,Radius eingetragen als Parameter, und Settimer, Mats1, 1000
    Das Label das vom Timer aufgerufen werden soll ist Mats1 aber du nennst es Mats:
    Eigentlich solltest du eine Fehlermeldung beim Start erhalten... Label nicht gefunden wurde bla bla bla oO

    Code
    SetTimer, LABELNAME, 1000
    
    
    LABELNAME:
    if(IsPlayerInRangeOfPoint2D(1203.9652,266.8083, 5.0))
    {
    	SendChat("/startjob")
    	AddChatMessage("{FFFFFF}Du hast die Materialien aufgeladen, fahre zum Checkpoint auf der Minimap.")
    }
    return


    Das wirst du nicht benötigen (Siehe Spoiler "Veraltet") wenn du die SAMP API benutzt, das macht das selbe wie IsInChat() oder IsChatOpen()
    Müsstest mal gucken wie die Funktion bei dir in der Api heisst, aber sollte eine der beiden sein :3




    Hier ein kleines Beispiel mit IsInChat()




    Bezüglich deines Suspend Hotkeys, Setze oben ein Suspend Permit unter den Hotkey/Hotstring, das gibt den Hotkey/Hotstring frei auch wenn das Skript Pausiert (Suspended) ist...
    Setzte niemals ein Suspend off ans ende eines Hotkey/Hotstring da dies den Pause-Modus, falls Aktiv, des Binder beenden würde und es so zu ungewollten Aktionen kommt^^


    Code
    F12::
    Suspend permit
    if(A_IsSuspended)
    	Suspend off
    else
    	Suspend on
    AddChatMessage("{FFFF00}Matsbinder:{FFFFFF} Der Keybinder ist nun {00FF00}" (A_IsSuspended ? "InAktiv{FFFFFF}!" : "Aktiv{FFFFFF}!"))
    return



    Gruß

    Guten Tag, Liebe Mitfische!


    Na, auf der Suche nach einem Keybinder für deinen Server?
    Oder ein anderes Programm/Tool um dir die Arbeit mit Pawn etc. zu erleichtern?
    Dann bist du hier richtig! Melde dich bei mir und ich fertige deinen Wunsch an.
    Egal ob Admin/Support Binder, MYSQL Verwaltungs Tool oder eigener MediaPlayer, alles ist möglich!
    Ich besitze nun mehrere Jahre Coding Erfahrung im Bereich Autohotkey...
    Mein Codingstil ist sauber, geordnet, bei bedarf Kommentiert für Lernzwecke.
    Kundenkontakt ist das A&O, der ständige Kontakt ist ausschlaggebend für ein sauberes Ergebnis.
    Damit fahre ich die letzten Jahre ziemlich gut und werde es für zukünftige Projekte beibehalten.


    Ich schrieb schon diverse vollautomatische Keybinder für Server wie RGN*, LYD**, DSZ**, GCT*,Life of SA(?)*
    https://github.com/RenzOne/SAMP-Keybinder-Scripts <- RGN/GCT Sourcecodes
    Die Sourcecodes der anderen Server kann ich nicht veröffentlichen da ich die Rechte an den Codes mit verkaufe, somit besitze ich kein Recht diese zu Veröffentlichen!



    Bei Fragen zu evtl. Aufträgen schreib mir bitte eine PN oder Antwortet hier im Thread.
    Ich werde euch möglichst Zeitnah kontaktieren bzw. auf euren Post antworten.
    Die Bezahlung pro Auftrag ist unterschiedlich, da man nie abwiegen kann wieviel Zeit das Projekt in anspruch nimmt.
    Live-Coding ist genauso möglich damit der Kunde sich von der Arbeit überzeugen kann.


    Am liebsten sind mir Kunden die "Wissen was sie wollen!"
    Sollte kein Konzept vorhanden sein, Kein Problem!
    Ich helfe gerne und Arbeite mit dir das Konzept aus.


    Vorab! Bezahlungen über 20€ werden nur per Mittelsmann abgewickelt!


    MFG
    K-9 | Renz


    Legende:
    * = Eigenbedarf
    ** = Kundenwusch


    Ich teile mein wissen auch gerne, solltest du Probleme mit einem deiner Codes haben... Schreib mich an per PN!

    Sry für den Push nach über nen Monat...
    Hatte sowas mal fertig gemacht, bin grad auf den Thread gestoßen...
    Beispiel:

    Code
    Bread := GetBreadfishNotifications()
    Msgbox % "Du hast " Bread.Benachrichtigungen " unglesene Antworten.`nDu hast " Bread.Konversationen " ungelesene Konversationen."


    Funktion

    @crxmby.

    Das ist nicht korrekt, Der Chat hat ein Limit von 144 Cells - in PAWN sind 144 Cells = 512 Bytes und ein Zeichen entspricht 4 Bytes. Also kommt man etwa auf ein Limit von 144 Zeichen.Die Texteingabe hat ein Limit von 128 Cell, also etwa 128 Zeichen.


    Was die Rechnerei mit dem Timestamp angeht, ich bin mir nicht wirklich sicher, ob das überhaupt mit zu den 144 Zeichen gerechnet wird.
    Tendiere aber eher zu nein - würde es an deiner Stelle einfach mal ausprobieren.

    128 = Max Zeichen bei Texteingabe alles was darüber geht wird als ERROR = Leerer String zurückgegeben
    Der Timestamp ist lokal, er wird daher nicht mit einberechnet in die Eingabegröße von 128 Zeichen.


    Das einzige was ich noch nicht getestet habe ist das mit dem Prefix:Chatausgabe
    Wobei ich denke das man es mit einberechnen muss...
    Also MaxChatSize - PlayernameSize - (Leerzeichen&Doppelpunkte etc)
    werde das gleich mal auch mal checken...


    Wenn wir beim AHK bleiben, steht dir eig alles offen?

    Nein du bist auch auf das Limit beschränkt^^ Kannst ja nich 6L Wasser in nen 5L Eimer füllen :D
    Du kannst es natürlich Lokal machen, ja dann sieht das ein wenig anders aus, aber dann nütz es einem nichts für zb. "Normale Chats"

    Ja genau, aber ein Pointer wird doch auf keinen String direkt weisen können oder?

    Pointer direkt nicht, aber die verweisen doch auf die Adresse, worin ein String enthalten sein kann, oder irre ich mich da?
    Habe noch nie soviel mit Pointern gearbeitet...


    Zu meiner eigentlichen Frage...
    Per AHK mit SendChat kann ich 128 Verwenden, heisst PreFix+TimeStamp wird intern von SAMP abgezogen um auf das String Limit von 128 zukommen...


    Hier mal die Funktion falls sie jemand braucht...
    Damit kann man String die weit über 128 Zeichen haben, in kleine 128er Häppchen teilen und im Chat ausgeben lassen....
    Beispiel:


    Funktion

    Ich habe mal eben ne Frage, zu dem Limit, der Länge, eines Strings im Chat...
    Das Maximale Limit ist ja 128... Sooo


    Gehen davon schon die länge des Timestamps weg? [18:08:56] = 10 Zeichen 
    Hat man also statt 128 nur 118 Zellen zur verfügung oder sind die schon abgezogen?


    Und wie sieht das mit dem Serverseitig gescripteten aus,
    Wenn man im Chat etwas schreibt, auf den meisten Servern, steht da ja K-9 sagt: Bla Bla Bla also PreFix:Chatausgabe
    Muss ich das PreFix  auch noch abziehen von der Maximalen Stringlänge?


    Also zb.
    MaxChatStringSize - PreFix - TimstampSize
    128 - 9 - 10 = 109
    Hätte ich dann sozusagen 109 Zellen des Strings übrig den ich frei befüllen kann?


    Sry für die Noobfrage :D Aber hab dazu grad nix gefunden^^
    Hoffentlich ist es verständlich, finde es selbst ein wenig verwirrend...

    Guten Morgen...


    Ich bin gerade mitten im vertragswechsel meines Internetanbieters, und die haben mir heute Nacht das inet abgestellt, Dienstag soll der Unitymedia Techniker kommen um alles zu installieren...


    Zu meiner Frage...
    Hat jemand Unitymedia, und könnte mir evtl übers wochenende die Unitymedia Wifispot Daten zukommen lassen? Soweit ich weiß haben Hotspot Daten nix mit den richtigen Verbraucherdaten zutun, man kann also kein unfug oder so treiben...
    Würde auch bei bedarf nen 5er psc oder Paypal bezahlen, oder iwas Coden für nen Keybinder etc...