Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 18.10.2013, 13:49   #1 (permalink)
50 Beiträge
 
Benutzerbild von JeeperCreeper
 
Registriert seit: 18.10.2013
Alter: 36
Beiträge: 64
Standard Waffen auf Kisten verteilen?

Hallo zusammen,

ich besitze Arma3 erst seit kurzem und möchte mich auch ein bisschen in das Thema Editing und Scripting einarbeiten, damit ich mir auch mal ne kleine Mission zusammen basteln kann.

Den alten Murray Guide und den Scripting Guide von James und Bunkerfaust habe ich gelesen, den Murray Guide noch nicht ganz, weil es doch schon ein ziemlich dicker Brocken ist. Und beim Scripting Guide habe ich natürlich nicht alles verstanden, da das Thema Neuland für mich ist.
So genug bla bla erstmal.

Ich habe folgendes Problem und sitze schon zwei volle Tage daran, habe auch schon alle möglichen Waffenkisten Threads gelesen, aber keiner davon hat mir die Lösung gebracht.

Ich habe mir dieses kleine Script geschrieben und probe damit:
PHP-Code:
// Name der Kiste ist Kiste1
// in der Initzeile der Kiste: _Handle = this execVM "meintestScript.sqf";
// Einstellungen
_AW 10//AnzahlWaffen
_AM 10//AnzahlMuni
_AZ 10//AnzahlItems
_this allowDamage false;
while {
true} do
{
// Kiste leeren
clearWeaponCargo _this;   //alles leeren, da ich nicht genau weiss was drin ist xD
clearItemCargo _this;
clearMagazineCargo _this;
clearBackPackCargo _this;
// Kiste füllen
_this addWeaponCargo ["srifle_GM6_f"_AW];    //erstmal nur zwei Sachen zum üben
_this addMagazineCargo ["30Rnd_556x45_Stanag"_AM];
sleep 10;
}; 
Damit klappt es wunderbar eine Kiste zu füllen.

Aber, wie zum Teufel kriege ich es hin, wenn ich zwei Kisten mit den Namen Kiste1 und Kiste2 (mit selbem Inhalt) füllen will, ohne zwei Scripte (Kiste1.sqf und Kiste2.sqf) dafür zu benutzen? Ich möchte alles in einem Script lösen.
Und wie kriegt man es hin, die Sachen auf die Kisten zu verteilen in einem Script, wenn es auch mehr wie eine ist? Also z.B.: Kiste1 mit waffen und Kiste2 mit Munition.

Ich habe schon so viel rum Probiert und möchte Euch das Ergebnis erst garnicht mitteilen, so verwirrend ist es.

Z.B. habe ich es schon so Ausprobiert:
PHP-Code:
// Name der Kiste ist Kiste1
// in der Initzeile der Kiste: _Handle = this execVM "meintestScript.sqf";
// Einstellungen
_AW 10//AnzahlWaffen
_AM 10//AnzahlMuni
_AZ 10//AnzahlItems
_this allowDamage false;
while {
true} do
{
// Kiste leeren
clearWeaponCargo _this;   //alles leeren, da ich nicht genau weiss was drin ist xD
clearItemCargo _this;
clearMagazineCargo _this;
clearBackPackCargo _this;
// Kiste füllen
Kiste1 addWeaponCargo ["srifle_GM6_f"_AW];    //erstmal nur zwei Sachen zum üben
Kiste2 addMagazineCargo ["30Rnd_556x45_Stanag"_AM];
sleep 10;   // nur zu Testzwecken alle 10 Sekunden
}; 
Wie die Profis sich vielleicht schon denken können ist das Ergebnis folgendes:
Kiste1 = Anzahl der Waffen wie angegeben, auch nach den ersten 10 Sekunden.
Kiste2 = Anzahl der Waffen verdoppelt, erst nach den ersten 10 Sekunden wieder normal wie angegeben.
Wenn ich jetzt ne dritte Kiste nehme, dann ist die Anzahl anfangs verdreifacht und bei ner vierten Kiste vervierfacht. Wieso? Wo liegt da mein Denkfehler?

Ich hab auch schon Ergebnisse rausgekriegt, da hat sich die Anzahl in der Kiste jede 10 Sekunden summiert. Mittlerweile bin ich total und kann nicht mehr klar denken. Ich hoffe ich hab mein Problem aufführlich schildern können, so das mir jemand vielleicht helfen kann mein Prob zu lösen.

Vielen Dank erstmal
JeeperCreeper ist offline   Mit Zitat antworten
Alt 18.10.2013, 15:15   #2 (permalink)
50 Beiträge
 
Registriert seit: 11.02.2010
Beiträge: 69
Standard

Hallo JeeperCreeper,

hab dein Skript mal so angepasst, daß du es beliebig oft für unteschiedlich befüllte Kisten verwenden kannst. _kiste wird zur lokalen Variable, die nur in meintestScript.sqf ausgeführt wird. Zugewiesen wird das Objekt, also die Kiste, die in der Initzeile als this im Array angegeben wird, somit ist auch der Name egal. Durch die Weitergabe der Werte aus dem Array wird dein Skript unabhängig und für mehrere Kisten verfügbar, obwohl sie anders befüllt werden.

Deine Kiste wird so, wie es derzeit in deinem Skript steht, alle 10 Sekunden geleert und wieder aufgefüllt. Lässt du die clear Geschichte weg oder plazierst sie oberhalb von "while {true} do", werden alle 10 Sekunden die Mengen hinzuaddiert, die du als Anzahl angibst usw.
Mich hat das vor Kurzem auch ziemlich gefordert, aber das gibt sich mit der Zeit.

