17.06.2014, 18:35 | #1 (permalink) |
Registriert seit: 17.06.2014
Beiträge: 10
|
Globale Variable, senden dann rechnen
Ich möchte eine Globale Variable festlegen und an eine andere Datei senden und dann mit dieser rechnen, zu dieser Zahl z.B. 1 addieren usw.:
Was ich kann: Code:
MeineVariable=10; [MeineVariable] exec "Skript.sqs"; Skript.sqs Code:
_zahl = _this select 0; _neu = 0; if (_Zahl == 10) then {hint "gut";} else {}; _neu = _neu + _ zahl ; if (_neu == 10) then {hint "gut";} else {}; Code:
(_this select 0) = (_this select 0)+1; if (MeineVariable == 11) then {hint "gut";} else {hint "schlecht";}; Mir fallen nur umständliche Sachen ein, wie eine zusätzliche Nummer mit senden: Code:
MeineVariable1=10; MeineVariable2=50; MeineVariable3=70; .... [1, MeineVariable1] exec "Skript.sqs"; Code:
_nr = _this select 0; _zahl = _this select 1; if (_nr == 1) then { MeineVariable1 = MeineVariable1 +1;} else {}; if (_nr == 2) then { MeineVariable2 = MeineVariable2 +1;} else {}; ... Ich weiß, dass die eckige Klammer [] ein Array ist! Kann man da nicht was drehen??? Oder gibt es da ein einfachen Trick? Danke im Voraus |
18.06.2014, 12:06 | #2 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Die globale Variable brauchst du nicht als Parameter übergeben, die kann in jedem Skript direkt angesprochen werden.
z.B. Code:
if (MeineVariable == 10) then {hint "gut";} else {}; MeineVariable = MeineVariable + 1; if (MeineVariable == 11) then {hint "gut";} else {}; usw. |
19.06.2014, 16:31 | #4 (permalink) |
Registriert seit: 17.06.2014
Beiträge: 10
|
Erst einmal danke für die Antworten.
Sorry, konnte nicht sofort darauf eingehen, weil ich erstmal viel lesen musste. Ich möchte ungerne das Fragen, was andere schon gefragt haben. Ich hab noch nie was mit SQF gemacht. Ich schau mir halt so einige Sachen von anderen an und SQF sah schon fast bedrohlich aus .... z.B. UPS (Unbegreiflicher Psycho Skript) OK Kritik/Vorschlag verdaut - Ab jetzt Kein SQS...
Also, so gut es geht in SQF: Die Förderung/Produktion: Produktion.sqf Code:
_loop=true; while {_loop} do { If (getdammage BergWerk1 == 1) then { } else { BergWerk1Eisen = BergWerk1Eisen + 1; }; If (getdammage BergWerk2 == 1) then { } else { BergWerk2Eisen = BergWerk2Eisen + 1; }; sleep 60; }; Rohstoff_Transport.sqf Code:
_beladen=0; _loop=true; while {_loop} do { If (_beladen == 0) then { If (BergWerk1LKW distance BergWerk1 <= 100) then { _beladen = _beladen + BergWerk1Eisen; sleep 0.1; BergWerk1Eisen = 0; }; }; If (_beladen >= 1) then { If (BergWerk1LKW distance Lager1 <= 100) then { Lager1Eisen = Lager1Eisen + _beladen; sleep 0.1; _beladen = 0; }; }; sleep 10; } Ich wurde das mit mindestens [Lager1] oder [Lager2] .. usw. starten Code:
_lager=_this select 0; _beladen=0; _loop=true; while {_loop} do { If (_beladen == 0) then { If (BergWerk1LKW distance BergWerk1 <= 100) then { _beladen = _beladen + BergWerk1Eisen; sleep 1; BergWerk1Eisen = 0; }; }; If (_beladen >= 1) then { If (BergWerk1LKW distance _lager <= 100) then { Lager1Eisen = Lager1Eisen + _beladen; sleep 1; _beladen = 0; }; }; sleep 10; } Klar kann man für jedes Lager mit entsprechenden Bergwerk kopieren und einfügen ... Würde man das Ganze nicht anders machen? Ich hoffe, dass da nicht alles Falsch ist und auf eine baldige Antwort. Danke. |
19.06.2014, 19:06 | #5 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Mit dieser Routine kann jeder LKW jedes Bergwerk und jedes Lager anfahren.
Ein Beispiel für jeweils 3 Objekte, die Anzal kann beliebieg geändert werden. Code:
private ["_lkwName","_lkwLadung"]; TransportSchleife = true; //mit false wird das Skript beendet //Initialisieren von Bergwerken, Lager und LKWs //in Array mehrdimensionales Array für jedes Bergwerk: [Bergwerk-Name,Inhalt] Bergwerke = [[Bergwerk_A,100],[Bergwerk_B,100],[Bergwerk_C,100]]; //in Array mehrdimensionales Array für jedes Lager: [Lager-Name,Inhalt] Lager = [[Lager_A,0],[Lager_B,0],[Lager_C,0]]; //in Array mehrdimensionales Array für jeden LKW: [LKW-Name,Inhalt] LKWs = [[LKW_A,0],[LKW_B,0],[LKW_C,0]]; while {TransportSchleif} do { //Abfrage ob LKW zum Laden bei einem Bergwerk oder zum Entladen in einem Lager ist for "_i" from 0 to count LKWs - 1 do //durchläuft alle LKWs { _lkwName = (LKWs select _i)select 0; _lkwLadung = (LKWs select _i)select 1; if (_lkwLadung == 0) then //LKW leer auf dem Weg zu einem Bergwerk { { if(_lkwName distance _x select 0 < 20)exitWith //LKW bei einem Bergwerk eingetroffen? { if (_x select 1 > 0) then //Bergwerk-Inalt > 0 ? { LKWs select _i set [1,1]; //LKW mit 1 beladen _x set [1,(_x select 1)-1] //Bergwerk-Inhalt -1 } } }forEach Bergwerke; //durchläuft alle Bergwerke } else //LKW ist beladen auf dem Weg zu einem Lager { { if(_lkwName distance _x select 0 < 20)exitWith //LKW bei einem Lager eingetroffen? { LKWs select _i set [1,0]; //LKW entladen _x set [1,(_x select 1)+1] //Lager-Inhalt +1 } }forEach Lager; //durchläuft alle Lager } } }; Geändert von Vienna (28.06.2014 um 07:44 Uhr). Grund: _x select 1 set ... auf _x set ... berichtigt! |
19.06.2014, 21:50 | #6 (permalink) |
Registriert seit: 17.06.2014
Beiträge: 10
|
Cool, danke!
Das ist eine Lösung: mehrdimensionale Array. Ich schau mir das genau an, weil ich da viele Ideen habe, die ich da super einbringen kann. Außerdem brauch ich das Wissen für andere Sachen auch. Kling Komisch, aber auf die schnell verstehe ich die Array mit den Parametern ganz gut, aber: Code:
exitWith Oder Wenn das der Fall ist, beende den Abschnitt mit dem Folgenden??? Bitte erklären. Die andere Fragen versuche ich erstmal selber zu beantworten. PS: Sollte es nicht funktionieren und ich finde den Fehler nicht, dann habe ich das nicht ganz verstanden. Ich schau mal in den nächsten Tagen, wenn ich Zeit habe. (Erinnert mich an Matrizen) |
20.06.2014, 10:45 | #8 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das Unterbewustsein arbeitet durchgehend.
Hier eine Liste der Befehle: https://community.bistudio.com/wiki/...Commands_ArmA2 In der Hauptschleife ist ein Fehler! Die Initialisierungszeilen der Arrays gehören aus diesere Schleife natürlich raus. Habe ich oben korrigiert. |
20.06.2014, 20:01 | #9 (permalink) |
Registriert seit: 17.06.2014
Beiträge: 10
|
Man kann echt viel machen, nicht nur Geiseln retten usw. sondern was neues.
Auch wenn man nur zwei Sachen, die es schon gibt, kombinieren: Code:
if (PlumpsKloManagerWirtschaft and Arma2taktischesVorgehen) then { Durchgeknallt=true; Patient = Patient +1; hint "Sie werden eingewiesen"; } Und noch mal danke |
22.06.2014, 10:37 | #10 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Globale Variable, senden dann rechnen
Senden brauchst du die globalen Variablen nur im Mehrspielermodus, falls erforderlich. Diese Variablen sind nur auf dem jeweiligen PC global. Soll eine Inhaltsänderung einer globalen Variablen auch den anderen PCs mitgeteilt werden, dann geht das z.B. mit:
https://community.bistudio.com/wiki/publicVariable |
25.06.2014, 15:50 | #11 (permalink) |
Registriert seit: 17.06.2014
Beiträge: 10
|
Jetzt habe ich grade mit der Array gespiet und da steht ja:
Code:
Lager = [[Lager_A,0],[Lager_B,0],[Lager_C,0]]; Code:
{ if(_lkwName distance _x select 0 < 20)exitWith //das _x select 0 ist irgend ein Lager { LKWs select _i set [1,0]; //LKW entladen _x select 1 set [1,(_x select 1)+1] //das _x select 1 ist doch schon der Inhalt } }forEach Lager; Code:
_x set [1,(_x select 1)+1] } }forEach Lager; |
Stichworte |
array, globale variable |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Variable an Server geben zum Zusammenrechnen | Nokman | Editing & Scripting | 3 | 07.04.2014 12:14 |
Lokale Variable per ParamsArray Definieren? | Kingderek | Editing & Scripting | 3 | 03.10.2013 10:15 |
RPT wird mit "Error Undefined variable in expression" überflutet | [GNC]Lord-MDB | Editing & Scripting | 32 | 24.08.2013 15:43 |
Variable auf dem Server ändern sich nicht ! | N939 | Editing & Scripting | 3 | 26.07.2010 14:36 |
globale variablen ändern/einstellen | Deagle105 | Editing & Scripting | 9 | 01.07.2010 10:52 |