26.01.2010, 20:09 | #1 (permalink) |
Registriert seit: 10.01.2010
Beiträge: 30
|
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;}; }; |
28.01.2010, 12:24 | #3 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
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" 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";
__________________
|
28.01.2010, 12:34 | #4 (permalink) |
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
|
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. |
28.01.2010, 17:17 | #6 (permalink) |
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
|
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. |
29.01.2010, 11:51 | #8 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Kann man ja mit der Abfrage nach dem Server umgehen Code:
If (isServer) then { // spawncode für die Kiste }; 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?
__________________
|
01.02.2010, 10:17 | #9 (permalink) |
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
|
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"); Code:
ammoBox setPos [0,0,0]; @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. |
01.02.2010, 10:46 | #10 (permalink) |
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
|
*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). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ä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 |