Armed-Assault.de Twitter


 
 
Themen-Optionen Ansicht
Alt 10.07.2012, 18:19   #1 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 74
Standard addAction und hint im Multiplayer

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"];
timer.sqf:
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!";
            };
        };
    };
Das Problem mit dem Code ist das alle "hint"-Meldungen nur der Ausführende sieht und wenn der Ausführende ein Clientrechner ist, das Auto zum Schluss kurz anspringt dann aber wieder ausgeht und wieder abgeschlossen wird. Kann da jemand von euch helfen?
spaccy ist offline  
Alt 10.07.2012, 18:56   #2 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
Standard

Schau Dir das hier mal an: Multiplayer framework

Dazu Funktionsmodul auf die Map setzen.
In die init.sqf:
Code:
 waitUntil{!(isNil "BIS_MPF_InitDone")};
Und dann Deine hint-Zeilen so ersetzen:
Code:
[nil,nil,rHINT,"Fahrzeug ist verschlossen!\n Schloss wird geknackt, bitte warten."] call RE;
etc...
__________________
Buliwyf ist offline  
Alt 10.07.2012, 19:21   #3 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 74
Standard

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
spaccy ist offline  
Alt 10.07.2012, 19:39   #4 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
Standard

Hm.. hintSilent taucht in der Liste nicht auf... ...somit schätze ich, das es damit nicht geht.

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;
__________________
Buliwyf ist offline  
Alt 10.07.2012, 20:12   #5 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 74
Standard

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.
spaccy ist offline  
Alt 11.07.2012, 07:13   #6 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 74
Standard

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;
            };
        };
    };
Im Editor und mit Dedi funktionierts, am Freitag kann ichs mal zu zweit testen.

Gruß
spaccy
spaccy ist offline  
Alt 14.07.2012, 17:55   #7 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 74
Standard

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.
spaccy ist offline  
Alt 18.07.2012, 20:10   #8 (permalink)
50 Beiträge
 
Registriert seit: 22.11.2010
Beiträge: 74
Standard

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;};        
        };
    };
Danke nochmal an Buliwyf für deine Hilfe.

Gruß
spaccy
spaccy ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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
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


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