Beiträge von Austrianer

    for(new i = 0; i > sizeof(ATM); i++)


    Ersetzen in
    for(new i = 0; i < sizeof(ATM); i++)



    Du hast das Zeichen bei der Bedingung falsch. Es läuft nur ab wenn das i größer ist als die Anzahl der ATMs, da du es aber mit 0 deklarierst, funktioniert es nicht.


    Ist mal ein Fehler :)


    Funktioniert aber trotzdem noch nicht.


    Hab mal die Werte eingesetzt und mit den Werten funktioniert es. Hmm wahrscheinlich kannst du es so nicht machen :wacko:

    Oha der gibt diese Zeile gerade unendlich Mal aus also Endlosschleife 8|


    Es sollte eigentlich nur einmal ausgegeben werden, weil es ja nur eine Zeile in der Tabelle ist :wacko:


    Wie funktioniert denn das richtig ?(


    Aber aufjedenfall danke für deine Antwort.

    Guten Tag Scripter, ich danke jedem der sich diesen Thread durchliest und versucht mir zu helfen.


    Ich muss nun leider die Hilfe anderer beanspruchen. Da ich ja eigentlich der Typ bin der jeden Fehler selbst herausfindet. Aber da ist mein Wissen überfragt.


    Ich arbeite mit meinem Server-Skript über MySQL-Verbindung und versuche gerade alle Werte aus der Tabelle Fahrzeuge auszulesen. Jeweils hab ich da ein paar Probleme mit den Float-Variablen.


    Ich habe es versucht die x, y, z und Roation-Koordinaten zuerst als Float in der Tabelle(in der Datenbank) zu speichern. Jedoch gabs da einige Probleme beim auslesen mit mysql_fetch_float. Somit hab ich es auf VARCHAR umgeändert. Nun funktioniert ja auch einigermaßen. Jedoch gibts da immernoch ein Problem.



    stock Fahrzeuge() {
    new id[11], name[10], typ[3], x[9], y[9], z[9], r[9], farbe1[3], farbe2[3];
    new id2, typ2, farbe3, farbe4;
    mysql_query("SELECT * FROM fahrzeuge");
    mysql_store_result();
    while(mysql_num_rows()) { // Soll alle Zeilen in der Tabelle durchgehen
    mysql_fetch_field("ID", id); // 0
    id2 = strval(id);
    mysql_fetch_field("Name", name); // LSPD
    mysql_fetch_field("Typ", typ); // 598
    typ2 = strval(typ);
    mysql_fetch_field("X", x); // 1570.2747, wird als String übernommen
    mysql_fetch_field("Y", y); // -1711.347
    mysql_fetch_field("Z", z); // 5.6106
    mysql_fetch_field("R", r); // 359.279
    mysql_fetch_field("Farbe1", farbe1);
    farbe3 = strval(farbe1);
    mysql_fetch_field("Farbe2", farbe2);
    farbe4 = strval(farbe2);
    printf("%i, %f, %f, %f, %f, %i, %i", id2, floatstr(x),floatstr(y),floatstr(z),floatstr(r), farbe3, farbe4); // Meine Ausgabe
    AddStaticVehicleEx(typ2,floatstr(x),floatstr(y),floatstr(z),floatstr(r),farbe3,farbe4,-1); // Fahrzeug sollte hier erstellt werden mit den Koordinaten
    SetVehicleNumberPlate(id2, name); // Fahrzeug mit einem neuer Schildnummer ausstatten
    }
    mysql_free_result();
    }



    Ich hab mir die Ausgabe ausgeben lassen und es kommt raus 0, 1570.274650, -1711.347045, 5.610599, 359.276885, 53, 15.
    Weiters steht auch 0 Vehicles auf dem Server. Also wird auch nicht erstellt. Brauche eure Hilfe bitte :wacko:


    Ich rufe die Methode Fahrzeuge() bei OnGameModeInit() auf. Ich möchte damit alle Fahrzeuge die ich in der Tabelle drinnen stehen habe respawnen. Also dynamisch erzeugen :)


    Wenn ihr dazu noch Fragen habt bitte melden.

    Zu deinen Problemen


    1. Problem


    Füge den Befehl unter deine OnGameModeInit()


    ShowPlayerMarkers(0); // Somit werden alle Marker von jedem Spieler deaktiviert.


    2. Problem


    Füge diesen Befehl ebenfalls unter deine OnGameModeInit()


    LimitGlobalChatRadius(50.0); // Wie weit die anderen Spieler den Text denn du schreibst lesen können


    3. Problem


    Ist wahrscheinlich das jeder Spieler eine andere Farbe bekommt beim Connecten.


    Füge mal den Befehl unter deine OnPlayerConnect()


    SetPlayerColor(playerid, WEISS); // Für Weiss eben den PAWN-Farb-Code benutzen


    Dann sollte jeder Spieler in weiß da stehen. Kannst natürlich auch andere Farben benutzen.

    Funktionierts jetzt oder nicht?


    Nein muss nicht stehen. Denn %s bedeutet ja du möchtest den nächsten String übernehmen. Aber random(9) liefert ja keinen String sondern einen Zahlen-Wert. Somit %d oder eigentlich reicht auch %i.

    Indem du eben abfragst ob er telefoniert. Mit if (Playervariable == 1 oder 0) 1 wenn er telefoniert und 0 wenn er nicht telefoniert. Das ist eben der boolean-Wert.


    Danach fragst du ihn ab mit wem er denn telefoniert und brauchst dazu die Playerid vom anderen Spieler mit dem du telefonierst und dann gibst du einfach


    SendClientMessage(playerid, GELD, "Text"); für playerid einfach die ID eingeben mit dem er telefoniert. Dann kann es nur der andere Spieler lesen. Wenn du es auch lesen möchtest. Einfach das gleiche nochmal nur statt playerid dann deine eigene ID schreiben.


    Hast du dazu noch Fragen? Weißt du jetzt wie du es machst?


    for (new i = 0; i < MAX_PLAYERS; i++) { // Somit geht es jeden Spieler durch, der gerade online ist
    if( pInfo[i][pBankNummer] == strval(inputtext)) { // Diese Bedingung wird erfüllt wenn der Spieler die Banknummer hat gleich dem inputtext(inputtext solltest du zu einem Integer machen
    SCM(i, GELB, "Überweißung");
    }
    }


    Das bedeutet es bekommen nur die Spieler die online sind und die gleiche Banknummer haben wie der inputtext lautet. Das strval() nicht vergessen. Weil du sonst einen Integer-Wert mit einem String-Wert vergleichst :wacko:

    Da war wohl jemand schneller als ich.


    Ja eindeutig, weil du versuchst diesen String in einen Integer zu machen. Jedoch bei einem Integer niemals eine 0 ganz vorne stehen kann, weil die ja vorne nichts bringt und somit weggelassen wird.


    Deswegen lass es einfach als String und speicher es so ein.

    Das ist ganz leicht, also wenn ein Spieler in ein Fahrzeug, nehmen wir jetzt z.B. vom Tutorial den Mähdrescher wird automatisch ein neuer Checkpoint erstellt. Nun wird dazu noch die Variable Farmc[playerid] = 1 erstellt und gesetzt.



    public OnPlayerStateChange(playerid, newstate, oldstate) { // public wenn er im fahrzeug sitzt
    new carid = GetPlayerVehicleID(playerid); // Wir definieren carid das brauchen wir sonst gibts errors
    if(carid == 532) { // Die Vehicle ID vom mehdrescher & die abfrage ob es der mehdrescher ist
    SendClientMessage(playerid,Deinefarbe,"Fahre nun die Checkpoints ab um das Korn zu ernten."); // Euer text kann mann ändern wie mann will
    SetPlayerCheckpoint(playerid,X,Y,Z,5.0); // wir erstellen den 1 checkpoint (X,Y,Z Ersetzen)
    Farmc[playerid] = 1; // wir setzen die virabel auf 1 für die abfrage
    }
    return 1; }


    Also wenn der Spieler jetzt einen Checkpoint berührt, wird getestet welcher Wert jetzt in der Farmc-Variable drinnen steht. Wenn Wert 1 drinnen steht wird der alte Checkpoint gelöscht, ein neuer gesetzt und in die Variable Farmc wird nun eine 2 gesetzt. Dann gehts wieder von vorn los. Wenn der Spieler den nächsten Checkpoint berührt. Das kannst du jetzt die ganze Zeit machen.


    public OnPlayerEnterCheckpoint(playerid) { // public wenn er den checkpoint betritt {
    if(Farmc[playerid] == 1) { // die abfrage mit der wir abfragen ob die virabel auf 1 ist
    DisablePlayerCheckpoint(playerid); // Den alten Checkpoint löschen.
    SetPlayerCheckpoint(playerid,X,Y,Z,5.0); // wir erstellen den 2. checkpoint (X,Y,Z Ersetzen)
    Farmc[playerid] = 2; // für den 3 checkpoint
    return 1;
    }
    if(Farmc[playerid] == 2) { // die abfrage mit der wir abfragen ob die Variable 2 ist
    DisablePlayerCheckpoint(playerid); // Den alten Checkpoint löschen.
    SetPlayerCheckpoint(playerid,X,Y,Z,5.0); // wir erstellen den 3. checkpoint (X,Y,Z Ersetzen)
    Farmc[playerid] = 3; // Für den nächsten Checkpoint
    return 1; }
    }

    bei meinem zum beispiel kannst einfach copy+paste machen nur auf die klammern aufpassen :D


    Wir sind aber nicht hier um einfach nur Copy and Paste zu machen. Sondern um Skript-Probleme zu beheben und ihm den Fehler zu erklären. Damit er es versteht und mit seinem eigenen Stil programmiert.

    Speicherst du die Daten irgendwo. Also in einer Datei oder über MySQL?


    Weil wenn du dich ausloggst kannst du deinen Rang speichern und wenn du dich wieder einloggst kannst du die Rangid wieder laden.
    Somit musst du nicht immer /makeleader machen.

    Hast du immernoch bei der Switch-Case von 0 - 5.


    Ist klar das es nicht funktioniert wenn du Rang 6 eingibst. Es gibt nur zur Auswahl 0-5. Veränder das von 1-6. Dann sollte es eigentlich funktionieren.