03.12.2012, 11:03 | #1 (permalink) |
Registriert seit: 08.01.2011
Beiträge: 41
|
Multiplayer Objekt Lokalitaet und Marker
Hallo,
zwei weitere Probleme die bei meiner modifizierten Mission auf dem dedicated Server auftreten: 1) Ich erzeuge die Waffenkisten bei der Initialisierung auf dem Server. Dort loesche ich die vorhandenen Waffen und Magazine. Dies geht jedoch auf den Clients verloren. Hier der Code: Code:
_drugsBag = DRUGS_CONTAINER createVehicle getPos _b; ClearWeaponCargo _drugsBag; ClearMagazineCargo _drugsBag; _drugsBag addMagazineCargoGlobal [DRUGS, random(100)]; _drugsBag addWeaponCargoGlobal [MONEY, random(20)]; _pos = _positions call BIS_fnc_selectRandom; _drugsBag setPos _pos; _drugsName = format ["%1-%2", _name, "drugs"]; _drugsBag setVariable ["pdb_save_name", _drugsName, true]; _drugsBag setVariable ["intel", _drugsName, true]; _drugsBag setVariable ["lab", _b, true]; TeTeT_drugsBag = _drugsBag; publicVariable "TeTeT_drugsBag" Code:
createMarker [_marker, _markerPos]; _marker setMarkerShape "ICON"; _marker setMarkerType "Unknown"; _marker setMarkerText format ["%1", _range]; _marker setMarkerColor "ColorYellow"; _marker setMarkerPos [_x, _y]; TeTeT_marker = _marker; publicVariable "TeTeT_marker"; TeTeT_hintMarkers = TeTeT_hintMarkers + [ TeTeT_marker ]; ... publicVariable "TeTeT_hintMarkers"; Code:
DEBUG_MSG(["Deleting markers."]); { _msg = format ["Deleting marker %1", _x]; DEBUG_MSG([_msg]); deleteMarker _x; } forEach TeTeT_hintMarkers; TeTeT_hintMarkers = []; publicVariable "TeTeT_hintMarkers"; |
03.12.2012, 11:30 | #2 (permalink) |
Da ist eigentlich so gut wie alles falsch - man weis überhaupt nicht wo man anfangen soll...
ließ dir am besten mal ein paar Sachen zu den Lokalitäten im MP durch. https://community.bistudio.com/wiki/...in_Multiplayer https://community.bistudio.com/wiki/...ayer_scripting https://community.bistudio.com/wiki/6thSense.eu:EG Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
03.12.2012, 11:38 | #3 (permalink) |
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
|
Warum vermischst du Befehle mit lokalem und globalem Effekt?
Ich stimme übrigens Psycho zu. Les' erstmal was, anstatt einfach drauflos zu schreiben. Das sind wirklich - wie auch in deinem anderen Thread - triviale Fehler, die man zum Teil auch mit einem einfachen Blick in die Befehlsreferenz lösen kann. |
03.12.2012, 18:22 | #6 (permalink) |
Registriert seit: 11.03.2005
Ort: HH
Alter: 53
Beiträge: 1.930
|
Absolut. Andererseits sollte ich auch nicht vergessen, dass dieses Spiel von BIS stammt und das wahrscheinlich vollkommen beabsichtigt ist, dass dann nur 87 Kilo Koks in die Kiste wandern... der Rest ist dann halt Schwund... |
03.12.2012, 18:53 | #7 (permalink) |
Registriert seit: 08.01.2011
Beiträge: 41
|
Ich sehe das mein Ansatz die Mission im Host Modus zu entwickeln und dann lauffaehig auf einem dedicated Server zu machen wohl zu naiv war.
Mein Versuch nicht nur Variablen sondern auch komplette Objekte per publicVariable zu synchronisieren klappt leider gar nicht. Immerhin hat ein weiteres publicVariable bei der Initialisierung von TeTeT_hintMarkers das Problem mit dem Loeschen der Marker geloest. Wegen RTFM, danke, die Links sind sehr hilfreich. Ich nutze die Kommando-Referenz von OFPEC und da ist mir zum Beispiel das dritte Argument von setVariable erst heute aufgefallen. Liegt vielleicht auch daran, dass es zur Funktion 6 Seiten gibt... Bzgl des Mischen von Funktionen mit lokalen und globalen Auswirkungen - der Code ist eben durch Try und Error entstanden. Die globalen Add Funktionen haben Morphium und Geld in die Kiste gebracht. Danke fuer den Hinweis mit den Nachkommastellen bei Random, ein round macht den Aufruf wohl robuster. |
03.12.2012, 23:28 | #9 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Passt schon wie du das gemacht hast. Brauchst nicht zu runden. Das geschieht automatisch. Ist die Nachkommastelle kleiner .5 wird die vorhandene ganze Zahl genommen, bei .5 und größer auf die nächste ganze Zahl aufgerundet. Für ein Array kannst du z.B. auch X select random 5 verwenden. Es wird ein Index von 0 bis 5 erreicht. Wobei 0 und 5 nur halb so oft kommen als 2,3 und 4. Wie sich random mit floor, ceil und round auswirkt siehst du hier: ALICE und SILVIE |
04.12.2012, 19:41 | #10 (permalink) |
Registriert seit: 08.01.2011
Beiträge: 41
|
Danke fuer den Hinweis mit ceil und floor!
Die Bestueckung der Waffenkiste hat inzwischen auch durch die global Varianten der Funktionen hingehauen. Scheinbar sind in der OFPEC Referenz nicht alle Funktionen zu finden - schade. Zum Testen habe ich eine kleine Beispielmission mit 3 Spielern und einer Kiste gebaut. Sobald ein Spieler in die Naehe der Kiste kommt und dort kurz verweilt, wird eine Nachricht an alle Spieler geschickt. Ich habe da die CBA Funktionen benutzt um vom Server aus eine Funktion auf den Clients auszufuehren. Alternativ waere wohl auch ein addPublicVariableEventHandler moeglich gewesen, der ein Skript auf dem Client anstoesst. Hier die Mission: http://ubuntuone.com/5baZCu1DmiDgj0WwpxBeUF Hier der Code zum finden der Box: Code:
private ["_box", "_found", "_sendFoundMsg"]; if (!isServer) exitWith {}; _box = _this select 0; _found = false; _sendFoundMsg = { private ["_who", "_msg"]; _who = _this select 0; if (_who == player) then { _msg = "You are close to the box."; } else { _msg = format ["Player %1 is close to the box", name _who]; }; player globalChat _msg; }; while {!_found} do { ["Checking if player is close to box"] call CBA_fnc_debug; { if (isPlayer _x) then { if ((_x distance _box) < 5) then { ["player is close to box"] call CBA_fnc_debug; [-2, _sendFoundMsg, [_x]] call CBA_fnc_globalExecute; _found = true; }; }; } forEach playableUnits; sleep 5; }; ["End of boxFound script"] call CBA_fnc_debug |
04.12.2012, 19:49 | #11 (permalink) |
Das sieht doch schon ganz anders aus!
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
BWmod BWmod Multiplayer Kampagne Operation Speerspitze | Faceman | Usermade Missions | 8 | 08.10.2012 09:29 |
face.jpg Multiplayer | XxStevenxX | Editing & Scripting | 5 | 17.05.2012 19:02 |
Auslösende Einheit ermitteln und Player im Multiplayer | Zakath | Editing & Scripting | 5 | 30.07.2011 09:54 |
arma 2 op oa multiplayer an einem pc | Benn1000 | Community | 3 | 23.01.2011 15:33 |
Mehrere Marker platzieren | Noobfire | Editing & Scripting | 8 | 14.08.2010 17:26 |