[ SCRIPTING ] Loops/Schleifen - Erklaerung
Ein Tutorial von mir da sind die Schleifen (Loops) "for" / "while" (While kaum :D) erklärt!
[ SCRIPTING ] Loops/Schleifen - Erklaerung
Ein Tutorial von mir da sind die Schleifen (Loops) "for" / "while" (While kaum :D) erklärt!
Danke dir
Mappen kann jeder nur nicht so gut^^
Ich wollte heute noch hinzugfügen, dass es While schleifen gibt nur die kann ich eigentlich garnicht.
Und in Wiki (EN + GER) gibt es kein einziges Tut oÄ für "While-Loops".
Also hier erkläre ich mal kurz und knapp die "Loop's".
Schleifen werden meistens gebraucht um mehreren Spielern eine Funktion "anzuhängen" die eigentlich
nur für "playerid" (einem Spieler) gedacht ist!
____________________________________________________________________________Es gibt auch "while" schleifen nur diese kann ich im moment kaum.
Kommt nocht
____________________________________________________________________________
Ein Beispiel (for-loop):
for(new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
SendClientMessage(i, 0x0066CCFF, "Dies ist ein TEST-Text!"); //i Da die Message nicht an "playerid" sondern an jeden geschickt werden soll der "i" ist (Alle da wir MAX_PLAYERS als i definiert haben
}
/*Dies ist eine Alternative zu "SendClientMessageToAll"*/
Erläuterung (for loop):
/*Standart:*/
for(new i = 0; i<MAX_PLAYERS; i++)//Um diese Zeile geht es
/*Verändert:*/
for(new i = 0; i<GetMaxPlayers(); i++)//Um diese Zeile geht es
new i = 0; - Definiert die Variable "i" und wird auf "0" gesetzt.
i<MAX_PLAYERS; - Fragt ob "i" kleiner ("<") als "MAX_PLAYERS" ist.
i++ - "i" wird + 1 Addiert ("++").
continue - Lässt eine Schleife weiter arbeiten.
break - Lässt die Schleife eine Pause machen(!!VERMUTE ICH!!)____________________________________________________________________________
Eine Andere Version für die for-schleife?
Kein Ding diese ist Recourceschonender und viel schneller.
new i = 0;
for(;i < GetMaxPlayers(); i++) {
}____________________________________________________________________________
Ein Beispiel womit man die auch benutzen kann diese Schleifen:
(Selfmade)
stock RespawnAllCars() { for(new veh = 0; veh < MAX_VEHICLES; veh++) SetVehicleToRespawn(veh); return 1; }
/*Mit dieser Funktion kann man alle Autos Respawnen
Anwendung:
-Im CMD einfach "RespawnAllCars();" einfügen und den CMD ingame eingeben und SCHWUPS alle Cars wieder da!
Diese Funktion Respawned alle Cars die im Script definiert sind und die die per /veh gespawned wurden!*/
____________________________________________________________________________
WHILE-LOOPS
"while"- zu Deutsch "whärend"-Schleifen/Loops.
new
i = 0;//Wir definieren "i" und setzen "i" auf "0"
while (i < 10)//whärend i kleiner als ("<") 10 ist
{
i++; //Wird "i" + 1 Addiert
/*Was im Loop passieren soll*/
}
/*Nach dem Loop*/
Besser kann ich das noch nicht
____________________________________________________________________________
Comming Soon?
While-Loop's Vollständige erklärung
Break + Continue erklärung
Bisschen mehr ?
Das ist der Premium Rang 2 und ehm 2??
xD
Ist wohl n kleiner fehler^^
Wenn du "/save <Kommentar>" eingeben hast bekommst du keine Message mehr wie früher,
es wird einfach nur gepeichert im Pfad "C:/Programme/Rockstar Games/Grand Theft Auto San Andreas/savedpositions.txt"
Kurz in deinem GTA Ordner!
Opas Streamer? xD (Der ist gut ;))
10/10 wie immer xD
Naja die sind in einer include definiert.
Nur wer nimmt sich schon die Zeit und versucht die IDS für die anderen Tasten zu finden? xD
Sogesehen ist alles möglich man muss nur wissen wie...!
Aufm Fun Server kann man dies ncihgt gebrauch, dies schreckt User eher ab als das GegenTeil!
*Kritisier*
5/10 Gibts schon 1 Punkt mehr mit timern
Sonst n1 nur ja wenn du das erweiterst^^
Die 2 Taste ist ja nur definiert worden, weil die im Singelplayer als "Bürgerwehr-Mission" und so benutzt wird (Vermute ich mal)
Schade
gibt es auch die Tasten 1-9 ?
Egal ob Num Ped oder nicht ?
Könnt man doch eventuell bei ENB Series raus fischen oder? xD (Da komm ich nur ned klar >.<)
Ich
Ist lustig xD
Stimmt ist total Sinnlos xD
4/10 Kann man sich in max. 10 min basteln in nichts besonderes und demnach auch sinnlos, Pickup wo man hinmuss un d nen Timer der nach ner stunde immer neu anfängt oder iwie sowas der halt angibt ob man reifen aufpumpne muss ... Und an der Tanke für 5$ oder so Reifenaufpumpen sonst hat man nen platten... Das wär was besseres!
stock RespawnAllCars() { for(new veh = 0; veh < MAX_VEHICLES; veh++) SetVehicleToRespawn(veh); return 1; }
Anwendung:
if(strcmp(cmd, "/respawn", true) == 0) {
if(IsPlayerAdmin(playerid)) {
RespawnAllCars(); //Hier xD
SendClientMessage(i, COLOR_DEFINE, "RCON-Admin hat die Cars Respawned"); }
} else {
SendClientMessage(playerid, COLOR_DEFINE, "Du bist kein RCON Admin"); }
return 1; }
RespawnAllCars - Man kann auch nen Timer erstellen der dann den Callback aufruft und halt jeden Payday oder so die Cars respawned!
PS: Meine erste stock funktion ganz easy
OnPlayerExitVehicle??
Dh wenn einer Aussteigt werden alle cars für jeden spieler respawnt?
Mach es in nen CMD
if(strcmp(cmd, "/respawn", true) == 0) {
if(IsPlayerAdmin(playerid)) {
for(new i = 0;i<MAX_VEHICLES;i++) {
SetVehicleToRespawn(i); SendClientMessage(i, COLOR_DEFINE, "RCON-Admin hat die Cars Respawned"); }
} else { SendClientMessage(playerid, COLOR_DEFINE, "Du bist kein RCON Admin"); } return 1; }
Dies klappt bzw kein Error im Script, und Definier nur die Farbe und änder den namen oder so "COLOR_DEFINE" hab ich jz benutzt
Logge dich aber erst als RCON Admin ein oder schreib es bissl um^^
Ausgeschrieben:
if(strcmp(cmd, "/respawn", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
for(new i = 0;i<MAX_VEHICLES;i++)
{
SetVehicleToRespawn(i);
SendClientMessage(i, COLOR_DEFINE, "RCON-Admin hat die Cars Respawned");
}
}
else
{
SendClientMessage(playerid, COLOR_DEFINE, "Du bist kein RCON Admin");
}
return 1;
}
Wenn er in der DM-Zone Spawnen soll, solltest du iwas definiert haben..
if(indm[playerid] == 1)//Abfragt ob er In der DM Zone ist (Ist Beispiel)
{
//Hier kannst du die Koordinaten rein haun am besten per Float
}
else //Oder ist er nicht in der DM Zone? Hier den normalen spawn
{
// normaler spawn wenn nicht indm
}
new indm[MAX_PLAYERS]; //... Definieren davor^^
Warum guckn wie weit er kommt?
Ich hba es so verstanden:
Die 2 Buttons unten zeigen keine Funktion bzw sind "defekt".
Wenn man was Auswählt passiert ncihts wenn man den Rechten/Linken
Button betätigt.
Stimmts?
Alles anzeigenneein xD
if(listitem == 1)
...
if(listitem == 2)
...
if(listitem == 3)
...
if(listitem == 4)
...
Warum soll man die Definieren? Ist doch Sinnlos... Wenn die nicht benutz werden.
//EDIT Stimmt sry^^