Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 22.05.2012, 09:25   #1 (permalink)
Newbie
 
Registriert seit: 27.09.2011
Beiträge: 6
Standard Nächster Wert aus Array

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):
Zitat:

_Bilder = ["1.paa","2.paa","3.paa","4.paa","5.paa"];
_zahl = _Bilder select 0;
_zahl = (_zahl+1);

Schild setObjectTexture [0,_zahl];

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.
Steirer ist offline  
Alt 22.05.2012, 09:41   #2 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von xezon
 
Registriert seit: 31.03.2003
Beiträge: 2.533
Standard

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];
}
xezon ist offline  
Alt 22.05.2012, 09:51   #3 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 39
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

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 = [];
ungetestet!



Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!
​​​​​​​
___<<<A3 Wounding System>>>___
Pfandgiraffe ist offline  
Alt 22.05.2012, 09:59   #4 (permalink)
Newbie
 
Registriert seit: 27.09.2011
Beiträge: 6
Standard

@Xezon:
Da wird nur das letzte Bild angezeigt, sonst passiert nix.

@Psychobastard:
Super!
Aber es erscheint ein Script Error: Lokale Variable in Globalem Bereich Line 1
Trotzdem funktionierts einwandfrei!
Steirer ist offline  
Alt 22.05.2012, 10:08   #5 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 39
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

...Tippfehler. Ersetze die erste Zeile mit dieser:
Code:
private ["_acc_pic","_schild"];
__________________
Niemand hat die Absicht eine Tüte zu bauen!
​​​​​​​
___<<<A3 Wounding System>>>___
Pfandgiraffe ist offline  
Alt 22.05.2012, 10:10   #6 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von xezon
 
Registriert seit: 31.03.2003
Beiträge: 2.533
Standard

Zitat von Steirer Beitrag anzeigen

@Xezon:
Da wird nur das letzte Bild angezeigt, sonst passiert nix.

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
xezon ist offline  
Alt 22.05.2012, 19:06   #7 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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];
Vienna ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
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


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119