Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 14.02.2012, 00:30   #1 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 72
Standard Waffenkiste mit zufälligen Inhalt

Hallo,

ich möchte gerne Zufallskisten mit in eine Mission bauen und habe diesen Link gefunden:

Random weapons crate on MP

Nur leider funktioniert das bei mir nicht, es wird immer nur die erste Pistole created (M9). Kann mir da jemand mal bitte helfen?

Gruß
spaccy
spaccy ist offline   Mit Zitat antworten
Alt 14.02.2012, 09:06   #2 (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

Soll das für Einzel- oder Mehrspielermodus sein. Dann musst du deine Codezeilen angeben, um den Fehler finden zu können.
Vienna ist offline   Mit Zitat antworten
Alt 14.02.2012, 11:40   #3 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 72
Standard

Sorry, ist für Multiplayer gedacht, ich versuch das aber überhaupt erstmal im Editor zum laufen zu kriegen.
spaccy ist offline   Mit Zitat antworten
Alt 14.02.2012, 21:18   #4 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 72
Standard

Den Code hab ich 1 zu 1 vom Link benutzt, keine Veränderung. Funktioniert aber nicht.
spaccy ist offline   Mit Zitat antworten
Alt 15.02.2012, 11:15   #5 (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

Ganz klar ist der Code nicht. Aber du willst das ja eigentlich im Editor anlegen.

Hier ein Beispiel wie du das mit 3 Auslösern verwirklichen kannst. Dabei haben alle Spieler die selbe Waffe in der Munikiste.

Einmalauslöser
Bedingung: true
Bei Akt.:
xplane = -1;
handguns = ["M9","Colt1911","glock17_EP1","revolver_EP1","UZI_ EP1"];
mags = ["15Rnd_9x19_M9","7Rnd_45ACP_1911","17Rnd_9x19_gloc k17","6Rnd_45ACP","30Rnd_9x19_UZI"];

Einmalauslöser
Bedingung: xplane > -1
Bei Akt.:
clearweaponcargo MunikistenName;
clearmagazinecargo MunikistenName;
MunikistenName addweaponcargo [handguns select xplane, 1];
MunikistenName addmagazinecargo [mags select xplane, 10];

Einmalauslöser (auf den spricht nur der Server an)
Zeitverzögerung: 3mal 1 Sekunde
Bedingung: isServer
Bei Akt.:
xplane = floor random (count handguns);
publicVariable "xplane";
Vienna ist offline   Mit Zitat antworten
Alt 16.02.2012, 18:27   #6 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 72
Standard

Danke Vienna für deine Mühe , funktioniert wunderbar.

Ich hab das ganze jetzt in eine SQF gepackt:

INIT.sqf:
Code:
xplane = -1;
handguns = ["M9","Colt1911","glock17_EP1","revolver_EP1","UZI_EP1"];
mags = ["15Rnd_9x19_M9","7Rnd_45ACP_1911","17Rnd_9x19_glock17","6Rnd_45ACP","30Rnd_9x19_UZI"];

"Zufallskiste.sqf":
Code:
_box = _this select 0;
clearweaponcargo _box;
clearmagazinecargo _box;

if (!isserver) exitwith {};

xplane = floor random (count handguns);
publicVariable "xplane";

_box addweaponcargo [handguns select xplane, 1];
_box addmagazinecargo [mags select xplane, 10];
Muss das ganze noch im Multiplayer testen, bin aber zuversichtlich .
spaccy ist offline   Mit Zitat antworten
Alt 16.02.2012, 21:05   #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

So wie du das meinst wird nur der Server was in der Kiste haben.

init.sqf
Code:
[NameMunikiste] execVM "Zufallskiste.sqf";
Zufallskiste.sqf
Code:
//Skript Zufallskiste.sqf für Server und Clients
//
//Aufruf in der Init.sqf: [NameMunikiste] execVM "Zufallskiste.sqf";

//Lokale Variable
private ["_box","_handguns","_mags"];

//Parameter übernehmen
_box = _this select 0;

//Variable Initialisieren

xplane = -1; //Publike Variable

//Waffen- und Munitionsliste
_handguns = ["M9","Colt1911","glock17_EP1","revolver_EP1","UZI_EP1"];
_mags     = ["15Rnd_9x19_M9","7Rnd_45ACP_1911","17Rnd_9x19_glock17","6Rnd_45ACP","30Rnd_9x19_UZI"];

//Munikiste leeren
clearweaponcargo   _box;
clearmagazinecargo _box;

