Beiträge von Kaliber

    Nur beim login hab ich nicht wirklich ahnung wie ich das vorhandene passwort vergleichen soll

    Mach es so:


    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.

    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 :)

    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))

    Mach es so:

    AddPlayerClass muss es meines Wissens geben.

    Es geht beides...


    aber ich möchte diese billige Skin Auswahl nicht

    Einfach so:

    C
    public OnPlayerRequestClass(playerid, classid)
    {
        SetSpawnInfo(playerid,0,299,0,0,3,0,0,0,0,0,0,0);
        SpawnPlayer(playerid);
        return 1;
    }

    Dann gibt es auch keine billige Skin-Auswahl.


    Musst halt dann noch den Startscreen vom Spieler entsprechend setzen, also was er sehen soll.


    Zum Beispiel unter OnPlayerConnect machst du ein SetPVarInt(playerid,!"new_connected",1);.


    Und dann unter OnPlayerSpawn (ganz oben prüfst du):


    C
    if(GetPVarInt(playerid,!"new_connected"))
    {
        TogglePlayerControllable(playerid, 0); 
        SetPlayerCameraPos(playerid, 0,0,50);
        SetPlayerCameraLookAt(playerid, 0,0,100);
        DeletePVar(playerid, !"new_connected");
        return 1;
    }


    und warum geht es Localhost kann mir jemand die Frage beantworten

    Weil es irgendwo irgendeinen Unterschied gibt...habe ich doch schon gesagt...

    Vergleich doch einfach mal die Server Logs.

    Lädst du evtl auf Windows noch Filterscripts?!

    aber wieso geht das localhost?

    Na, da wird wohl irgendwas anders sein.


    Connecten da zufällig eig noch Bots?


    oooder hast du da auch sicher die selbe ID?


    Wie ist das Skript denn aufgebaut? Unabhängig davon, verwendest du denn SetSpawnInfo oder AddPlayerClass?!


    Sicher, dass das für dich aufgerufen wird?

    Wurde schon 100000x mal geklärt. Eine einfache google Suche hätte es auch getan.


    Du verwendest killerid in Arrays, obwohl du nicht prüfst, ob killerid != INVALID_PLAYER_ID ist.

    Ich habe auch eingebaut das man das RCON PW ändern kann, kann ich dies genau so wie Account PWs mit Bcrypt hashen in der DB?

    Wozu solltest du das in einer Datenbank speichern wollen, wenn es eh in der server.cfg steht?



    ch hab es schon mit nem timer probiert aber bekomme es nicht hin die

    Hä?


    Musst doch nur alles zusammenführen:

    So bald ich mein /kick befehl nutze mit parametern kommt eine fehlermeldung:

    Du musst grund auch schon als string deklarieren :D


    C
    new string[120], pID, grund[32];
    if(sscanf(params,"us[32]", pID, grund)) return SCM(playerid,WEISS,""#HTML_GREEN"INFO | "#HTML_WHITE"/kick [playerid/name] [Grund]");