Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 03.12.2012, 11:03   #1 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard 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"
2) Um die Kisten zu finden setze ich Marker, die ich im Array TeTeT_hintMarkers speichere. Jedoch werden diese nicht mehr geloescht.

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";
Der Code zum Erzeugen und loeschen der Marker laeuft auf dem Client.
TeTeT ist offline   Mit Zitat antworten
Alt 03.12.2012, 11:30   #2 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.724
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

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!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 03.12.2012, 11:38   #3 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

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.
__________________

TeRp ist offline   Mit Zitat antworten
Alt 03.12.2012, 12:38   #4 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 46
Beiträge: 1.927
Standard

Am besten gefällt mir bspw. random(100), was durchaus ein Ergebnis von 87.1936578 liefern kann. Also los liebes ArmA, fülle mir meine Munitionskiste mit 87.1936578 Kilogramm Koks..
__________________
Buliwyf ist offline   Mit Zitat antworten
Alt 03.12.2012, 13:56   #5 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Meinst du es gibt hier ein Problem wegen der Nachkommastellen?
Vienna ist offline   Mit Zitat antworten
Alt 03.12.2012, 18:22   #6 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 46
Beiträge: 1.927
Standard

Zitat von Vienna Beitrag anzeigen

Meinst du es gibt hier ein Problem wegen der Nachkommastellen?

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...

__________________
Buliwyf ist offline   Mit Zitat antworten
Alt 03.12.2012, 18:53   #7 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard

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.
TeTeT ist offline   Mit Zitat antworten
Alt 03.12.2012, 22:14   #8 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno

Geändert von Xeno (08.12.2013 um 17:24 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 03.12.2012, 23:28   #9 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von TeTeT Beitrag anzeigen

Danke fuer den Hinweis mit den Nachkommastellen bei Random, ein round macht den Aufruf wohl robuster.

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
Vienna ist offline   Mit Zitat antworten
Alt 04.12.2012, 19:41   #10 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard

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
TeTeT ist offline   Mit Zitat antworten
Alt 04.12.2012, 19:49   #11 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.724
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Das sieht doch schon ganz anders aus!
__________________
Niemand hat die Absicht eine Tüte zu bauen!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 04.12.2012, 21:45   #12 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno

Geändert von Xeno (08.12.2013 um 17:25 Uhr).
Xeno ist offline   Mit Zitat antworten
Antwort


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
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


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