Beiträge von Andosius

    1min -> 60 Sekunden.
    Wenn du dich nur eine Minute lang mutest, und der Timer in der selben Sekunde einwirkt, hast du einen Mute von 59 Sekunden -> 59/60 gleich 0 in PAWN.


    Goldkiller hat hier mal eine Funktion namens "ConvertSecEx" gepostet.
    Damit könntest du die Zeit umformatieren. :)

    Nimms mir nicht übel, aber das Forum ist voll mit solchen Tutorials.
    Wenn du es selbst nicht probierst, kannst du es niemals lernen. ;)


    Ich kann dir aber gerne ein Rezept aufschreiben:
    -Wenn man es oparkt, das Fahrzeug via DestroyVehicle(vehid); löschen (aus dem Array "Vehicle" kriegst du vermutlich auch die vehicleid).
    -Unter Vehicle im Enumator eine neue Kategorie einführen (z.B. bool:opark, wobei ein Integer zum Speichern besser ist :)). Diese musst du dann auch laden und speichern lassen. Ist das geschaft, packst du AddStaticVehicleEx/CreateVehicle oder whatever nach unten mit Funktionen wie VehicleNumberplate etc.
    Ist Vehicle XYZ[opark] == 1 setzt du ein continue und hinderst das Script daran das Fahrzeug zu erstellen, welches DENNOCH geladen wird. (Abfrage vor dem erstelllen des Fahrzeugs natürlich).
    Danach kannst du nebesächliche Sachen wie den Dialog einführen, wo du beim formatieren des Dialoges dann überprüfst, ob opark == 1.
    Darauf dann deine Interaktion mit dem Szenario.
    -Beim opark Befehl musst du dann auch noch beachten, dass du für Vehicle auch noch eine Kategorie in den Enumator einfügst, wo du den Preis festlegst.
    Beim freikaufen musst du u.a. auch die Tunings neu laden, das darfst du nicht vergessen!


    Das war's eigentlich im Großen und Ganzen.
    Melde dich einfach hier, wenn du Probleme bei der Umsetzung hast. ;)



    PS: kannst die MrMonats Tutorialreihe anschauen, die wird dir vermutlich helfen können. :D

    ist auch bei OnPlayerUpdate ein return 1; am ende ?

    Ja, sonst wäre das Game noch asynchroner als es schon ist... :whistling:


    Der Fehler lag darin, dass ich die SpawnInfo vom Spieler gesettet habe und bei OnPlayerSpawn den Skin nicht erneut gesetzt habe.
    Es bringt zwar absolut gar keinen Sinn, weil der Skin schon definiert wurde... Aber was soll's. Nun klappt es ja.


    Danke trotzdem für die Hilfsversuche.

    Hallo,


    gestern ist mir aufgefallen, dass ich die Skins andere Leute nicht sehen kann und diese umgekehrt auch meinen nicht.
    Also diese haben zwar einen Skin gesetzt bekommen, welchen diese auch sehen können, aber kein anderer kann den dann sehen.


    Hatte jemand bereits so ein Problem? Ich wüsste ehrlich gesagt überhaupt nicht, woran das liegt und kann dementsprechend auch keine Zeilen liefern. ?(


    LG

    Wenn du den GameMode bearbeitest musst du dabei beachten, dass du nach Rauswurf des Plugins das Login-System neu verknüpfen musst, da 2 oder 3 Callbacks mit der Funktion arbeiten.


    Ooooder du nimmst das Plugin raus, definierst die Funktion neu und setzt den string der PVar (habe den Namen nicht im Kopf) auf "DE" oder whatever.


    Sprich die Funktion returnt dann immer "DE" als string.
    Dann funktioniert der Geoblock halt nicht mehr, aber was solls. :)

    Jo genau, bei DIALOG_BUSFAHRER kannst du noch unter den listitems jeweils den obrigen Code einfügen und die Möglichkeiten abarbeiten, durch welche der Spieler nicht mehr als Busfahrer arbeitet.
    Teste es am besten mal und gib dann Bescheid. :)


    LG

    Wie benutze ich deine variable in mein Dialog?


    CMD:linie(playerid)
    {
    if(!IsLoggedIn(playerid))return 1;
    new vehicleid = GetPlayerVehicleID(playerid);
    if(Spieler[playerid][pJob] == 1) // Busfahrer
    {
    if(IsVehicleABus(vehicleid))
    {
    if(GetPlayerVehicleSeat(playerid) != 0)return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht auf dem Fahrersitz.");
    //strdel(DialogString, 0, sizeof(DialogString));
    //strcat(DialogString, "Linie 1: LS Stadtlinie 1, ab Skill 0\nLinie 2: LS Stadtlinie 2, ab Skill 2\nLinie 3: LS Stadtlinie (East), ab Skill 3\nLinie 4: LS-SF, ab Skill 4\nSF-LS, ab Skill 4\nLinie 6: SF Stadtlinie 1, ab SKill 6\nLinie 7: SF Stadtlinie 2, ab Skill 7");
    format(DialogString, sizeof(DialogString), "Linie 1: LS Stadtlinie 1, ab Skill 0 (%d/10)\n\
    Linie 2: LS Stadtlinie 2, ab Skill 2 (%d/10)\n\
    Linie 3: LS Stadtlinie (East), ab Skill 3 (%d/10)\n\
    Linie 4: LS-SF, ab Skill 4 (%d/10)\n\
    Linie 5:SF-LS, ab Skill 4 (%d/10)\n\
    Linie 6: SF Stadtlinie 1, ab Skill 6 (%d/10)\n\
    Linie 7: SF Stadtlinie 2, ab Skill 7 (%d/10)", linie[0], linie[1], linie[2], linie[3], linie[4], linie[5], linie[6]);
    //Beachte hierbei, dass er die Linie auch mit dem Tod oder Disconnecten abbrechen könnte. Kenne dein Script nicht und kenne die anderen Alternativen nicht
    //somit musst du bei jeder Wahrscheinlichkeit linie[Spieler[playerid][pBusLinie]-1]--; setzen!!!!
    ShowPlayerDialog(playerid, DIALOG_BUSFAHRER, DIALOG_STYLE_LIST, "Linien Auswahl", DialogString, "Starten", "Abbrechen");
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "Der Busbahnhof wurde Rot markiert.");
    SetPlayerCheckpointEx(playerid, 1212.3547,-1729.5112,13.5721, 3.0, CP_GPS_BUSBAHNHOF, CP_TYPE_GPS);
    }
    }
    return 1;
    }

    Klar, wenn du NUR wissen willst, ob schon 10 Leute die Linie fahren machst du das:
    new count;for(new i; i <= GetPlayerPoolSize(); i++){if((Spieler[i][pBusLinie]-1) != listitem) continue;count++;}if(count == 10)return SendClientMessage(playerid, 0xFFFFFFFF, "Blabla schon 10 Leute");


    Meine vorherige Variante könntest du halt noch in ein Dialog einbauen. ^^

    Bei den listitems folgendes hinzufügen:
    linie[listitem]++;


    Wenn er wieder /linie eingibt fragst du ab:

    if(Spieler[playerid][pBusLinie] != 0) {
    linie[Spieler[playerid][pBusLinie]-1]--;
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid, 0xFFFFFFFF, "Du hast die Busfahrt abgebrochen!");
    }


    linie[Spieler[playerid][pBusLinie]-1]--;

    Und das da auch dort einfügen, wo er die Linie beendet.


    Ganz oben musst du nur noch das hinzufügen und es sollte funktionieren:
    new linie[7];


    Wenn du die Fahrer abfragen willst -> unter listitem die Abfrage hinzufügen:
    if(linie[listitem] == 10) { xyz;}
    Wobei ich hierbei doch die Anzahl der Fahrer von Zeit zu Zeit per for Schleife aktualisieren würde!


    LG

    Okey es hat geklappt, der Server startet nun auch.


    Nur wenn man sich einloggt kommt dort keine Passwort abfrage mehr, und wenn man dann halt auf " Spawn " drück kommt " Server closed Connecten "



    Hast du auch deine MySQL-Daten ins Script eingetragen, beziehungsweise diese dort aktualisiert?

    Schöner wäre es, wenn du es gleich als Array machst:



    new linie[7];

    Wenn jemand beim Dialog auf ein listitem drückt ->

    linie[listitem]++;

    (wobei ich mir nicht sicher bin, ob die erste Auswahl listitem -> 1 oder 0 ist...)
    und später beim Beenden der Fahrt -> linie[xyz]--;


    Wie mache ich wen er /linie nochmal eingibt das die Tour automatisch dann abgebrochen wird.

    Checkpoint resetten und die Variable zurücksetzen, falls du das so umgesetzt wurde.
    Musst die Linie halt nur in einer Variable zwischenspeichern.


    LG