06.11.2013, 00:47 | #21 (permalink) |
Registriert seit: 29.10.2008
Beiträge: 1.192
|
Super, danke für die Hilfe!
Übrigens, statt Hint "Text" füge ich Playsound "Name der Sounddatei" ein und fertig. Kannst du mir vllt. erklären, wo bzw. wie genau du die "unendliche" Wiederholung gescriptet hast? PS: While {true} - also während "aktiv" oder "wahr" ist also ein großer Unterschied zu "While {speed _vehicle <50};" ? Geändert von JSR (06.11.2013 um 00:50 Uhr). |
06.11.2013, 00:58 | #22 (permalink) |
Registriert seit: 18.10.2013
Alter: 41
Beiträge: 64
|
Ah cool, jetzt hab ich auch wieder nen neuen Befehl gelernt thx
Die wiederholung erzeugst du mit der while-Schleife. Alles an Code was du in der Scheife reinschreibst, wiederholt sich halt. Hmm... wie soll man das erklären, ist eigentlich selbsterklärend Ein Beispiel mal mit nem anderen Code: Code:
if (!isServer) exitWith {}; private ["_auto"]; _auto = _this select 0; while {true} do { player moveInCargo _auto }; Wenn du da jetzt noch z.B. nen sleep Befehl reinsetzt von ein paar Sek. dann hast du die Zeit kurz auszusteigen und wirst nachdem sleep wieder reingesetzt. Code:
if (!isServer) exitWith {}; private ["_auto"]; _auto = _this select 0; while {true} do { player moveInCargo _auto; sleep 20 }; Also immer wenn die Bedingung (While {condition}) true ist, dann wird die Schleife fortgesetzt. Sobalt false kommt dann nicht mehr. Man kann halt anstatt dem "true" irgendeine Bedingung reinschreiben und solange die "true" wiedergibt, läuft die Schleife. Und {speed _vehicle <50} gibt ja nur "true" zurück, wenn man unter 50 ist. Sobalt man einmal über 50 kommt, wird die Schleife verlassen. Eine einfache Schleife erzeugst du halt immer, wenn du "true" reinschreibst und nach dem "do" dein Code der wiederholt werden soll. Weil dann ist ja immer "true". Geändert von JeeperCreeper (06.11.2013 um 01:09 Uhr). |
06.11.2013, 01:10 | #23 (permalink) |
Registriert seit: 29.10.2008
Beiträge: 1.192
|
Okay. Also greife ich mit While {true} auf den unten Block, der mit einer IF und THEN bestückt ist zu und gebe mit "true" an, dass er immer wenn der Wert im IF und THEN Block zutrifft auch genau das erfüllt. So habe ich es jetzt verstanden.
|
06.11.2013, 01:20 | #24 (permalink) |
Registriert seit: 18.10.2013
Alter: 41
Beiträge: 64
|
Nein nicht ganz hehe, ich sag ja ich kann nix erklären. Der untere Block hat mit dem {true} nix am hut. Der untere Block (egal welcher muss nicht if then else sein) wird halt nur dann immer wieder ausgeführt, solange die Bedingung nach dem While, also in den {Klammern} true wiedergibt. Wenn du da jetzt selber einfach nur {true} reinschreibst, dann ist die Bedingung halt schon true und somit läuft die Schleife ewig, weil ja nicht mehr {false} kommen kann.
Würde man jetzt als Beispiel in die While Bedingung folgendes reinschreiben: Code:
While {1>2} do {irgendwas} Geändert von JeeperCreeper (06.11.2013 um 01:25 Uhr). |
06.11.2013, 01:34 | #25 (permalink) |
Registriert seit: 29.10.2008
Beiträge: 1.192
|
Ich glaub das liegt mehr an mir als an dir. Stelle mich bei sowas irgendwie immer sehr blöd an, brauche dafür immer ein wenig. Was ich halt nicht so ganz verstanden habe ist, warum der vorherige Eintrag, den wir gestern behandelt haben sich dann nicht auch wiederholt. Weil " While {speed _vehicle > 50} Do {playsound "Sound"}; Bedeutet ja, dass während man im _vehicle die Geschwindigkeit 50Kmh überschritten hat, der sound "Sound" abgespielt wird. Und das andere mit While {true} do und dann der IF Block aus deinem Tempo script sagt ja im Endeffekt das gleiche aus, nur das {speed _vehicle > 50} halt nicht bei While sondern im unteren Block stehen. Deswegen habe ich es jetzt so verstanden wie ich es schon beschrieben habe, was aber wahrscheinlich falsch ist, wie du es grad sagst. Deswegen werde ich mir jetzt noch 200 mal deinen Beitrag durchlesen, bis ich es verstanden habe. Mache für heute jetzt erstmal eine Pause und fang morgen wieder frisch an. Bin heute zu kaputt um noch weiter dadran zu lernen. Werde so nichts kapieren. Aber wie gesagt, liegt definitiv NICHT an dir! Du erklärst das ganz gut! |
06.11.2013, 10:04 | #26 (permalink) |
Registriert seit: 18.10.2013
Alter: 41
Beiträge: 64
|
Du denkst da schon in die richtige Richtung. Das mit der Bedingung hast du jetzt verstanden. Aber bei
While {speed _vehicle > 50} Do {playsound "Sound"}; wird der Sound deshalb nicht abgespielt, weil du ja nicht über 50km/h startest. Und sobalt du ja unter 50km/h kommst, in dem Fall bist du ja schon am Anfang unter 50, dann wird die Schleife ja verlassen. |
06.11.2013, 12:01 | #27 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
While {true} bedeutet ja nichts anderes als "Solange es wahr ist".
Und da es sozusagen ohne Bedingung immer "wahr", also "true" ist läuft das Ganze während der ganzen Mission über ... "true" findest du beispielsweise ja auch standardmäßig als Wegpunktbedingung. Solange statt "true" nicht eine Bedingung rein kommt, laufen diese auch einfach durch. Wie JeeperCreeper schon erklärt hatte läuft bei "while {true} ..." das Script sozusagen ewig in der Schleife, weil die alleinige Bedingung "true" immer zutrifft. Es wird die Schleife nie verlassen. Aus dem Grunde kommt die Meldung mehrmals, auch wenn zwischendurch die Geschwindigkeit unterschritten wurde. Es handelt sich in dem Script ja auch praktisch um zwei Bedingungen. Die 2. mit der Geschwindigkeit gibt die Meldung aus und wird aufgrund der ersten Bedingung, die immer zutrifft immer wieder gestartet. Es ist sozusagen eine doppelt verschachtelte Bedingung, die nie beendet werden kann weil das "while {true} ..." immer zutrifft. Bei der gestrigen Version läuft die Schleife so lange, bis die Geschwindigkeit höher ist. Dann kommt die Hint-Meldung. Danach ist für das Script sozusagen die Arbeit getan und es wird beendet weil die Bedingung ja erfüllt worden ist. Vielleicht ist dir der Knopf ja jetzt aufgegangen ... Greetz Jan Geändert von JanIs (06.11.2013 um 12:22 Uhr). |
06.11.2013, 20:03 | #28 (permalink) |
Registriert seit: 29.10.2008
Beiträge: 1.192
|
Okay, ich habs nun endlich verstanden.
Danke für die Geduld ihr beiden! Ich habe gestern (oder vorgestern?) angefangen das Tutorial zu lesen, bin aber noch nicht an der Stelle gewesen, wo beschrieben wird, wo der Unterschied mit "Null []" und "Gogo []" ist oder was zum Beispiel Private bedeutet oder was es mit "if (!isServer) exitWith {};" aufsich hat. |
07.11.2013, 20:07 | #29 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Ist die bedingungen in einer schleife nicht gegeben, wird diese übergangen
Arbeite mit Waituntil Warnung = [this, 60] execvm "....sqf" Code:
Private ["_rd", "_ge"]; _rd = _this select 0; While {alive _rd} do { _rd = _this select 0; _ge = _this select 1; Waituntil {speed _rd > _ge}; Hint "you are to fast"; Sleep 3; }; Geändert von Drunken Officer (07.11.2013 um 20:12 Uhr). |
07.11.2013, 20:26 | #30 (permalink) |
Registriert seit: 29.10.2008
Beiträge: 1.192
|
Danke! Soweit komme ich aber mit der Version von Jeeper gut zurecht!
Sie erfüllt soweit Sinn und Zweck. Zur Zeit habe ich ein anderes Problem. Sobald ich das Script über die Config starte, was soweit funktioniert, kommt eine Fehlermeldung, sobald ich über die angegebene Geschwindigkeit komme. "Radio Message "TSound" not found". In der config.cpp bzw. .bin ist der Sound per class CfgRadio { class TSound { name = ""; sound[] = {"Ah6\T_Low", 1, 1}; title = ""; }; }; angegeben. Ist halt nur der Ausschnitt CfgRadio aus der cpp. Wie genau gebe ich den Pfad in der .cpp denn sonst durch? Habe es schon mit CfgSounds probiert, klappt aber soweit auch nicht. Oder muss ich das mit den Veerbungen der classen beachten? Falls ja, ich habe keine CfgRadio gefunden... was ja auch eigentlich dafür spricht, dass das anders funktioniert. Habe als Abguckbeispiel eine andere Config genommen, wo diese Sounds per CfgRadio definiert wurden... jedoch aus Arma 2. In der Testmission, wo alles ohne config abgerufen wurde, habe ich den VehicleRadioSound Pfad in der description.ext mit CfgRadio angegeben und es hat funktioniert. EDIT: Fehler gefunden! Für alle die, die das vllt interessiert: Ich habe CfgRadio unter dem CfgVehicle Block definiert. Denke mal ein typischer Anfängerfehler. :P CfgVehicle muss natürlich per }; geschlossen werden und dann kommt CfgRadio dran. Funktioniert jetzt alles erstmal super. Danke für die Hilfe, die mir die Basis für meine Ideen gegeben hat! Geändert von JSR (07.11.2013 um 21:52 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
World of Tanks | Snevsied | Sonstige Genres & Themen | 2402 | 10.03.2017 15:05 |
Arma 3 Beta | Xeno | Community | 1083 | 11.09.2013 16:42 |
F-22 Raptor Tunen 8-) | Clawhammer | Mods & Addons | 5 | 26.02.2013 15:59 |
RPM und Speed Faktor | JSR | Editing & Scripting | 4 | 19.12.2012 23:33 |