![]() |
#1 (permalink) |
![]() Registriert seit: 27.09.2011
Beiträge: 6
|
![]()
Hallo zusammen.
Ich hab leider wenig Ahnung von scripts. Bisher bestand mein kontakt mit scripts immer nur aus copy+paste. Aber jetzt brauch ich was das ich noch nirgends finden konnte. Ich will zwei Action Menu Einträge, mit denen ich durch verschiedene Texturen auf einem Objekt vorwärts und rückwärts durchschalten kann. Das hab ich bis jetzt für vorwärts (nextpic.sqf): Funktioniert aber nicht. Wegen dem (_zahl+1). Wie kann man sowas lösen? Mir ist klar dass mein Script wahrscheinlich großer quatsch ist und dass hier wohl eine Schleife angebracht ist. Leider kenn ich mit damit noch viel weniger aus und deswegen frag ich euch nach Hilfe. |
![]() |
![]() |
#2 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 31.03.2003
Beiträge: 2.533
|
![]()
probier so in der art
http://community.bistudio.com/wiki/for Code:
for "_x" from 0 to 4 do { Schild setObjectTexture [0,_Bilder select _x]; } |
![]() |
![]() |
#3 (permalink) |
![]() ![]() |
![]()
Aufruf wie gehabt über addAction. Die Action muß dafür dem Schild angehangen werden. Das Script blättert nur vorwärts. Schreibe ein 2. für rückwärts und ändere entsprechend.
Code:
private ["acc_pic","_schild"]; _schild = _this select 0; _Bilder = ["1.paa","2.paa","3.paa","4.paa","5.paa"]; if (isNil "acc_pic") then {acc_pic = ""}; if (acc_pic == "") then { acc_pic = _Bilder select 0; _schild setObjectTexture [0, acc_pic]; } else { _dummy_a = _Bilder; _i = 0; while {(_dummy_a select _i) != acc_pic} do { _dummy_select = _dummy_a select 0; _dummy_a = _dummy_a - [_dummy_select]; }; if (count _dummy_a <= 1) then {_dummy_a set [1,(_Bilder select 0)]}; acc_pic = (_dummy_a select 1); _schild setObjectTexture [0, acc_pic]; }; _dummy_a = []; Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen! ![]() ___<<<A3 Wounding System>>>___ |
![]() |
![]() |
#5 (permalink) |
![]() ![]() |
![]()
...Tippfehler. Ersetze die erste Zeile mit dieser:
Code:
private ["_acc_pic","_schild"];
__________________
Niemand hat die Absicht eine Tüte zu bauen! ![]() ___<<<A3 Wounding System>>>___ |
![]() |
![]() |
#6 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 31.03.2003
Beiträge: 2.533
|
![]() Ja das ist richtig. Sollte auch nur die Art und Weise verdeutlichen wie du das Array ansprechen musst. Ich denke es wäre nicht verkehrt wenn du dir mal anschaust was Arrays sind: z.B. C/C++ - Arrays Is jetzt hier als C++, aber das Prinzip ist das selbe. Das wichtige hierbei ist dass ein Array immer ein Zeiger (pointer) ist. Mit der variable selbst, wie z.B. dein "_Bilder" kannst du nichts machen. Aber du kannst die Objekte auf die dein "_Bilder" zeigt ansprechen. Das sind hier in dem Fall deine "1.paa" usw Zeichenketten (strings). Und das machste mit einem string = _Bilder select zahl |
![]() |
![]() |
#7 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Du brauchst zwei globale Variable die du z.B. in der init.sqf initialisierst:
MeineBilder = ["1.paa","2.paa","3.paa","4.paa","5.paa"]; MeinIndex = 0; In den Aktionen stellst du den Index rauf oder runter: Rauf: MeinIndex = MeinIndex + 1; if (MeinIndex > count MeineBilder - 1 ) then {MeinIndex = count MeineBilder - 1}; Schild setObjectTexture [0,MeineBilder select MeinIndex]; Runter: MeinIndex = MeinIndex - 1; if (MeinIndex < 0) then {MeinIndex = 0}; Schild setObjectTexture [0,MeineBilder select MeinIndex]; |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Problem mit Helmand Karte und Aiaktalik - Help please! | FlashAUT | Mods & Addons | 8 | 24.11.2011 09:05 |
Ampelschaltung | Drunken Officer | Editing & Scripting | 26 | 06.11.2011 12:26 |
Linux Server aufsetzen . Vorgehen ? | Nightshift | Multiplayer | 2 | 29.08.2011 21:37 |
Frage Array | Ghost_Aut | Editing & Scripting | 3 | 13.04.2011 17:57 |