//Server bestimmt zufällig die Waffe
if (isserver) then
 {
  sleep 5; //allgemeine Initialisierung abwarten  
  xplane = floor random(count _handguns);
  publicVariable "xplane";
 };

//Warten bis Server die Waffe bestimmt hat
waitUntil {xplane > -1};

_box addweaponcargo   [_handguns select xplane,  1];
_box addmagazinecargo [_mags     select xplane, 10];
Vienna ist offline   Mit Zitat antworten
Alt 16.02.2012, 22:31   #8 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Er kann auch sein eigenes Script nehmen und muss nur addmagazionecargo & addweapon cargo durch addmagazinecargoglobal & addweaponcargoglobal ersetzen. Ist sogar etwas eleganter und stellt selben Content für alle Spieler sicher.


Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 16.02.2012, 22:45   #9 (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

Bei den Befehlen war ich mir nicht sicher ob sie auch für Munikisten sind. Weiters benötigen sie Arma2 OA.
Vienna ist offline   Mit Zitat antworten
Alt 16.02.2012, 23:50   #10 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 72
Standard

Also Arma 2 oa ist vorhanden, ich dachte ich weise die Werte für die Kisten an die Clients schon mit publicVariable zu.

Vienna könntest du bitte nochmal diesen Private Befehl erklären, ich kapier die Funtion trotz Bohemia-Wiki nicht wirklich.
spaccy ist offline   Mit Zitat antworten
Alt 17.02.2012, 15:46   #11 (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

Wenn man eine Globale-Variable auf einem PC ändert, dann gilt das nur für diesen PC. Mit publicVariable überträgt man den Inhalt dieser Variablen dann zu den anderen PCs.

Du hast mit publicVariable nur den Wert der "Schalter-Variablen" xplane übertragen.

Mach die Munikiste in der Initialisierungszeile der Kiste so leer: clearweaponcargo this; clearmagazinecargo this;

Dann brauchst du keine globale Variable und den Befehl publicVariable, wenn du die Kiste mit addWeaponCargoGlobal und addMagazineCargoGlobal füllst. Das Skript läuft dann nur beim Server.

Code:
//Skript Zufallskiste.sqf (Arma2 OA)
//
//Munikiste leeren in deren Initalisierungszeile der Kiste mit:
//  clearweaponcargo this; clearmagazinecargo this;
//
//Aufruf in der Init.sqf: [NameMunikiste] execVM "Zufallskiste.sqf";

if (!isserver) exitwith {}; //Skript nur für den Server

//Lokale Variable
private ["_box","_handguns","_mags","_wahl"];

//Parameter übernehmen
_box = _this select 0;

//Variable Initialisieren

//Waffen- und Munitionsliste
_handguns = ["M9","Colt1911","glock17_EP1","revolver_EP1","UZI_EP1"];
_mags     = ["15Rnd_9x19_M9","7Rnd_45ACP_1911","17Rnd_9x19_glock17","6Rnd_45ACP","30Rnd_9x19_UZI"];

sleep 5; //allgemeine Initialisierung abwarten  

_wahl = floor random(count _handguns); //Waffe wählen

// Kiste global mit Waffe und Munition bestücken
_box addWeaponCargoGlobal   [_handguns select _wahl,  1];
_box addMagazineCargoGlobal [_mags     select _wahl, 10];
Die letzten beiden Zeilen verwenden die neuen Befehle, welche die Waffe und Munition auf allen PCs in die Munikiste hinzufügen.
Vienna ist offline   Mit Zitat antworten
Alt 17.02.2012, 15:58   #12 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 72
Standard

Warum wartest du auf die Initialisierung eigentlich 5 sek?
spaccy ist offline   Mit Zitat antworten
Alt 17.02.2012, 17:31   #13 (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

Das betrifft nur Skripte welche Daten zu den anderen PCs senden. Wenn der Server den neuen Inhalt sendet und ein Client noch nicht mit seiner Initialisierung fertig ist, dann wird er die Sendung nicht erhalten. Bei sehr schlechter Internetverbindung könnten sogar 5 Sekunden zu gering sein.

Darum ist ein "Vorspann" (z.B. eine Kamerafahrt über die eigene Basis) beim Missionsstart anzuraten, und solche Skripte erst kurz vor Beendigung des Vorspanns starten. Dann kannst du in diesen Skripten so eine Initialisierungs-Pause weglassen.
Vienna ist offline   Mit Zitat antworten
Alt 17.02.2012, 19:35   #14 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 72
Standard

