PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : addaction im MP


[ate]minimal
21.03.2017, 11:50
Hey ich mal wieder.

Hab da noch en prob mit diesem addaction und komm da nicht weiter.
Das folgende Script soll MP tauglich sein jedoch nur auf nem privaten server.
Hab da selber was gebastelt, funktioniert aber nur teilweise. Wäre nett wenn da mal jemand drüber schauen könnte und mir hilft es zu verstehen:stupid:. Hab versucht mich in remoteExec rein zu lesen, scheitert aber am Verständniss. Bin dan auf "call BIS_fnc_MP;" gestoßen.


ammobox.sqf
if (!isServer) exitWith {true};
//myPubVar = [F1, a1, boxmhq];
//publicVariable "myPubVar";

a1=false;
if (!alive F1) exitWith {};
if ((vehicle player == F1) && (speed F1 >=0)) exitWith {[west, "HQ"] sideChat "Bitte Aussteigen";};
F1 lock 2;

boxmhq = "B_supplyCrate_F" createVehicle getpos F1;
boxmhq setPos (F1 modelToWorld [-3,0,-2.0]);
clearWeaponCargoGlobal boxmhq ;
clearMagazineCargoGlobal boxmhq ;
clearItemCargoGlobal boxmhq ;
clearBackpackCargoGlobal boxmhq;
["AmmoboxInit",[boxmhq,true]] spawn BIS_fnc_arsenal;


removeAllActions F1;

Abbauen = [[F1, ["<t color='#68ccf6'>MHQ Abbauen</t>",{deleteVehicle boxmhq;F1 lock false;a1 = true}]],"addaction",true,true] call BIS_fnc_MP;

waitUntil {a1};
removeAllActions F1;

Aufbauen = F1 addAction ["<t color='#68ccf6'>MHQ Aufbauen</t>",{["ammobox.sqf","BIS_fnc_execVM",true,false] spawn BIS_fnc_MP;}];


das script wird über

Aufbauen = F1 addAction ["<t color='#68ccf6'>MHQ Aufbauen</t>",{["ammobox.sqf","BIS_fnc_execVM",true,false] spawn BIS_fnc_MP;}];
1x in der init des Fahrzeugs und 1x im BIS_Respawn modul bei Ausdruck aufgerufen.

Funktionier soweit ganz gut. Nur wenns ein kumpel testet schaft er es die kiste zu spawnen, sie aber nicht, wieder zu löschen. Sprich alle was nach dem ersten removeallactions kommt kann er net auslösen obwohl die "addaction abbauen" angezeigt wird.

Vielen dank schon mal für die hilfe.

Drunken Officer
25.03.2017, 16:52
BIS_fnc_MP ist veraltet. Nimm remoteExec dafür.
Was ist a1 und F1 ?

Pfandgiraffe
25.03.2017, 17:46
F1 ist sein MHQ und was a1 ist steht im Code. ;)

Drunken Officer
25.03.2017, 19:17
Ja, F1 ist sein Fahrzeug. Aber ist F1 ein gespawntes Fahrzeug oder im Editor gesetzt und so benannt.

Den Sinn von a1 habe ich noch nicht recht verstanden

[ate]minimal
26.03.2017, 00:51
Und ich dacht schon es will mir hier niemand helfen 😄

Also F1 ist ein gesetztes fahrzeug im editor.

Das a1 hab ich für die waituntil schleife gebraucht. Hab ich aber schon wieder rausgenommen und anderst gelöst.

Das mit dem remoteexec hab ich.mir angeschaut...aber ich kapiers nicht:stupid:. Wirkt auf mich noch 10mal komplizierter wie bis_fnc_mp.

Hab meine script nochmal geändert ich poste es morgen
mal.

Gutz nächtle

