Stuhl Script (noch am Anfang)
-
- Sonstiges
- Raidaplays
-
-
-
Ich übergebe dir offiziell das Zeichen des Profis. Hast mir geholfen
-
Code: chair.sqf
- //Stühle
- _chair = [chair_1, chair_2, chair_3, chair_4, chair_5];
- //Aufstehen/Hinsetzen
- chair_down = {
- (_this select 0) removeAction (_this select 2);
- _pos = getPos (_this select 0);
- (_this select 1) switchMove "BasicDriver";
- (_this select 1) disableCollisionWith (_this select 0);
- (_this select 1) setPos (_pos);
- (_this select 1) setDir (getDir (_this select 0) - 180);
- (_this select 1) addAction ["Aufstehen", chair_up, _this select 0];
- };
- chair_up = {
- (_this select 0) enableCollisionWith (_this select 3);
- (_this select 0) removeAction (_this select 2);
- (_this select 1) switchMove "";
- (_this select 3) addAction ["Hinsetzen", chair_down];
- };
- //Fügt addAction beim Startup hinzu
- {
- _x addAction ["Hinsetzen", chair_down];
- } forEach _chair
Würde dieses Script so im MP funktionieren oder würden am Ende 2 ineinander sitzen oder können den anderen aufstehen lassen?
Wenn ich da etwas total falsch gemacht habe, wäre es super, wenn man mir irgendeine Dokumentation zum Multiplayer Scripting geben kann. -
Ja, man würde hintereinander/ineinander sitzen können.
removeAction ist ein lokaler Befehl. Das heist, wenn du auf einem Client die Aktion entfernst, kann die auf anderen Clients immer noch vorhanden sein.
Das führt dann genau dazu, dass Spieler A nicht weiß, dass Spieler B schon auf dem Stuhl sitzt und sich dadurch einfach erneut auf ihn setzen kann. -
Ja, man würde hintereinander/ineinander sitzen können.
removeAction ist ein lokaler Befehl. Das heist, wenn du auf einem Client die Aktion entfernst, kann die auf anderen Clients immer noch vorhanden sein.
Das führt dann genau dazu, dass Spieler A nicht weiß, dass Spieler B schon auf dem Stuhl sitzt und sich dadurch einfach erneut auf ihn setzen kann.Und wie umgehe ich sowas?
-
Da kannst du verschiede Ansätze nutzen:
1. Die Aktion immer global hinzufügen/entfernen.
2. Du arbeitest mit den Conditions von addAction.
2.1. Du speicherst, das jemand sich auf den Stuhl gesetzt hat und prüfst das dann.
2.2. Du liest aus, ob jemand auf dem Stuhl sitzt. bspw indem du schaust, ob jemand die entsprechende Position und Animation hat.Da gibt es bestimmt noch div. weitere Ansätze. Diese sind mir nur gerade spontan eingefallen.
Spannend wird es dann, wenn du es JIP(Join in Progress) sicher machen willst. Aber das kann man sonst auch für eine erste Version vorerst ignorieren.
-
Was ich zuerst gedacht habe bei dem Titel will gar keiner wissen....
-
Was ich zuerst gedacht habe bei dem Titel will gar keiner wissen....
?
-
?
Vmtl:
-
Gibt es übrigens schon fertig bei ACEX
https://github.com/acemod/ACEX/tree/master/addons/sitting -
Gibt es übrigens schon fertig bei ACEX
https://github.com/acemod/ACEX/tree/master/addons/sittingSchade, is leider auch kein Stuhlgang-Skript...