PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Disconnect Event für MySQL Speicherung


Cakestory
20.01.2018, 20:11
Hallo miteinander,
ich möchte gerne das Disconnect Event von ARMA3 nutzen um einige Daten wie Spieler Position, Inventar, ... in meiner mit dem extDB3 Addon angesteuerten MySQL Datenbank zu speichern.
Das Speichern funktioniert soweit auch gut, nur schaffe ich es nicht das Disconnect Event dafür zum laufen zu bringen. Generell passiert gar nichts egal welchen Code ich auch im "disconnect event" zu nutzen versuche.
Folgenden code habe ich schon versucht:

addMissionEventHandler ["HandleDisconnect",
{
_player = _this select 0;
_playerUID = _this select 2;

diag_log format ["extDB3 - Handling disconnect for player %1 with uid %2", _player, _playerUID];

_query = format["playerUpdatePhysicalData:%1:%2:%3:%4:%5:%6:%7:%8:% 9:%10:%11", damage _player, (getAllHitPointsDamage _player) select 2, getPosWorld _player, direction _player, str (stance _player), getUnitLoadout _player, _playerUID ];
[_query, 1] call csm_fnc_asyncCall;
}
];

Leider ohne Erfolg.
Als Alternative habe ich es auch mit den laut Wiki veralteten Code-Versionen über diesen Weg versucht (nur Testaufrufe ob da auch was geschieht):

["eventId", "onPlayerDisconnected",
{
_player = objNull;
{
if (getPlayerUID _x == _uid) then
{
_player = _x;
};
} forEach playableUnits;

_veh = "C_Offroad_01_F" createVehicle (position _player);

diag_log "Test des disconnect events";
} ] call BIS_fnc_addStackedEventHandler;

Ich benutze den Multiplayer Startmodus aus dem Eden-Editor hinaus für meine Mission und erstelle einen lokalen Server. Keine Ahnung ob es daran liegt, aber wenn würde ich mich über eine Lösung freuen die nicht einen Dedicated Server erfordert, aber auf beiden Serverarten läuft.

Habt ihr eine Idee wieso der Code nicht funktioniert?

Grüße,
Cakestory

burns
22.01.2018, 15:21
isServer/isDedicated/isMultiplayer « ArmAScript Examples (http://www.kylania.com/ex/?p=26)

Hilft dit vielleicht?

Ich war in der Materie immer von Xeno & Hoschi abhängig, kann da leider nix zu sagen :verlegen:

Cakestory
24.01.2018, 18:10
Danke schonmal für den Link, das wird bestimmt nützlich sein, denn immerhin erschließen sich mir Lokalitäten in ARMAIII genauso wenig.
Allerdings scheint das Event einfach nicht zu funktionieren, egal wie ich die Lokalität anhand der im Link enthaltenen Daten handhabe.
Einzig und allein einen Dedicated Server hab ich noch nicht versucht. Leider fehlt mir da auch gerade die Zeit und Muse das zu testen. Ich kann mir jedoch nicht vorstellen, dass dabei ein anderes Ergebnis eintritt. :)

burns
24.01.2018, 19:17
Ich hab zwar keinen Schimmer was diese Stacked EH´s genau tun, aber das Biki rät in Verbindung damit zum neueren "PlayerDisconnected" Befehl:

Executes assigned code when client leaves the mission in MP.
Stackable version of onPlayerDisconnected.


https://community.bistudio.com/wiki/onPlayerDisconnected

Cakestory
17.02.2018, 12:00
Ok, hat zwar etwas gedauert, aber die Lösung ist ganz einfach.
Wie bereits in meiner letzten Antwort vermutet, wird das Disconnect event nur auf dem Dedicated Server ausgeführt, also lokal auf dem Server und nirgends sonst.
Diese Lösung von BIS ist wirklich extrem unverständlich, aber so ist es nunmal. ;)

Danke für die Antworten burns. Deine Links haben mir in anderen Bereichen des Projekts sehr weitergeholfen.