Multiaccounts mit MySQL herrausfinden

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
  • Erklärung:
    Ich möchte /multiaccount eingeben und dann die IP und dann soll mir angezeigt werden welche Accounts die IP benutzen.
    Leider hab ich es (mit hilfe von ICy.: ) nicht hinbekommen.
    Ich hoffe ihr könnt mir helfen.


    Ich habe keine Fehler oder so.




    Aktueller Code:
    ocmd:multiaccount(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,-1,"Du hast kein Admin Level 4");
    new string[300],gip[16];
    if(sscanf(params,"s",gip))return SendClientMessage(playerid,-1,"Tippe : /multiaccount [IP]");
    SendClientMessage(playerid,-1,"Benutze: /getip [Spieler] um die IP herauszufinden!");
    new playerip[16];
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i))continue;
    GetPlayerIp(i,playerip,sizeof playerip);
    if(strcmp(playerip,gip,true))
    {
    format(string,sizeof string,"%s\n%s - %s",string,NamePlayer(i),gip);
    }
    }
    SendClientMessage(playerid,-1,"Folgende Accounts existieren unter der IP:");
    SendClientMessage(playerid,-1,string);
    return 1;
    }

  • Ich habe keine Fehler oder so.

    Deswegen funktioniert's auch nicht. 8)
    MySQL Plugin / MySQL Tabellenstruktur ?


    Du checkst ja nichtmal etwas in der Datenbank, also gehe ich mal davon aus, dass du nur checken willst wenn gleichzeitig 2 Online sind mit der selben IP was eig. unlogisch ist ?
    Helf uns mal auf die Sprünge :|


    @Edit:
    Wie sollen wir wissen was in der 3 Spalten ist ?

  • Deswegen funktioniert's auch nicht. 8)
    MySQL Plugin / MySQL Tabellenstruktur ?


    Du checkst ja nichtmal etwas in der Datenbank, also gehe ich mal davon aus, dass du nur checken willst wenn gleichzeitig 2 Online sind mit der selben IP was eig. unlogisch ist ?
    Helf uns mal auf die Sprünge :|


    @Edit:
    Wie sollen wir wissen was in der 3 Spalten ist ?


    Folgt das deiner Antwort: In der Datenbank heißt es aber IP und es ist die Spalte 3.


    Die Spalte 3 ist bei ihm die IP des Spielers, ist doch nicht so Schwer zu Verstehen. Oder hab ich das Falsch Verstanden?

  • stock LoadAccount(playerid)
    {
    SpielerInfo[playerid][pEingeloggt] = true;
    SpielerInfo[playerid][pGeld] = cache_get_field_content_int(0, "Geld", mysqlHandle), GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    SpielerInfo[playerid][pLevel] = cache_get_field_content_int(0, "Level", mysqlHandle), SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);
    SpielerInfo[playerid][pKills] = cache_get_field_content_int(0, "Kills", mysqlHandle);
    SpielerInfo[playerid][pTode] = cache_get_field_content_int(0, "Tode", mysqlHandle);
    SpielerInfo[playerid][pAdminlevel] = cache_get_field_content_int(0, "Adminlevel", mysqlHandle);
    SpielerInfo[playerid][pIP] = cache_get_field_content_int(0, "IP", mysqlHandle);
    SpielerInfo[playerid][pBanned] = cache_get_field_content_int(0, "Banned", mysqlHandle);
    SpielerInfo[playerid][pBangrund] = cache_get_field_content_int(0, "Bangrund", mysqlHandle);
    SpielerInfo[playerid][pBanadmin] = cache_get_field_content_int(0, "Banadmin", mysqlHandle);
    SpielerInfo[playerid][pFraktion] = cache_get_field_content_int(0, "Fraktion", mysqlHandle);
    SpielerInfo[playerid][pRang] = cache_get_field_content_int(0, "Rang", mysqlHandle);
    SpielerInfo[playerid][pPerso] = cache_get_field_content_int(0, "Perso", mysqlHandle);
    SpielerInfo[playerid][pFscheinPunkte] = cache_get_field_content_int(0, "FscheinPunkte", mysqlHandle);
    Adminrank[playerid][pRank1] = cache_get_field_content_int(0, "Rank1", mysqlHandle);
    Adminrank[playerid][pRank2] = cache_get_field_content_int(0, "Rank2", mysqlHandle);
    Adminrank[playerid][pRank3] = cache_get_field_content_int(0, "Rank3", mysqlHandle);
    Adminrank[playerid][pRank4] = cache_get_field_content_int(0, "Rank4", mysqlHandle);
    Adminrank[playerid][pRank5] = cache_get_field_content_int(0, "Rank5", mysqlHandle);
    Adminrank[playerid][pRank6] = cache_get_field_content_int(0, "Rank6", mysqlHandle);
    Adminrank[playerid][pRank7] = cache_get_field_content_int(0, "Rank7", mysqlHandle);
    printf("Acc geladen (%s)",NamePlayer(playerid));
    return 1;
    }


    Ich möchte das er jeden Account durchgeht und nur die Accounts aufschreibt mir der Gleichen IP

  • Teste es mal so:
    ocmd:multiaccount(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,-1,"Du hast kein Admin Level 4");
    new query[256],gip[16];
    if(sscanf(params,"s",gip))return SendClientMessage(playerid,-1,"Tippe : /multiaccount [IP]");
    SendClientMessage(playerid,-1,"Benutze: /getip [Spieler] um die IP herauszufinden!");
    format(query, sizeof(query), "SELECT name FROM accounts WHERE ip = '%s'", gip); //=================ANPASSEN!!====================
    mysql_tquery(MySQL, query, "OnMultiaccountCheck", "d", playerid);
    return 1;
    }


    forward OnMultiaccountCheck(playerid);
    public OnMultiaccountCheck(playerid)
    {
    SendClientMessage(playerid,-1,"Folgende Accounts existieren unter der IP:");
    new rows = cache_get_row_count(), string[145];
    for(new i=0; i < rows; i++)
    {
    cache_get_row(i, 0, string);
    SendClientMessage(playerid,-1,string);
    }
    return 1;
    }


    Nicht vergessen die markierte Zeile anzupassen, an deinen Tabellenname und die Tabellenspalten!

  • Es Funktioniert :P


    Geht dieser Befehl um leute Offline und Online zu bannen? Oder was muss ich verändert.


    ocmd:ban(playerid, params[])
    {
    new query[128], string[128], pID, grund[64];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
    if(sscanf(params,"ds",pID,grund))return SendClientMessage(playerid,-1,"Tippe: /ban [spieler] [grund]");
    format(string, sizeof(string),"Du wurdest von %s gebannt. Grund: %s",NamePlayer(playerid),grund);
    SendClientMessage(pID,ROT,string);
    format(query, sizeof(query), "UPDATE accounts SET Banned ='1' WHERE Name = '%s'", NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "", "");
    format(query, sizeof(query), "UPDATE accounts SET Bangrund ='%s' WHERE Name = '%s'",grund, NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "", "");
    format(query, sizeof(query), "UPDATE accounts SET Banadmin ='%s' WHERE Name = '%s'",NamePlayer(playerid));
    mysql_tquery(mysqlHandle, query, "", "");
    Kick(pID);
    return 1;
    }

  • Super! :)


    ocmd:oban(playerid, params[])
    {
    new query[256], name[MAX_PLAYER_NAME], grund[64];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
    if(sscanf(params,"ss",name,grund))return SendClientMessage(playerid,-1,"Tippe: /oban [name] [grund]");
    mysql_format(mysqlHandle, query, sizeof(query), "UPDATE accounts SET Banned = '1', Bangrund = '%e', Banadmin = '%e' WHERE Name = '%e'", grund, NamePlayer(playerid), name);
    mysql_tquery(mysqlHandle, query, "", "");
    return 1;
    }


    Den ban-Befehl schreibst du lieber auch so:
    ocmd:ban(playerid, params[])
    {
    new query[256], string[128], pID, grund[64];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
    if(sscanf(params,"ds",pID,grund))return SendClientMessage(playerid,-1,"Tippe: /ban [spieler] [grund]");
    format(string, sizeof(string),"Du wurdest von %s gebannt. Grund: %s",NamePlayer(playerid),grund);
    SendClientMessage(pID,ROT,string);
    mysql_format(mysqlHandle, query, sizeof(query), "UPDATE accounts SET Banned = '1', Bangrund = '%e', Banadmin = '%e' WHERE Name = '%e'", grund, NamePlayer(playerid), NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "", "");
    Kick(pID);
    return 1;
    }