lucullus
26.03.2017, 01:43
In deiner 1. Zeile schreibst du:
if (!isServer) exitWith {true};
und in der 7. Zeile kommt ein:
if ((vehicle player == F1)...
Wenn du die Klienten ausschließt, kannst du mit "player" nicht weitermachen.

Eine elegantere Lösung wäre ein PVEventHandler.

Drunken Officer
26.03.2017, 11:35
ES gibt mehrere Lösungswege. Das ist einer davon

In die Init des Fahrzeuges

if (isServer) then { this setVariable ["var_mhqdeploy",false,true] };

Aufbauen = this addAction
["<t color='#68ccf6'>MHQ Aufbauen</t>",
{boxmhq setPos ((_this select 0) modelToWorld [-3,0,-2.0]); (_this select 0) lock true; (_this select 0) setVariable ["var_mhqdeploy",true,true]},
nil,
6,
false,
false,
"",
"!(_target getVariable 'var_mhqdeploy') && speed _target == 0 && count crew _target == 0"];


Abbauen = this addAction
["<t color='#68ccf6'>MHQ Aufbauen</t>",
{boxmhq setpos getmarkerpos "mkr_Arsenalbox" ; (_this select 0) lock false; (_this select 0) setVariable ["var_mhqdeploy",false,true];},
nil,
6,
false,
false,
"",
"(_target getVariable 'var_mhqdeploy')"];

gerade im Editor getestet, funktioniert

Beide Addaction sind vorhanden, sind jedoch nur zu sehen, wenn die Variable "var_mhqdeploy" den entsprechenden Wert bringt

!! Kiste steht versteckt auf der Karte, Marker "mkr_Arsenalbox" !! - Sonst muss man immer wieder den Kiste public machen !!

[ate]minimal
26.03.2017, 12:16
Jupp funktioniert :)

aber deine erste variante nicht :D.

cool danke.

kannst mir aber kurz erklären warum mein versuch nicht funktioniert oder was ich ändern muss das sie es tut????

[ate]minimal
26.03.2017, 12:18
aber ein prob hab ich trotzdem noch....dein script start ich jetzt über die init des fahrzeugs....ich hätt des zwecks der übersicht gerne in nem script und es sollte auch bei nem fahrzeug respawn funktionieren....

wie machen?????:D:D

Drunken Officer
26.03.2017, 14:48
Von einem respawn war nie die Rede.

Ich weiß wie, aber wenn man nicht von Anfang an, solche wichtigen Dinge sagt...

[ate]minimal
26.03.2017, 21:01
ja mein fehler :D sorry.

habs aber glaub ich selber hinbekommen....
hab deine variante bisle um geändert.

ammobox.sqf

if (isServer) then { F1 setVariable ["var_mhqdeploy",false,true] };

Aufbauen = F1 addAction
["<t color='#68ccf6'>MHQ Aufbauen</t>",
{boxmhq setPos ((_this select 0) modelToWorld [-3,0,-2.0]); (_this select 0) lock true; (_this select 0) setVariable ["var_mhqdeploy",true,true]},
nil,
3,
false,
false,
"",
"!(_target getVariable 'var_mhqdeploy') && speed _target == 0 && count crew _target == 0"];


Abbauen = F1 addAction
["<t color='#68ccf6'>MHQ Abbauen</t>",
{boxmhq setPosASL [32,22,2.00]; (_this select 0) lock false; (_this select 0) setVariable ["var_mhqdeploy",false,true];},
nil,
6,
false,
false,
"",
"(_target getVariable 'var_mhqdeploy')"];

...wird einmal in der init-zeile vom Fahrzeug F1 aufgerufen über:

ammobox = [] execVM "ammobox.sqf";

und das selbe in grün im respawnmodul bei Ausdruck. Nur mit dem zusatz

deleteVehicle boxmhq

es tut bis jetzt das was es soll. konnts aber noch net mit nem anderen spieler testen.

wenn des jetzt wieder falsch ist fress ich en besen :D:confused::motz:

Drunken Officer
27.03.2017, 08:44
Lass dir den Besen schmecken :D

- du löschst die Kiste, erstellst keine Neue.
- hast du konntrolliert, ob F1 wieder für das neue Fahrzeug genutzt wird? Ich weiß nicht ob das Respawn-Modul diesen Wert übernimmt.
- hast du kontrolliert, ob das Script, welches du nach dem respawn via Modul aufrust, auch auf die Clienten verteilt wird? -> Dedi aufmachen. Karre zerstören (anvisieren und debugconsole nutzen: cursorTarger setdammage 1). Prüfe ob du dann einen Addactioneintrag hast.

Du rust ein Script auf, was ja soweit i.O. ist. Aber warum nagelst du dich auf F1 fest? Nicht umsonst hatte ich mit "this" gerabeit. this execVM "ammobox.sqf". Damit ist den Fahrzeug im Script _this. So ganz ohne Variable

[ate]minimal
27.03.2017, 09:29
Vergiss das mit dem delete wieder...war gestern ein glas wein zuviel😂. Ich tu die box net löschen sondern wieder an ihren ursprüngliche position porten.

Ich teste des heut mit dem dedi bevor ich jetzt wieder was falsches sag.