Hilfe bei 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
  • HeyHoo,


    Ich habe ein kleines Jobsystem.


    Wenn der Spieler diesen Command eingibt:

    ocmd:startsweep(playerid,params[])
    {
    if(isPlayerInJob(playerid,2))
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
    new engine,lights,alarm,doors,bonnet,boot,objective;
    new vid = GetPlayerVehicleID(playerid);
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(IsAPutzerCar(vid))
    {
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    TogglePlayerControllable(playerid,1);
    }
    }
    return 1;
    }


    soll ein Checkpoint nach dem anderen aus Dieser Auswahl angezeigt werden:

    new Reinigerpoints1[11][3] = {
    {1534.6433,-1448.8973,13.1538},
    {1431.3346,-1438.5981,13.1542},
    {1317.2488,-1393.7202,13.0857},
    {1139.9426,-1394.3566,13.2893},
    {1060.7434,-1314.5278,13.1559},
    {1089.4274,-1150.9023,23.4292},
    {1299.4103,-1148.7262,23.4292},
    {1439.6110,-1163.1580,23.4315},
    {1451.6865,-1303.5762,13.1561},
    {1478.8530,-1443.5215,13.1559},
    {1532.5496,-1447.3838,13.1526}
    };


    Sobald ein Spieler einen Checkpoint erreicht hat, soll der Nächste Checkpoint starten, bis man am Ende ist.


    lg
    DJ_Deagle

  • Und wo genau liegt jetzt dein Problem? Sollen wir dir helfen, dass die Checkpoints in der richtigen Reihenfolge angezeigt werden?
    Verwende einfach SetPlayerCheckpoint und speichere ab welcher Eintrag gerade verfolgt wird. Zum Beispiel in einer SpielerVariable

  • und wie genau?
    (Ich bin neu in der Scripting-Szene)

    Deklariere oben im Script folgendes:
    playersweeppoint[MAX_PLAYER];


    und verwende das dann zum Beispiel so:
    public OnPlayerEnterCheckpoint(playerid){
    DisablePlayerCheckpoint(playerid);
    if(playersweeppoint[playerid] != -1 && playersweeppoint[playerid] < 11) playersweeppoint++;
    SetPlayerCheckPoint(playerid,Reinigerpoints1[playersweeppoint[playerid]][0],Reinigerpoints1[playersweeppoint[playerid]][1],Reinigerpoints1[playersweeppoint[playerid]][2],3.0);
    //...
    return 1;
    }
    Ungetestet. Dürfte aber gehen.


    Edit: Eingerückt...


    Achja. Du musst bei der Stellendeklarierung Float als Tag angeben. Also so:
    new Float:Reinigerpoints1[11][3] = {
    {1534.6433,-1448.8973,13.1538},
    {1431.3346,-1438.5981,13.1542},
    {1317.2488,-1393.7202,13.0857},
    {1139.9426,-1394.3566,13.2893},
    {1060.7434,-1314.5278,13.1559},
    {1089.4274,-1150.9023,23.4292},
    {1299.4103,-1148.7262,23.4292},
    {1439.6110,-1163.1580,23.4315},
    {1451.6865,-1303.5762,13.1561},
    {1478.8530,-1443.5215,13.1559},
    {1532.5496,-1447.3838,13.1526}
    };


    Edit: Ups. Doch noch eine Kleinigkeit falsch! Habe bei SetPlayerCheckPoint bei playersweeppoint das "[playerid]" vergessen.