Checkpoint in job einfügen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo User,
    Ich hab ne frage wie kann ich Checkpoint einfügen mit anderes gewinn und texte,


    Command von Job:


    if (strcmp("/busjob", cmdtext, true, 10) == 0)
    {
    SendClientMessage(playerid, 0x33CCFFAA,"Herzlichen Glückwunsch zu deinem neuem Beruf: Busfahrer.");
    SetPlayerSkin( playerid, 122);
    Bus[playerid] = 1;
    return 1;
    }
    mfg france

  • Als erstes brauchst du ein verzeichnis der checkpoints in der linie


    enum ilinie
    {
    Float:x,
    Float:y,
    Float:z,
    name[20]
    }


    #define laengelinie1 10 // Für 10 Haltestellen
    new linie1[laengelinie1][ilinie] =
    {
    {123.4,234.5,345.6,"Haltestelle 1"}
    // Hier einfach dem dem Beispiel drüber weitere Haltestellen eintragen
    };


    Dann brauchst du einen Command, der den Spieler "duty" setzt. Man wird nur duty, wenn man sich in einem Bus befindet.


    if (strcmp("/busjob", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vid);
    if(model == 431 || model == 437)
    {
    SendClientMessage(playerid, 0x33CCFFAA,"Du kannst nun deine Linie fahren");
    SetPlayerSkin( playerid, 122);
    SetPVarInt(playerid,"BUS",1);
    SetPlayerCheckpoint(playerid,linie1[GetPVarInt(playerid,"BUS")][x],linie1[GetPVarInt(playerid,"BUS")][y],linie1[GetPVarInt(playerid,"BUS")][z],7.0);
    new string[64];
    format(string,sizeof(string),"Nächste Haltestelle: %s",linie1[GetPVarInt(playerid,"BUS")][name]);
    SendClientMessage(playerid, 0x33CCFFAA,string);
    }
    }
    return 1;
    }


    Wir starten also die Linie und setzen den ersten marker.


    Überprüfen wir nun, ob der Spieler in einem Marker gefahren ist.


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(GetPVarInt(playerid,"BUS") < laengelinie1)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,linie1[GetPVarInt(playerid,"BUS")][x],linie1[GetPVarInt(playerid,"BUS")][y],linie1[GetPVarInt(playerid,"BUS")][z]))
    {
    DisablePlayerCheckpoint(playerid);
    SetPVarInt(playerid,"BUS",GetPVarInt(playerid,"BUS") +1);
    SetPlayerCheckpoint(playerid,linie1[GetPVarInt(playerid,"BUS")][x],linie1[GetPVarInt(playerid,"BUS")][y],linie1[GetPVarInt(playerid,"BUS")][z],7.0);
    new string[64];
    format(string,sizeof(string),"Nächste Haltestelle: %s",linie1[GetPVarInt(playerid,"BUS")][name]);
    SendClientMessage(playerid, 0x33CCFFAA,string);
    }
    }
    else
    {
    SendClientMessage(playerid, 0x33CCFFAA,"Du hast deine Route beendet und erhälst $1500");
    GivePlayerMoney(playerid,1500);
    }
    return 1;
    }


    Ist er in einem Radius von 10 Meter um den Checkpoint (sollte sich der Marker verschieben dienst es als protectionsystem) dann erhält er den nächsten Marker, sofern das nicht der letzte Marker war. Andernfalls erhält er sein Geld. Und die Route ist beendet.