Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 14.01.2018, 06:03   #1 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard Funktion Spawn Live (Problem)

Hola.

Wie immer ein Problem mit dem lieben ArmA.

Ich habe eine Funktion. In der wird ein Objekt von A nach B bewegt.
In mehreren Schritten.

Singleplayer: prima.
Multiplayer: prima.
Dedicated: nix.

Soweit ja eigentlich alles wie immer, am Dedicated klappt nix. Das würde ich ja noch einsehen, und deprimiert wie immer (warum heißt es eigentlich nicht Depressing Server? Würde besser passen.) von dannen ziehen.

Aber jetzt kommts: Wenn ich auf dem Dedi mit Zeus ein neues Objekt "live" erstelle und dann EXAKT die SELBE Funktion innerhalb von Zeus darauf anwende, dann klappt alles wunderbar. Das Objekt wird korrekt von A nach B bewegt.

Was kann denn das sein?
Manchmal verhält sich das Zeuchs einfach so dermaßen irrational, dass man in das Mousepad beißen will (wenn das nicht aus Metall wäre ...)

Es sieht ja irgendwie so aus, als ob er bei der Initialisierung des Objekts irgendeinen Stress hat und damit dann jegliche Bewegung versaut, während er keinerlei Probleme mit einem neuen, frisch eingefügten Objekt hat.

Hilfe?! Jemand eine Idee, was das sein kann?
wolkenstuermer ist offline  
Alt 14.01.2018, 14:37   #2 (permalink)
10 Jahre hx3
5000 Beiträge10.000 Beiträge15.000 Beiträge
 
Benutzerbild von burns
 
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 41
Beiträge: 32.969
Standard

Binde die Bewegungs-Aktion mal in einen Trigger ein. Wenn mich Lokalität angepisst hat (also immer), waren Trigger die Rettung, die propagieren anstandsfrei alles an jeden weiter
__________________

burns ist offline  
Alt 16.01.2018, 03:09   #3 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard

Hi Burns,

ich hab' das aus einem Trigger aus aufgerufen.

Das Ding ist: Wenn ich das Objekt per Skript erzeuge, geht es auch. Ich kann mir nur vorstellen, dass beim Spawnen am Anfang der Mission diese vermalledeite Scheibe (es geht um Zielscheiben) irgendwas internes initialisiert (vielleicht sowas wie Score-Speicherung o.ä.) und dann damit nicht mehr richtig bewegbar ist.
wolkenstuermer ist offline  
Alt 16.01.2018, 13:30   #4 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.109
Standard

Wenn du eine Lösung hast, sag bescheid.

Ich lasse auch auf einer Schießbahn eine Zielscheibe von links nach rechts laufen.
Editor, SP, MP (HOST) -> funktioniert
MP (Dedi) funktioniert nicht
__________________
Bewegende Momente bei ArmA 3
Drunken Officer ist offline  
Alt 17.01.2018, 03:47   #5 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard

Hi Drunken,

du meinst vermutlich mit "Lösung" die Situation, dass ALLE Spieler alle Scheiben sehen. Das weiß ich noch nicht, da ich schon als Einzelspieler auf dem Dedi Probleme hatte, dass die Scheiben sich richtig bewegen.

Das läuft inzwischen, aber ich bin noch nicht fit mit RemoteExec und habe nicht so wirklich Plan, wie ich das anstellen soll.

Das Problem ist, dass man die Scheibe NICHT auf dem Server spawnen darf, ich denke das ist das Problem. Ich verwende einen AddAction dafür und wenn ich die Lokalität richtig verstanden habe, spawne ich die Scheibe dann lokal und bewege sie auch lokal.

Ich sehe sie sich dann korrekt bewegen, weiß aber nicht, ob die anderen sie überhaupt sehen (soweit bin ich noch nicht).

In der kalt lächelnden Theorie müsste ein Spieler sie spawnen und dann das Ergebnis allen anderen Spielern mitteilen. Keine Ahnung ob das mit
Code:
[params] remoteExec ['fnc', -2, true]
funktioniert, vermutlich spawnt sie dann je Spieler einmal, oder?

