Hallo,
ich möchte gerne wenn er in einem Fahrschul Auto ist das dann die fahrt mit /starten beginnt.
Aber wie frage ich ab ob er in einem Fahrschul auto ist und nicht wo anders.
Frage Fahrschule
- eLiteKevin
- Geschlossen
- Erledigt
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
-
-
Oben im code:
new Fahrschulauto;OnGameModeInit:
Fahrschulauto = CreateVehicle...Beim command:
if(GetPlayerVehicleID(playerid) == Fahrschulauto)
{
//Fahrschule startet.
}
else SendClientMessage(playerid, ROT, "ERROR: Du musst im Fahrschulauto sein."); -
Danke, hab das geschafft. Kann mir jemand helfen ich habe viele fragen. Und ich versteh das mit den Checkpoints nicht.
Würde mir da einer helfen über Teamviewer bitte? -
Oben im code:
new Fahrschulauto;OnGameModeInit:
Fahrschulauto = CreateVehicle...Beim command:
if(GetPlayerVehicleID(playerid) == Fahrschulauto)
{
//Fahrschule startet.
}
else SendClientMessage(playerid, ROT, "ERROR: Du musst im Fahrschulauto sein.");Das ist doch irgend wie falsch oder nicht ?
new Fahrschulauto;
muss doch zu
new Fahrschulauto[4] // Also dahinter noch die anzahl in "[]" wie viele autos definiert werden sollen oder nicht?, da es odch ansonsten nicht funktionieren würde ..
Also
new Fahrschulcar[ANZAHL]; // ANZAHL = Anzahl der Fahrzeuge die du haben möchtest
Dann bei OnGameModeInit:
Wenn du sagen wir 4 Fahrzeuge haben möchtest:
Fahrschulcar[0] = CreateVehicle(...
Fahrschulcar[1] = CreateVehicle(...
Fahrschulcar[2] = CreateVehicle(...
Fahrschulcar[3] = CreateVehicle(...
usw..
Dann den Befehl nicht vergessen:
ocmd:starten(playerid, params[])
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == Fahrzeug ID) // Fahrzeug ID = ID Des Fahrzeuges 411 = Infernus
{
{
// Deine Funktionen hier rein}
else
{
SendClientMessage(playerid,GELB,"* Du bist in keinem Fahrschul wagen");
}
return 1;
}OnPlayerSteateChange:
// Was Halt passieren soll falls er nicht die erlaubnis hat.
if(newstate==PLAYER_STATE_DRIVER)
{
new newcar = GetPlayerVehicleID(playerid);
if(GetPVarInt(playerid,"Erlaubnis")!=1) // Hier deine Abfrage rein ob der Spieler die Erlaubnis hat, falls nicht kommt die Message: "Du hast nicht die Erlaubnis das Fahrzeug zu fahren"
{
for(new i=0; i<sizeof(Fahrschulcar); i++)
{
if(newcar == Fahrschulcar[i])
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,ORANGE,"Du hast nicht die Erlaubnis das Fahrzeug zu fahren");
}
}
}Jetzt brauchst du nur noch den Befehl um die Erlaubnis zu erteilen das er mit den Fahrzeugen fahren darf:
// Der Befehl mit dem du ihn die Erlaubnis erteilst.
ocmd:erlaubnis(playerid, params[])
{
new str[128],str2[128];
if(sscanf(params,"u",erlaubnisid,0xFFFA00FF,"Verwendung: /erlaubnis [Name/ID] ");
{
format(str,sizeof(str),"Du hast die Fahr erlaubnis an %s erteilt",SpielerName(erlaubnisid));
SendClientMessage(playerid,0xFFFA00FF,str);
format(str,sizeof(str),"Fahrlehrer %s hat die die Fahr erlaubnis erteilt",SpielerName(playerid));
SendClientMessage(playerid,0xFFFA00FF,str2);
SetPVarInt(erlaubnisid,"Erlaubnis",1);
}
return 1;
} -
Jetzt versteh ich garnichts mehr.
-
Das ist doch irgend wie falsch oder nicht ?
Nein, das definiert eben 1 Auto. Daran ist nichts falsch.In deinem Code fehtl aber mindestens eine Schleife die diese Array durchläuft.
-
Ja, ich habe 3 Autos kann ich das irgendwie alles auf 1machen das ich den Code nur einmal schreiben muss?
-
Ja, ich habe 3 Autos kann ich das irgendwie alles auf 1machen das ich den Code nur einmal schreiben muss?
Wie meinst du das ?
etwa so ?
Fahrschulcar[0] = CreateVehicle(...
Fahrschulcar[0] = CreateVehicle(...
Fahrschulcar[0] = CreateVehicle(...
Fahrschulcar[0] = CreateVehicle(...usw..?
Wenn Ja, nein das funktioniert nicht.
-
Wie mache ich das mit den Checkpoints, das verstehe ich überhaupt garnicht.
-
[ SCRIPTING ] Checkpoints abfahren
Ein altes trtd sinnvolles Tutorial, dürfte dir helfen. -
Wie mache ich das mit den Checkpoints, das verstehe ich überhaupt garnicht.
Ach das ist sehr simple, nur ist meine Methode glaub ich etwas Resourcen fressend aber falls jemand eine besser hat kann er diese ja Posten:
Also als aller erstes machst du ganz oben ein:
new Fahrschul[MAX_PLAYERS];
Dann gehst du zu deinem Befehl, und machst dort folgendes rein:
SetPlayerCheckpoint(playerid, X,Y,Z,Größe) // Cordinaten deines 1CPs
Fahrschul[playerid] = 1;
Dann gehste unter OnPlayerEnterCheckpoint:
if(Muell[playerid] == 1)
{
// Deine Funktion
Fahrschul[playerid] = 2; // Hier springt er zum 2ten
}
if(Muell[playerid] == 2)
{
// Deine Funktion
Fahrschul[playerid] = 3; // Hier springt er zum 3ten usw..
}
Grüße -
Ja, ich habe 3 Autos kann ich das irgendwie alles auf 1machen das ich den Code nur einmal schreiben muss?
Wenn Ja, nein das funktioniert nicht.
Doch. Am Beispiel meines vorherigen Codes:new Fahrschulauto[3];
Fahrschulauto[0] = CreateVehicle...
Fahrschulauto[1] = CreateVehicle...
Fahrschulauto[2] = CreateVehicle...for(new i=0; i<sizeof(Fahrschulauto); i++)
{
if(GetPlayerVehicleID(playerid) == Fahrschulauto[i])
{
//Fahrschule startet.
//...
return 1;
}
}
return SendClientMessage(playerid, ROT, "ERROR: Du musst im Fahrschulauto sein."); -
Doch. Am Beispiel meines vorherigen Codes:new Fahrschulauto[3];
Fahrschulauto[0] = CreateVehicle...
Fahrschulauto[1] = CreateVehicle...
Fahrschulauto[2] = CreateVehicle...for(new i=0; i<sizeof(fahrschulauto); i++)
{
if(GetPlayerVehicleID(playerid) == Fahrschulauto[i])
{
//Fahrschule startet.
//...
return 1;
}
}
return SendClientMessage(playerid, ROT, "ERROR: Du musst im Fahrschulauto sein.");Ja genau so meinte ich das ja
-
for(new i=0; i<sizeof(Fahrschulauto); i++)
{
if(GetPlayerVehicleID(playerid) == Fahrschulauto[i])
{
//Fahrschule startet.
//...
return 1;
}
}
return SendClientMessage(playerid, ROT, "ERROR: Du musst im Fahrschulauto sein.");Das kommt doch in den Befehl rein oder
-
Das kommt doch in den Befehl rein oder
Genau. -
ocmd:fstarten(playerid, params[])
{
for(new i=0; i<sizeof(Fahrschulauto); i++)
{
if(GetPlayerVehicleID(playerid) == Fahrschulauto[i])
{
SCM(playerid,Orange,"Deine Fahrstunde hat begonnen. Fahre nun die Checkpoints ab.");
SetPlayerCheckpoint(playerid,-71.6771,1363.1648,10.0953,3.0);
return 1;
}
}
return SendClientMessage(playerid, Rot, "Du musst im Fahrschulauto sein.");
}So, ich habe das gemacht. Und wie mache ich nun den 2 Checkpoint und der 1 verschwindet?
-
Ganz oben
new FS[MAX_PLAYERS] = 0;
ocmd:fstarten(playerid, params[])
{
for(new i=0; i<sizeof(Fahrschulauto); i++)
{
if(GetPlayerVehicleID(playerid) == Fahrschulauto[i])
{
SCM(playerid,Orange,"Deine Fahrstunde hat begonnen. Fahre nun die Checkpoints ab.");
SetPlayerCheckpoint(playerid,-71.6771,1363.1648,10.0953,3.0);
FS[playerid] = 1;
return 1;
}
}
return SendClientMessage(playerid, Rot, "Du musst im Fahrschulauto sein.");
}
unter OnPlayerEnterCheckpointDeleteCheckpoint(playerid);
if(FS[playerid] == 1)
{
SetPlayerCheckpoint(playerid,x,y,z);//DEINE KOORDINATEN EINTRAGEN
FS[playerid] = 2;
}So weiter machen halt
Bei Fragen einfach Fragen -
breadfish.de
Hat das Thema geschlossen.