Checkpoints

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
  • Mein Problem ist wenn ich in den ersten Checkpoint fahre bekomm ich schon das Geld, und die anderen werden übersprungen.


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(vehicleid == strassenkehrer[6])
    {
    if(Spieler[playerid][pJob] == 1)
    {
    StrChk[playerid] = 1;
    SendClientMessage(playerid,Gelb,"Fahre die Checkpoints ab");
    SetPlayerCheckpoint(playerid,557.0367,-1252.9093,16.830,5.0);
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Straßenkehrer");
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }


    Spoiler anzeigen
    public OnPlayerEnterCheckpoint(playerid)
    {
    if(StrChk[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,702.8914,-1139.0750,16.1369,5.0);
    StrChk[playerid] = 2;
    }
    if(StrChk[playerid] == 2)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,935.9274,-979.2548,38.0701,5.0);
    StrChk[playerid] = 3;
    }
    if(StrChk[playerid] == 3)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,971.0712,-1148.4731,23.7229,5.0);
    StrChk[playerid] = 4;
    }
    if(StrChk[playerid] == 4)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1213.0685,-1171.6599,22.3550,5.0);
    StrChk[playerid] = 5;
    }
    if(StrChk[playerid] == 5)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1239.6434,-1281.3262,13.1418,5.0);
    StrChk[playerid] = 6;
    }
    if(StrChk[playerid] == 6)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1340.5625,-1314.1537,13.1227,5.0);
    StrChk[playerid] = 7;
    }
    if(StrChk[playerid] == 7)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1381.9073,-1406.0087,13.1079,5.0);
    StrChk[playerid] = 8;
    }
    if(StrChk[playerid] == 8)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1450.1583,-1469.8135,13.0961,5.0);
    StrChk[playerid] = 9;
    }
    if(StrChk[playerid] == 9)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1477.4772,-1593.8809,13.1079,5.0);
    StrChk[playerid] = 10;
    }
    if(StrChk[playerid] == 10)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1659.7223,-1579.3829,13.1157,5.0);
    StrChk[playerid] = 11;
    }
    if(StrChk[playerid] == 11)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1716.6237,-1409.0591,13.1079,5.0);
    StrChk[playerid] = 12;
    }
    if(StrChk[playerid] == 12)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1699.9518,-1159.2676,23.3814,5.0);
    StrChk[playerid] = 13;
    }
    if(StrChk[playerid] == 13)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1549.6866,-1056.1062,23.3353,5.0);
    StrChk[playerid] = 14;
    }
    if(StrChk[playerid] == 14)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1370.0493,-1014.8109,26.3915,5.0);
    StrChk[playerid] = 15;
    }
    if(StrChk[playerid] == 15)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1475.1288,-881.3726,56.7600,5.0);
    StrChk[playerid] = 16;
    }
    if(StrChk[playerid] == 16)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1318.9397,-704.3994,92.2791,5.0);
    StrChk[playerid] = 17;
    }
    if(StrChk[playerid] == 17)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1007.1479,-792.6687,100.7168,5.0);
    StrChk[playerid] = 18;
    }
    if(StrChk[playerid] == 18)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,840.5419,-881.1949,66.7805,5.0);
    StrChk[playerid] = 19;
    }
    if(StrChk[playerid] == 19)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,894.3772,-979.9786,36.9576,5.0);
    StrChk[playerid] = 20;
    }
    if(StrChk[playerid] == 20)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,558.1072,-1262.0509,16.9673,5.0);
    StrChk[playerid] = 21;
    }
    if(StrChk[playerid] == 21)
    {
    DisablePlayerCheckpoint(playerid);
    new rand = random(sizeof(mony));
    new var[128];
    format(var, sizeof(var),"Du erhälts %d$ auf dein Konto",mony[rand]);
    Spieler[playerid][pBank] += mony[rand];
    SendClientMessage(playerid,Gelb,var);
    }
    DisablePlayerCheckpoint(playerid);
    return 1;
    }


    Hoffe ihr könnt mir weiter helfen :)

  • public OnPlayerEnterCheckpoint(playerid)
    {
    if(StrChk[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,702.8914,-1139.0750,16.1369,5.0);
    StrChk[playerid] = 2;
    }
    else if(StrChk[playerid] == 2)
    //usw


    Hättest du die SuFu mal genutzt oder hättest ein paar topics im Scripting Bereich gelesen, hättest du mitbekommen das dieses Thema mehrfach behandelt wurde.


    Musst einfach bei jedem if nach dem ersten CHeckpoint noch ein else hängen.


    Edit: Problem mit Checkpoints abfahren <- Nur als Beispiel, war auf der 2ten Seite ganz unten und ich denke einmal jeder kann die ersten 5 Seiten einmal nach dem Namen sich anschauen.

  • THIS!
    Du könntest auch etwas returnen ("return 1" unter StrChk[playerid] = 2;), aber das müsstest du dann bei jedem machen.
    Die "else if"-Methode ist um einiges "besser" vom Aussehen her.
    Das "return" sagt: "Die Funktion wurde erledigt ausgeführt und es muss nicht mehr weitergemacht werden".


    Ohne "else" stimmt alles.
    Wenn man mal ein wenig das Szenario durchspielt:
    StrChk == 1 ? -> JA -> StrChk = 2 -> StrChk == 2 ? -> JA -> StrChk = 3 -> StrChk == 3 ? -> Und so weiter und so fort.


    Die Methode ist aber immer noch nicht wirklich perfekt.
    Man kann das System zu leicht ausnutzen um sich nahezu unendlich Geld zu "ercheaten".


    Es reicht nicht nur abzufragen ob die Variable "StrChk" stimmt, sondern man muss auch die Position checken!
    http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint.


    Mit freundlichen Grüßen
    Kevin