Beta Key System [MYSQL]

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
  • Hallo zusammen,


    ich habe vor für den nächsten Changelog ein schönes Beta Key System rein zu machen damit wenn der Server online geht die Leute nur sich mit Beta Key Registrieren können
    hier mal der Anfang aber ich weiss einfach nicht weiter , eigentlich nur den Eingegebenen Key mit den Datenbank Keys überprüfen und dann den status auf 0(deaktiviert) setzen und alle die 1 sind (aktiviert) können noch benutzt werden.
    hier mal der CODE


    forward BetakeyCheck(key);
    public BetakeyCheck(key)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows == 0)
    {

    return 1
    }
    return 1;
    }
    public UserCheck(playerid)
    {
    print("3");
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    new betaregstatus;
    if(num_rows==0)
    { //Registrierung
    if(register_status == 1)
    {
    new string[255];
    if(!strfind(SpielerName(playerid),gBadName,true))
    {
    SendClientMessage(playerid,CL_HGRÜN,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast. Oder du hast nicht erlaubte Zeichen im Namen.");
    format(string, sizeof(string), "ADMCMD: %s wurde vom Server gekickt. Grund: Unerlaubter Name", SpielerName(playerid)); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
    SendClientMessageToAll(CL_KNALLROT,string);
    KickPlayer(playerid);
    return 0;
    }

    if(betastatus == 1 && betaregstatus == 0)
    {
    //betakey abfrage
    print("beta key abfrage");
    betaregstatus = 1;
    printf("betaregstatus %i",betaregstatus);
    new query[128];
    format(query,sizeof(query),"SELECT key FROM betakey WHERE status='1'");
    mysql_function_query(dbhandle,query,true,"BetakeyCheck","d",playerid);
    //registrierung
    return 1;
    }
    print("user check -> registrierung ip checken ohne dialog zeigen register");
    new ip[16],query[128]; //hier stimmt die reihenfolge nicht!!!
    GetPlayerIp(playerid,ip,sizeof(ip));
    format(query,sizeof(query),"SELECT NAME FROM benutzer WHERE IP='%s'",ip);
    mysql_function_query(dbhandle,query,true,"IPCHECK","d",playerid);
    print("user check abgeschlossen");
    //ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
    //Dein Register Zeugs
    }
    else if(register_status == 0)
    {
    SendClientMessage(playerid,-1,"Die Registrierung ist abgeschaltet");
    KickPlayer(playerid);
    }
    }
    else
    {//Login
    ShowPlayerDialog(playerid,DIALOG_LOGIN_MYSQL,DIALOG_STYLE_PASSWORD,"Login auf MVS [BETA] ","Bitte Logge dich mit deinem Passwort ein. ","Login","Close");
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    SetPlayerColor(playerid,CL_GRAU);
    TogglePlayerControllable(playerid,0);
    print("0.0");
    introstart(playerid);
    //Register-System-MYSQL
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT DB_ID FROM benutzer WHERE NAME='%s'",name);
    mysql_function_query(dbhandle,query,true,"UserCheck","i",playerid);
    TextDrawShowForPlayer(playerid, Date);
    return 1;
    }
    forward IPCHECK(playerid);
    public IPCHECK(playerid)
    {
    if(cache_get_row_count() > 0)
    {
    print("doppelte ip");
    new ip[16], query[128];
    GetPlayerIp(playerid,ip,sizeof(ip));
    //IP existiert dann kontrolle in der whitelist
    format(query,sizeof(query),"SELECT NAME FROM whitelist WHERE IP='%s'",ip);
    mysql_function_query(dbhandle,query,true,"WHITELISTCHECK","d",playerid);
    print("Whitelist checken ergebnis abwarten");
    return 1;
    }
    print("keine doppelte ip");
    SCM(playerid,-1,"alles gut keine doppelte registrierung");
    ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
    return 1;
    }
    forward WHITELISTCHECK(playerid);
    public WHITELISTCHECK(playerid)
    {
    if(cache_get_row_count() < 1)
    {
    print("kein whitelist eintrag");
    SCM(playerid,-1,"Du hast dich bereits mit dieser IP-Adresse Registriert.");
    SCM(playerid,-1," Bei einem Multiaccount z.B. für Geschwister melde dich bitte bei Admins mit deiner IP.");
    return KickPlayer(playerid);
    }
    print("2");
    ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
    SCM(playerid,-1,"whitelist eintrag vorhanden registrierung fortsetzen");
    print("WHITELIST check abgeschlossen");
    return 1;
    }


    Vlt kann ja jemand helfen


    Vielen dank im Vorraus

  • forward BetakeyCheck(key); public BetakeyCheck(key) { new num_rows,num_fields; cache_get_data(num_rows,num_fields,dbhandle); if(num_rows == 0) { return 1 } return 1; }


    hab ich doch wenn == 0 dann soll der Key vom User abgefragt werden mit einem DIalog (den kann ich selber) und dann verglichen werden (hab ich noch nie gemacht)

  • ich habe keine ahnung ob das annähernd richtig ist ich habe es nochmal komplett abgeändert

    public UserCheck(playerid)
    {
    print("3");
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    new betaregstatus;
    if(num_rows==0)
    { //Registrierung
    if(register_status == 1)
    {
    new string[255];
    if(!strfind(SpielerName(playerid),gBadName,true))
    {
    SendClientMessage(playerid,CL_HGRÜN,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast. Oder du hast nicht erlaubte Zeichen im Namen.");
    format(string, sizeof(string), "ADMCMD: %s wurde vom Server gekickt. Grund: Unerlaubter Name", SpielerName(playerid)); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
    SendClientMessageToAll(CL_KNALLROT,string);
    KickPlayer(playerid);
    return 0;
    }

    if(betastatus == 1 && betaregstatus == 0)
    {
    #define DIALOG_BETA_KEY_INSERT 20
    //betakey abfrage
    print("beta key abfrage");
    betaregstatus = 1;
    new inputtext[128];
    printf("betaregstatus %i",betaregstatus);
    ShowPlayerDialog(playerid,DIALOG_BETA_KEY_INSERT,DIALOG_STYLE_INPUT,inputtext,"Gebe den Beta Key ein","OK","Cancel");
    //registrierung
    return 1;
    }
    print("user check -> registrierung ip checken ohne dialog zeigen register");
    new ip[16],query[128]; //hier stimmt die reihenfolge nicht!!!
    GetPlayerIp(playerid,ip,sizeof(ip));
    format(query,sizeof(query),"SELECT NAME FROM benutzer WHERE IP='%s'",ip);
    mysql_function_query(dbhandle,query,true,"IPCHECK","d",playerid);
    print("user check abgeschlossen");
    //ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
    //Dein Register Zeugs
    }
    else if(register_status == 0)
    {
    SendClientMessage(playerid,-1,"Die Registrierung ist abgeschaltet");
    KickPlayer(playerid);
    }
    }
    else
    {


    }
    //Login
    }
    habe dir eine anfrage gesendet @ciberkiller

  • ja das hab ich jetzt dazu gepackt aber dein simples system funktioniert bei mir komischerweise nicht
    ehhm nimm mich mal per skype an dann kannste per tv mal mein script sehen und wir können das gemeinsam lösen (wenns recht ist)


    Gut dann sende mir doch bitte eine Anfrage in Skype, dann lösen wir das mit Skypen + Teamviewer


    mfg :thumbup:

  • @Ciberkiller
    ich kann mich momentan mit jedem Bkey spawnen lassen ein Registrierungsdialog kommt nur wenn der beta key stimmt
    und da kann ich mir nochwas nicht erklären
    UPDATE `bkey` SET `active`=0,`Name`='nitrado',IP='test1' WHERE `key`='...'


    finde den fehler



    auflösung

    Spoiler anzeigen
    UPDATE `bkey` SET `active`=0,`Name`='test1',IP=*********************' WHERE `key`='nitrado'

    3 Mal editiert, zuletzt von Silbermond ()