[SAMMELTHREAD] Kleine Scripting Fragen

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
  • Was möchtest du denn machen? Eventuell haben wir ja eine Idee, wie man das am geschicktesten umsetzen könnte. ;)

    hab folgendes vor: ich zähle die kills aller spieler in einem monat und diese werden in der tabelle "accounts" in der spalte "monthlyKills" in der mysql datanbank abgespeichert (der teil ist schon erledigt). Der spieler mit den meisten kills bekommt z.b. $100 zu beginn des monats und die monthlyKills aller spieler werden dann auch wieder auf 0 gesetzt.

    2 Mal editiert, zuletzt von Herolot ()

  • Moin.

    Versuche gerade Mersenne Twister in PAWN zu implementieren, scheiter jedoch noch an dem Block hier.

    Wie kann man das hier anders Ausdrücken, und kann jemand kurz erläutern was diese Operationen hier genau machen?

    Mit Präprozessorkram kenne ich mich leider nicht hinreichend aus.


    Code
    #define MATRIX_A 0x9908b0dfUL   /* constant vector a */
    #define UMASK 0x80000000UL /* most significant w-r bits */
    #define LMASK 0x7fffffffUL /* least significant r bits */
    #define MIXBITS(u,v) ( ((u) & UMASK) | ((v) & LMASK) )
    #define TWIST(u,v) ((MIXBITS(u,v) >> 1) ^ ((v)&1UL ? MATRIX_A : 0UL))
  • Versuche gerade Mersenne Twister in PAWN zu implementieren, scheiter jedoch noch an dem Block hier.

    Wieso auch immer man das wollen würde...die random Funktion tuts doch auch ganz gut xD


    Naja, im Endeffekt kannst du diesen Block fast 1:1 übernehmen.


    Das UL steht einfach nur für unsigned long (also positive 64 Bit Integer)


    In Pawn gibt es nur 32 Bit Integer, aber sollte auch damit funktionieren.


    Und diese ganzen anderen Operatoren (bis auf den ternary operator) sind einfach nur Bit-Shifting Operationen: https://forum.sa-mp.com/showthread.php?t=177523


    C
    #define MATRIX_A 0x9908b0df   /* constant vector a */
    #define UMASK 0x80000000 /* most significant w-r bits */
    #define LMASK 0x7fffffff /* least significant r bits */
    #define MIXBITS(u,v) ( ((u) & UMASK) | ((v) & LMASK) )
    #define TWIST(u,v) ((MIXBITS(u,v) >> 1) ^ (((v)&1) ? MATRIX_A : 0))

    ast2ufdyxkb1.png


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

  • Danke dir :D Brauche kryptographisch verwertbare Zahlen bei meinem Accountsystem.

  • Hab jetzt folgendes:

    Code
    new Year, Month, Day;
    getdate(Year, Month, Day);
    if(Day == 1)
    {
        //irgendwas
    }

    hab das alles unter einem minuten timer, nur will ich das dies nur 1x pro monat ausgeführt wird. wie kann ich das machen? brauche ich dann überhaupt einen timer? danke im voraus.

    meine frage steht noch, irgendjemand ne idee wie man das am besten umsetzen könnte? bräuchte hier nur den ansatz. danke im voeraus.

  • meine frage steht noch, irgendjemand ne idee wie man das am besten umsetzen könnte? bräuchte hier nur den ansatz. danke im voeraus.


    Dadurch ist sichergestellt, dass es nur 1x im Monat aufgerufen wird :)

    ast2ufdyxkb1.png


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

  • Dadurch ist sichergestellt, dass es nur 1x im Monat aufgerufen wird :)

    Danke. Ist dann nicht vorausgesetzt das der Server 24/7 ohne Unterbrechung läuft? Ich starte den Server regelmäßig neu und das könnte ein Problem sein. Müsste ich dann die variable in einer Datenbank abspeichern oder wie geht das.

  • Danke. Ist dann nicht vorausgesetzt das der Server 24/7 ohne Unterbrechung läuft? Ich starte den Server regelmäßig neu und das könnte ein Problem sein. Müsste ich dann die variable in einer Datenbank abspeichern oder wie geht das.

    Nein es wird abgefragt ob heute z.B. der 01.06.2... ist.

    Es wird nicht jedentag +1Tag gezählt.

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


  • Nein es wird abgefragt ob heute z.B. der 01.06.2... ist.

    Aber genau das passiert doch im minuten/stunden takt (je nachdem in welchen timer ich es einfüge) oder irre ich mich?

  • Aber genau das passiert doch im minuten/stunden takt (je nachdem in welchen timer ich es einfüge) oder irre ich mich?

    Ja, es wird jede Minute/Stunde abgefragt, ob es der 1. im Monat ist.


    Da es ja aber nur 24 Stunden im Monat der 1. im Monat ist, und der delay dafür sorgt, dass das nicht 2x am Tag aufgerufen wird, passiert da nichts.


    Halt eben nur am 1. und 1x im Monat.

    ast2ufdyxkb1.png


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

  • Danke. Ist dann nicht vorausgesetzt das der Server 24/7 ohne Unterbrechung läuft? Ich starte den Server regelmäßig neu und das könnte ein Problem sein. Müsste ich dann die variable in einer Datenbank abspeichern oder wie geht das.

    Du musst es natürlich irgendwo persistieren. Sonst kann es dir passieren, wenn du den Server am 1. mehrmals restartest kann es mehrmals ausgeführt werden.

  • Du musst es natürlich irgendwo persistieren. Sonst kann es dir passieren, wenn du den Server am 1. mehrmals restartest kann es mehrmals ausgeführt werden.


    Ja, es wird jede Minute/Stunde abgefragt, ob es der 1. im Monat ist.


    Da es ja aber nur 24 Stunden im Monat der 1. im Monat ist, und der delay dafür sorgt, dass das nicht 2x am Tag aufgerufen wird, passiert da nichts.


    Halt eben nur am 1. und 1x im Monat.

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


  • Code
    [13:59:17] [debug] Run time error 4: "Array index out of bounds"
    [13:59:17] [debug]  Attempted to read/write array element at index 65535 in array of size 1000
    [13:59:17] [debug] AMX backtrace:
    [13:59:17] [debug] #0 0004ace4 in public OnPlayerDeath (5, 65535, 255) in fsrs.amx
    [13:59:17] [death] Markus died 255

    kann mir da bitte einer helfen und mir genau sagen was ich machen muss das der fehler weg ist?


    https://pastebin.com/PcMi94Fd



    mit freundlichen Grüßen

    Markus

    Mit freundlichen Grüßen

    Markus001

  • Wenn du auch nur einmal aufhören würdest die ganze Zeit zu copy & pasten und garnichts selber zu lernen, würdest du auch irgendwann gelernt haben dass du abfragen musst ob die killerid die INVALID_PLAYER_ID ist.

    Aber hier jedes mal den gleichen scheiß zu fragen, statt mal selber nachzudenken ist halt auch leichter.

  • hey, wie kann ich verhindern das einer dieser nachrichten 2x hintereinander gesendet wird

    Code
    new RandomMSG[][] =
    {
        "nachricht 1",
        "nachricht 2",
        "nachricht 3"
    };
    
    //unter minutentimer
        new randMSG = random(sizeof(RandomMSG));
        SendClientMessageToAll(0xfffffff, RandomMSG[randMSG]);