Hi ich habe hier mit
[ SCRIPTING ] Checkpoints abfahren
ein kleines rennen gemacht aber wie mache ich jetzt das es race checkpoints sind und nicht normale checkpoints???
währe echt dankbar wen ihr mir helfen könntet
MFG: Alpa
Hi ich habe hier mit
[ SCRIPTING ] Checkpoints abfahren
ein kleines rennen gemacht aber wie mache ich jetzt das es race checkpoints sind und nicht normale checkpoints???
währe echt dankbar wen ihr mir helfen könntet
MFG: Alpa
so habe ich es ja xD aber der 1 checkpoint kommt und wenn ich reinfahre passiert nix
Haste den auch nextx , nexty, nextz ausgefüllt?
ja habe es so
SetPlayerRaceCheckpoint(playerid,0,Race_Stationen[0][M_fX],Race_Stationen[0][M_fY],Race_Stationen[0][M_fZ],Race_Stationen[0][M_fRad],Race_Stationen[0][M_fX],Race_Stationen[0][M_fY],Race_Stationen[0][M_fZ]);
2 mal einma im befehl
und einma im
OnPlayerEnterCheckpoint
Eig. sollte dan ja ein andere RaceCheckpoint erscheinen bis du einen mit dem wert 1 für Finish legst.
Und OnPlayerEnterCheckpoint ist für die Normalen.
Also es kommt kein neuer?
also ich habe bei beiden
SetPlayerRaceCheckpoint(playerid,0,Race_Stationen[0][M_fX],Race_Stationen[0][M_fY],Race_Stationen[0][M_fZ],Race_Stationen[0][M_fRad],Race_Stationen[0][M_fX],Race_Stationen[0][M_fY],Race_Stationen[0][M_fZ]);
also im befehl und in OnPlayerEnterCheckpoint beides auch die 0 drinne
wenn ich im Game /starten mache kommt erst der timer und der Countdown dann kommt der Erste CP ich fahre durch ihn und dann passiert nix der bleibt da und es kommt kein text....
Du musst es bei Entercheckpoint so machen, dass wenn er den einen betritt , der andere erscheint. Nur falls dus nicht weißt oder vergessen hast , einzufügen
Die Parameter bei OnPlayerEnterRaceCheckpoint sind aber nur "playerid".
Die frage ist wie stellt man fest welchen RaceCheckpoint er grade betreten hat.
habe es auch mit
OnPlayerEnterRaceCheckpoint
veruscht geht nicht da gehen irgentwie alle 10 checkpoints in 5 sec. xD also da steht es dann bekomm ich sogar das geld aber der erste checkpoint bleibt da noch -.- und es passiert ja nix wenn ich rein fahre bitte um hilfe
//EDIT: kann mir niemand helfen bin am verzweifeln
new Float:CPS[3][3] =
{
{1587.1886, -1414.4863, 14.1634}, // Beispiel-Checkpoints ( X , Y , Z )
{1605.8584, -1438.4060, 13.9305},
{1651.3699, -1442.8450, 13.9311}
};
new CP;
public OnPlayerCommandText(playerid,cmdtext[])
{
if(strcmp(cmd, "/race", true) == 0)
{
CP = 0;
SetPlayerRaceCheckpoint(playerid, 0, CPS[CP][0], CPS[CP][1], CPS[CP][2], CPS[CP+1][0], CPS[CP+1][1], CPS[CP+1][2], 5);
return 1;
}
return 0;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
CP++;
SetPlayerRaceCheckpoint(playerid, 0, CPS[CP][0], CPS[CP][1], CPS[CP][2], CPS[CP+1][0], CPS[CP+1][1], CPS[CP+1][2], 5);
return 1;
}
Eine allgemeine globale Variable (CP) ist in diesem Falle ungeschickt gewählt, wenn mehr als ein Spieler ein Race bestreitet. Entweder mit PlayerArray, sprich CP[MAX_PLAYERS] oder PVars arbeiten.
Ja, ist ja nur ein Beispiel. Das Prinzip dürfte aber klar sein.
ne geht net habe auch eben ma mit dem tutorial versucht
[ SCRIPTING ] Race Checkpoint(s) [Für Anfänger]
geht aber irgentwie nicht der erste cp bleibt aber kein anderer kommt auch wenn ich reinfahre
Ja weil du bevor du den nächsten Checkpoint / Racecheckpoint aufrufst, den alten deaktivieren muss mit DisablePlayerCheckpoint bzw in deinem Falle DisablePlayerRaceCheckpoint.
Auf das Beispiel von [GFSVB]RedDragon bedeutet das du folgendes äbändern musst.
public OnPlayerEnterRaceCheckpoint(playerid)
{
DisablePlayerRaceCheckpoint(playerid);
CP++;
SetPlayerRaceCheckpoint(playerid, 0, CPS[CP][0], CPS[CP][1], CPS[CP][2], CPS[CP+1][0], CPS[CP+1][1], CPS[CP+1][2], 5);
return 1;
}
ok geht jetzt aber der 10 Checkpoint wird nicht angezeigt also wenn ich in den 9 reingefahren bin hört es einfach auf
Zeig mal deinen Code.
hier der
public OnPlayerEnterRaceCheckpoint(playerid)
{
DisablePlayerRaceCheckpoint(playerid);
CP++;
SetPlayerRaceCheckpoint(playerid, 0, CPS[CP][0], CPS[CP][1], CPS[CP][2], CPS[CP+1][0], CPS[CP+1][1], CPS[CP+1][2], 5);
return 1;
}
und hier der befehl
if(strcmp(cmd,"/race", true) == 0) {
if(IsPlayerInAnyVehicle(playerid)){ // Der CMD funkt nur dann, wenn man in einem Fahrzeug drinne sitzt.
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 411) // Der CMD funkt. nur dann, wenn man in einem Fahrzug drinne sitzt und es ein bestimmes Model ist.
{
SetTimer("time3",10,false);
CP = 0;
SetPlayerRaceCheckpoint(playerid, 0, CPS[CP][0], CPS[CP][1], CPS[CP][2], CPS[CP+1][0], CPS[CP+1][1], CPS[CP+1][2], 5);
}
}
else SendClientMessage(playerid, COLOR_RED, "Du bist nicht im Infernus!");
}
else
SendClientMessage(playerid, COLOR_RED, "Es läuft bereits ein rennen!");
}
Und wie hast du die CPS erstellt? Also poste mal den Code des Arrays.
new Float:CPS[10][3] = {
{-2266.6436,2638.3691,55.1568},
{-1860.2422,2256.4023,25.3477},
{-1691.4276,1822.4994,25.0588},
{-1469.5404,1863.5564,32.3599},
{-1166.7672,1666.7286,21.9042},
{-1134.3658,1555.5648,21.5145},
{-1037.0095,1286.2876,32.4403},
{-926.1755,1022.5644,21.5898},
{-721.4144,968.2367,11.9134},
{-678.2682,967.2210,11.8599}
};
new CP;