PHP-Code:
// in der Initzeile der Kiste: null = [this, Anzahl Waffen, Anzahl Muni, Anzahl Items] execVM "meintestScript.sqf";
// Einstellungen
_kiste _this select 0//Kiste 
_AW _this select 1//AnzahlWaffen aus Array
_AM _this select 2//AnzahlMuni aus Array
_AZ _this select 3//Anzahl Items aus Array

_kiste allowDamage false;

while {
true} do
{
// Kiste leeren
clearWeaponCargo _kiste;   //alles leeren, da ich nicht genau weiss was drin ist xD
clearItemCargo _kiste;
clearMagazineCargo _kiste;
clearBackPackCargo _kiste;
// Kiste füllen
_kiste addWeaponCargo ["srifle_GM6_f"_AW];    //erstmal nur zwei Sachen zum üben
_kiste addMagazineCargo ["30Rnd_556x45_Stanag"_AM];
sleep 10;
}; 
Also zusammengefasst, nimm zwei Munitionskisten, pack in die Initzeile der ersten

PHP-Code:
null = [this,1,0,0execVM "meintestScript.sqf" 
und

PHP-Code:
null = [this,0,1,0execVM "meintestScript.sqf" 
in die Initzeile der zweiten.
Nun solltest du in der ersten Kiste eine Waffe und in der zweiten Kiste ein Magazin finden, obwohl keine der Kisten einen Namen hat.

Wenn das Skript allerdings nicht über die Initzeile der Kiste ausgeführt werden soll, dann muß die Kiste einen Namen haben, der sich folglich auch im Array befinden muß.

Beispiel: Kiste1
PHP-Code:
null = [Kiste1,1,0,0execVM "meintestScript.sqf" 
romans ist offline   Mit Zitat antworten
Alt 18.10.2013, 15:58   #3 (permalink)
50 Beiträge
 
Benutzerbild von JeeperCreeper
 
Registriert seit: 18.10.2013
Alter: 36
Beiträge: 64
Standard

romans, ich danke Dir!

Mir hätte es sogar schon gereicht, wenn man mir sagen würde, du musst es als array versuchen. So hab ich ja schon die Lösung hehe, danke.

So hab ich mir das ganze auch schon überlegt, aber ich Check das mit dem zuweisen aus dem Array noch nicht ganz, diese:
= this 0
= this 1
Geschichte usw..., da denk ich mir immer, häh, woher weiss das Skript den jetzt was Null und was Eins ist usw... Naja, das Thema muss ich mir einfach noch vertiefen. So viel gelesen in den letzten Tagen, dass ich jetzt total durcheinander bin und das Gefühl hab garnichts mehr zu verstehen.

Big THX!

EDIT:
Perfekt, jetzt hab ich da auch durchgeblickt! Man kann jetzt wunderbar mehrere Kisten mit unterschiedlichem Inhalt, oder aber auch mehrere Kisten mit gleichem Inhalt füllen.
Die Geschichte wäre damit erledigt, jetzt muss ich mir mal nen Spawnscript oder ähnliches Anschauen und testen.

Geändert von JeeperCreeper (18.10.2013 um 17:34 Uhr).
JeeperCreeper ist offline   Mit Zitat antworten
Alt 18.10.2013, 16:09   #4 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Das ist ja der Array --> [this, Anzahl Waffen, Anzahl Muni, Anzahl Items] execVM "meintestScript.sqf";

Der Array wird an die Variable "this" übergeben.
Mit "select" wählst du dann einen Inhalt aus diesem Array aus und zwar einfach in der Reihenfolge in der sie dran stehen.
Das einzig "knifflige" daran ist, das hier mit 0 zu zählen begonnen wird.

[0, 1, 2, 3, usw..]

Was an welcher Stelle zu stehen hat, bestimmt der, der das Script schreibt. Deswegen steht meistens in der ersten Zeile des Scripts (wie auch bei romans) ein Kommentar in dem zu sehen ist, wie das Script aufgerufen werden muss und wie die Reihenfolge der Parameter ist.


ps.: Das Gefühl nix zu verstehen ist ganz normal, das hab ich auch heute (nach etlichen Jahren) öfter noch. Sieh es positiv: Du hast gerade erst an der Oberfläche der Möglichkeiten gekratzt und es gibt noch verdammt viel zu entdecken!
__________________

Geändert von Tajin (18.10.2013 um 16:16 Uhr).
Tajin ist offline   Mit Zitat antworten
Alt 07.12.2013, 04:04   #5 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.108
Standard

Du kannst die Geschichte aber noch ausfeilen!

Lade in einem Array die Waffenklassen
_waffenarray = ["waffe1","waffe2",....]
Statt Waffe natürlich die Classennamen
gleiches machst du mit den magazinen
_magarray = ["mag1","mag2"...]

Du kannst aus dem Script heraus dann auf diese Dinger zugreifen. Gezielt oder per zufall
_wumme = floor (random count _waffenarray);
oder gezielt
_wumme = _waffenarray select 1; (z.B.)

Du hast nur einmal die Arbeit die Waffen zu erfassen, kannst später aber schneller gezielt verzeilen
Drunken Officer ist offline   Mit Zitat antworten
Antwort


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
Zwei primäre Waffen Vienna Editing & Scripting 5 19.06.2012 22:22
USMC einheiten mit waffen von OA ausrüsten Lotos Editing & Scripting 1 18.12.2010 15:06
Bug oder Feature: Waffen verziehen unendlich SnakeByte Technische Fragen & Probleme 1 24.08.2010 19:16
Waffen verbieten - keine Ost waffen für West einheiten Anemia Editing & Scripting 3 03.08.2010 19:19
Waffen kaufen Waffen dem Menü hinzufügen von einem Mod Mister Burke Editing & Scripting 1 05.06.2010 16:53


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