[HILFE]Checkpoint [MAX_PLAYER]

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
  • //Edit alles unten
    Mit freundlichen grüßen,
    Ghostrider


    new CheckpointZ = 0;


    new CheckpointStatus[MAX_PLAYERS];
    new car[20][2] = {{0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},
    {0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},
    {0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},
    {0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},
    {0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},
    {0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID},
    {0, INVALID_PLAYER_ID},{0, INVALID_PLAYER_ID}};


    new Float:racecheckpoints[MAX_RACE_POINTS][4] = { // Die Defineirung von : racecheckpoints. Die [4] Bedeutet: X, Y, Z, A. A ist für die Ausrichtung des Fahrzeuges beim Rückstellen zum letzten Checkpoint
    {2297.7156,1513.1721,42.5278,102.9773}, // 1
    {2324.8062,1396.3147,36.1277,293.7727}, // 2
    {2294.3032,1509.1261,29.7291,146.6862}, // 3
    {2326.5667,1399.9188,23.3323,8.8732}, //
    {2283.2234,1506.1346,16.9259,184.9865}, // 5
    {2303.6016,1375.7764,10.5115,89.9309},
    {2048.4170,1371.3213,10.3796,183.0217},
    {2044.3333,858.9604,6.4411,177.6108},
    {1657.4506,853.5029,6.4580,90.7943},
    {1518.4226,888.2937,10.5277,19.9202},
    {1507.5222,1032.5687,10.3787,274.8648},
    //{1508.0729,1036.4813,10.3785,272.7466},
    {1566.4878,1033.7982,10.5592,1.7543},
    {1566.9457,1132.3644,10.5619,269.5937},
    {1839.3400,1125.8463,11.8098,180.0617},
    {1867.7280,924.5023,10.5271,356.6693},
    {1871.2389,1090.7937,10.5361,268.8172},
    {2057.0491,1112.2491,10.5862,336.9453},
    {2076.2195,1192.4265,10.3849,269.4710},
    {2243.9619,1210.9517,9.3432,269.8477},
    {2406.8289,1214.1266,6.8731,1.9193},
    //{2410.7378,1213.4980,6.8706,2.0641},
    {2406.2703,1371.2162,10.3788,270.2935},
    {2429.7217,1390.9648,10.3792,0.0212},
    {2428.3464,1469.7191,10.6880,272.3802},
    {2566.4260,1473.2146,10.5507,2.5791},
    //{2571.0862,1474.7117,10.5070,3.8787},
    {2497.2791,1614.6259,10.4071,54.0941},
    {2412.6355,1715.0015,10.3790,90.9725},
    {2330.3728,1713.3850,10.5539,0.6517},
    {2341.7205,1771.4994,10.3782,268.7428},
    {2509.4636,1770.9407,10.3776,4.3446},
    {2507.8159,1820.8040,10.5313,273.1832},
    {2608.2720,1823.6193,10.5274,0.0}
    };
    stock SetPlayerToLastRaceCheckpoint(playerid)
    {
    new id;
    SetVehicleToRespawn(veh[playerid]);
    if(CheckpointStatus[playerid])
    id = CheckpointStatus[playerid] - 1;
    else
    id = 0;
    SetVehiclePos(veh[playerid], racecheckpoints[id][0],racecheckpoints[id][1],racecheckpoints[id][2]);
    SetVehicleZAngle(veh[playerid], racecheckpoints[id][3]);
    PutPlayerInVehicle(playerid, veh[playerid], 0);
    }
    stock race(playerid)
    {
    MachtArbeit[playerid] = 1;
    SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[0][0],racecheckpoints[0][1],racecheckpoints[0][2],racecheckpoints[1][0],racecheckpoints[1][1],racecheckpoints[1][2],4.5);
    return 1;
    }
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 451) return 1;// Model ID 408, bedeutet, dass das ganze,was unten geschicet nur dann geht, wenn man im Model 408 drinne sitzt.
    if(MachtArbeit[playerid] != 1) return 1;// Dies passiert nur dann, wenn man /mission geschieben hat.
    CheckpointZ++;
    CP(playerid);
    CheckpointStatus[playerid]++; // Hier werden die Checkpoints aufgezählt.
    PlayerPlaySound(playerid, 1056, 0.0, 0.0 , 10.0);
    if(CheckpointStatus[playerid] < MAX_RACE_POINTS - 1)
    {
    DisablePlayerRaceCheckpoint(playerid); // Beendet den Checkpoint
    SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],racecheckpoints[CheckpointStatus[playerid]+1][0],racecheckpoints[CheckpointStatus[playerid]+1][1],racecheckpoints[CheckpointStatus[playerid]+1][2],4.5);
    }
    else if(CheckpointStatus[playerid] == MAX_RACE_POINTS - 1)
    {
    DisablePlayerRaceCheckpoint(playerid);
    SetPlayerRaceCheckpoint(playerid,1,racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],4.5);
    }
    else if(CheckpointStatus[playerid] == MAX_RACE_POINTS)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    CheckpointStatus[playerid] = 0;
    new string[256];
    format(string, sizeof string,"Spieler %s ist als %d. durchs Ziel gefahren.!",name,sieger);
    SendClientMessageToAll(grün, string);
    format(string, sizeof string,"Deine Plazierung: %d. Platz!",sieger);
    SendClientMessage(playerid, grün, string);
    Finishstock(playerid);
    DisablePlayerRaceCheckpoint(playerid);
    MachtArbeit[playerid]= 0;
    return 1;
    }
    return 1;
    }
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_ONFOOT)
    SetPlayerToLastRaceCheckpoint(playerid);
    else if(newstate == PLAYER_STATE_DRIVER)
    {
    veh[playerid] = GetPlayerVehicleID(playerid);
    }
    return 1;
    }


    //Edit
    Also neue Erkenntnisse:
    Wenn man jetzt 10 Checkpoints abfährt, wird der 11. nicht mehr entfernt und es kommt auch kein neuer hinzu. Es liegt nicht am CP selber, wenn ich mit wem anderen zusammen fahre und er fährt angenommen 7 cp's ich 3 funktioniert bei keinem der nächste, fahre ich 5 er 5 funktioniert der 6. nicht mehr. Könnte es was damit zu tun haben?


    new RennenZeiten[10][6];// Testen? jo
    new PlatzNamen[10][MAX_PLAYER_NAME];


    RennenZeiten[sieger-1] = zeitstr;
    PlatzNamen[sieger-1] = name;


    public RankingTimer()
    {
    new string[255];
    strcat(string, " {F6FF00}Platz 1: %s {FFFFFF}Zeit: {FF0000}%s {F6FF00}(3000$)\n");
    strcat(string, " {A4ABAB}Platz 2: %s {FFFFFF}Zeit: {FF0000}%s {F6FF00}(2000$)\n");
    strcat(string, " {9E5B13}Platz 3: %s {FFFFFF}Zeit: {FF0000}%s {F6FF00}(1000$)\n");
    strcat(string, " {FFFFFF}Platz 4: %s Zeit: %s\n");
    strcat(string, " Platz 5: %s Zeit: %s\n");
    strcat(string, " Platz 6: %s Zeit: %s\n");
    strcat(string, " Platz 7: %s Zeit: %s\n");
    strcat(string, " Platz 8: %s Zeit: %s\n");
    strcat(string, " Platz 9: %s Zeit: %s\n");
    strcat(string, " Platz 10: %s Zeit: %s\n");
    format(string, sizeof string, string,
    PlatzNamen[0], RennenZeiten[0],
    PlatzNamen[1], RennenZeiten[1],
    PlatzNamen[2], RennenZeiten[2],
    PlatzNamen[3], RennenZeiten[3],
    PlatzNamen[4], RennenZeiten[4],
    PlatzNamen[5], RennenZeiten[5],
    PlatzNamen[6], RennenZeiten[6],
    PlatzNamen[7], RennenZeiten[7],
    PlatzNamen[8], RennenZeiten[8],
    PlatzNamen[9], RennenZeiten[9]);
    for(new i; i<GetMaxPlayers(); i++)ShowPlayerDialog(i,Ranking,DIALOG_STYLE_MSGBOX,"{BD00C7}Renn Statistiken",string,"Test","TestIt");
    return 1;
    }


    Der Sinn davon ist, das die ersten 10 die durch den LETZTEN CP fahren gespeichert werden, jetzt habe ich es aus Testgründen bei jedem CP gemacht durch den man fährt sprich ist klar das letztendlich die rankings voll sind, aber ich möchte das Spieler die als 11. oder 12. durch Ziel fahren auch durchs Ziel fahren "können". Bitte um Hilfe.

    KleineHilfe 2.0

    Einmal editiert, zuletzt von YaBroo ()