Beiträge von Jeffry

    Nein, dann ist es immer 0, da es dort noch nicht geladen ist.


    public OnPasswordResponse(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //passwort Richtig
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(1,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",dbhandle);
    sInfo[playerid][rang] = cache_get_field_content_int(0,"rang",dbhandle);
    sInfo[playerid][spawnchange]= cache_get_field_content_int(0,"spawnchange",dbhandle);
    loadPlayerCars(playerid);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    }
    else
    {
    //Passwort Falsch
    SendClientMessage(playerid,grün,"Du hast dein Passwort falsch eingetippt. Versuche es nochmal!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    return 1;
    }

    Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/PlayerTextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.

    Oh, sorry, war der falsche Link. Der hier war gemeint: Der Pawn BB Code - Die richtige Anwendung
    Egal, ich habe deinen Code auseinandergebaut.


    Also, du definierst den Dialog unter den Includes:
    #define CARKEY_DIALOG 1403


    Den Befehl schreibst du so:
    if(!strcmp("/carkey", cmdtext, true))
    {
    new string[1024];
    for(new i=0; i<MaxVeh; i++)
    {
    if(Dtc_PlayerHaveCar[playerid][i]) format(string, sizeof(string), "%s%s\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);
    else format(string, sizeof(string), "%s-Leer-\n", string);
    }
    return ShowPlayerDialog(playerid, CARKEY_DIALOG, DIALOG_STYLE_LIST, "Carkeys", string, "Ok", "Abbrechen");
    }


    Und unter OnDialogResponse schreibst du:
    if(dialogid == CARKEY_DIALOG)
    {
    if(!response) return 1;
    new string[145];
    Dtc_PlayerKey[playerid] = listitem;
    if(Dtc_PlayerHaveCar[playerid][listitem]) format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s!",listitem+1,CarName[PlayerCar[playerid][listitem][CarModel]-400]);else format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, doch hast für diesen Schlüssel noch kein Auto!",listitem+1);
    return SendClientMessage(playerid,COLOR_YELLOW,string);
    }


    Brauchst du da eine Erklärung dafür, oder spricht der Code für sich?
    An sich wird die Liste aufgebaut, und je nach dem welches listitem du auswählst, den Key bekommst du.

    1.)
    Ändere
    else
    {
    SendClientMessage(playerid,grün,"Du hast keine Buslinie ausgewählt.");
    RemovePlayerFromVehicle(playerid);
    DestroyVehicle(431);
    return 1;
    }
    zu
    else
    {
    SendClientMessage(playerid,grün,"Du hast keine Buslinie ausgewählt.");
    DestroyVehicle(GetPlayerVehicleID(playerid));
    return 1;
    }


    2.)
    DisablePlayerCheckpoint muss ganz oben stehen, sonst entfernst du den Checkpoint nachdem du ihn angezeigt hast.
    Außerdem habe ich die Größe des Ranges von 5 auf 7 geändert, das könnte sonst zu Problemen kommen, wenn es mal nicht ganz passt.
    public OnPlayerEnterCheckpoint(playerid)
    {
    DisablePlayerCheckpoint(playerid);
    if(GetPVarInt(playerid, "trash_job"))
    {
    //Wenn trash job ausgeführt wird
    new cID = GetPVarInt(playerid, "trash_cp");
    if(IsPlayerInRangeOfPoint(playerid, 7, tCPs[cID][t_x], tCPs[cID][t_y], tCPs[cID][t_z]))
    {
    cID++;
    if(cID >= sizeof(tCPs))
    {
    GivePlayerMoney(playerid, 3000);
    SetPVarInt(playerid, "trash_cp", 0);
    SetPlayerCheckpoint(playerid, tCPs[0][t_x], tCPs[0][t_y], tCPs[0][t_z], 5);
    SendClientMessage(playerid,helblau,"Du hast soeben 3.000$ verdient");
    }
    else
    {
    SetPVarInt(playerid, "trash_cp", cID);
    SetPlayerCheckpoint(playerid, tCPs[cID][t_x], tCPs[cID][t_y], tCPs[cID][t_z], 5);
    }
    return 1;
    }
    }


    if(GetPVarInt(playerid,"bus_job"))
    {
    //wenn bus_job ausgeführt wird.
    new bID = GetPVarInt(playerid,"bus_cp");
    if(IsPlayerInRangeOfPoint(playerid,7,bust1cps[bID][g_x],bust1cps[bID][g_y],bust1cps[bID][g_z]))
    {
    bID++;
    if(bID >= sizeof(bust1cps))
    {
    GivePlayerMoney(playerid,6000);
    SetPVarInt(playerid,"bus_cp",0);
    SetPlayerCheckpoint(playerid,bust1cps[0][g_x],bust1cps[0][g_y],bust1cps[0][g_z],5);
    SendClientMessage(playerid,rot,"Du hast soeben 6.000$ verdient");
    }
    else
    {
    SetPVarInt(playerid,"bus_cp",bID);
    SetPlayerCheckpoint(playerid,bust1cps[bID][g_x],bust1cps[bID][g_y],bust1cps[bID][g_z],5);
    }
    }
    }
    return 1;
    }

    Spoiler anzeigen
    Function OnPlayerBuyCar2(playerid,Model,Float:x, Float:y, Float:z, Float:a)//CARSYS
    {
    if(IsPlayerConnected(playerid) && !Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    new name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid, name, sizeof name);
    format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x] = x;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y] = y;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z] = z;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate] = a;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][NeonID] = -1;
    new File: hFile = fopen(str, io_write);
    if (hFile)
    {
    new var[32];
    format(var, 32, "CarId=0\n");fwrite(hFile, var);
    format(var, 32, "CarModel=%d\n",Model);fwrite(hFile, var);
    format(var, 32, "CarPos_x=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x]);fwrite(hFile, var);
    format(var, 32, "CarPos_y=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y]);fwrite(hFile, var);
    format(var, 32, "CarPos_z=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z]);fwrite(hFile, var);
    format(var, 32, "CarRotate=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate]);fwrite(hFile, var);
    format(var, 32, "CarNitro=0\n");fwrite(hFile, var);
    format(var, 32, "CarHyd=0\n");fwrite(hFile, var);
    format(var, 32, "CarWheel=0\n");fwrite(hFile, var);
    format(var, 32, "CarAusp=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideL=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideR=0\n");fwrite(hFile, var);
    format(var, 32, "CarFB=0\n");fwrite(hFile, var);
    format(var, 32, "CarRB=0\n");fwrite(hFile, var);
    format(var, 32, "CarSpoiler=0\n");fwrite(hFile, var);
    format(var, 32, "CarRoof=0\n");fwrite(hFile, var);
    format(var, 32, "CarHood=0\n");fwrite(hFile, var);
    format(var, 32, "CarVents=0\n");fwrite(hFile, var);
    format(var, 32, "CarLamps=0\n");fwrite(hFile, var);
    format(var, 32, "CarPJ=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC1=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC2=-1\n");fwrite(hFile, var);
    format(var, 32, "Preis=0\n");fwrite(hFile, var);
    format(var, 32, "CarArrest=0\n");fwrite(hFile, var);
    format(var, 32, "Plate=[LiS]\n");fwrite(hFile, var);
    format(var, 32, "NeonID=-1\n");fwrite(hFile, var);
    fclose(hFile);
    }
    printf("Fahrzeug-Datei Slot %d erstellt: %d / %f / %f / %f", Dtc_PlayerKey[playerid], Model, x, y, z);
    OnPlayerCarLogin(playerid);
    }
    }

    Spoiler anzeigen
    Function OnPlayerCarLogin(playerid)
    {
    printf("OnPlayerCarLogin...");
    for(new x = 0; x < MaxVeh; x++)
    {
    if(!Dtc_PlayerHaveCar[playerid][x])
    {
    new string2[128];
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    format(string2, sizeof(string2), "/Autos/%s%d.dtcar", playername2,x);
    new File: UserFile = fopen(string2, io_read);
    if (UserFile)
    {
    Dtc_PlayerHaveCar[playerid][x] = 1;
    new key[ 256 ] , val[ 256 ];
    new Data[ 256 ];
    while ( fread( UserFile , Data , sizeof( Data ) ) )
    {
    key = ini_GetKey( Data );
    if( strcmp( key , "CarId" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarId] = strval( val ); }
    if( strcmp( key , "CarModel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarModel] = strval( val ); }
    if( strcmp( key , "CarPos_x" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarPos_x] = floatstr( val ); }
    if( strcmp( key , "CarPos_y" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarPos_y] = floatstr( val ); }
    if( strcmp( key , "CarPos_z" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarPos_z] = floatstr( val ); }
    if( strcmp( key , "CarRotate" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarRotate] = floatstr( val ); }
    if( strcmp( key , "CarNitro" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarNitro] = strval( val ); }
    if( strcmp( key , "CarHyd" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarHyd] = strval( val ); }
    if( strcmp( key , "CarWheel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarWheel] = strval( val ); }
    if( strcmp( key , "CarAusp" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarAusp] = strval( val ); }
    if( strcmp( key , "CarSideL" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarSideL] = strval( val ); }
    if( strcmp( key , "CarSideR" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarSideR] = strval( val ); }
    if( strcmp( key , "CarFB" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarFB] = strval( val ); }
    if( strcmp( key , "CarRB" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarRB] = strval( val ); }
    if( strcmp( key , "CarSpoiler" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarSpoiler] = strval( val ); }
    if( strcmp( key , "CarRoof" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarRoof] = strval( val ); }
    if( strcmp( key , "CarHood" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarHood] = strval( val ); }
    if( strcmp( key , "CarVents" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarVents] = strval( val ); }
    if( strcmp( key , "CarLamps" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarLamps] = strval( val ); }
    if( strcmp( key , "CarPJ" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarPJ] = strval( val ); }
    if( strcmp( key , "CarC1" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarC1] = strval( val ); }
    if( strcmp( key , "CarC2" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarC2] = strval( val ); }
    if( strcmp( key , "Preis" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarPreis] = strval( val ); }
    if( strcmp( key , "CarArrest" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][CarArrest] = strval( val ); }
    if( strcmp( key , "Plate" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][Plate] = strval( val ); }
    if( strcmp( key , "NeonID" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerCar[playerid][x][NeonID] = strval( val ); }
    }
    fclose(UserFile);
    printf("Fahrzeug-Slot %d geladen: Model: %d", x, PlayerCar[playerid][x][CarModel]);
    PlayerCarSpawn(playerid,x);
    }
    }
    }
    }

    Spoiler anzeigen
    Function PlayerCarSpawn(playerid,Slot)
    {
    printf("PlayerCarSpawn...");
    if(IsPlayerConnected(playerid))
    {
    if(Dtc_PlayerHaveCar[playerid][Slot])
    {
    printf("Hat Fahrzeug in Slot %d", Slot);
    PlayerCar[playerid][Slot][CarId] = CreateVehicle(PlayerCar[playerid][Slot][CarModel],PlayerCar[playerid][Slot][CarPos_x],PlayerCar[playerid][Slot][CarPos_y],PlayerCar[playerid][Slot][CarPos_z],PlayerCar[playerid][Slot][CarRotate],PlayerCar[playerid][Slot][CarC1],PlayerCar[playerid][Slot][CarC2], 60000);/*vehicle spawn*/
    printf("Fahrzeug Slot %d erstellt: %d / %f / %f / %f", Slot, PlayerCar[playerid][Slot][CarModel],PlayerCar[playerid][Slot][CarPos_x],PlayerCar[playerid][Slot][CarPos_y],PlayerCar[playerid][Slot][CarPos_z]);
    GiveNeon(PlayerCar[playerid][Slot][CarId], playerid, PlayerCar[playerid][Slot][NeonID]);
    ChangeVehicleColor(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarC1],PlayerCar[playerid][Slot][CarC2]);
    if(PlayerCar[playerid][Slot][CarPJ] >= 0) {ChangeVehiclePaintjob(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarPJ]);}
    if(PlayerCar[playerid][Slot][CarNitro] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarNitro]);}
    if(PlayerCar[playerid][Slot][CarHyd] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarHyd]);}
    if(PlayerCar[playerid][Slot][CarWheel] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarWheel]);}
    if(PlayerCar[playerid][Slot][CarAusp] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarAusp]);}
    if(PlayerCar[playerid][Slot][CarSideL] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarSideL]);}
    if(PlayerCar[playerid][Slot][CarSideR] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarSideR]);}
    if(PlayerCar[playerid][Slot][CarFB] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarFB]);}
    if(PlayerCar[playerid][Slot][CarRB] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarRB]);}
    if(PlayerCar[playerid][Slot][CarSpoiler] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarSpoiler]);}
    if(PlayerCar[playerid][Slot][CarRoof] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarRoof]);}
    if(PlayerCar[playerid][Slot][CarHood] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarHood]);}
    if(PlayerCar[playerid][Slot][CarVents] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarVents]);}
    if(PlayerCar[playerid][Slot][CarLamps] != 0) {AddVehicleComponent(PlayerCar[playerid][Slot][CarId],PlayerCar[playerid][Slot][CarLamps]);}
    if(Dtc_LockOnSpawn)
    {
    Dtc_Carlock[PlayerCar[playerid][Slot][CarId]] = 1;
    Dtc_LockCar(PlayerCar[playerid][Slot][CarId]);
    }
    new strings[15];
    new name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid, name, sizeof name);
    format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
    //format(strings, sizeof(strings), "%s", dini_Get(str, "CarPlate"));
    format(strings, sizeof(strings), "%s", dini_Get(str, "Plate"));
    SetVehicleNumberPlate(PlayerCar[playerid][Slot][CarId], strings);
    SetVehicleToRespawn(PlayerCar[playerid][Slot][CarId]);
    for(new x = 0; x < MaxVeh; x++)
    {
    PlayerCar[playerid][x][Plate] = strings;
    }
    printf("Vehicle-ID %d erfolgreich erstellt.", PlayerCar[playerid][Slot][CarId]);
    }
    }
    }


    Schreibe die Funktionen mal so und teste es dann nochmal. Dann poste bitte was im Server Log steht, wenn du ein Fahrzeug per Gutschein gekauft hast.

    Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/PlayerTextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.

    Das Passwort ist ein String, daher geht es nicht. strval macht einen Integer aus einem String.


    new password[32];
    GetPVarString(playerid, "Passwort", password);
    WBB_CreateUser(GetName(playerid),SpielerInfo[playerid][pEmail],password);


    SetPVarString(playerid,"Passwort",inputtext);

    Füge im LoadAccount public nach dieser Zeile:
    cache_get_data(rows,fields);
    das hier ein:
    if(!rows)
    {
    loginError[playerid]++;
    if(loginError[playerid] >= 3)
    {
    Kick(playerid);
    return 1;
    }
    format(stringlogin,sizeof(stringlogin),"{C9C9C9}Willkommen zurück "#SERVERFARBE"%s {C9C9C9}!\n{C9C9C9}Dein Account ist registriert.\nBitte Logge dich mit deinem entsprechendem Passwort ein.\n\n"#SERVERFARBE"** "#SERVERNAME" **{C9C9C9}",SpielerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Login",stringlogin,"Login","Abbrechen");
    return 1;
    }


    Und unter den Includes:
    new loginError[MAX_PLAYERS];


    Bei OnPlayerConnect, ganz am Anfang:
    loginError[playerid] = 0;

    Nein, das ist nicht möglich, zumindest nicht so, dass du mit 100%'iger Sicherheit sagen kannst, dass das auch genau das Passwort ist, das eingegeben wurde, da es für mehrere Passwörter den selben MD5-Wert geben kann. Außerdem ist das Prinzip von MD5 (und anderen Verschlüsselungsalgorithmen), dass man sie nicht rückführen kann (außer durch Brute-Force).

    Ja, weil das Alter nicht der Geburtstag ist.
    SpielerInfo[playerid][pGeburtsdatum] = Age;
    zu:
    SpielerInfo[playerid][pAlter] = Age;
    format(SpielerInfo[playerid][pGeburtstag], 11, inputtext);
    Dann geht's.

    Einen Befehl, um einen x-beliebigen Stat auszulesen kannst du so schreiben (ist das das, was du wolltest?):
    ocmd:getstat(playerid, params[])
    {
    new name[32], stat[32], string[145], path[64];
    if(sscanf(params, "s[32]s[32]", name, stat)) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: /getstat [Name] [Stat]");
    format(path, sizeof(path), "/users/%s.ini", name);
    if(!fexist(path)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Benutzer ist nicht registriert.");
    if(!strlen(dini_Get(path, stat))) return SendClientMessage(playerid, 0xFF0000FF, "Error: Stat existiert nicht.");
    format(string, sizeof(string), "%s's %s ist %s.", name, stat, dini_Get(path, stat));
    return SendClientMessage(playerid, 0xFFFFFFFF, string);
    }