Wenns ein wenig länger dauert, ist es nicht so schlimm. Diese Zufallskisten erreicht die Spielmannschaft erst im späteren Spielverlauf.

Danke nochmal für deinen Einsatz!

>Ich jetzt glücklich <
spaccy ist offline   Mit Zitat antworten
Alt 18.02.2012, 15:35   #15 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard

Zitat von Vienna Beitrag anzeigen

Das betrifft nur Skripte welche Daten zu den anderen PCs senden. Wenn der Server den neuen Inhalt sendet und ein Client noch nicht mit seiner Initialisierung fertig ist, dann wird er die Sendung nicht erhalten. Bei sehr schlechter Internetverbindung könnten sogar 5 Sekunden zu gering sein.

Macht es Sinn hier mit 'waitUntil' auf das Setzen von xplane bei den Clients zu warten?
TeTeT ist offline   Mit Zitat antworten
Alt 18.02.2012, 16:38   #16 (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

Das ist bei der Version ohne die globalen Befehle notwendig. Dort soll ja der Server die Waffe bestimmen und in xplane ist der Index für die Arrays auf den die Clients warten. Andernfalls hätten nicht alle die selbe Waffe in der Kisten.

Bei der Version mit den globalen Befehlen ist die publike Variable xplane nicht notwendig.
Vienna ist offline   Mit Zitat antworten
Alt 17.10.2012, 00:55   #17 (permalink)
Newbie
 
Registriert seit: 17.10.2012
Beiträge: 7
Standard

Servus ich bin neu hier und habe diesen thread hier gefunden ...
ich bin momentan dabei eine map für dayz mit RMod zu basteln, will dort ein paar boxen verstecken und diese befüllen (was auch bis jetzt super funktioniert hat)
läuft bist jetzt auch alles super bis auf das ich halt die kisten zufällig füllen will, das funktioniert irgendwie nicht mit dem script hier (vieleicht mache ich einen fehler)

mein vorgehen bisher :

*Zufallsskiste.sqf erstellt inhalt aus dem post von Vienna vom 17.02.2012 15:46
*[NameMunikiste] execVM "Zufallskiste.sqf" in init.sqf eingefügt
*im map editor [this,1] execVM "Zufallskiste.sqf" bei denn boxen eingefügt.

würde gehn wissen wo mein feher ist,

Vielen dank im vorraus für eure hilfe
-PSY- ist offline   Mit Zitat antworten
Alt 17.10.2012, 13:57   #18 (permalink)
Newbie
 
Registriert seit: 17.10.2012
Beiträge: 7
Standard

so hab es nun so halb zumindest zum laufen bekommen !

jetzt gibt es nur noch ein fehler,
kisten die z.b. "this setpos [5501.6597, 1906.6729, -0.43265706];" in der ini zeile haben reagieren dannach nicht mehr auf das script ...
wie kann man das lösen?

(die positions angaben sind weil manche kisten auf gebäuden stehen o.ä.)
-PSY- ist offline   Mit Zitat antworten
Alt 17.10.2012, 16:46   #19 (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

Da scheint in der Initialisierungszeile ein "Befehlsteil" falsch zu sein.

Teil1; Teil2; Teil3; usw.

Gib einmal die einzelnen "Teile" allein ein und schau welcher nicht ausgeführt wird.
Vienna ist offline   Mit Zitat antworten
Alt 17.10.2012, 18:39   #20 (permalink)
Newbie
 
Registriert seit: 17.10.2012
Beiträge: 7
Standard

so danke für deine antwort hatte damit zu tun das irgendwie durch denn 3d editor die boxen immer 3 mal übereinander lagen ...

so nun nen neuen problem ... ich kann keine waffen aus der kiste nehmen?! ... woran könnte das liegen?
-PSY- 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
Ultimative Waffenkiste Moerderhoschi Editing & Scripting 13 08.08.2012 15:08
Waffenkiste (Alle Waffen Skript)? Piratenschiff Editing & Scripting 4 11.10.2011 21:56
Wie macht Man eine Waffenkiste unmittelbar nach dem Spawn nutzbar? Moerderhoschi Editing & Scripting 5 04.03.2011 13:39
Waffenkiste KSKfreak Editing & Scripting 3 23.01.2011 18:15
[OA] Co04/SP "Simple Instant Action" mit zufälligen Aufgaben Wiggum Usermade Missions 17 26.08.2010 12:39


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