![]() |
#1 (permalink) |
![]() Registriert seit: 22.11.2010
Beiträge: 74
|
![]()
Grüße,
es geht mal wieder um ein Problem im Multiplayer. Guckt euch doch mal bitte diesen Code an: Initzeile im Auto: Code:
this addAction ["Auto untersuchen", "script\timer.sqf", nil, 5, true, true, "", "_this distance _target < 5"]; Code:
private ["_carOne", "_spieler", "_id", "_zeit1", "_i"]; _carOne = _this select 0; _spieler = _this select 1; _id = _this select 2; _zeit1 = 90 + round (random 90); hint "Fahrzeug ist verschlossen!\n Schloss wird geknackt, bitte warten."; _carOne removeAction id; _carOne setfuel 0.05; clearWeaponCargoGlobal _carOne; clearMagazineCargoGlobal _carOne; sleep 3; // Countdown for [{_i = _zeit1}, {_i >= 0}, {_i = _i - 1}] do { // wenn der Spieler dicht genug dran ist if (_carOne distance player <= 20) then { sleep 0.95; hintsilent format ["Noch %1 Sekunden!", _i]; }; // wenn der Spieler zu weit entfernt ist if (_carOne distance player > 20) then { hint "Entfernung vom Fahrzeug zu groß"; waitUntil {_carOne distance player < 20}; }; // wenn der Timer auf 0 steht if (_i == 0) then { _carOne lock false; _carOne engineOn true; if (_carOne distance player < 200) then { hint "Schnell einsteigen!"; }; }; }; |
![]() |
![]() |
#2 (permalink) |
![]() ![]() ![]() Registriert seit: 11.03.2005
Ort: HH
Alter: 53
Beiträge: 1.930
|
![]()
Schau Dir das hier mal an: Multiplayer framework
Dazu Funktionsmodul auf die Map setzen. In die init.sqf: Code:
waitUntil{!(isNil "BIS_MPF_InitDone")}; Code:
[nil,nil,rHINT,"Fahrzeug ist verschlossen!\n Schloss wird geknackt, bitte warten."] call RE; ![]() |
![]() |
![]() |
#3 (permalink) |
![]() Registriert seit: 22.11.2010
Beiträge: 74
|
![]()
Interessant, gibts das auch für hintSilent? Für den Countdown ist eine stille Wiedergabe deutlich angenehmer. Die Frage ob man damit auch das "unlock"-Problem lösen kann steht da dann ja auch noch im Raum. Ich test das mal.
Gruß spaccy |
![]() |
![]() |
#4 (permalink) |
![]() ![]() ![]() Registriert seit: 11.03.2005
Ort: HH
Alter: 53
Beiträge: 1.930
|
![]()
Hm.. hintSilent taucht in der Liste nicht auf...
![]() Die Geschichte mit "lock" und dem Motor könntest Du so lösen hoffe ich: Code:
_carOne setVehicleInit "this lock false; this engineOn true;"; processInitCommands; |
![]() |
![]() |
#5 (permalink) |
![]() Registriert seit: 22.11.2010
Beiträge: 74
|
![]()
Funzt! Das mit "setVehicleInit" haut hin, danke dafür, den kannte ich noch nicht (obwohl die Bohemia Wiki meine chronische Abendlektüre darstellt).
Ich frage mich ob man vlt. anstatt hint - globalchat oder sidechat nehmen könnte, obwohl ein Ausgeben des Runterzählens der Variablen dann eher blöd aussieht. |
![]() |
![]() |
#6 (permalink) |
![]() Registriert seit: 22.11.2010
Beiträge: 74
|
![]()
So, ich habs mal mit allen kritischen Punkte mit "setVehicleInit" versucht und es scheint zu gehen.
Siehe hier: Code:
private ["_carOne", "_spieler", "_id", "_zeit1", "_i"]; _carOne = _this select 0; _spieler = _this select 1; _id = _this select 2; _zeit1 = 90 + round (random 90); [nil,nil,rHINT,"Fahrzeug ist verschlossen!\n Schloss wird geknackt, bitte warten."] call RE; _carOne setVehicleInit "this removeAction _id; this setfuel 0.05;"; processInitCommands; clearWeaponCargoGlobal _carOne; clearMagazineCargoGlobal _carOne; sleep 3; // Countdown for [{_i = _zeit1}, {_i >= 0}, {_i = _i - 1}] do { // wenn der Spieler dicht genug dran ist if (_carOne distance player <= 20) then { sleep 0.95; _spieler setVehicleInit "hintsilent format ['Noch %1 Sekunden!', _i];"; processInitCommands; }; // wenn der Spieler zu weit entfernt ist if (_carOne distance player > 20) then { hint "Entfernung vom Fahrzeug zu groß"; waitUntil {_carOne distance player < 20}; }; // wenn der Timer auf 0 steht if (_i == 0) exitWith { _carOne setVehicleInit "this lock false; this engineOn true;"; processInitCommands; if (_carOne distance player < 200) then { [nil,nil,rHINT,"Schnell einsteigen!"] call RE; }; }; }; Gruß spaccy |
![]() |
![]() |
#7 (permalink) |
![]() Registriert seit: 22.11.2010
Beiträge: 74
|
![]()
Das Script funktionierte im Test zu zweit soweit ganz gut, leider wird der Actionmenü-Eintrag immer noch nur für den Ausführenden gelöscht. Alle anderen können den Eintrag weiterhin auslösen. Vlt. findet sich da noch ein Lösung.
|
![]() |
![]() |
#8 (permalink) |
![]() Registriert seit: 22.11.2010
Beiträge: 74
|
![]()
So, hab das Problem mit der Entfernung der Actionmenü-Einträge gelöst:
Siehe hier: Code:
private ["_carOne", "_spieler", "_id", "_wave", "_i"]; _carOne = _this select 0; _spieler = _this select 1; _id = _this select 2; // die globale Zeit-Variable zeit1 = 0; // löscht für alle Mitspieler den Actionmenü-Eintrag [nil, _carOne, "per", rREMOVEACTION, _id] call RE; // prüfen ob Fahrzeug noch heile ist if (!(alive carOne)) exitWith { [nil, nil, rHINT, "Fahrzeug ist zerstoert!"] call RE; }; [nil, nil, rHINT, "Fahrzeug ist verschlossen!\n Schloss wird geknackt, bitte warten."] call RE; _carOne setVehicleInit "this setfuel 0.05;"; processInitCommands; sleep 3; // Countdown for [{_i = 20 + round (random 20)}, {_i >= 0}, {_i = _i - 1}] do { // wenn der Spieler dicht genug dran ist if (_carOne distance player <= 20) then { zeit1 = _i; publicVariable "zeit1"; sleep 0.95; _spieler setVehicleInit "hintsilent format ['Noch %1 Sekunden!', zeit1]"; processInitCommands; }; // wenn der Spieler zu weit entfernt ist if (_carOne distance player > 20) then { [nil, nil, rHINT, "Entfernung vom Fahrzeug ist zu gross!"] call RE; waitUntil {_carOne distance player < 20}; }; // wenn der Timer auf 0 steht if (_i == 0) exitWith { _carOne setVehicleInit "this lock false; this engineOn true;"; processInitCommands; _carOne setVehicleInit 'this addAction ["Benzin einfuellen", "script\refuel.sqf", nil, 5, true, true, "", "_this distance _target<5 and _this getVariable ''schleppen''== 1"];'; processInitCommands; if (_carOne distance player < 200) then { [nil, nil, rHINT, "Schnell einsteigen!"] call RE;}; }; }; Gruß spaccy |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Auslösende Einheit ermitteln und Player im Multiplayer | Zakath | Editing & Scripting | 5 | 30.07.2011 08:54 |
Surrender/Kapitulieren - Script / Modul | Anemia | Editing & Scripting | 30 | 27.02.2011 17:30 |
arma 2 op oa multiplayer an einem pc | Benn1000 | Multiplayer | 2 | 23.01.2011 17:11 |
arma 2 op oa multiplayer an einem pc | Benn1000 | Community | 3 | 23.01.2011 14:33 |
hint verbieten | miromanu | Editing & Scripting | 5 | 18.07.2010 21:03 |