22.04.2011, 08:17 | #1 (permalink) |
Registriert seit: 10.01.2010
Alter: 75
Beiträge: 175
|
Rucksack
Hallo Leute!
Ich verwende ein script von Xeno glaube ich jedenfalls das ich das mal von dir bekommen habe, und habe seit dem Patch 1.59 folgendes Problem: Wenn man stirbt hat man die letzte Bewaffnung einschließlich die selbe Bewaffnung im Rucksack soweit ist alles gut; Wenn man aber jetzt zu dem respawnten Spieler geht; den Rucksack öffnet bzw.in den Rucksack reinschaut sieht man nicht mehr was drinnen ist. Der respawnte Spieler sieht schon was er hat nur ein anderer eben nicht wenn man reinschaut, dadurch kann ich mir auch von meinem Mitspieler nichts rausnehmen. Hier das script vielleicht kann mir bitte wer sagen welche Zeile ich ändern müßte. Aufrufen tue ich das script über die init.sqf mit execVM "scripts\Rucksack.sqf"; Danke Mike
Geändert von CptMike (22.04.2011 um 10:10 Uhr). |
22.04.2011, 13:10 | #3 (permalink) |
Registriert seit: 10.01.2010
Alter: 75
Beiträge: 175
|
Ersteinmal Danke Buliwyf auch wenn ich wüßte was da steht könnte ich mir das in das bestehende script nicht einfügen weil ich keine Ahnung davon habe, aber vielleicht ändert mir wer das script wenn mal wer Zeit hat.
Mike |
23.04.2011, 16:02 | #4 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Versuche es einmal so:
Code:
WaitUntil{isDedicated || not isNull player}; player addEventHandler ["Killed",{ player spawn { _unit = _this; private ['_magazines','_weapons','_backpack','_backpackweap ','_backpackmags']; if(isNil "savedloadout") then { _weapons = weapons _unit; _magazines = magazines _unit; _backpack = typeOf unitBackpack _unit; _backpackmags = getMagazineCargo unitBackpack _unit; _backpackweap = getWeaponCargo unitBackpack _unit; } else { _weapons = savedloadout select 0; _magazines = savedloadout select 1; _backpack = savedloadout select 2; _backpackmags = savedloadout select 3; _backpackweap = savedloadout select 4; }; WaitUntil{alive player}; removeAllWeapons player; removeAllItems player; removeBackpack player; {player addMagazine _x} foreach _magazines; {player addWeapon _x} foreach _weapons; if (primaryWeapon player != "") then { player selectWeapon (primaryWeapon player); _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon player >> "muzzles"); // Fix for weapons with grenade launcher player selectWeapon (_muzzles select 0); }; if(_backpack != "") then { player addBackpack _backpack; clearWeaponCargoGlobal (unitBackpack player); clearMagazineCargoGlobal (unitBackpack player); for "_i" from 0 to (count (_backpackmags select 0) - 1) do { (unitBackpack player) addMagazineCargoGlobal [(_backpackmags select 0) select _i,(_backpackmags select 1) select _i] }; for "_i" from 0 to (count (_backpackweap select 0) - 1) do { (unitBackpack player) addWeaponCargoGlobal [(_backpackweap select 0) select _i,(_backpackweap select 1) select _i] }; }; }; }]; |
25.10.2011, 14:55 | #6 (permalink) |
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
|
Sorry, dass ich dieses Thema nochmals ausgrabe. Ich verwende zurzeit das von Vienna gepostete Script (siehe oben) für meine "Vortodes-Respawn-Bewaffnung". Nun ist mir aufgefallen, dass damit zwar die Magazine im Rucksack nach dem Respawn enthalten sind, wenn ich jedoch eine zweite Hauptwaffe in den Rucksack packe anstelle der Magazine, dann ist diese nach dem Respawn weg. Um es präzis auszudrücken. Ich packe eine OA-Waffe in den Rucksack, welche genau dieselben Magazine benötigt, wie die andere Hauptwaffe, die ich in den Händen halte. Deshalb befinden sich vor dem Respawn keine Magazine im Rucksack (sondern eben nur die zweite Hauptwaffe). Ich verwnde übrigens A2OA auf Patch 1.59 ohne Addons. Zwei Fragen: - Wo könnte hier das Problem liegen? - Gibt es evtl. eine neuere/andere Version dieses Scripts? P.S: Wenn ich nach Rucksack und Respawn google, lande ich immer wieder auf diesem "Fred"... |
25.10.2011, 15:59 | #7 (permalink) |
Code:
WaitUntil {isDedicated || not isNull player}; player addEventHandler ["Killed", { player spawn { _unit = _this; private ['_magazines','_weapons','_backpack','_backpackweap','_backpackmags']; _weapons = weapons _unit; _magazines = magazines _unit; _backpack = if (!isNull unitBackpack _unit) then {typeOf unitBackpack _unit} else {""}; if (_backpack != "") then { _backpackmags = getMagazineCargo _backpack; _backpackweap = getWeaponCargo _backpack; }; _items = items player; WaitUntil{alive player}; removeAllWeapons player; removeAllItems player; removeBackpack player; {player addMagazine _x} foreach _magazines; {player addWeapon _x} foreach _weapons; {if !(player hasWeapon _x) then {player addWeapon _x}} forEach _items; if (primaryWeapon player != "") then { player selectWeapon (primaryWeapon player); _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon player >> "muzzles"); // Fix for weapons with grenade launcher player selectWeapon (_muzzles select 0); }; if(_backpack != "") then { player addBackpack _backpack; clearWeaponCargoGlobal (unitBackpack player); clearMagazineCargoGlobal (unitBackpack player); for "_i" from 0 to (count (_backpackmags select 0) - 1) do { (unitBackpack player) addMagazineCargoGlobal [(_backpackmags select 0) select _i,(_backpackmags select 1) select _i] }; for "_i" from 0 to (count (_backpackweap select 0) - 1) do { (unitBackpack player) addWeaponCargoGlobal [(_backpackweap select 0) select _i,(_backpackweap select 1) select _i] }; }; }; }]; gefixt EDIT: nochmal geändert. produzierte fehlermeldungen in der .rpt wenn kein rucksack vorhanden war. außerdem werden jetzt auch gegenstände wie karten und dergleichen gespeichert.
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ Geändert von Pfandgiraffe (25.10.2011 um 16:14 Uhr). |
|
26.10.2011, 01:22 | #9 (permalink) |
Das mag alles sein aber es ist verdammt anwenderfreundlich!
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
26.10.2011, 07:12 | #10 (permalink) |
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
|
Danke Psycho, für die schnelle Hilfe
Ich werde das abgeänderte Script sobald wie möglich in meinen Missionen testen/austauschen. Leider verstehe ich von Xeno's Abhandlung nicht sehr viel (wahrscheinlich weil ich von Programmieren und Scripten nicht viel Ahnung habe ). Ich gehe jetzt aber einfach mal davon aus, dass das korrigierte Script von Psycho den von mir gemeldeten 'Fehler' behebt und ansonsten das tut, was das alte Script getan hat. Das reicht für meine Zwecke absolut. Nochmals danke Psycho . Melder mich nach erfolgtem Test nochmals hier. |
26.10.2011, 13:14 | #12 (permalink) |
So sollte es sauber sein:
Code:
if (isMultiplayer && isDedicated) exitWith {}; WaitUntil {!isNull player}; player addEventHandler ["Killed", { _unit = _this select 0; private ['_magazines','_weapons','_backpack','_backpackweap','_backpackmags','_unit']; _weapons = weapons _unit; _magazines = magazines _unit; _backpack = if (!isNull unitBackpack _unit) then {typeOf unitBackpack _unit} else {""}; if (_backpack != "") then { _backpackmags = getMagazineCargo unitBackpack _unit; _backpackweap = getWeaponCargo unitBackpack _unit; _unit setVariable ["players_bp_content",[_backpack,_backpackweap,_backpackmags]]; } else { _unit setVariable ["players_bp_content",""]; }; _items = items player; _unit setVariable ["players_content",[_weapons,_magazines,_items]]; }]; player addEventHandler ["Respawn", { _unit = _this select 0; private ['_a_stuff','_unit','_a_bp','_bp','_bpw','_bpm','_pi']; removeAllWeapons player; removeAllItems player; if (!isNull unitBackpack _unit) then {removeBackpack _unit}; _a_stuff = _unit getVariable "players_content"; _pw = _a_stuff select 0; _pm = _a_stuff select 1; _pi = _a_stuff select 2; {player addMagazine _x} foreach _pm; {player addWeapon _x} foreach _pw; {if !(player hasWeapon _x) then {player addWeapon _x}} forEach _pi; player selectWeapon (primaryWeapon player); _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon player >> "muzzles"); // Fix for weapons with grenade launcher player selectWeapon (_muzzles select 0); _a_bp = _unit getVariable "players_bp_content"; _bp = _a_bp select 0; if(_bp != "") then { player addBackpack _bp; clearWeaponCargoGlobal (unitBackpack player); clearMagazineCargoGlobal (unitBackpack player); _bpw = _a_bp select 1; _bpm = _a_bp select 2; for "_i" from 0 to (count (_bpm select 0) - 1) do { (unitBackpack player) addMagazineCargoGlobal [(_bpm select 0) select _i,(_bpm select 1) select _i] }; for "_i" from 0 to (count (_bpw select 0) - 1) do { (unitBackpack player) addWeaponCargoGlobal [(_bpw select 0) select _i,(_bpw select 1) select _i] }; }; }]; gruß
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
26.10.2011, 13:49 | #13 (permalink) |
Registriert seit: 10.01.2010
Alter: 75
Beiträge: 175
|
Hallo Psycho!
Erstmal Danke für das script aber ich habe folgenden Eintrag in der rpt könntest du da nochmal drüberschauen bitte.
|
26.10.2011, 13:59 | #14 (permalink) |
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
|
Irgendwie staune ich ein bisschen darüber, dass der arme Psychobastard das Rad selbst neu erfinden (bzw. korrigieren) musste...
Werden solche "Respawns mit Vortodesbewaffnung" mittlerweile nicht fast in jeder Multiplayer-Misison verwendet? Ich dachte mir, dass es da bereits dutzende fertige Scripts geben müsste, und deshalb einige davon in diesem Post auftauchen werden. Naja, so kann man sich irren. Da kann ich nur sagen: Zum Glück gibt's Leute wie Psycho: Merci! Ich werde jetzt natürlich die neueste, (xenotaugliche ) Version einbauen/testen, sobald ich Zeit dazu habe. |
26.10.2011, 23:51 | #17 (permalink) |
Code:
if (isMultiplayer && isDedicated) exitWith {}; WaitUntil {!isNull player}; player addEventHandler ["Killed", { _unit = _this select 0; private ['_magazines','_weapons','_backpack','_backpackweap','_backpackmags','_unit']; _weapons = weapons _unit; _magazines = magazines _unit; _backpack = if (!isNull unitBackpack _unit) then {typeOf unitBackpack _unit} else {""}; if (_backpack != "") then { _backpackmags = getMagazineCargo unitBackpack _unit; _backpackweap = getWeaponCargo unitBackpack _unit; _unit setVariable ["players_bp_content",[_backpack,_backpackweap,_backpackmags]]; } else { _unit setVariable ["players_bp_content",["","",""]]; }; _items = items player; _unit setVariable ["players_content",[_weapons,_magazines,_items]]; }]; player addEventHandler ["Respawn", { _unit = _this select 0; private ['_a_stuff','_unit','_a_bp','_bp','_bpw','_bpm','_pi']; removeAllWeapons player; removeAllItems player; if (!isNull unitBackpack _unit) then {removeBackpack _unit}; _a_stuff = _unit getVariable "players_content"; _pw = _a_stuff select 0; _pm = _a_stuff select 1; _pi = _a_stuff select 2; {player addMagazine _x} foreach _pm; {player addWeapon _x} foreach _pw; {if !(player hasWeapon _x) then {player addWeapon _x}} forEach _pi; player selectWeapon (primaryWeapon player); _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon player >> "muzzles"); // Fix for weapons with grenade launcher player selectWeapon (_muzzles select 0); _a_bp = _unit getVariable "players_bp_content"; _bp = _a_bp select 0; if(_bp != "") then { player addBackpack _bp; clearWeaponCargoGlobal (unitBackpack player); clearMagazineCargoGlobal (unitBackpack player); _bpw = _a_bp select 1; _bpm = _a_bp select 2; for "_i" from 0 to (count (_bpm select 0) - 1) do { (unitBackpack player) addMagazineCargoGlobal [(_bpm select 0) select _i,(_bpm select 1) select _i] }; for "_i" from 0 to (count (_bpw select 0) - 1) do { (unitBackpack player) addWeaponCargoGlobal [(_bpw select 0) select _i,(_bpw select 1) select _i] }; }; }]; ja, sorry. war ein kleiner fehler der dann auftrat wenn der spieler keinen rucksack hat. ist gefixt.
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
27.10.2011, 14:50 | #18 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Der Respawn EventHandler funktioniert nur in Arma2 OA. Dann nur wenn man nicht zuvor an Arma2 programmiert hat.
Hier ein Beispiel für den Respawn der Spieler. Der EventHandler ruft ein Skript auf. Die Bewaffnung wird von der Leiche des Spielers übernommen, die der EventHandler übermittelt. Einmaliger Aufruf des Eventhandlers für die Spieler: temp = player addEventHandler ["Respawn", {_this execVM "Respawn_mit_Waffen_der_Leiche.sqf"}] Skript "Respawn_mit_Waffen_der_Leiche.sqf" Code:
// Skript für Respawn mit Bewaffnung der getöteten Unit. // //Einmaliger Aufruf für Spieler: temp = player addEventHandler ["Respawn", {_this execVM "Respawn_mit_Waffen_der_Leiche.sqf"}] if (isNull player) exitWith {}; //Wenn EventHandler nur für die Spieler //nur zum Testen: titleText["Respawn-Skript ausgeführt!","plain"]; private ["_UnitNeu","_UnitLeiche","_magazines","_weapons","_backpack","_backpackweap","_backpackmags","_i"]; _UnitNeu = _this select 0; _UnitLeiche = _this select 1; _weapons = weapons _UnitLeiche; _magazines = magazines _UnitLeiche; _items = items _UnitLeiche; _backpack = if (!isNull unitBackpack _UnitLeiche) then {typeOf unitBackpack _UnitLeiche} else {""}; if (_backpack != "") then { _backpackmags = getMagazineCargo _backpack; _backpackweap = getWeaponCargo _backpack }; removeAllWeapons _UnitNeu; removeAllItems _UnitNeu; removeBackpack _UnitNeu; {_UnitNeu addMagazine _x} foreach _magazines; {_UnitNeu addWeapon _x} foreach _weapons; {_UnitNeu addWeapon _x} forEach _items; if (primaryWeapon _UnitNeu != "") then { _UnitNeu selectWeapon (primaryWeapon _UnitNeu); _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon _UnitNeu >> "muzzles"); // Fix for weapons with grenade launcher _UnitNeu selectWeapon (_muzzles select 0) }; if(_backpack != "") then { _UnitNeu addBackpack _backpack; clearWeaponCargoGlobal (unitBackpack _UnitNeu); clearMagazineCargoGlobal (unitBackpack _UnitNeu); for "_i" from 0 to (count (_backpackmags select 0) - 1) do { (unitBackpack _UnitNeu) addMagazineCargoGlobal [(_backpackmags select 0) select _i,(_backpackmags select 1) select _i] }; for "_i" from 0 to (count (_backpackweap select 0) - 1) do { (unitBackpack _UnitNeu) addWeaponCargoGlobal [(_backpackweap select 0) select _i,(_backpackweap select 1) select _i] } } |
27.10.2011, 16:17 | #19 (permalink) |
@vienna, da sind 2 bugs enthalten. ;-)
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
27.10.2011, 21:01 | #20 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das ist nicht in einer ordentlichen MP-Umgebung getestet und der Rucksack überhaupt nicht. Ich wollte nur aufzeigen, wie das allein mit dem "Respawn" EventHandler geht. Auch habe ich den "RespawnMP" nicht nachvollzogen wo der Unterschied liegt.
Du wirst die Bugs schon rausnehmen ;-) |
Stichworte |
rucksack |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
ARMA 2: OA - UAV & ULB mit Terminal Backpack nutzen | pestbeule | Editing & Scripting | 28 | 16.07.2010 21:44 |
UAV Rucksack | todyoungblood | Editing & Scripting | 8 | 16.07.2010 18:24 |