Français Whitelistez vos joueurs dans la base de données

29/12/19
320
45
61
1 100
25
Bonjour à tous.
Dans ce tutoriel, je vais vous expliquer comment crée une whitelist pour que seulement certains joueurs accèdent au serveur. Les informations sont stockés dans votre base de données et modifiable sans reboot du serveur.
Source "Kira"
Premièrement, rendez vous dans votre base de données et ajoutez ici une nouvelle table qu'on appellera whitelist :
[CODE title="whitelist.sql"]
CREATE TABLE whitelist(
id int(255) NOT NULL AUTO_INCREMENT,
uid varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
[/CODE]

Ensuite, allez dans votre life_server et créer un fichier fn_whiteList.sqf dans \life_server\Functions\MySQL\ , insérez y le code suivant:
Code:
/*
    File:  fn_whiteList.sqf
    Auteur: Kira modifé par Adonis 'BastienWolf' Johnson
    Description: Récupération UID joueur pour la whitelist
    PARAMETRES:
    1.STRING (UID)
    2.OBJECT (player)
    RETURNS: Aucun
    CALL: [STRING,OBJECT] call DB_fnc_whiteList
*/
private _uid = param[0,"",[""]];
private _player = param[1,objNull,[objNull]];

if ((_uid == "") || (isNull _player)) exitWith {};
private _query = (["SELECT uid FROM whitelist",2,true] call DB_fnc_asyncCall);
private _id = _query find [_uid];
if (_id == -1) then {
    [false] remoteExecCall ["life_fnc_whitelistRes",_player];
}else{
    [true] remoteExecCall ["life_fnc_whitelistRes",_player];
};

Dans votre config.cpp de votre life_server ajoutez en dessous de la class UpdatePartial {}; ceci :
Code:
class whiteList {};

Rendez vous maintenant dans votre mission. Créer un fichier fn_whitelistRes.sqf dans core/functions. Insérez y ceci :
Code:
/*
    File:  fn_whitelistRes.sqf
    Auteur: J. Kira D.

*/
isInWL = param [0,false,[false]];
whiteListCheck = true;

Déclarez ce fichiez dans votre CfgRemoteExec.hpp comme ceci :
Code:
F(life_fnc_whitelistRes,CLIENT)
F(DB_fnc_whiteList,SERVER)

Et déclarez le aussi dans votre Functions.hpp comme ceci en dessous de la class actionKeyHandler {};
Code:
class whitelistRes {};

Rendez vous maintenant dans votre description.ext et ajoutez y les informations suivante dans la class CfgDebriefing {
Code:
class NotWhitelistedServer {
    title = "Mission echouée";
    subtitle = "WhiteList du serveur";
    description = "Vous n'êtes dans la whiteList du serveur, contactez un administrateur.";
    pictureBackground = "";
    picture = "";
    pictureColor[] = {0,0.3,0.6,1};
};

Pour terminer rendez vous dans core/init.sqf et ajoutez y le code suivant en dessous de "[] call SOCK_fnc_dataQuery;"
Code:
diag_log "::Life Client:: Check if player is in whiteList.";
0 cutText ["Verification dans la whitelist","BLACK FADED"];
0 cutFadeOut 99999999;
whiteListCheck = false;
isInWL = false;
[(getPlayerUID player),player] remoteExecCall ["DB_fnc_whiteList",RSERV];
waitUntil {whiteListCheck};
if(!isInWL)exitWith{
    0 cutText ["Vous n'êtes pas dans la whiteList, veuillez contacter un administrateur du serveur.","BLACK FADED"];
    0 cutFadeOut 99999999;
    ["NotWhitelistedServer",false,true] call BIS_fnc_endMission;
};
isInWL= nil;
whiteListCheck = nil;


Maintenant seulement les joueurs inscris dans la table whitelist de votre base de donnée pourront rejoindre le serveur :)
Cordialement, Adonis "BastienWolf" Johnson.
 
Dernière édition par un modérateur:
ToMA3 ToMA3 Je pense pas qu'il est nécessaire d'expliquer qu'il faut juste ajouter l'UID du joueur dans la nouvelle table whitelist.
 
  • Like
Les réactions: Teravince
bonjour moi j'ai un problème avec le whitelist il me mais une erreur quand je me connecter et il me mes pas vous avez pas étais whiteliste et j'ai fait tout comme le tuto quelqu'un peut m'aider
1627227809526.png
 
Salut dans ta base de donnée tu a une table nommé whitelist dedant tu mes ton steam id 64 : 765XXXXXXXXXXXXXX apres envoie moi ton discord ou teamspeak et je verrait ce que je peut faire pour t'aidé apres je suis pas un developpeur mais un bricoleur arma 3.
 
Bonjour,
Le tuto fonctionne très bien sauf que je ne sais pas comment entrer mon Steam ID dans la base de donnée Whitelist, du coup je ne peux pas me connecter sur mon serveur puisque je ne suis pas moi-même whitelist. ça me marque "Demande reçue du serveur...validation"...donc comment je valide une personne pour la whitelist ? Whitelist.png
 
Dernière édition:
Hello Hosh Hosh, pour ajouter quelqu'un dans la whitelist, il suffit d'ajouter son playerID dans la table whitelist de ta base de données.
Tu peux le faire simplement avec le logiciel que tu utilises (généralement Phpmyadmin), ou avec une requête SQL (met ton playerID) :
Code:
INSERT INTO whitelist (uid) VALUES ('12345678910');

Par contre je ne pense pas que le message "Demande reçue du serveur" soit lié à ce script, mais probablement à un autre bug. S'il y a toujours un soucis, tu peux créer un nouveau post ici : https://forum.the-programmer.com/category/arma-support/
N'oublie pas d'y joindre tes logs serveur et extDB
 
Hello ,
Je souhaite créer une liste blanche pour les nouveaux joueurs sur mon serveur. Même si j'ai tout fait comme décrit ici, j'obtiens cette erreur.
whitelisterror.png