Wie kann ich ein befehl scripten /Checkpoint [Checkpoints] das in einer ganz bestimmen area so und so viele checkpoints kommen man aber nur einen sieht und wenn er in dem ist der nächste angezeigt wird wie macht man das ? ._.
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
-
-
durch Variabeln
-
ok new Checkpoinnt so fertig funzt aber net
//Wäre besser wenn man das mal ein bissen erläutert -
new Checkpoint[playerid] = 0;
wenn der spieler nun /Checkpoint eingibt:
SetPlayerCheckpoint(playerid,X,Y,Z,Größe);
Checkpoint[playerid] ++;Nun unter "OnPlayerEnterCheckpoint"
if(Checkpoint[playerid] == 1)
{
// mach etwas hier
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,X,Y,Z,Größe);
Checkpoint[playerid] ++;
return 1;
}und das machst du eben weiter alles unter OnPlayerEnterCheckpoint
else if(Checkpoint[playerid] == 2)
{
// mach etwas hier
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,X,Y,Z,Größe);
Checkpoint[playerid] ++;
return 1;
}und zum Schluss setzt du ganz einfach wieder Checkpoint[playerid] auf 0:
DisablePlayerCheckpoint(playerid);
Checkpoint[playerid] = 0; -
/Checkpont [PID] [Wie viele checkponts er ablaufen soll] so ist das gedacht ._.
-
Ganz oben zu "new Checkpoint[playerid] = 0;"
new CheckpointPointer[playerid] = 0;ocmd:checkpoint(playerid,params[])
{
new pID,Checkpoints;
if(sscanf(params, "ui", pID, Checkpoints)) return SendClientMessage(playerid,COLOR,"Benutze: /Checkpoint [ID] [Anzahl der Checkpoints]");if(Checkpoints == 0) return SendClientMessage(playerid,COLOR,"Mindestens 1 Checkpoint");
CheckpointPointer[playerid] = Checkpoints;
SetPlayerCheckpoint(playerid,X,Y,Z,Größe); // Min. 1 muss er doch wohl abfahren
Checkpoint[playerid] = 1;
}Nun wird es bisschen komplizierter weil du müsstest einen Maximalen Wert an Checkpoints vordefinieren. Ansonsten kannst du unter OnPlayerEnterCheckpoint folgendes schreiben:
if(Checkpoint[playerid] == 1)
{
// Hier machen was ich unten getan habe.
if(Checkpoint[playerid] == CheckpointPointer[playerid]) break; // das heißt er bricht hier ab weil es der letzte Checkpoint ist
}
else if(Checkpoint[playerid] == 2)
{
// Hier machen was ich unten getan habe.
if(Checkpoint[playerid] == CheckpointPointer[playerid]) break; // hier genauso
}
Das ist natürlich nur eine von vielen Möglichkeiten. Aber ich glaube dass ist die einfachste (Sorry, falls ich daneben liege) -
max soll 100 sein soll ich das mit else if(Checkpoint 100 mal copyn ? ._.
-
ja wäre das beste,
Weil immer zu Schreiben, wird ne Zeit lang dauern -
100 x und die zahlen schreiben xDDDDDD ._.
-
ja ?
Wieso nicht
Hast auch was zu tun -
-
Es ist ja im Grunde genommen identisch das gleiche, außer die Zahl die erhöht sich immer um 1. Und bei deinem Befehl musst du noch eine Abfrage einfügen:
ocmd:checkpoint(playerid,params[])
{
new pID,Checkpoints;
if(sscanf(params, "ui", pID, Checkpoints)) return SendClientMessage(playerid,COLOR,"Benutze: /Checkpoint [ID] [Anzahl der Checkpoints]");if(Checkpoints == 0) return SendClientMessage(playerid,COLOR,"Mindestens 1 Checkpoint");
if(Checkpoints > 100) return SendClientMessage(playerid,COLOR,"Es dürfen nicht mehr als 100 Checkpoints erscheinen"); // Diese Zeile hier einfügen
CheckpointPointer[playerid] = Checkpoints;
SetPlayerCheckpoint(playerid,X,Y,Z,Größe); // Min. 1 muss er doch wohl abfahren
Checkpoint[playerid] = 1;
} -
breadfish.de
Hat das Thema geschlossen.