Beiträge von Jeffry

    Ok.
    Splitte die IP so:
    new zahl[4];
    sscanf(ip, "p<.>iiii", zahl[0], zahl[1], zahl[2], zahl[3]);


    Dann hast du dort die einzelnen Zahlen drin stehen und kannst die vergleichen.


    Bei vielen ändern sich übrigens die hinteren beiden Ranges der IP.

    wie würde man dies in R39 auslesen?

    Je nach dem wie genau es aussehen soll, eventuell so:
    mysql_pquery(handle, "SELECT name, version FROM server WHERE id = 1;", "OnServer");


    Und dann in einem extra Public:
    forward OnServer();
    public OnServer()
    {
    if(cache_get_row_count() == 0) return 1;


    new strVersion[64], strGameMode[32];
    cache_get_field_content(0, "name", strGameMode, handle);
    cache_get_field_content(0, "version", strGameMode, handle);
    format(strGameMode, sizeof(strGameMode), "%s %s", strGameMode, strVersion);
    SetGameModeText(strGameMode);
    format(strVersion, sizeof(strVersion), "hostname %s", strGameMode);
    SendRconCommand(strVersion);
    return 1;
    }

    Wäre das dann so?

    Warum willst du die IP eigentlich splitten?

    Nein, du kannst ein Query natürlich auch so schreiben, um alle Spalten auszulesen:

    SQL
    SELECT * FROM tabelle WHERE id = %d;


    Die mysql_Get/Set... Funktionen waren schon in den alten Plugin Versionen das schlechteste an Performance, da die Datenbank viel zu oft unnötig angesprochen wird. Man kann das sich zwar basteln, aber das ist nicht zu empfehlen, da es am Sinn des Plugins vorbei geht. Dann kann man gleich bei der alten Version bleiben, einen Unterschied macht das dann kaum/keinen.

    Es dürfte nach dem Code eigentlich gar nichts in der Datenbank stehen, da das Query falsch ist.
    Das INSERT Query muss so aussehen:
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort, Registrierungsdatum) VALUES ('%s', MD5('%s'), '%d.%d.%d')", SpielerName(playerid), passwort, day, month, year);

    Siehe: Autos laden nicht


    ocmd:carkey(playerid,params[])
    {
    new string[512], bool:found, model;
    for(new s = 1; s <= 5; s++)
    {
    found = false;
    for(new i = 0; i < sizeof(cInfo); i++)
    {
    if(cInfo[i][besitzer] == PlayerInfo[playerid][pMySQLID] && cInfo[i][slot] == s)
    {
    found = true;
    model = cInfo[i][carmodel];
    if(model >= 400 && model <= 611) format(string,sizeof(string),"%s{FF0000}%d) %s\n",string, s, getVehicleName(model));
    else format(string,sizeof(string),"%s{00FF0}%d) -Schlüssel frei-\n",string, s);
    break;
    }
    }
    if(!found) format(string,sizeof(string),"%s{00FF0}%d) -Schlüssel frei-\n",string, s);
    }
    ShowPlayerDialog(playerid,DIALOG_CARKEY,DIALOG_STYLE_LIST,"Fahrzeuge",string,"Auswählen","Beenden");
    return 1;
    }

    Das kannst du auch ohne die Datenbank anzusprechen machen.
    Versuche es so:
    ocmd:carkey(playerid,params[])
    {
    new string[512], bool:found, model;
    for(new s = 1; s <= 5; s++)
    {
    found = false;
    for(new i = 0; i < sizeof(cInfo); i++)
    {
    if(cInfo[i][besitzer] == PlayerInfo[playerid][pMySQLID] && cInfo[i][slot] == s)
    {
    found = true;
    model = cInfo[i][carmodel];
    if(model >= 400 && model <= 611) format(string,sizeof(string),"%s{FF0000}%d) %s\n",string, s, getVehicleName(model));
    else format(string,sizeof(string),"%s{00FF00}%d) -Schlüssel frei-\n",string, s);
    break;
    }
    }
    if(!found) format(string,sizeof(string),"%s{00FF00}%d) -Schlüssel frei-\n",string, s);
    }
    ShowPlayerDialog(playerid,DIALOG_CARKEY,DIALOG_STYLE_LIST,"Fahrzeuge",string,"Auswählen","Beenden");
    return 1;
    }