Ich hätte es auch lieber, dass die Scheibe von Anfang an dasteht (Atmo), aber das klappt wie gesagt nicht, da man die im Editor platzierten Objekte ja vermutlich auf dem Server spawnt?
wolkenstuermer ist offline  
Alt 17.01.2018, 04:55   #6 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard

Eine Möglichkeit wäre vielleicht, eine Scheibe im Editor zu platzieren, eine globale Variable zu vergeben und diese dann
a) von ihren Werten her zu kopieren: _pos, _dir, _varname, _classname
b) zu löschen
c) an _pos dann eine neue Scheibe zu spawnen

Aber keine Ahnung, wie man einen Variablennamen kopiert. Geht sowas mit get-/setVariable?
wolkenstuermer ist offline  
Alt 17.01.2018, 11:12   #7 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.109
Standard

Also das mit dem Addaction ist ist halbe Wahrheit.

Prinzipell wird ein Addaction lokal ausgeführt.
Jetzt kommt es ganz auf den Befehl an. Hat dieser einen globalen Effekt oder nicht.
Bedeutet, das eine Erzeugung eines Objektes einen Globalen Effekt hat, und somit JEDER dieses Objekt sieht. Zur Zeit sind mir nur Lichtpunkte als Ausnahme bekannt.
Würdest du ein Objekt ohne Begrenzung (z.B. isServer) erstellen, dann wird es Server+Anzahl Clienten erstellt.

Auch ist es wichtig, ob das Argument lokal sein muss oder global.

Beliebter Effekt ist z.B. des "Ergeben" eines Gegners. Via Addaction anklicken. Im SP wunderbar im MP nix. Warum, Addaction wird Lokal zum Clienten ausgeführt. Allerdings möchte Playmove das das Kommando lokal zum Besitzer ausgeführt wird, also meistens der Server.
__________________
Bewegende Momente bei ArmA 3
Drunken Officer ist offline  
Alt 17.01.2018, 13:08   #8 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard

- addAction ist global / lokal
- createVehicle global / global
- setPos global / global

Das würde dann ja bedeuten, dass er die Scheibe für alle sichtbar erzeugt und diese dann auch für alle sichtbar verschiebt, und das Ganze nur einmal macht (weil es durch AddAction ausgelöst wird). Richtig?
wolkenstuermer ist offline  
Alt 17.01.2018, 16:07   #9 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard

Wie kann ich denn einem frisch erzeugtem Objekt eine globale Variable zuweisen, die in einer lokalen Variable gespeichert ist?

Ich bräuchte sowas:

_varName = globVar;
_trg = "classname" createVehicle _pos;
_varName = _trg;

Sinn der Sache: Ich würde dem frisch erzeugten Objekt gerne eine globale Variable (bzw. einen Variablen-Namen) verpassen, damit ich sie in anderen Skripten ansprechen kann (z.B. das gerade erzeugte Objekt wieder löschen).

Dabei will ich das Skript aber mehrmals nutzen können (um z.B. mehrere Scheiben zu spawnen) - daher scheidet eine globale Variable für alles aus. Vielmehr müsste ich im Funktionsaufruf einen Parameter übergeben, wie die Scheibe heißt, damit ich sie dann ansprechen kann.

Oder ist das wieder viel zu kompliziert gedacht?

Ziel:

- In einem Laptop kann ich pro Schienensystem eine Scheibe spawnen
- Mit einem Trigger (oder weiterem Befehl im Laptop) kann ich sie bewegen
- Mit noch einem Befehl/Trigger kann ich die Scheibe wieder löschen

Das Ganze soll dann z.B. für ein dutzend Scheiben auf dem Platz funktionieren.
wolkenstuermer ist offline  
Alt 17.01.2018, 16:24   #10 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard

Habs gefunden:

Code:
missionNamespace setVariable [_varName, _obj];
wolkenstuermer ist offline  
Alt 19.01.2018, 10:31   #11 (permalink)
Newbie
 
