21 Mai 2024 à 08:46:47

Nouvelles:

Teamspeak 3 OFCRA
IP : ts.ofcra.org
Mot de passe : mineisbiggerthanyours
Discord: https://discord.gg/bWtGS7N


/!\ L'OFCRA RECRUTE /!\


BTK Player Restore (Multiplayer Autosave)

Démarré par Cirav, 01 Octobre 2012 à 09:36:02

« précédent - suivant »

0 Membres et 1 Invité sur ce sujet

Cirav

BTK Player Restore (Multiplayer Autosave)

Forums BIS : http://forums.bistudio.com/showthread.php?140673-BTK-Player-Restore-(Multiplayer-Autosave)

sxp2high informed the community about his BTK Player Restore addon. This addon makes autosaves in multiplayer every 10 seconds and you will resume exactly where you left off in case you crashed out of the server.
It saves Weapon, backpack, backpack content, weapon on back (ACE), animation, current weapon, damage and more...
This will be released soon as addon and script versions. The addon will work for all missions with JIP functionality and the script version can be used by mission makers to enable this feature in their missions!

What exactly is being saved?
_saveStatus = [_name, _position, _direction, _animationChecked, _damage];
_saveGear = [_magazines, _items, _weapons, _backpack, _backpackWeapons, _backpackMagazines, _weaponOnBack, _currentMuzzle];


http://youtu.be/-6KLl97sW9U


Cirav

Latrufe c'est pour toi cet addon (vivement qu'il sort qu'on puisse tester)  ;)


Zombi


Cirav

#3
Sur le forum de Bis, il balance les fichiers sources :

btk_fnc_playerSave.sqf
btk_fnc_playerLoad.sqf

Mais je comprends toujours pas où il enregistre les données  ??? Sur une base de donnée  ???


Ce système existe depuis longtemps sur les missions MSO avec un la possibilité de sauvegarder soi-même son perso via les menu de l'ACE.

CiterNo offense but this has been in the MSO for over 4 years. It does cause major network traffic with upwards of 15 players, causing major desync during connecting and disconnecting states. For that fix the MSO now has an SPS option in the ACE menu: Save player state. That is save your current location there and then without the MSO constantly re-checking and re-saving your status and causing lag. It has allowed the longest MSO ever at 20 days and we hope to improve it. I mean congratulations on this modification, it'll be great for a single script/option for mission makers but we did make this ourselves such a long time ago.


Zombi

Dans un objet.

Le script sauve toutes les infos dans un objet qui se nomme "btk_server".
Tout comme nous le faisons (ou faisions) avec un objet nommé "kitMJ" dans les missions officielles OFCRA.

Cela veut dire que le serveur ne doit ni redémarrer, ni s'arrêter, ni changer de mission.

En outre, cela veut dire, comme l'explique le post que tu as cité, que tout se passe dans le serveur.
Donc quand je me connecte, je vais chercher une variable serveur et quand je me déconnecte je vais écrire dans cette variable.

Je peux faire ça moi aussi. Mais pas sauvegarder périodiquement, c'est trop lourd pour le serveur ça.

Donc pour conclure : c'est facile à faire MAIS :
- Faut pas toucher au serveur entre temps (nickel pour des domi qu'on commence le samedi et qu'on fini dimanche à notre gré).
- Si ça sauvegarde périodiquement, ça va être trop lourd pour le serveur. Une option dans le menu ACE comme le MSO ou dans le menu du joueur c'est mieux.

Je vais matter le MSO de plus près :)

Zombi

 :beurk:

BOUM MIND BLOWN  !!

J'ai lu le MSO et JE NE COMPREND RIEN.

C'est trop compliqué pour moi :)


Dans la version 4.3 je suis incapable de voir où ils sauvent les données.
Dans la 4.4 je voit bien les appels à la BDD externe, mais je pige rien.
Enfin, je vois les appels, les requêtes, etc... mais je suis incapable de refaire quoi que ce soit.

Zombi

Troisième et dernière réponse.

1°) Je saurais refaire un scripting (ou on utilise carrément les scripts btk) pour sauvegarder les positions du joueur etc..
Mais cela implique que le serveur et la mission ne soient pas coupés. Les variables sont stockées dans un objet sur le serveur, donc plus de mission = plus d'objet = tout perdu.
Mais c'est facile à faire.

2°) Solution 2 : écrire dans un fichier sur le serveur, et le récupérer après pour l'utiliser de nouveau. On peut couper le serveur et la mission, c'est cool mais ça demande quand même des ressources serveur lors de la connexion et la déconnexion.
Plus compliqué, je ne sais pas faire actuellement, je me renseigne.

3°) BDD externe... Si elle est installée et configurée je pense pouvoir faire du scripting ou utiliser de l'existant pour s'en servir...
Après, ça reste de l'appel de fonctions avec des paramètres qui sont en sql ( requête etc..)

Zombi

J'ai besoin des admins serveurs sur ce coup là.

La BDD externe est intéressante pour les missions dites persistantes mais aussi pour stocker des infos type fin de mission officielle.

On stockerais les survies, le nombre d'IAs, les véhicules etc...

Pour ça je peux aussi écrire dans le ARMA2.RPT...

Sinon, la méthode utilisée par le MSO avant la BDD externe, c'est d'utiliser des variables globales dans un espace mémoire réservé aux scripts... apparemment plus rapide que d'utiliser un objet sur carte (kitMJ).

Braif, on fais un truc avec la BDD externe ?

Cirav

https://dev-heaven.net/projects/mso/wiki

- Install MySQL 5.5 - user: root pwd: enter a suitable password
- Install .NET 4.0 Client Profile
- Reboot
- Install .NET Framework 4.0 Full
- Download and installed MS Visual C++ Redistributable
- Install mysql-connector-net-6.5.4
- Add Arma2Net addon to addon folder (see attached zip file)
- Install MySQL Workbench (if in doubt, just accept all default settings)
- Import MSO db using MySQL Workbench (get MSO[date].sql from mission folder \core\modules\persistentDB\ or below in attachments)
- In MySQL Workbench > Manage Security > Setup a user called arma (set password) and give them dba permissions, ensure user can only connect from localhost.
- Update Server launch shortcut and add @Arma2NET to mod line
- Copy Databases.txt (from Arma2netMysql folder) to (C:\Users\%USERNAME%\AppData\Local\Arma2NETMySQL) folder, open the file, delete the #, change username to - arma and change password (last two entries on line)
- Install baretail log monitor
- In baretail open the server rpt and the arma2net log file (C:\Users\%USERNAME%\AppData\Local\Arma2NET) - will indicate if MySQLPlugIn has been successfully loaded.
- Launch the server shortcut
- Once in game, in baretail open the mysqlplugin log (C:\Users\%USERNAME%\AppData\Local\Arma2NETMySQL\logs\[date].log - will indicate if SQL calls have been successful.