Français Not solved Création d'un didacticiel pour les nouveaux joueurs sur notre serveur

  • Auteur de la discussion Auteur de la discussion thomas59213
  • Date de début Date de début
  • Bonjour Visiteur ! Les sujets de cette catégorie sont clos. Si vous souhaitez réouvrir, merci de nous contacter en précisant le lien du post à réouvrir !

    Hello Visiteur ! The topics in this category are closed. If you wish to reopen, please contact us with the link of the post you wish to reopen !
20/4/20
53
1
300
Bonjour à tous !!
Je me suis mis dans la tête de faire un system de didacticiel pour les nouveaux joueurs sur notre serveur

Cependant je ne sais pas comment initier les trigger et assignation de taches, seulement pour les nouveaux joueurs !!!
J'imagine que je devrais créer une colonne dans la bdd avec une valeur du type 1 ou 0 pour les joueurs ayant accompli le didacticiel ?
J'ai mis un système de récompense à la fin de chaque tache, la somme de ses récompenses constituerait l'argent de départ des joueurs
L'intêret et de faire découvir les fonctionnalités de notre serveur pour ne pas que les joueurs soient perdu dés leur arrivé

Comme dis plus haut je voudrais que les taches soient assignés automatiquement au nouveau joueurs et qu'ils ne puissent faire le didacticiel qu'une seule fois !!

Merci à vous qui me guideraient dans ce projet ;)

Voici le systeme de rewards : https://paste-me.net/ufabu
 
A vrai dire, je pense que le mieux est de le faire save chaque tache dans la BDD. (Bon par contre, moi et les BDD, ca fait 2 xD) Mais du coup, je te conseille vraiment d'utiliser la BDD étant donné qu'à chaque fin des tâches, tu donne des récompenses. Si le gars est pas bête avec le système de Vincentimetr Vincentimetr, il peut facilement refaire à l'infini les tâches et du coup gagner un max de récompense. Comme il as dit, ca fonctionne très bien pour des trucs qui sont pas sensible, mais là c'est le cas. Donc ouais, utilise la BDD, mais je pourrais pas t'aider sur ca :/ Désolé.

Essaye de regarder dans le life de base comment il font pour set une donné dans la DB, la récup, etc... (Normalement tu peux aussi trouver des tutos)
 
  • Like
Les réactions: Maxence et Vincentimetr
Au pire j'ai fait un système de chiffrement du profileNameSpace mais le type peut toujours retourner en arrière si il a pensé à faire une save de ses données... Donc je suis d'accord avec Liliannismo33 Liliannismo33 , je n'avais pas pensé aux récompenses.
 
l'idée c'est que le gars ne puisse faire le didacticiel qu'une seule fois donc oui lilian je vais valier chaque tache dans la base de donnés je pense
Après le truc c'est de faire en sorte que le didacticiel ne s'active que pour les nouveaux joueurs et non pas pour tout le monde
Je pense que je vais m'inspirer du script Advanced Identity pour cette histoire de ne pas repeter le didacticiel
Je verrais aussi comment faire au niveau bdd par conséquent !
 
A ce moment là, ta juste à faire que lorsque le init côté client (mpmission) s'execute, bah tu check si dans la DB la donné "didacticielValidate" (par exemple) est à 0. Et si c'est le cas, bah tu lance le tuto. Sinon bah tu lance rien. Et à la fin du tuto tu met cette variable à 1.
 
okay merci donc dans le initPlayerLocal je met cette condition ?
Je crée mon didacticiel sur eden et je finis de coder pour les réécompenses puis je synchronise tout ca avec la bdd ?
 
Si c'est dès la connexion du joueur, pour éviter des soucis avec le spawn menu, faut que tu vois dans core\initCiv.sqf

Dedans tu va expliquer que si ta donné "didacticielValidate" (Donc avec un if) dans la DB est à 1, alors tu execute ca :
Code:
[] call life_fnc_spawnMenu;
        waitUntil{!isNull (findDisplay 38500)}; //Wait for the spawn selection to be open.
        waitUntil{isNull (findDisplay 38500)}; //Wait for the spawn selection to be done.

Autrement (Donc avec un else), tu le fait force spawn à l'endroit où ton tuto ce passe, et tu execute ton script de didacticiel (Bon en gros de gros, si j'ai le temps ce soir, je verrais pour te le faire un peu plus scripté, mais dans la logique, c'est comme ca que tu dois faire (enfin ce que j'aurais fait perso ^^)).
Et tu lui enleve bien le fond noir avec ca : cutText ["","BLACK IN"];
 
si je met ca dans mon script en principe ca devrait faire passer la valeur de checkpoint1 dans ma bdd à 1 si je comprends bien ?

Code:
    if ((player GetVariable["checkpoint",0])==1) then {["UPDATE didacticiel SET checkpoint1=1];};
 
Pour la partie dans le then, je pourrais pas t'aider. Sinon pour le if, c'est comme ca qu'on récupère :
Code:
if ((player getVariable "checkpoint") isEqualTo 1) then {
    ["UPDATE didacticiel SET checkpoint1=1];
};

Tu peux utiliser aussi == si tu veux à la place de isEqualTo. C'est la même chose.
Sinon quand tu récupère une variable, tu dois faire :

player getVariable "tavariablename";

g minuscule pour le getVariable (Après je sais pas si G majuscule c'est bon, mais je sais que sur le wiki et comment moi je l'utilise c'est avec un g minuscule.)
Ensuite tu met entre guillemet le nom de ta variable et c'est tout.

Comment tu l'avais écris au départ c'est la syntax de quand tu la défini, style :
player setVariable ["tavariablename", tavaleur];
 
Alors je viens de revoir le truc
côté bdd ca devrait aller il faut juste que je récupère le pid des joueurs via je suppose ceci : UPDATE didacticiel SET pid=playerid
Ensuite il faut que je fasse en sorte que les nouveaux joueurs aient accés au didacticiel donc d'après mon mapping sur eden les nouveaux joueurs auront les taches assigné et ne pourront pas passé à la suite du didacticiel tant que la condition du trigger n'est pas rempli
Dans le on activation j'ai mis cela : (en gros) playerSet variable "checkpoint",1,true)

Dans mon script il y a ceci

if (player getVariable "checkpoint")==1 then UPDATE didacticiel SET checkpoint1=1
 
en gros quand il passe le premier trigger et bah le joueur porte la variable checkpoint1 pour avoir sa récompense de plus ca écris dans la bdd que tel joueur a passé tel point
 
Pardon, je me suis mal exprimé, j'ai corrigé ce que tu as écris par un truc fonctionnel. Et le "Tu veux dire" c'était pour dire : "Tu voulais plutôt l'écrire comme ca ?". ^^