Beiträge von Douq

    SetPlayerMarkerForPlayer( SPIELERID (DIE DIE VERÄNDERUNG SEHEN SOLL), SPIELERID (DIE, DEREN FARBE SICH ÄNDERN SOLL), FARBECODE)


    Du müsstest also einfach durch alle Spieler loppen, die Online sind + in deiner Fraktion sind, beispielsweise so:


    Code
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    	if(!IsPlayerConnected(i) || playerInfo[i][pFraktion] != playerInfo[playerid][pFraktion]) continue;
    	SetPlayerMarkerForPlayer(playerid, i, 0xF6FF00FF);
    }

    Dadurch wären alle Fraktionsmitglieder, die zu diesem Zeitpunkt online sind, Gelb.

    Kannst auch folgendes machen:


    Und dann folgend drauf zugreifen (Anwendungsbeispiel):


    SetPlayerPos(playerid, Fraktion[5][sX][0],Fraktion[0][sY][0], Fraktion[5][sZ][0]);

    Du musst per [wiki]format[/wiki] den string erst einmal formatieren und dann die Variable als Parameter angeben.


    Beispiel:

    Code
    new str[15];
    format(str, 15, "Du bist %s", "toll");
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Du bist ..", str, "Button 1", "Button 2");

    Da ist nämlich der Fehler! Probier es mal mit dieser Funktion:

    Code
    getFreeCarID()
    {
        for(new i=0; i<sizeof(cInfo); i++)
        {
            if(cInfo[i][db_id]==0)return i;
        }
        return -1;
    }

    Und setze folgende Abfrage noch unter deiner Deklaration von id (bei OnPlayerCarsLoad):



    if(id == -1) return printf("Das FahrzeugLimit wurde erreicht.");

    Dann zeig mal den Code von getFreeCarID(). Sind die drei Fahrzeuge alle in der Datenbank? Du scheinst nämlich immer nur den ersten Index zu verwenden -> ergo deine getFreeCarID() könnte die Fehlerursache sein.

    Hast du denn überhaupt auch so viele Fahrzeuge? Würde behaupten cInfo hat eine Größe von 200 und die restlichen Einträge sind einfach nicht geladen. Du kannst dir sonst einfach per

    Code
    if(!cInfo[id][model]) continue;


    die restlichen Abfragen ersparen (bei deinem Code vor 7).


    Aus dem Code geht die Vermutung zurück, dass die FahrzeugID in der Variable nicht mit der übereinstimmt, in welcher du sitzt. Ist es denn überhaupt richtig, dass du derzeit nur ein Fahrzeug auf dem Server hast?


    Um die Vermutung zu bestätigen einfach mal:


    Kann es sein, dass du eventuell irgendwo das Fahrzeug löscht und neuerstellst und vergisst, die ID zu übernehmen?

    Was meinst du denn mit meckern?



    Füg mal diesen Code hinzu und poste dann, was die Console ausgibt. Am besten zeigst du dazu noch zusätzlich deinen jetzigen Stand von deinem /motor Befehl.

    Super das klappt schonmal. Ein kleines Problem habe ich nun noch. Sobald die Fahrzeuge freigekauft wurden, ich in diese einsteige und ein wenig fahre und das Fahrzeug dann verlasse spawnt es sofort wieder.

    Der letzte Parameter bei CreateVehicle() gibt den respawn delay in Sekunden an. Du hast ihn auf 1, ergo respawnt das Fahrzeug nach einer Sekunde. Entweder die Zeit beliebig hoch stellen oder auf -1, dann respawnen die Fahrzeuge nicht.

    Sorry für die Einrückung, klappt bei mir irgendwie nicht wirklich.

    Okay, was mir jetzt so auffällt:

    • In deiner Abfrage in Zeile 7 musst du noch zusätzlich abfragen, ob das Fahrzeug gesperrt ist bzw. in deinem Fall ob es nicht gesperrt ist.
    • Zeile 25 sendest du einen Query und setzt c_gesperrt auf 1, das ist sicherlich falsch oder?
    • Zeile 27 ist theoretisch unnötig, da du in Zeile 23 den Wert auf 0 setzt und es in keinem Fall einen anderen Wert als 0 haben kann.
    • In Zeile 16 muss der Platzhalter von %s zu %d, da es eine Zahl ist.

    Denke Punkt 1 wird dein Problem lösen

    ich meine ob mann das mit eine abfrage machen kann an stadt mit 21 abfragen für alle jobs sonst muss ich die jewalz einzelnt eintragen MfG

    Naja angenommen du fügst deinem Array vFahrzeug noch beispielsweise die Variable "vehicleJobID" hinzu, könntest du ganz einfach per isPlayerInJob(playerid, vFahrzeug[vehicleid][vehicleJobID]) abfragen. Müsstest du halt nur die jeweilige jobID beim Erstellen des Fahrzeuges setzen.

    Was meinst du mit erstellen? Die dargestellte Problematik, zumindestens mit der Anzeige, sollte damit behoben sein. Verstehe deine Problematik gerade nicht, kannst du die näher erläutern? Sollten Probleme beim Freikaufen entstehen, brauchen wir auch sämtlichen Code unter OnDialogResponse innerhalb der dialogid Abfrage zu DIALOG_CARFREIKAUFEN_AUSWAHL.

    Sofern "id" in der Datenbank als primary key eingetragen ist, kannst du diese als Gebäudekomplex ID verwenden. Wäre dann zumindestens eindeutig zuordenbar .

    Sobald c_gesperrt nicht gleich 1 ist, brichst du durch das return auch die Schleife ab. Entferne Zeile 13 - 16. Dann, außerhalb der Schleife überprüfst du einfach ob die Variable string per strlen leer ist -> dann zeigst du die Fehlermeldung an.

    Steht GK für Gebäudekomplex? Jenachdem, wie du derzeit deine Gebäude im Skript handhabst. Sollten beispielsweise sämtliche Gebäude in einem Array sein, kannst du einfach deren jeweiligen Index im Array nehmen oder falls diese in einer SQL - Datenbank gespeichert werden, nimmst du einfach den jeweiligen primary key.


    Du könntest auch theoretisch <INTERIORID>.<VIRTUALID> vom jeweiligen Shop nehmen, vorausgesetzt natürlich, dass hier wirklich eine Eindeutigkeit vorliegt.

    Also derzeit fragst du ob, ob der Spieler (sinngemäß) Job 0 - 21 hat. Ich verstehe generell deine Abfrage nicht, denn (ich behaupte es mal) dass jeder Spieler einen Job zwischen 0 - 21 hat - ergo kann jeder diese Fahrzeuge starten -> die Abfrage ist totaler nonsense.


    Du musst doch ersteinmal schauen, OB das Fahrzeug überhaupt ein Jobfahrzeug ist und FALLS JA, überprüfen ob das Jobfahrzeug dem jeweiligen SpielerJOB gleich ist.

    Würde einfach mal behaupten, dass die Länge von deinem query die 127 - Zeichenlänge überschreitet - erhöhe einfach die Größe von query z.B. auf 256 (in deinem Code Zeile 3). Sollte das nicht klappen, lass dir den formatierten Query einfach mal per printf ausgeben und führe ihn manuell (z.B. bei phpMyAdmin) aus und schau, welche Antwort dir der Server gibt.