Beiträge von Kaliber

    Schreib es so:


    ocmd:stats(playerid, params[])
    {
    new string[256];
    format(string,sizeof(string),"accounts/%s.txt",SpielerName(playerid));
    if(dini_Int(string,"Perso")==1)
    {
    new level=dini_Int(string,"Level");
    format(string,sizeof(string),"Name \t%s [%i] \t100 \t100\n",SpielerName(playerid),playerid);
    format(string,sizeof(string),"%sLevel \t%i \t100 \t100\n",string,level);
    strcat(string,"Respekt \t$5000 \t100 \t100\nZeit seit PayDay \t$5000 \t100 \t100\nWarns \t$5000 \t100 \t100\nRespakt \t$1000 \t100 \t50");
    ShowPlayerDialog(playerid,DIALOG_Stats,DIALOG_STYLE_TABLIST,"Stats",string,"Select", "Cancel");
    }
    return 1;
    }

    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...

    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).

    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 ^^

    Naja, du machst ein Array:


    //Oben in dein Skript schreiben:


    stock const Float:checkP[][3] = {
    {1436.0986,-1735.5679,13.0875},
    {1818.4584,-1911.8336,13.0939},
    {2059.4771,-1940.6632,13.0563},
    {2008.5358,-1457.9471,13.0952},
    {1718.0936,-1414.9360,13.0885},
    {1558.5846,-1294.5383,16.4447},
    {1427.1154,-1030.7017,23.3610},
    {1203.2323,-933.3453,42.4372},
    {793.3743,-1354.3220,13.0956},
    {561.6163,-1399.9645,14.5171},
    {357.1045,-1649.3328,32.5020},
    {1143.0398,-1737.3237,13.2442}
    };


    //Und dann unten einfach so:
    switch(Bus[playerid])
    {
    case 1..12: {
    new str[64],id=Bus[playerid]-1;
    format(str,64,"Du hast den Checkpoint Nr. %d erreicht.",Bus[playerid]);
    SendClientMessage(playerid,GRUN,str);
    SetPlayerCheckpoint(playerid,checkP[id][0],checkP[id][1],checkP[id][2], 5.0);
    Bus[playerid]++;
    }
    case 13: {
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,GRUN, "Herzlichen Glueckwunsch Du hast Bestanden");
    DestroyVehicle(GetPlayerVehicleID(playerid));
    }
    }


    PS: Mit TogglePlayerControllable(playerid,0); freezt du den Spieler...musst ihn aber wieder entfreezen (TogglePlayerControllable(playerid,1)) mit einem Timer o.ä.


    mfg. :thumbup:

    Dann mach es so:


    //Oben ins Skript:
    #define IsDriverFromModel(%0,%1) (GetVehicleModel(GetPlayerVehicleID(%0)) == %1 && GetPlayerState(%0) == PLAYER_STATE_DRIVER)


    Mit dem Makro kannst du prüfen ob er Fahrer ist und sich in einem bestimmten Auto (modelid befindet).


    if(!IsDriverFromModel(playerid,560)) return SendClientMessage(playerid,-1,"Sie befinden sich nicht als Fahrer in einem Sultan!"); //(560 = Sultan)

    Du hast da Rechtschreibfehler drinnen ^^


    if(sscanf(parmas,"i",pID))


    Das zu: if(sscanf(params,"i",pID))


    und das zu:


    GetPlayerPos(pID,Floatx,Float:y,Floar:z);
    SetPlayerCheckpoint(playerid,Float:x,Float:y,Float:z);


    GetPlayerPos(pID,x,y,z);
    SetPlayerCheckpoint(playerid,x,y,z);