maxVeh = Das was in Datei steht

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 ,
    Ich bin ein totaler Neuling in Sachen PAWNO.


    Wie Speichere ich in eine bereits vordefinierte Variable , das was in einer Datei steht ?
    Also ich habe schon geschafft , das die Anzahl der CarSlots in der .ini gespeichert wird.


    So klappt es leider nicht :


    Die Variable war schon vorhanden:
    //======= Bestimmungen ========//
    #define MaxVeh 3 // Anzahl Möglicher Fahrzeuge pro Person! Achtung nicht zu hoch setzten! Das verbraucht Speicher und kann über das Carlimit hinausschiessen!


    Die Variable pCarSlots ist standart auf 3 gesetzt
    PlayerInfo[playerid][pCarSlots] = 3;
    // So ist die Variable CarSlots in der .ini Datei aufgebaut
    format(var, 32, "CarSlots=%d\n",PlayerInfo[playerid][pCarSlots]);fwrite(hFile, var);


    Nun möchte ich sagen , dass maxVeh = CarSlots (Das was in der Datei steht).
    Wie macht man das ?


    So auf keinen Fall :

    Function OnPlayerConnect(playerid)
    {
    MaxVeh = PlayerInfo[playerid][pCarSlots];
    }


    Mfg samp4ever

  • Also so wie ich das jetzt verstanden habe, willst du die Variable MaxVeh dynamisch während der Laufzeit ändern und in einer Datei speichern.


    Dann musst du das nicht für jeden Spieler machen, sondern kannst das einfach global machen:


    //Oben anstatt dem Makro
    #define MAX_VEH_PATH "MaxVeh.ini"
    new MaxVeh;


    //Am besten machst du dir 2 Funktionen:
    stock SetMaxVeh(anzahl)
    {
    new File:f=fopen(MAX_VEH_PATH,io_write),buffer[8];
    valstr(buffer,anzahl),MaxVeh = anzahl;
    fwrite(f,buffer),fclose(f);
    }
    stock GetMaxVeh()
    {
    new buffer[8] = "3";
    if(!fexist(MAX_VEH_PATH)) return strval(buffer); //Hier falls es nicht existiert der Defualt Wert 3
    new File:f=fopen(MAX_VEH_PATH,io_read);
    fread(f,buffer),fclose(f);
    return strval(buffer);
    }


    //Dann unter OnGameModeInit
    MaxVeh = GetMaxVeh();


    //Und in einem Command oder so kannst du sie so setzen:
    SetMaxVeh(5); //dann wäre das z.B. 5


    Hoffe du hast es so grob verstanden ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()



  • Also jeder User soll ja unterschiedlich viele Fahrzeuge haben können.
    Die Anzahl der Fahrzeuge steht bei jedem User in der .ini unter
    CarSlots="ANZAHL FAHRZEUGE"
    Deshalb sind die Funktionen nicht ganz richtig.


    PS ich bin kein bisschen voran gekommen.
    Need help :(

    Einmal editiert, zuletzt von samp4ever ()

  • Deshalb sind die Funktionen nicht ganz richtig.


    Das konnte man aus deinem Post nicht erfahren, ob oder ob das so nicht sein sollte.


    Okay, wenn das so sein soll, dann behandle das doch einfach als SpielerVariable und...speichere und lade sie genau so (dann brauchst du auch kein define).

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Einfach dort wo du die Fahrzeuge erstellst:
    if(PlayerInfo[playerid][pCarSlots] <= PlayerInfo[playerid][pCars]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Mehr Fahrzeuge gehen nicht.");
    PlayerInfo[playerid][pCars]++;


    pCars legst du auch im enum zu PlayerInfo an und speicherst es wie das Geld oder die Kills (etc).


    MaxVeh setzt du im define auf den Wert, den ein Spieler maximal an Fahrzeugen haben kann.

  • Ich bin jetzt total durcheinander.


    Ist es nicht so , dass wenn ich die Variable


    define MaxVeh


    auf den Wert(CarSlots) setze , die in jeder User.ini vorhanden ist ,
    dass der jeweilige User dann z.B 7 Autos haben kann und ein andere nur 4 ?



    Beispiel :


    #define MaxVeh



    OnPlayerConnect(){


    MaxVeh = PlayerInfo[playerid][pCarSlots];
    }


  • Das konnte man aus deinem Post nicht erfahren, ob oder ob das so nicht sein sollte.


    Okay, wenn das so sein soll, dann behandle das doch einfach als SpielerVariable und...speichere und lade sie genau so (dann brauchst du auch kein define).


    Nein, das geht nicht.


    Liegt es daran , dass es eine Variable ist , die im define drinne ist ?
    Also Variablen im define kann man nicht einfach so mal verändern ? 8|

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also Variablen im define kann man nicht einfach so mal verändern ? 8|


    Sachen die du mit #define machst, sind keine Variablen...


    Zum Beispiel:


    #define MaxVeh 5


    //Irgendwo
    MaxVeh = 9;


    Während dem Compilen, ersetzt der Pre-Compiler das durch:


    5 = 9;


    und das macht ja absolut keinen Sinn.


    Wenn du mit Variablen arbeiten willst, nutze new.


    Aber hier musst du nur mit einer PlayerVariable arbeiten...so wie du dein Geld...Level etc abspeicherst...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Alles klar , vielen Dank.


    if(PlayerInfo[playerid][pCarSlots] <= PlayerInfo[playerid][pCars]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Mehr Fahrzeuge gehen nicht.");
    PlayerInfo[playerid][pCars]++;
    pCars exisitiert bei mir nicht.
    Wie gucke ich wie viele Autos der User hat ?
    Ich weiß , dass ich dann erstmal ins Verzeichnis /scriptfiles/Autos/ rein muss.
    Dann kann man alle Dateien zählen die %user%% heißen.
    Wie man das in PAWNO macht. Keine Ahnung :3

  • Beitrag von samp4ever ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hab ich dir doch in Post #6 schon gesagt, wie das geht. ;)
    maxVeh = Das was in Datei steht


    Einfach dort wo du die Fahrzeuge erstellst:
    if(PlayerInfo[playerid][pCarSlots] <= PlayerInfo[playerid][pCars]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Mehr Fahrzeuge gehen nicht.");
    PlayerInfo[playerid][pCars]++;



    Übrigens: Lass bitte diese sinnlosen Zitate, schau dir den Post an, bevor du ihn abschickst. Entferne das mal, das sieht ja schrecklich aus.

  • PlayerInfo[playerid][pCarSlots]


    Also bei mir kommen immer noch nur 3 Carslots , wenn ich Carkey eingebe :3


    if (strcmp("/carkey", cmdtext, true, 10) == 0)
    {
    new mv = PlayerInfo[playerid][pCarSlots];
    if(mv > 1)
    {
    Dtc_PlayerKey[playerid] += 1;
    if(Dtc_PlayerKey[playerid] == PlayerInfo[playerid][pCarSlots])
    {
    Dtc_PlayerKey[playerid] = 0;
    }
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s!",Dtc_PlayerKey[playerid]+1,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400]);
    }
    else
    {
    format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, doch hast für diesen Schlüssel noch kein Auto!",Dtc_PlayerKey[playerid]+1);
    }
    SendClientMessage(playerid,COLOR_YELLOW,string);
    SendClientMessage(playerid, COLOR_GREY, "Mit /carlist siehst du all deine Autos!");
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen