Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 26.01.2010, 20:09   #1 (permalink)
Newbie
 
Registriert seit: 10.01.2010
Beiträge: 30
Standard AmmoBox wieder spawnen lassen...

folgene situation,

ich möchte im MP eine Ammokiste spawnen lassen.
durch einen AddAction befehl soll ein script ausgeführt werden das dann an "marker" eine Kiste erstellt wird.
das funktioniert auch klasse.. nur ich seh den inhalt der kiste aber mein mitspieler nicht..

woran liegt das..

muss ich das script noch irgend wie für den MP erweitern??
Code:
private ["_Ammo1"];

if (true) then {
    
    
    _Ammo1 = createVehicle ["USVehicleBox", getMarkerPos "Box1", [], 0, "FORM"];

            
        If(alive _Ammo1)then{

       
    
clearWeaponCargo _Ammo1;
clearMagazineCargo _Ammo1;    

_Ammo1 addWeaponCargo ["Binocular",40];
_Ammo1 addWeaponCargo ["NVGoggles",40];
_Ammo1 addWeaponCargo ["ItemGPS",40];
_Ammo1 addWeaponCargo ["Colt1911",50];
_Ammo1 addMagazineCargo ["7Rnd_45ACP_1911",100];
_Ammo1 addWeaponCargo ["M9",5];
_Ammo1 addWeaponCargo ["M9SD",5];
_Ammo1 addMagazineCargo ["15Rnd_9x19_M9",5];
_Ammo1 addMagazineCargo ["15Rnd_9x19_M9SD",5];
_Ammo1 addWeaponCargo ["MP5A5",2];
_Ammo1 addWeaponCargo ["MP5SD",2];
_Ammo1 addMagazineCargo ["30Rnd_9x19_MP5",50];
_Ammo1 addMagazineCargo ["30Rnd_9x19_MP5SD",50];
_Ammo1 addWeaponCargo ["G36a",40];
_Ammo1 addWeaponCargo ["G36c",40];
_Ammo1 addWeaponCargo ["G36k",40];
_Ammo1 addWeaponCargo ["G36_C_SD_eotech",40];
_Ammo1 addMagazineCargo ["30Rnd_556x45_G36",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addMagazineCargo["30Rnd_556x45_Stanag", 200];
_Ammo1 addMagazineCargo ["30Rnd_556x45_StanagSD",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["M16A2",40];
_Ammo1 addWeaponCargo ["M16A2GL",40];
_Ammo1 addWeaponCargo ["M16A4",40];
_Ammo1 addWeaponCargo ["M16A4_ACG",40];
_Ammo1 addWeaponCargo ["M16A4_ACG_GL",40];
_Ammo1 addWeaponCargo ["M16A4_GL",40];
_Ammo1 addWeaponCargo ["M4A1_RCO_GL",40];
_Ammo1 addWeaponCargo ["M4A1_AIM_SD_camo",40];
_Ammo1 addWeaponCargo ["M4A1_HWS_GL",40];
_Ammo1 addWeaponCargo ["M4A1_HWS_GL_camo",40];
_Ammo1 addWeaponCargo ["M4A1_HWS_GL_SD_camo",40];
_Ammo1 addWeaponCargo ["Pecheneg",40];
_Ammo1 addMagazineCargo ["100Rnd_762x54_PK",150];
_Ammo1 addMagazineCargo["30Rnd_556x45_Stanag",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["M8_carbine",40];
_Ammo1 addWeaponCargo ["M8_carbineGL",40];
_Ammo1 addWeaponCargo ["M8_compact",40];
_Ammo1 addWeaponCargo ["M8_sharpshooter",40];
_Ammo1 addWeaponCargo ["M8_SAW",40];
_Ammo1 addMagazineCargo ["30Rnd_556x45_G36",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["DMR",40];
_Ammo1 addMagazineCargo ["20Rnd_762x51_DMR",200];
_Ammo1 addWeaponCargo ["M40A3",40];
_Ammo1 addMagazineCargo ["5Rnd_762x51_M24",200];
_Ammo1 addWeaponCargo ["M24", 40];
_Ammo1 addMagazineCargo ["5Rnd_762x51_M24",200];
_Ammo1 addWeaponCargo ["M107" ,40];
_Ammo1 addMagazineCargo ["10Rnd_127x99_M107",200];
_Ammo1 addWeaponCargo ["M240" ,40];
_Ammo1 addMagazineCargo ["100Rnd_762x51_M240",100];
_Ammo1 addWeaponCargo ["M249" ,40];
_Ammo1 addMagazineCargo ["200Rnd_556x45_M249" ,100];
_Ammo1 addMagazineCargo ["20Rnd_556x45_Stanag",200];
_Ammo1 addMagazineCargo ["30Rnd_556x45_Stanag",200];
_Ammo1 addWeaponCargo ["MG36",40];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["Javelin",40];
_Ammo1 addMagazineCargo ["Javelin",100];
_Ammo1 addWeaponCargo ["M136",40];
_Ammo1 addMagazineCargo ["M136",100];
_Ammo1 addWeaponCargo ["SMAW",40];
_Ammo1 addMagazineCargo ["SMAW_HEAA",200];
_Ammo1 addWeaponCargo ["Stinger",40];
_Ammo1 addMagazineCargo ["Stinger",100];
_Ammo1 addWeaponCargo ["MetisLauncher",40];
_Ammo1 addMagazineCargo ["AT13",100];
_Ammo1 addMagazineCargo ["1Rnd_SMOKE_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_SMOKERED_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_SMOKEGREEN_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_SMOKEYELLOW_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_HE_M203",100];
_Ammo1 addMagazineCargo ["FlareWhite_M203",10];
_Ammo1 addMagazineCargo ["FlareGreen_M203",10];
_Ammo1 addMagazineCargo ["FlareRed_M203",10];
_Ammo1 addMagazineCargo ["FlareYellow_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_Smoke_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_SmokeRed_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_SmokeGreen_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_SmokeYellow_M203",10];
_Ammo1 addMagazineCargo ["PipeBomb",100];

sleep 1;
};
If(true)then{HQ removeAction U;};
};
Jimi Blaz ist offline  
Alt 28.01.2010, 05:51   #2 (permalink)
Newbie
 
Registriert seit: 10.01.2010
Beiträge: 30
Standard

hat den niemand ne idee??
muß ich vielleicht ein EventHandler im script einbauen??
Jimi Blaz ist offline  
Alt 28.01.2010, 12:24   #3 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Jap, das müsstest du über einen PublicVariableEventHandler machen.
Die Veränderung des Weapon/Magazinecargos muss auf jedem Client erfolgen, damit das überall ausgeführt wird.
Da du das Skript per Action ausführst, wird es nur lokal auf deinem Computer laufen.

Du musst das Skript also auf jedem Client laufen lassen. Am Besten startest du das Skript entweder über die init.sqf oder über die Initzeile.
Schreib also folgendes in deine Init.sqf/Initzeile:
Code:
nul = [Waffenkistennamen] execVM "ammo-respawn.sqf"
Und das ammo-respawn.sqf schaut dann so aus:
Code:
private ["_Ammo1"];

_Ammo1 = _this select 0;

WaitUntil {!alive _Ammo1};
_Ammo1 = createVehicle ["USVehicleBox", getMarkerPos "Box1", [], 0, "FORM"];
	
WaitUntil {alive _Ammo1};

clearWeaponCargo _Ammo1;
clearMagazineCargo _Ammo1;    

_Ammo1 addWeaponCargo ["Binocular",40];
_Ammo1 addWeaponCargo ["NVGoggles",40];
_Ammo1 addWeaponCargo ["ItemGPS",40];
_Ammo1 addWeaponCargo ["Colt1911",50];
_Ammo1 addMagazineCargo ["7Rnd_45ACP_1911",100];
_Ammo1 addWeaponCargo ["M9",5];
_Ammo1 addWeaponCargo ["M9SD",5];
_Ammo1 addMagazineCargo ["15Rnd_9x19_M9",5];
_Ammo1 addMagazineCargo ["15Rnd_9x19_M9SD",5];
_Ammo1 addWeaponCargo ["MP5A5",2];
_Ammo1 addWeaponCargo ["MP5SD",2];
_Ammo1 addMagazineCargo ["30Rnd_9x19_MP5",50];
_Ammo1 addMagazineCargo ["30Rnd_9x19_MP5SD",50];
_Ammo1 addWeaponCargo ["G36a",40];
_Ammo1 addWeaponCargo ["G36c",40];
_Ammo1 addWeaponCargo ["G36k",40];
_Ammo1 addWeaponCargo ["G36_C_SD_eotech",40];
_Ammo1 addMagazineCargo ["30Rnd_556x45_G36",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addMagazineCargo["30Rnd_556x45_Stanag", 200];
_Ammo1 addMagazineCargo ["30Rnd_556x45_StanagSD",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["M16A2",40];
_Ammo1 addWeaponCargo ["M16A2GL",40];
_Ammo1 addWeaponCargo ["M16A4",40];
_Ammo1 addWeaponCargo ["M16A4_ACG",40];
_Ammo1 addWeaponCargo ["M16A4_ACG_GL",40];
_Ammo1 addWeaponCargo ["M16A4_GL",40];
_Ammo1 addWeaponCargo ["M4A1_RCO_GL",40];
_Ammo1 addWeaponCargo ["M4A1_AIM_SD_camo",40];
_Ammo1 addWeaponCargo ["M4A1_HWS_GL",40];
_Ammo1 addWeaponCargo ["M4A1_HWS_GL_camo",40];
_Ammo1 addWeaponCargo ["M4A1_HWS_GL_SD_camo",40];
_Ammo1 addWeaponCargo ["Pecheneg",40];
_Ammo1 addMagazineCargo ["100Rnd_762x54_PK",150];
_Ammo1 addMagazineCargo["30Rnd_556x45_Stanag",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["M8_carbine",40];
_Ammo1 addWeaponCargo ["M8_carbineGL",40];
_Ammo1 addWeaponCargo ["M8_compact",40];
_Ammo1 addWeaponCargo ["M8_sharpshooter",40];
_Ammo1 addWeaponCargo ["M8_SAW",40];
_Ammo1 addMagazineCargo ["30Rnd_556x45_G36",200];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["DMR",40];
_Ammo1 addMagazineCargo ["20Rnd_762x51_DMR",200];
_Ammo1 addWeaponCargo ["M40A3",40];
_Ammo1 addMagazineCargo ["5Rnd_762x51_M24",200];
_Ammo1 addWeaponCargo ["M24", 40];
_Ammo1 addMagazineCargo ["5Rnd_762x51_M24",200];
_Ammo1 addWeaponCargo ["M107" ,40];
_Ammo1 addMagazineCargo ["10Rnd_127x99_M107",200];
_Ammo1 addWeaponCargo ["M240" ,40];
_Ammo1 addMagazineCargo ["100Rnd_762x51_M240",100];
_Ammo1 addWeaponCargo ["M249" ,40];
_Ammo1 addMagazineCargo ["200Rnd_556x45_M249" ,100];
_Ammo1 addMagazineCargo ["20Rnd_556x45_Stanag",200];
_Ammo1 addMagazineCargo ["30Rnd_556x45_Stanag",200];
_Ammo1 addWeaponCargo ["MG36",40];
_Ammo1 addMagazineCargo ["100Rnd_556x45_BetaCMag",100];
_Ammo1 addWeaponCargo ["Javelin",40];
_Ammo1 addMagazineCargo ["Javelin",100];
_Ammo1 addWeaponCargo ["M136",40];
_Ammo1 addMagazineCargo ["M136",100];
_Ammo1 addWeaponCargo ["SMAW",40];
_Ammo1 addMagazineCargo ["SMAW_HEAA",200];
_Ammo1 addWeaponCargo ["Stinger",40];
_Ammo1 addMagazineCargo ["Stinger",100];
_Ammo1 addWeaponCargo ["MetisLauncher",40];
_Ammo1 addMagazineCargo ["AT13",100];
_Ammo1 addMagazineCargo ["1Rnd_SMOKE_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_SMOKERED_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_SMOKEGREEN_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_SMOKEYELLOW_GP25",10];
_Ammo1 addMagazineCargo ["1Rnd_HE_M203",100];
_Ammo1 addMagazineCargo ["FlareWhite_M203",10];
_Ammo1 addMagazineCargo ["FlareGreen_M203",10];
_Ammo1 addMagazineCargo ["FlareRed_M203",10];
_Ammo1 addMagazineCargo ["FlareYellow_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_Smoke_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_SmokeRed_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_SmokeGreen_M203",10];
_Ammo1 addMagazineCargo ["1Rnd_SmokeYellow_M203",10];
_Ammo1 addMagazineCargo ["PipeBomb",100];

sleep 1;

nul = [_Ammo1] execVM "ammo-respawn.sqf";
Sollte funktionieren.
Cyborg11 ist offline  
Alt 28.01.2010, 12:34   #4 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Das Problem ist die Lokalität des addMagazineCargo bzw. addWeaponCargo-Befehls: Effekt hat der Befehl nur auf dem ausführenden Client.

Es gibt verschiedene Möglichkeiten, dass zu regeln.
Eine wäre zum Beispiel die Waffenkiste von vornerein in der Mission zu setzen und das Aufüll-Script per Init auszuführen. Dann müsste man die Kiste nicht jedes mal neu Erzeugen sondern einfach immer nur zum Fahrzeug teleportieren bzw. an eine andere Position teleportieren, wenn sie wieder eingeräumt werden soll.

Eine andere Möglichkeit wäre das Nutzen von setVehicleInit für die Kiste.
__________________

TeRp ist offline  
Alt 28.01.2010, 14:01   #5 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Wenn man aber das Skript per Init starten lässt, dann läuft es ja überall und durch WaitUntil wartet es bis die Waffenbox zerstört ist
Cyborg11 ist offline  
Alt 28.01.2010, 17:17   #6 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Ich habe nichts anderes behauptet.

Dein Beispiel-Script ist aber leider etwas falsch.
Da das Script per Init ausgeführt wird, insbesondere also für jeden (!) verbundenen Client, eine Waffenkiste an der gewünschten Stelle erzeugt.
Außerdem sind die Endlosscheifen nicht wirklich wünschenswert, und gerade hier benutzt du auch noch waitUntil, was die Eigenschaft hat, die Kondition in jedem Frame einmal zu überprüfen.
Das ist bei diesem Script aber garnicht notwendig, kostet also unnötig Rechenaufwand.
__________________

TeRp ist offline  
Alt 28.01.2010, 19:49   #7 (permalink)
Newbie
 
Registriert seit: 10.01.2010
Beiträge: 30
Standard

TeRp könntest du velleicht mal nen beispiel machen??
Jimi Blaz ist offline  
Alt 29.01.2010, 11:51   #8 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Zitat von TeRp Beitrag anzeigen

Ich habe nichts anderes behauptet.

Dein Beispiel-Script ist aber leider etwas falsch.
Da das Script per Init ausgeführt wird, insbesondere also für jeden (!) verbundenen Client, eine Waffenkiste an der gewünschten Stelle erzeugt.

Kann man ja mit der Abfrage nach dem Server umgehen
Code:
If (isServer) then {
  // spawncode für die Kiste
};
Zitat von TeRp Beitrag anzeigen

Außerdem sind die Endlosscheifen nicht wirklich wünschenswert, und gerade hier benutzt du auch noch waitUntil, was die Eigenschaft hat, die Kondition in jedem Frame einmal zu überprüfen.
Das ist bei diesem Script aber garnicht notwendig, kostet also unnötig Rechenaufwand.

Naja eine Endlosschleife ist es ja eher nicht oder siehst du irgendwo ein While? ^^ Und waitUntil überprüft jeden Frame? Hm ...
Aber wie schon gesagt, es gibt bei allem viele Möglichkeiten das zu bewerkstelligen ^^
Eine andere Möglichkeit wäre natürlich der Kiste einen Killed Eventhandler zuzuweisen, sodass dann eine neue Kiste spawnt. Dann kann man auch auf das WaitUntil verzichten.
Frage dazu: Der Killed Eventhandler wird doch global ausgelöst oder? Das würde dann heißen, dass man auf setVehicleInit zum Beispiel verzichten kann.
Gibt jetzt natürlich schon wieder zig Möglichkeiten das zu skripten. ^^

Aber ich hab mal gehört, dass man eigentlich auf setVehicleInit verzichten soll und lieber mit publicVariable und addPublicVariableEventhandler arbeiten soll. Gibt es dafür einen bestimmten Grund?
Cyborg11 ist offline  
Alt 01.02.2010, 10:17   #9 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Setz' ne Kiste auf die Karte, nenn sie ammoBox.
In die Init schreibst du dein Auffüllscript rein in dem die ganzen addWeaponCargo- und addMagazineCargo-Befehle stehen.

Wenn du dann die Kiste an deinem Marker haben möchtest, machst du einfach
Code:
ammoBox setPos (getMarkerPos "markerName");
Wenn du sie wieder verschwinden lassen willst, teleportierst du sie woanders hin, z.B. an Position [0,0,0]:
Code:
ammoBox setPos [0,0,0];
Damit ist dein Problem gelöst und du brauchst noch nicht mal mehr Spawnen.

@Cyborg:
Sofern man mit setVehicleInit ordentlich umgeht, sollte es keine Probleme geben.
Man muss halt nur beachten, das man hier wirklich einen Init-Befehl setzt, also auch bei jedem später connectenden Client der Init-Befehl nochmal ausgeführt wird.
Aber dafür gibt es ja auch abhilfe, nämlich in Form von clearVehicleInit.
__________________

TeRp ist offline  
Alt 01.02.2010, 10:46   #10 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

Zitat von TeRp Beitrag anzeigen

@Cyborg:
Sofern man mit setVehicleInit ordentlich umgeht, sollte es keine Probleme geben.
Man muss halt nur beachten, das man hier wirklich einen Init-Befehl setzt, also auch bei jedem später connectenden Client der Init-Befehl nochmal ausgeführt wird.
Aber dafür gibt es ja auch abhilfe, nämlich in Form von clearVehicleInit.

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:25 Uhr).
Xeno 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
Einzelne Einheiten mit SQF Spawnen Mr.NiceGuy Editing & Scripting 6 27.11.2009 22:22
Mal wieder die KI calla_5 Technische Fragen & Probleme 3 20.12.2008 07:47
SP- MAP, Feinde Spawnen lassen Tom2e Editing 4 22.05.2008 22:26
Vehicle spawnen und zum Zielort fahren lassen b3ck5 Editing 4 29.03.2008 07:57
Ich bin wieder da! der mit den minen tanzt Offtopic 5 11.04.2005 13:51


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