Multiplayer, Variable aktivieren/deaktivieren geht nicht

  • Hallo,

    leider habe ich wieder einmal ein Problem. (eigentlich ständig)

    Ich muss eine Variable deaktivieren, aber egal was ich mache es geht nicht. Was mache ich falsch?


    Wie im Bild:

    Die Variable Ist im Holzstuhl ist aktiviert, wenn ich auf true weiter gehe soll sie deaktiviert werden.

    Sodass der nächste Spieler der dran ist diese als deaktiviert vorfindet und false erhält.

    Im Singelplayer alles kein Problem. Im Multiplayer bleibt die immer auf aktiviert stehen. Warum?

    Habe hier schon ein Gate eingebaut. SitdownMulti(Multi) wird als EventTrick ständig ausgeführt.

    Beim klick auf SitdownServer(Server) wird Multi Eingang(Multi) ausgeführt wird.

    Habe das erst ohne Gate ausgeführt ohne SitdownMulti Eingang.

    Ich dachte sitdown(Multi) von Serverausführen lassen und dann Ist in Holzstuhl true danach Set Ist im Holzstuhl Hacken raus sollte reichen so das der nächste Spieler dann fals vorfindet. Macht er aber nicht. Jeder Nachfolgende Spieler kann dann trotzdem über true rein obwohl ich es ja auf false gesezt habe.

    Hat jemand vielleicht eine Lösung für mich?


    und so hatte ich es vorher:


    Liebe Grüße

  • Hallo Sleepy,

    ich danke dir für deine Antwort.


    Ist in meinem 0Base Character der auch Move input camera Zoom usw enthält.


    Ist In Holzstuhl ist ja generell mit einem Hacken versehen. also beim Branch auf true danach soll sie ja mit Set auf false (also Hacken raus) gesetzt werden um die Bedingung für weitere Spieler zu deaktivieren. am ende (wenn ich nicht mehr im Holzstuhl bin ist ein Set auf true(Set Hacken rein) gesetzt so das vorne auch wieder auf true steht. Im Singelplayer geht das ja auch(mit printSring überprüft) im multiplayer aber nicht. Beim Client oder Server also bei jeden der es ausführt wird das gemacht und auf false gesetzt nur leider wissen die anderen das nicht und dort nehmen die das als true.

    Wenn ich die Variable grundsätzlich den Hacken herausnehme und Set den Hacken reinsetze ist genau das gleiche(True und false natürlich dann andersherum)


    Es muss doch eine Möglichkeit geben das die Variable geändert wird und das auch alle anderen mitgeteilt bekommen.

    Ich verzweifle und bin für die Logik einfach zu dumm.

    Help, help help


    Gruß

    • Offizieller Beitrag

    Es muss doch eine Möglichkeit geben das die Variable geändert wird und das auch alle anderen mitgeteilt bekommen.

    Genau das machst du ja mit dem Branch


    Beim Boolean bedeutet ja zwei Zustände entweder True oder False

    Der Boolean läuft in den Branch rein, ist der Boolean Gesetz, gehts mit True weiter

    ist er nicht gesetzt gehts mit False weiter.


    Eventuell musst du das nun auch Regelmäßig abfragen zb durch eine Tick Rate.


    Als Beispiel: Du willst per Tasendruck eine Kiste öffnen und dann soll ein Print gegeben werden "Die Kiste ist offen"


    1.Du hast ein Boolean der heißt "Ist die Kiste offen?"

    2.Drückst du die Taste wird der Boolean auf True gesetz.

    3.Machst du die Kiste wieder zu, wird er auf False gesetz.


    3.Über einen Tick frägst du nun mit einem Branch ab, ist der Boolean "Ist die Kiste offen" auf True, dann print "Die Kiste ist Offen" ist der Boolean zu, dann print "Die Kiste ist zu"


    Nun wird jede Sekunde der der Print "Die kiste ist zu ausgeben" sobald du die Taste drückst wird der Text entsprechend geändert.


    Als Tipp.: Wenn du du die Logig nicht verstehst, dann dann versuche das vereinfacht nachzubauen und dir über Prints ausgeben lassen was passiert und um zu testen.

  • Hallo Sleepy,

    ich danke dir. Naja das Grundprinzip ist schon klar. Die Variablen alle über den trick abzufragen werde ich Probieren. Das mit dem testen im Multiplayer ist halt sehr umständlich da ich das dann immer auf zwei Rechner über Launch Game machen muss. da es ja bei nur einem Rechner immer Funktioniert. da er hier egal ob dedicated Server oder nicht außerdem nimmt er immer nur die gleichen Characters.

    Es funktioniert immer nur bei Launch Game auf 2 Rechnern da nicht.


    Ich werde das mal ausprobieren und mich dann melden.


    Ich danke die erst einmal vielmals für die Erklärung.

    Gruß

  • Hallo Sleepy,


    ja es ist halt so. Anfang ist auf Client true und beim server true. Als PrintString ausgegeben wie du gesagt hast.


    Benutze ich es nun mit einem Player (hier Client) ist wechselt es auf false beim Server bleibt es aber auf true. Umgekehrt ist es gleich. Das ist mein Problem.

    Wie bekomme ich die Variable dazu das sie dann bei allen auf false wechselt und nicht bei dem der das gerade ausführt. Die Variable ist ja auf Replicated gesetzt?


    Gruß

  • Hallo,


    keiner da, der mir das mit den Variablen deaktivieren erklären kann?

    scheint doch schwieriger zu sein als ich es dachte.

    kurz noch einmal mein Problem:


    ich habe mehrere Charakter Blueprints.


    in einem Character 0 ist die Variable boolen mit dem Namen test und ist false und Replicated und editable


    nun sollen die anderen character aber diese Variable auf true setzen so das alle das auch sehen.



    ich habe:

    z:B. Character 1 customEvent0 (run on Server Replicatetd/Reliable) --> CustomEvent1

    customEvent1 (MultiCast/Reliable) --> Cast to Character0/outt Actars ist Set Test und Hacken drin --> wird Sit in Chair ausgeführt


    PrintString:

    wenn der Server es ausführt: Client true / Server true

    wenn der Client es ausführt: Client true / Server false


    ausprobiert habe ich schon alles mögliche ich komme immer auf das gleiche Ergebnis.


    wie kann ein Blueprint bei einem Anderen blueprint die Variable verändern und zwar egal ob es vom Server oder vom Client verändert wird, so das das alle anderen sehen und meine Animation auch noch Ordnungsgemäß ausgeführt wir.

    Ohne diese Möglichkeit brauch ich ja gar nicht erst weiter zu machen.


    Ich hoffe irgendjemand kennt sich hiermit aus.


    Gruß;(:?:||

  • Also ich habe jetzt mal nur deinen Eingangsthread gelesen. Es ist logisch, dass alle Spieler mit True weiter machen, egal was der Spieler vorher gesetzt hat. Denn, wenn ich es richtig verstanden habe, hast du die Variable im Charakter-BP, und da hat jeder Spieler halt seinen eigenen Container, wenn man das so ausdrücken kann. Ein Spieler kann nicht direkt auf die Variablen eines anderen Spielers zugreifen.


    Es gibt da zwei Möglichkeiten. Entweder du machst das so wie in einem Shooter, als wenn ein anderer Spieler getroffen wird und HP abgezogen werden, nur dass du in diesem Fall halt deine Variable auf true/false setzt.


    Das Zweite wäre halt eine Variable für deinen Hochsitz zu nutzen, sprich die Variable ist dann im Actor_BP für deinen Hochsitz, die dann auf true/false gesetzt wird.

  • Hallo Tomarr,


    ich danke dir für deine Antwort.


    Die erste Möglichkeit mit dem Shooter, da weiß ich nicht was ich machen soll.

    Die zweite funktioniert leider nicht wie gewünscht. Das hatte ich ja auch schon mal, aber da habe ich das Problem wenn der Server das macht wird die Variable verändert und auf true gesetzt und es ist alles so wie gewollt. Macht der Client das wir die Variable nur beim Client auf true gesetzt und beim Server bleibt sie auf false.


    Kann man nicht irgend wie ein Interface Blueprint erstellen auf dem Variablen gespeichert werden und diese dann in die Blueprints mit implantieren damit die entsprechenden Blueprints die variablen verändern können und die anderen das dann mitgeteilt bekommen. Egal ob der Client oder der Server die dann Verändert?


    Gruß

  • Ah, ich glaube jetzt verstehe ich dein Problem. Der Client ändert die Variable, aber das interessiert den Server nicht.


    Ist das bei all deinen anderen Variablen genauso? Ist die Variable Serverseitig verwaltet? Weil, das ist wichtig. Du darfst sie nicht über den Server auf alle Clients in Eigenverwaltung replizieren, sondern der Server muss den einzig gültigen Wert dieser Variablen haben.


    Wenn ich jetzt nur aus dem Kopf wüsste wie die Einstellung ist. Ich glaube es war replicated und replay or owner?


    Ich habe jetzt leider auch nicht die Möglichkeit mal kurz eine Testumgebung aufzubauen. Von daher kann ich da momentan auch nur raten. Aber da gibt es bestimmt auch Infos im Internet. Nun mache ich auch bei meinem Projekt noch nicht so viel mit Multiplayer, und das andere Projekt habe ich auch noch nicht so weit. Aber irgendwo da würde ich den Fehler zu suchen glauben.