StartRaceCheckpoint<Route>(playerid, type, start_index, struct[], size);
/*
Route = Die Routenid...wird im unteren erklärt werden
playerid = Die Spielerid dem der Checkpoint angezeigt werden soll
type = RaceCheckpoint Type
start_index = Der Index, wo die Route starten soll (Standard Fall=0)
struct[] = Hier wurden alle Punkte der Route deklariert.
size = Checkpoint größe :)
*/
IsInRaceCheckpoint(playerid, struct[]<Route>);
/*
playerid = Spielerid bei der geprüft wird, in welchem Checkpoint er ist.
struct[] = Wie oben, wo die Routen Punkte deklariert wurden.
Route = Routenid
*/
NextRaceCheckpoint(playerid, struct[]<Route>, size, type);
/*
playerid = Spielerid dem der Checkpoint angezeigt wird.
struct[] = Wie oben, wo die Routen Punkte deklariert wurden.
Route = Routenid
size = Die größe vom Nächsten Checkpoint :)
type = RaceCheckpoint Typ für Nächsten Checkpoint :)
*/
GetRaceRouteCounter<Route>(playerid);
/*
playerid = Spielerid bei der geprüft wird, in welchem Checkpoint er ist.
Route = Routenid
*/
ClearRaceCheckpoint<Route>(playerid);
/*
playerid = Spielerid dem der Checkpoint verschwindet & speicher frei gemacht wird.
Route = Routenid
*/
Alles anzeigen
Beispiel:
//Oben im Skript:
enum //So kann man ganz viele Routen definieren
{
TEST_ROUTE,
TUT_ROUTE,
KP_ROUTE
};
struct ~Points~ //Test Route..mit dem Namen "Points"
{
{0.0, 5.0, 3.0},
{0.0, 10.0, 3.0},
{0.0, 15.0, 3.0},
{0.0, 20.0, 3.0},
{0.0, 25.0, 3.0},
{0.0, 30.0, 3.0},
{0.0, 40.0, 3.0},
{0.0, 50.0, 3.0},
{50.0, 60.0, 3.0}
};
//Da wo die Route starten soll:
StartRaceCheckpoint<TEST_ROUTE>(playerid, NORMAL_TYPE, START_CHECKPOINT, Points, 4.0);
//Normal_TYPE kann man im wiki nachlesen
//START_CHECKPOINT ist in der Route eben [0] (damit die Route am Anfang anfängt)
//Und die routenid hier ist TEST_ROUTE
public OnPlayerEnterRaceCheckpoint(playerid)
{
switch(IsInRaceCheckpoint(playerid,Points<TEST_ROUTE>)) //Prüft ob er den letzten Checkpoint erreicht hat..oder nur einen normalen
{
case FINAL_CHECKPOINT: //Hier hätte er den letzten erreicht!
{
SendClientMessage(playerid,0xFF0000FF,"* Finalen Race Checkpoint von TEST_ROUTE erreicht!");
ClearRaceCheckpoint<TEST_ROUTE>(playerid); //Ganz WICHTIG! Zum checkpoint verschwinden lassen & memory free
}
case NORMAL_CHECKPOINT:
{
new string[64],x = GetRaceRouteCounter<TEST_ROUTE>(playerid); //x = gibt an, welchen Checkpoint er betreten hat (beginnt bei 0)...das könnte man auch über einen switch laufen lassen und somit verschiedene aktionen pro checkpoint ausführen lassen :)
format(string,sizeof(string),"Race-Checkpoint %d betreten, von TEST_ROUTE",x);
SendClientMessage(playerid,-1,string);
NextRaceCheckpoint(playerid, Points<TEST_ROUTE>, 5.0, (IsNextFinish(x,Points)) ? FINISH_TYPE : NORMAL_TYPE); //hintere Bedingung prüft ob er kurz vor dem letzten Checkpoint steht, wenn ja soll FINISH_TYPE (diese Flagge da) im Checkpoint angezeigt werden.
}
}
//Falls diese Route nicht gestartet wurde..wird der switch übersprungen :)
//Wichtig, dass man nicht mehrere Routen startet xD
//Und keine Angst, beim login werden die Daten zurückgesetzt!
return 1;
}
Alles anzeigen