Français Solved Comment créer un système de ban par base de donnée sur mon serveur ?

  • Auteur de la discussion Auteur de la discussion Skyrise
  • Date de début Date de début

Skyrise

User
29/12/19
33
1
9
600
Bonjour,

Le système de blacklist des joueurs dans la base de donnée de base ne fonctionne pas sur mon serveur, je voudrais bien faire un système de ban par base de donnée si possible, car je ne m'y connais pas en script.

Le meilleur pour moi se serais de créer dans la base de donnée une table avec le pid du la personne, le pid du la personne qui la ban, la date du ban et le temps qu'il sera ban pour ensuite pouvoir sur mon site afficher une liste des bans et de pouvoir les gérer par le site web.

Ensuite lors de la connexion la personne verrait pourquoi il a été ban, par qui il a été ban et à quel date il sera déban.

Merci d'avance bonne journée.
 
Dernière édition:
Solution
Hello !

Pour commencer, il faut donc ajouter la table dans ta base de données :
Code:
CREATE TABLE `joueurs_bannis` (
    `id` INT(6) NOT NULL,
    `player_id` VARCHAR(17) NOT NULL,
    `banned_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `banned_until` TIMESTAMP NOT NULL
) ENGINE = InnoDB;

Ensuite, il faut vérifier quand le joueur se connecte s'il est banni ou pas. Dans le fn_queryRequest.sqf tu peux kicker le joueur avec ceci :
Code:
_queryBanned = format ["SELECT id FROM joueurs_bannis WHERE player_id='%1' AND CURRENT_TIMESTAMP < banned_until",_uid];
_isBanned = [_query,2] call DB_fnc_asyncCall;

if ((count _isBanned) > 0) exitWith {
    ["Notwhitelisted",false,true] remoteExec ["BIS_fnc_endMission",_ownerID]...
Hello !

Pour commencer, il faut donc ajouter la table dans ta base de données :
Code:
CREATE TABLE `joueurs_bannis` (
    `id` INT(6) NOT NULL,
    `player_id` VARCHAR(17) NOT NULL,
    `banned_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `banned_until` TIMESTAMP NOT NULL
) ENGINE = InnoDB;

Ensuite, il faut vérifier quand le joueur se connecte s'il est banni ou pas. Dans le fn_queryRequest.sqf tu peux kicker le joueur avec ceci :
Code:
_queryBanned = format ["SELECT id FROM joueurs_bannis WHERE player_id='%1' AND CURRENT_TIMESTAMP < banned_until",_uid];
_isBanned = [_query,2] call DB_fnc_asyncCall;

if ((count _isBanned) > 0) exitWith {
    ["Notwhitelisted",false,true] remoteExec ["BIS_fnc_endMission",_ownerID];
};

Pour pouvoir kicker, il faudra également autoriser la fonction dans ton CfgRemoteExec.hpp :
Code:
F(BIS_fnc_endMission,CLIENT)

Je précise que je n'ai pas testé, parce que ça prend déjà beaucoup de temps comme ça, j'espère que ça fonctionnera :)
 
Solution