Registriert seit: 08.08.2015
Beiträge: 46
Standard

Also ich habe es jetzt soweit, dass auf dem Dedicated der Spieler, der die Aktion (Scheibenbewegung) auslöst, sieht, wie die Scheibe sich bewegt. Das funktioniert wie gewollt.

Problem: Andere Spieler sehen das Übliche: Die Scheibe ruckelt kurz und man sieht sie dann nur in 1-2 Zwischenschritten, wenn überhaupt, meist bei A und B.

Ich schätze mal, dass das schwer daran liegt, dass der AddAction lokal ausgeführt wird. Aber auch RemoteExec bringt momentan keine Abhilfe, wobei ich bei den ganzen mehrfach verschachtelten Lokalitäten langsam anfange, den Überblick zu verlieren

Ich habe folgende Befehle:
- createVehicle (global)
- setPos (global / global)
- getPos (global)

die über AddAction (global / lokal) aufgerufen werden.

Damit nun alle Spieler alles sehen und für alle das Gleiche abläuft, bräuchte ich ja mehr oder minder einen Aufruf, der Folgendes tut:

- auf dem Server das Skript starten und das Ergebnis auf jedem Client anzeigen

Denn die Erzeugung und Bewegung sind ja global, sprich: ALLE sehen das Ergebnis, also darf nur eine Maschine die Funktion aufrufen, oder wie muss ich mir das vorstellen?

Sinngemäß wäre das dann der Aufruf im AddAction (lokal zu einem Client eines Spielers):

Code:
object addAction ["Target create and move", "[params] remoteExec ['fnc', 2, true];", "true", 5, false, ""];
Nur klappt das leider nicht wie gewünscht.

Wo liegt denn da der Denkfehler?
wolkenstuermer ist offline  
Alt 19.01.2018, 13:16   #12 (permalink)
10 Jahre hx3
5000 Beiträge10.000 Beiträge15.000 Beiträge
 
Benutzerbild von burns
 
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 41
Beiträge: 32.969
Standard

Ich sehe Ähnlichkeit zur Tontaubenmission die zuerst in ArmA2 super aufm Dedi funktionierte, bis irgendein Patch genau das daraus gemacht hat was du schilderst, nämlich das die Tonscheiben plötzlich in größeren Schritten umherflogen.

Das war der Tontaubenwerfer aus der 1. A2 Kampagnenmission, stand iwo aufm Träger rum. Liess sich einfach rüberkopieren wenn ich nicht spinne, musste nix dran gebastelt werden für die MP Mission.


Möglicherweise ist die ganze Funktion umgerissen worden, wäre ja leider keine Neuheit.
__________________

burns ist offline  
Alt 19.01.2018, 16:39   #13 (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

Ich bin ja nun auch schon länger nicht mehr im ArmA-Geschäft, aber ich habe in Erinnerung, das selbst Helikopter übelste Gummibandeffekte auf dedizierten Servern hatten... und da soll jetzt eine Zielscheibe sauber für alle Clients sichtbar moven? Hat irgendwie was vom Glauben an den Weihnachtsmann...
__________________
Buliwyf ist offline  
Alt 19.01.2018, 20:26   #14 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 38
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Eine Beispielmission würde helfen zu helfen.

Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!
​​​​​​​
___<<<A3 Wounding System>>>___
Pfandgiraffe ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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
Flugzeug spawn mit Wegpunkt - Skriptproblem? skydiv Editing & Scripting 4 12.11.2015 04:57
Brillen und Kopfbedeckung Saven? Bahlramir Editing & Scripting 0 13.05.2014 21:45
Funktion wird nur beim ersten Durlauf korrekt abgearbeitet SmokyJoey Editing & Scripting 0 08.12.2013 10:37
Revive Script Problem wArDoG81 Editing & Scripting 8 13.05.2011 22:35
Hilfe bei Funktion um Gegnerspawns zu erstellen Ante G. Editing & Scripting 10 25.11.2010 17:26


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