[SAMMELTHREAD] Kleine Scripting Fragen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Moin!


    Mein Server nimmt das OnUserRegister nicht an.



    Eigenartigerweise sehe ich den string, jedoch zeigt er dort wo die Farbe gesetztist eine andere Farbe an. Ich hab das Callback nur einmal im Script. Was ist da falsch?


    MfG


    Edit: Die Funktion wird jetztin der Console geprintet, jedoch wird ingameimmer noch die falsche Farbe angezeigt.


    Edit2: Fehler gefunden, aber der Spawnbutton wird noch angezeigt bei der Registration. hab mal die Zeile TogglePlayerSpectating im Code eingefügt, siehe oben. Stimmt das so?


    Edit3: Jetzt wird bei der Registrierung der Button nur kurz angezeigt weil ich vorhi de chat löschen lasse aber der Chat soll ganz weg sen mit dem Button, was muss ich da machen? Wenn ichbei der Registrierung das Passwort eingebe spawne ich nicht, sondern fliege durch die Luft, was kan da falsch sein?


    So fliege ich durch die Luft: https://prnt.sc/p2sj2t


    Edit4: Alles andere hat sich erledigt, nur folgendes pasiert immer noch:


    Ich joine auf den Server un dann kommt diese Connectet to Meldungund der Spawn Button ganz kurz und dann wird der Chat geleert, und dann komt der Dialog für Register oder Login ohne Spawn Button. Wie bekomme ich diese Meldung und den Button weg?


    Die Funktion ChatLoeschen steht bei OnPlayerConnect und bei OnPlayerRequestClass.


  • Moin, mir ist gerade was aufgefallen.
    Ich habe versucht mit der Funktion [wiki]GetPlayerTargetActor[/wiki] zu arbeiten & sie arbeitet aber mit dem grünen Kegel über dem Kopf wenn man jemanden anvisiert.
    Mein Helfer, hat warum auch immer, generell keinen grünen Kegel über seinem Kopf.. die Funktion greift nicht bei ihm.
    Ich arbeite nun mit [wiki]GetPlayerCameraTargetActor[/wiki] und ja klar, das funktioniert, aber die Range beim Zielen ist um einiges größer, diese Funktion erfragt ja auch ob man ihn anschaut, nicht ob man ihn anvisiert.
    Ist das jemanden schon einmal aufgefallen und gibt es dafür einen Fix/andere Methoden?
    Es geht um ein Actor Rob Sytem, drauf zielen heißt, der Raub startet.

  • ich habe mich gerade ungelesen und anschließend soll die Funktion GetPlayerTargetActor(); unter folgendem callback nicht funktionieren:
    OnPlayerUpdate,
    OnPlayerKeyStateChange(Ausnahme du nutzt ein Timer da es sonst rum buggen soll wenn man die Taste gedrückt hält)


    Ps: ich habe dies nicht ausprobiert sondern im Englischen Samp Forum gelesen.



    //edit was mich wundert in der SAMP wiki wird das Beispiel auch im callback OnPlayerUpdate genutzt.

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • Nur, für leute die keinen Kegel haben, funktioniert es nicht.

    Ich frage mich eher, wieso dies der Fall ist :huh:


    Hmmmm....


    Hast du mal probiert, den Actor zu löschen und wieder neu zu erstellen während du davor stehst (also schon im Interior bist)?


    Ändert sich da was?


    Ich könnte mir höchstens vorstellen, da diese Clientseitig gestreamt werden, dass da was buggt mit der syncro xD


    Evtl also mal neu spawnen lassen oder sowas...denn generell sollte das ja schon klappen :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich werde es morgen, wenn der andere Dude wieder da ist, mal ausprobieren.
    Mal eine andere Frage, ich habe in einem anderen Skript etwas entdeckt und frage mich, inwiefern das Sinnvoll sein könnte.
    Meine aktuelle Vermutung sagt aus, dass man sich in manchen Situationen, die if Abfrage dann sparen kann.


    Würde mit meinem Code, erlaubt auf 532 gesetzt werden und nee gar nicht besetzt weil es auf 0 steht?



    //funktion nutzen
    TestFunktion(532, 0);


    //funktion
    stock TestFunktion(genau, niemals)
    {
    new id = 999;
    testArray[id][Erlaubt] =!! genau;
    testArray[id][Nee] =!! niemals;
    return 1;
    }

  • erlaubt auf 532 gesetzt werden und nee gar nicht besetzt weil es auf 0 steht?

    Dieses !! verwandelt eine Zahl einfach nur in einen boolschen Typ.


    Alle Zahlen außer 0 werden zu true und die 0 wird zu false.


    Ergo wird 532 (sowie jede andere Zahl auch) zu true (bzw 1) und die 0 wird zu false (bzw bleibt 0).

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von Fernando_Jizuya ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Hat sich erledigt ().
  • MYSQL R41-4, wenn ich ein Filterscript schreibe und in dieses Script SQL einbinde, muss ich die MYSQL Option auch auf multiple_connections stellen? Wenn ja, beim Hauptgamemode oder beim FS.. oder bei beiden?


    Nochmal,


    2 SQL Verbindungen zu verschiedenen Datenbanken, eine von Filterskript aus, eine von Hauptgamemode.

  • Mein Helfer, hat warum auch immer, generell keinen grünen Kegel über seinem Kopf.. die Funktion greift nicht bei ihm.

    Warum auch immer?
    Naja dein Helfer verwendet vermutlich Modifikationen, oft bekannt als "Anti Aim" was deine Surfing Vehicle ID auf ein Fahrzeug in der Umgebung setzt, oder je nach variante mit anderen dingen trickst, damit dieser verschwindert. Kannst ja mal unter GetPlayerSurfingVehicleID schauen.


    Andernfalls etwas wie https://forum.sa-mp.com/showthread.php?t=140765 . z.B. und Keys checken.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • "Allows to create multiple connections to the same database and server."
    Das ist ja richtig schlecht.. eieiei... the same ..


    //EDIT
    Kann mir jemand sagen wie ich bestimmte Zeichen aus einem String entferne? Ich möchte dass Zeichen wie ":" oder "," entfernt werden und man somit den String besser auswerten kann.

    Einmal editiert, zuletzt von Kasakow ()

    • Offizieller Beitrag

    Gibt da eine Funktion von Slice aus dem englischsprachigem Forum




    stock strreplace(string[], const search[], const replacement[], bool:ignorecase = false, pos = 0, limit = -1, maxlength = sizeof(string)) {
    // No need to do anything if the limit is 0.
    if (limit == 0)
    return 0;

    new
    sublen = strlen(search),
    replen = strlen(replacement),
    bool:packed = ispacked(string),
    maxlen = maxlength,
    len = strlen(string),
    count = 0
    ;


    // "maxlen" holds the max string length (not to be confused with "maxlength", which holds the max. array size).
    // Since packed strings hold 4 characters per array slot, we multiply "maxlen" by 4.
    if (packed)
    maxlen *= 4;

    // If the length of the substring is 0, we have nothing to look for..
    if (!sublen)
    return 0;

    // In this line we both assign the return value from "strfind" to "pos" then check if it's -1.
    while (-1 != (pos = strfind(string, search, ignorecase, pos))) {
    // Delete the string we found
    strdel(string, pos, pos + sublen);

    len -= sublen;

    // If there's anything to put as replacement, insert it. Make sure there's enough room first.
    if (replen && len + replen < maxlen) {
    strins(string, replacement, pos, maxlength);

    pos += replen;
    len += replen;
    }

    // Is there a limit of number of replacements, if so, did we break it?
    if (limit != -1 && ++count >= limit)
    break;
    }

    return count;
    }


    Verwendung:



    new string[128] = "Hello world";


    strreplace(string, "world", "earth"); // string = "Hello earth"
    strreplace(string, "HELLO", "Hola"); // string = "Hello earth" (no match for "HELLO")
    strreplace(string, "HELLO", "Hola", .ignorecase = true); // string = "Hola earth"

    • Offizieller Beitrag

    strreplace(string, ";", ""); würde in diesem Fall sämtliche Semikolon im String durch "nichts" ersetzen sprich löschen

    • Offizieller Beitrag

    Das Include wird doch im Code ganz gut beschrieben


    https://github.com/Y-Less/YSI-…I_Data/y_iterate.inc#L183

  • Mal ne frage mit dem return bei stocks

    Nun, generell ist das egal.


    Die Regel besagt aber, mach lieber überall ein return, zur Not einfach return 0 oder so.


    Damit die Funktion in returns (oder Statements) verwendet werden kann.


    Aber im Endeffekt, wenn sie keinen Wert zurückgeben soll, ist es egal.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen