-
Hallo Zusammen
Ein Kollege und ich werfen einen Arma Server an, da wir heute zuhause sind. Wir spielen BW innerhalb einer eigens gemachten Mission. Immersives Gameplay ist erwünscht. Schaut rein, wenn ihr Lust habt.
Server name: [GER / BW] Operation CFOR (WIP)
Address: node2.blueberry-hood-clan.de:2502
Server version: 200146766
Required game version: 2.0.0
Map: Cup_chernarus_A3
Mission: patrol_ops
Players: 4/28
Gez. Zumi
-
- Lokal zum Spieler oder zum Fahrzeug?
Das Locked-Event feuert aufm Owner-Rechner des Fahrzeuges
Das ace_vehiclelock_startedLockpick feuert lokal auf dem client
-
Problem solved, gib Bescheid.
-
Also die erste Frage wär einfach zu beantworten gewesen.
Für die zweite sehe ich folgenden Ansatz:
ace_arsenal feuert ein lokales CBA-Event ab, wenn man das Arsenal schliesst. Du könntest innerhalb des Eventcodes prüfen, ob die primaryweaponitems das nicht erwünschte visier für die waffe enthalten und es ihnen gegebenenfalls wegnehmen:
Edit: Code getestet. Funktioniert. Achtung: Die Classnames im Ace-Arsenal weichen von denjenigen ab, die man mit primaryweaponitems rauskriegt. Entsprechend muss man die case-sensitivität von "isEqualTo" oder "IN" beachten... Habe zwei Beispielwaffen mit nichterlaubten und erlaubten Visieren eingefügt.
- //Put in initPlayerlocal.sqf
- ["ace_arsenal_displayClosed",
- {
- _blacklist_and_allowed = [["arifle_MX_F", ["optic_Yorris", "optic_DMS"], ["optic_dms_ghex_f"]], ["arifle_MX_Black_F", ["optic_DMS", "optic_dms_ghex_f"], ["optic_Yorris"]]];
- _primary_weapon = primaryWeapon player;
- _visier = (primaryWeaponItems player) select 2;
- {
- _x params [["_waffe", ""], ["_not_allowed",[]], ["_allowed",[]]];
-
- if ((_primary_weapon isEqualTo _waffe) && (_visier IN _not_allowed)) exitWith {
- hint format ["Das Visier %1 ist für die Waffe %2 nicht erlaubt. Versuchs eins hiervon: %3", _visier , _primary_weapon , _allowed];
- player removePrimaryWeaponItem _visier;
- };
-
-
- } forEach _blacklist_and_allowed;
- }
- ] call CBA_fnc_addEventhandler;
Alles anzeigen
-
Ich hätte wohl noch unser Modset erwähnen sollen. Hab es nämlich nicht pur Vanilla getestet:
iNTERVENTION - Server
Ich kann mir gut vorstellen, dass die KI-Mod damit in Konflikt gerät.
Ich habe dir noch einen Tip. Schau dir mal dieses CBA-Event von ACE3 (wiederum aus ace_common) an:
- [QGVAR(setHidden), {
- params ["_object", "_set"];
- TRACE_2("setHidden EH",_object,_set);
- // May report nil. Default to factor 1.
- private _vis = [_object getUnitTrait "camouflageCoef"] param [0, 1];
- if (_set > 0) then {
- if (_vis != 0) then {
- _object setVariable [QGVAR(oldVisibility), _vis];
- _object setUnitTrait ["camouflageCoef", 0];
- {
- if (side _x != side group _object) then {
- _x forgetTarget _object;
- };
- } forEach allGroups;
- };
- } else {
- _vis = _object getVariable [QGVAR(oldVisibility), _vis];
- _object setUnitTrait ["camouflageCoef", _vis];
- };
- }] call CBA_fnc_addEventHandler;
Alles anzeigen
Damit kannst du Einheiten/Spieler komplett "vergessen" machen.
Dazu einfach:
["ace_common_setHidden", [player, 1]]] call CBA_fnc_globalEvent;
-
Ace sollte zudem selber die Events "Tod" und "Unconscious" handlen. Lass mich wissen, wenns Probleme gibt.
-
Wäre mir neu, dass setCaptive ein lokal wirkender command ist. Dennoch, hier ein Lösungsansatz, der sogar JIP-kompatibel ist. Du musst lediglich CBA und ACE nutzen dafür.
Es gibt folgendes Event, welches durch das Addon ace_common auf allen Maschinen gehandled wird:
- [QGVAR(setCaptive), {
- params ["_object", "_set"];
- TRACE_2("setCaptive EH",_object,_set);
- _object setCaptive (_set > 0);
- }] call CBA_fnc_addEventHandler;
Wir tun also folgendes:
- ["ace_common_setCaptive", [player, 1]]] call CBA_fnc_globalEventJIP;
Möchtest du den Status resetten auf allen Maschinen, dann einfach:
- ["ace_common_setCaptive", [player, 0]]] call CBA_fnc_globalEventJIP;
-
-
Der Code (Ace-Event, welches gehandelt wird):
- ["ace_explosives_detonate", {
- params ["_unit", "_explosive", "_delay"];
- private _array = _explosive call CBA_fnc_getNearestBuilding;
- _array params ["_building", "_buildingPositions"];
- _bounding_rotated = [(boundingCenter _building), vectorUp _building, -(getDir _building)] call CBA_fnc_vectRotate3D;
- _hpos = (_building call cba_fnc_getPos) vectorAdd _bounding_rotated;
- _bpos = (getPosATL _explosive);
- for "_i" from 1 to 20 do {
- private _offset = _building selectionPosition format ["door_%1", _i];
- if !(_offset isEqualTo [0,0,0]) then {
- private _offset = [_offset, vectorUp _building, -(getDir _building)] call CBA_fnc_vectRotate3D;
- private _newpos = _hpos vectorAdd _offset;
- if (_bpos distance _newpos <= 2) then {
- _building setVariable [format ["bis_disabled_door_%1", _i], 0, true];
- private _return = [_building, format ["door_%1", _i]] call ace_interaction_fnc_getDoorAnimations;
- _return params [["_animations", []], ["_lockedVariable", []]];
- if !(_animations isEqualTo []) then {
- _building animate [_animations select 0, 1];
- };
- };
- };
- };
- }] call CBA_fnc_addEventHandler;
Alles anzeigen
Edit: der funktionierende Code
.
-
-
Ace scheint für die Interaktions-Knoten auf den Häusern Helferobjekte zu verwenden. Daher habe ich mich entschieden, es über eine Selbst-Interaktion zu lösen.
ACE3/fnc_userActions_addHouseActions.sqf at master · acemod/ACE3 · GitHub
-
Das Türe knacken habe ich so gelöst:
Ich mache das mit den Ace Interaktionen etwas speziell. Es ist nicht über die Config, sondern über Scripts gelöst.
-
Ich habe das probiert und es über die Selections auch nicht hingekriegt. Mir ist aber für meine Mission ein Workaround gelungen.
Demo hier:
Sieht jetzt etwas einfacher aus, als es ist. Es benötigt einige Custom CBA Events, publicVariables und so weiter.
-
Lieber Darkhoffi
Es dürfte sich um die folgende Cba-Einstellung handeln:
force force ace_medical_treatment_convertItems = 0;
Diese ist unter den Addon-Optionen unter "Ace Medical" zu finden. Einfach serverseitig einstellen und mission / clients überschreiben.
-
Hab mal nen Acre2 Issue erstellt
-
Update
Diese Funktion prüft, ob eine customSignalFuncdefiniert ist.
Dies ist die customSignalFunc.
--> Die Funktion müsste, wenn local gecalled, ja folgendes tun:
- acre_sys_signal_customSignalFunc = nil;
Sie tut es aber irgendwie nicht... Die Abfrage
- (isNil "acre_sys_signal_customSignalFunc")
retourniert false
Das ist ärgerlich
-
Ich habe das Problem mittels Ace umgehen können.
Das Teil baue ich aber zusätzlich ein. Danke.
-
Derzeit funktioniert das Zeus-Modul nicht.
Als Owner ist #adminLogged gesetzt.
Ein eingeloggter Admin kann den Zeus nicht benutzen. Der Zeus kann nicht angepingt werden.
Im RPT ist nichts auffälliges zu sehen...
Das Problem kann auf den Server eingegrenzt werden. Lokal auf meinem Rechner gehostet funktioniert der Zeus.
Der Server startet auch das Zeus DLC laut RPT ordnungsgemäss mit:
14:11:45 D:\ArmA3\Server\Public\curator\addons\data_f_curator.pbo - 141307
14:11:45 D:\ArmA3\Server\Public\curator\addons\data_f_curator_music.pbo - 119457
14:11:45 D:\ArmA3\Server\Public\curator\addons\functions_f_curator.pbo - 144973
14:11:45 D:\ArmA3\Server\Public\curator\addons\language_f_curator.pbo - 147225
14:11:45 D:\ArmA3\Server\Public\curator\addons\missions_f_curator.pbo - 121570
14:11:45 D:\ArmA3\Server\Public\curator\addons\modules_f_curator.pbo - 144810
14:11:45 D:\ArmA3\Server\Public\curator\addons\ui_f_curator.pbo - 144159
14:11:49 Arma 3 Zeus | curator | true | true | GAME DIR | a22ad2af1877d2b2af7d7c23f55c5f263b271e5a | 59890c95 | D:\ArmA3\Server\Public\curator
Die Modliste:
-
Ich will jeweils lokal in der acre_api_customSignalFunc abfragen, welcher Jammer momentan aktiv bzw. am nächsten ist. Dazu muss ich ja ein Array als globale Variable definieren, sonst geht das nicht.
-
Also dann statt sowas:
- acre_player setVariable ["zumi_currentJammer", objNull];
sowas hier?
- zumi_currentJammer = objNull;