Rangnamen aus Datei auslesen & anzeigen

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
  • Guten Tag liebe sa-mp.de Community, und zwar wollte ich meine Rangnamen aus einer Datei auslesen lasen & anzeigen.
    Leider weis ich nicht wie ich das ganze anstellen soll das die Ränge aus einer Datei ausgelesen werden.(z.B. Polizei.ini)
    Könnt ihr mir helfen?






    PS: Es gibt 10 Ränge



    MfG,
    Fabian™!

  • In die Polizei.ini:


    Rang1=Hauptmann
    Rang2=...
    ...
    Rang10=Praktikant


    Laden:
    format(FraktionName[FraktionID][Rang1Name], 50, "%s", dini_Get("Polizei.ini", "Rang1"));
    format(FraktionName[FraktionID][Rang2Name], 50, "%s", dini_Get("Polizei.ini", "Rang2"));
    ...


  • Dies bringt mich schon weiter aber ich weiss immer noch nicht wie ich die Datei erstelle.


    #edit: Mein stock sieht ungefähr so aus:
    stock rangname(playerid, rangid)
    {
    new tstr[48];
    if(isPlayerInFrakt(playerid, 0))
    {
    switch(rangid)
    {
    case 0: tstr = " ";
    case 1: tstr = " ";
    case 2: tstr = " ";
    case 3: tstr = " ";
    case 4: tstr = " ";
    case 5: tstr = " ";
    case 6: tstr = " ";
    case 7: tstr = " ";
    case 8: tstr = " ";
    case 9: tstr = " ";
    case 10: tstr = " ";
    }
    }
    Da müsste ja dan der Rang geladen werden.


    MfG.
    Fabian™!

  • forward @LoadRang();
    forward @SaveRang();


    #define MAX_FRAKTIONS 10
    #define MAX_RANG 10


    #define PlayerRangName(%0) FrakRang[pInfo[%0][Fraktion]][pInfo[%0][Rang]]


    enum Bit1:(<<= 1){
    FIRST = 1,
    }
    new Bit1:Create,
    FrakRang[MAX_FRAKTIONS][MAX_RANG][10];




    public OnGameModeInit()
    {
    CallLocalFunction("@LoadRang","");
    return 1;
    }
    public OnGameModeExit()
    {
    if(!(Create & FIRST))CallLocalFunction("@SaveRang","");
    return 1;
    }
    @LoadRang(){
    if(!fexist("Ranks.txt")){
    new File:rangfile = fopen("Ranks.txt", io_write);
    for(new i; i != MAX_FRAKTIONS; ++i)fwrite(rangfile,"Rang1|Rang2|Rang3|Rang4|Rang5|Rang6|Rang7|Rang8|Rang9|Rang10| \r\n");
    fclose(rangfile);
    Create |= FIRST;
    }else{
    new File:rangfile = fopen("Ranks.txt", io_read),SplitString[200];
    for(new i; i != MAX_FRAKTIONS; ++i){
    fread(rangfile,SplitString);
    sscanf(SplitString,"p<|>a<s[10]>[20]",FrakRang[i]);
    //"p<|>s[10]s[10]s[10]s[10]s[10]s[10]s[10]s[10]s[10]s[10]",FrakRang[i][0],FrakRang[i][1],FrakRang[i][2],FrakRang[i][3],FrakRang[i][4],FrakRang[i][5],FrakRang[i][6],FrakRang[i][7],FrakRang[i][8],FrakRang[i][9]);
    }
    for(new i; i != MAX_FRAKTIONS; ++i)printf("%s",FrakRang[i][1]);
    fclose(rangfile);
    }
    return 1;
    }


    @SaveRang(){
    new File:rangfile = fopen("Ranks.txt", io_write),SaveString[200];
    for(new i; i != MAX_FRAKTIONS; ++i){
    format(SaveString,200,"%s|%s|%s|%s|%s|%s|%s|%s|%s|%s| \r\n",FrakRang[i][0],FrakRang[i][1],FrakRang[i][2],FrakRang[i][3],FrakRang[i][4],FrakRang[i][5],FrakRang[i][6],FrakRang[i][7],FrakRang[i][8],FrakRang[i][9]);
    fwrite(rangfile,SaveString);
    }
    fclose(rangfile);
    return 1;
    }


    Ich hab dir das mal gemacht viel Spaß mit dem Code, also besser kann man es mit der Standartfunktionen nicht umsetzen


    //edit kleine Änderungen am Code