Beiträge von Jeffry

    Dann existiert entweder das Fahrzeug nicht, oder es wird beim Erstellen nicht richtig in die Variable geschrieben.
    Da Modell 0 ist, ist in der Variable ein Wert eines Fahrzeugs, das nicht existiert.


    Poste den Code mit dem die Fahrzeuge erstellt werden.

    Die Meldung im Log dürfte aber nicht mehr kommen.
    Ändere mal noch
    new mID = GetVehicleModel(cInfo[carID][model]);
    Zu
    new mID = GetVehicleModel(cInfo[i][model]);


    Du änderst hier den Index, ich denke eher nicht, dass das richtig ist, da du ja auf das Modell zugreifen willst, und das bekommst du über den gleichen Index wie den Besitzer, sonst stimmen die nicht überein.

    Doch, genau so. Wie sonst? Eine Zeile ist ein Datensatz. Du kannst in einem Datensatz nur eine Fraktion, oder ein Fahrzeug oder ein wasweißichwas speichern. ;)


    Versuche es einfach mal im Code aus, ich denke dann wirst du automatisch das richtige nehmen.

    Wenn du dir die Daten in der Tabelle anschaust (zum Beispiel bei den Fahrzeugen), dann hat jedes Fahrzeuge eine Zeile in der Tabelle. Das meinte ich.
    Weil du ja gefragt hast ob es besser wäre für jede Fraktion eine eigene Tabelle zu erstellen. Nein, alles in eine Tabelle.

    ICy.: Das Prinzip wie du es vorschlägst ist ganz schlecht, denn wenn ein Spieler einen Namen hat, der zum Beispiel 17 Zeichen lang ist, und du dann die 7 Zeichen des Tags hinzufügst, dann sind es 24 Zeichen, wobei SA:MP maximal 20 Zeichen im Namen erlaubt, sprich es funktioniert nicht. Ebenfalls wäre dann beim entfernen des Tags der Rest des Namens abgeschnitten und weg.
    Besser wäre es, eine Funktion zu machen, die den Tag vor den Name schreibt, wenn er gebraucht wird, und bei dem aduty Befehl einfach nur eine SpielerVariable auf 1 zu setzen, wenn der Tag simuliert werden soll.


    Unter den Includes:
    new aDuty[MAX_PLAYERS];


    Im Befehl:
    aDuty[playerid] = 1; //Bzw. 0 wenn aus


    Und dann dort, wo der Name ausgegeben werden soll:
    new string[145];
    format(string, sizeof(string), "%s hat irgendwas gemacht.", SpielerName_Ex(playerid))
    SendClientMessageToAll(-1, string);



    Die Funktion:
    stock SpielerName_Ex(playerid)
    {
    new name[MAX_PLAYER_NAME + 10];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    if(aDuty[playerid] == 1) format(name, sizeof(name), "[Admin]%s", name);
    return name;
    }

    Das Laden, Speichern und Erstellen kannst du analog zu den PlayerCars machen, ja.
    Du machst für jede Fraktion eine Zeile in der Tabelle, nicht für jede Fraktion eine eigene Tabelle, das wäre nicht gut.


    Generell kannst du es genau gleich aufbauen wie das PlayerCars-System, nur eben mit anderen Werten und Funktionen.

    Das war voller Klammerfehler, deshalb haben die Errors auch nicht wirklich was ausgesagt. Schreibe es so:
    dcmd_invite(playerid,params[])
    {
    new pid;
    new spieler[256];
    new leader[256];
    new leadername[MAX_PLAYER_NAME];
    new spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,leadername, sizeof(leadername));
    GetPlayerName(playerid,spielername, sizeof(spielername));
    if(sSpieler[playerid][Leader] >= 1)
    {
    if(sscanf(params,"u",pid))
    {
    return SendClientMessage(playerid,Weiß,"/invite (playerid)");
    }
    if(pid == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,Weiß,"Der Spieler mit dieser ID ist nicht Online!");
    }
    if(sSpieler[playerid][Leader] == 1)
    {
    sSpieler[pid][Fraktion] = 1;
    sSpieler[pid][Rang] = 1;
    format(spieler, sizeof(spieler),"Grove Leader %s hat dich in die Grove Street invitet!",leadername);
    format(leader, sizeof(leader),"Du hast %s in die Grove Street invitet!",spielername);
    SendClientMessage(pid,Weiß,spieler);
    SendClientMessage(playerid,Weiß,leader);
    }
    if(sSpieler[playerid][Leader] == 2)
    {
    sSpieler[pid][Fraktion] = 2;
    sSpieler[pid][Rang] = 1;
    format(spieler, sizeof(spieler),"Ballas Leader %s hat dich in die Ballas Gang invitet!",leadername);
    format(leader, sizeof(leader),"Du hast %s in die Ballas Gang invitet!",spielername);
    SendClientMessage(pid,Weiß,spieler);
    SendClientMessage(playerid,Weiß,leader);
    }
    }
    else
    {
    SendClientMessage(playerid,Weiß,"Du bist kein Leader!");
    }
    return 1;
    }

    pPass ist ein Integer.

    Spoiler anzeigen
    enum pInfo
    {
    pPass,
    pScore,
    pCash,
    pKills,
    pDeaths,
    }


    Wird denn dieses Callback überhaupt aufgerufen?
    forward LoadUser_data(playerid,name[],value[]);


    Setze da mal einen print rein:


    forward LoadUser_data(playerid,name[],value[]);
    public LoadUser_data(playerid,name[],value[])
    {
    printf("LoadUser aufgerufen.");
    printf("playerid: %d, name: %s, value: %s", playerid, name, value);
    INI_Int("Password",PlayerInfo[playerid][pPass]);
    INI_Int("Cash",PlayerInfo[playerid][pCash]);
    INI_Int("Kills",PlayerInfo[playerid][pKills]);
    INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    INI_Int("Score",PlayerInfo[playerid][pScore]);
    return 1;
    }


    Was wird geprintet, wenn du dich einloggen willst?