Beiträge von Jeffry

    Nein, das musst du nur bei der Änderung des Modells machen, bei der Farbe kannst du ja ChangeVehicleColor machen.
    Außerdem musst einjährige nicht jedes Auto in jeder Farbe in deinen Code schreiben, das kannst du ja schön mit Variablen machen, das heißt um das Auto zu ändern fallen nur maximal zwei Zeilen an. Bei Modell ändern: Auto löschen und wieder erstellen. Bei Farbe: ChangeVehicleColor.


    Das ganze braucht eigentlich gar nicht viel Code, wenn du es richtig machst. :)

    Artus, das war nicht an dich gerichtet. :)
    Der andere Post war einfach weg.


    Und nicht alle ersetzen sondern nur genau an der Stelle die ich geschrieben hatte. Kann dir via Handy leider nicht den ganzen PAWN Code geben, das würde ewig dauern. ^^
    Also nur da wo ich es geschrieben hab.


    Zunno: Ich meine die Spalten müssen auch das ` haben.


    EDIT: An den Post unten:
    Ja, dann hab ich richtig gedacht, spalten brauchen auch das `.

    Das kannst du auch freundlicher sagen. Aber er sollte das schon machen, weil
    SET `Besitzer` = `Python`
    falsch ist. Es muss
    SET `Besitzer` = 'Python'
    heißen. Das hat er ja bei den anderen auch so gemacht. ;)


    EDIT: War an Beavis gerichtet, dessen Post weg ist.

    Du musst die ` ` zu ' ' machen, die die nach dem = stehen. (Python)


    Und Farbe1 ist wohl nicht definiert in deiner Datenbank.

    Gut, Ich versuch das mal zu erklären, ich hoffe du fängst was damit an.^^


    • /automenu => OnPlayerCommandText natürlich
    • Das setzt die CameraPos des Spielers (SetPlayerCameraPos, SetPlayerCameraLookAt) zu der stelle, wo du eben das automenu haben willst. Also entweder irgendwie vor dem spieler, obwohl das im Gelände nicht so schon wird, oder eben an einer definierten Stelle, wobei du dann jedem Spieler eine extra Virtual World zuweisen solltest, sonnst wirds chaotisch wenn 2 Leute den Command benutzen. Und Eben: PlayerVehicle[playerid] = CreateVehicle...
    • Als Nächstes dann über OnPlayerKeyStateChange (oder OnPlayerUpdate mit GetPlayerKeys, für Links/Rechts/Hoch/Runter) die Keys abfragen, und mit einer Spieler Variable überprüfen, ob der Spieler auch den Command benutzt hat (die setzt du wenn der Command eingegeben wird zu 1).
    • Das selbe für alle weiteren Einstellungen, musst eben wenn du die Einstellung wechselst (z.B. mit Hoch/Runter) einer anderen Spieler variable zuweisen, in welcher Einstellung der Spieler sich befindet, damit der Server bei dem jeweiligen Tastendruck auch weiß, ob er nun Farbe, Model oder sonst was zu ändern hat.
    • Wenn fertig, dann den Spieler in das Auto setzen, und SetCameraBehindPlayer. Die Spieler Variablen wieder zu 0 setzen. Ende.


    Naja, wenn du Fragen hast, fragen. ^^

    Mach das bool weg, und speichere die variable einfach als String. Anstatt true und false nimmst du '1' und '0' (mit ').
    So hab ich es bei meinem Achievement System gemacht. Ist zu empfehlen.


    Ich denke mal der Ausgangspunkt besteht darin, Parameter "einfacher" anzuwenden, deshalb benutzt man ja SSCANF, am besten du guckst dir öfters die Liste mit allen angegebenen Parametern im Haupttheard von SScanf an.


    Ich kenn die Liste, es ist mir auch klar das "u" Name bzw. ID ist. Allerdings kann es ja sein das eben genau das einen Fehler hat, wie sonst kommt er immer auf eine Falsche ID? (Ich gehe mal davon aus, dass er seinen Name bzw. seine ID richtig eingibt.)


    EDIT: Sieh mal einer an:


    # Geeeht Danke es lag an dd :)


    ^^


    PS: "einfacher", mit den Anführungszeichen haste völlig Recht. ^^ Ich sag immer das liegt im Auge des Betrachters.


    Was du auch mal machen könntest: Direkt unter sscanf das hier setzen, und uns sagen was dein server log so sagt:
    printf("ID Ist: %d (Und meine ID ist: %d)", pID, playerid);

    format(Autodatei,sizeof(Autodatei),"/Autos/%d.dat",vehicleid);
    format(Autodatei,sizeof(Autodatei),"/Autos/%d.dat",vehicle);


    dini_Int(Autodatei,"Modelid");
    if(!dini_Exists(Autodatei)) continue;
    new Model = dini_Int(Autodatei,"Modelid");


    CreateVehicle(i,X,Y,Z,R,-1,-1,-1);
    CreateVehicle(Model,X,Y,Z,R,-1,-1,-1);



    Jeweils das obige mit dem unteren ersetzen. Dann sollte es eigentlich funktionieren.

    mysql_store_result();
    Das musst du nach mysql_query einfügen.


    Und am Ende der Funktion:
    mysql_free_result();


    Und dann noch die 128 in der format Linie zu 20 ändern, bzw zu sizeof(query), sonst siehts so unschön aus.

    new PlatzID[MAX_PLAYERS] = {-1,...}, PlatzProzente[MAX_PLAYERS];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(SpielerProzente[i] > 0)
    {
    new a;
    while(PlatzProzente[a] >= SpielerProzente[i]) a++;
    for(new j=MAX_PLAYERS-2; j>=a; j--)
    {
    PlatzProzente[j+1] = PlatzProzente[j];
    PlatzID[j+1] = PlatzID[j];
    }
    PlatzProzente[a] = SpielerProzente[i];
    PlatzID[a] = i;
    }
    }
    }
    new msg[2048];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(PlatzID[i] != -1)
    {
    format(msg, sizeof(msg), "%s%s - %d%%~n~", msg, SpielerName(PlatzID[i]), PlatzProzente[i]);
    }
    }
    TextDrawSetString(MeinTD, msg);


    Kann es leider grade nicht testen, aber das sollte funktionieren. Wenn nicht, sag es bitte und beschreib was passiert.
    Du musst halt die Variablen mit den deinen ersetzen, aber das sollte klar sein.


    EDIT: Auf deine Frage: Das funktioniert für MAX_PLAYERS Spieler, also für alle im Server.

    FraktionsAuto = CreateVehicle(...);


    OnPlayerEnterVehicle:
    if(vehicleid == FraktionsAuto)
    {
    if(Fraktion[playerid] != 2)
    {
    TogglePlayerControlable(playerid, false);
    TogglePlayerControlable(playerid, false);
    SendClientMessage(playerid, 0xFF0000FF, "ERROR: Nur Fraktion 2 kann das Auto benutzen!");
    }
    else SendClientMessage(playerid, 0x00FF00FF, "Hallo Fraktion 2 Mitglied!");
    }


    Du kannst es auch mit VehicleParams machen, ist aber wesentlich umständlicher.