GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: imerdu91 le 27 Septembre 2010, 23:14:09
-
Bonjour,
Je script depuis maintenant 1 ans et demi un serveur RolePlay de la base du larp, et qui pour l'instant fonctionne bien.
Actuellement et cela depuis le début, le serveur enregistre les compte ou tout autre fichier avec l'include Dini, donc les compte sont en .ini etc,
Mais j'entend beaucoup parler du MySql, a la base du larp, il était présent, mais enlever je ne sait pourquoi.
Ma question, quel est le mieux entre l'include Dini ou le MySql,
Qu'apporte t'il de plus, quesqu'il permet de réaliser en plus, a t'il des limite, des défauts, est il difficile de s'en servir, et si oui y a t'il un site pour apprendre ou quelqu'un qui connaîtrai un bon tutoriel.
Ce système m'a l'air intéressant et c'est pour cela que je souhaite me renseigner, sachant que je suit patient, je pense avoir les capacité d'apprendre a m'en servir.
Merci d'avance ;)
-
Pour le Mysql toutes les infos sont stockées dans une base de données. Cela peut te permettre de faire plein de trucs que Dini ne permet pas.
Comme par exemple, la création d'un panel admin pour gérer les comptes des joueurs, les logs... Idem un panel pour les joueurs pour qu'ils puissent gérer leurs comptes. Cela évite à ton staff d'avoir à intervenir directement sur la machine pour récupérer les infos des joueurs et autres.
Selon moi le MySQL est mieux mais il nécessite d'apprendre un nouveau langage en plus du PAWN.
Tu trouveras de bon tuto sur le site du zéro.
En espérant avoir répondu à tes questions.
++
Steve
-
Salut,
Utiliser MySQL pour un gamemode est une bonne idée si tu souhaites faire un site et utiliser les informations des comptes de tes joueurs (un classement par exemple). Tu peux également utiliser MySQL si tu souhaites avoir les comptes de tes joueurs sur un autre serveur (moins performant par contre). Sinon, je trouve qu'avoir des comptes dans des tables SQL est plus clair et c'est plus facile pour s'y retrouver.
Un désavantage, c'est qu'il faut avoir un serveur MySQL (qui peut tourner sur la même machine). Si t'es chez un hébergeur qui ne propose par cette option, il faudra chercher un serveur MySQL gratuit (en cherchant un hébergeur web gratuit) ou en trouver un payant (OVH propose un service MySQL). Si t'as ton propre dédié, c'est mieux. Il suffit simplement d'installer le paquet et configurer ton serveur MySQL (choisir un mot de passe, etc... rien de compliqué).
Sinon, j'ai jamais essayé de comparer la rapidité de dini et MySQL (serveur local), donc pour les performances, j'en ai aucune idée.
Et si tu cherches des scripts d'exemple, il y a mon RAdmin qui utilise le MySQL.
Voici encore quelques liens utiles :
Site officiel de MySQL : http://www.mysql.fr/ (http://www.mysql.fr/)
Documentation MySQL : http://dev.mysql.com/doc/ (http://dev.mysql.com/doc/)
Site du zéro (tuto PHP/MySQL) : http://www.siteduzero.com/tutoriel-3-14668-concevez-votre-site-web-avec-php-et-mysql.html#part_14671 (http://www.siteduzero.com/tutoriel-3-14668-concevez-votre-site-web-avec-php-et-mysql.html#part_14671)
Plugin MySQL pour SA-MP par ADreNaLiNe-DJ : http://forum.sa-mp.com/showthread.php?t=7106 (http://forum.sa-mp.com/showthread.php?t=7106)
Plugin MySQL pour SA-MP par G-sTyLeZzZ : http://forum.sa-mp.com/showthread.php?t=56564 (http://forum.sa-mp.com/showthread.php?t=56564)
Plugin MySQL pour SA-MP par StrickenKid : http://forum.sa-mp.com/showthread.php?t=122983 (http://forum.sa-mp.com/showthread.php?t=122983)
Script RAdmin utilisant le plugin MySQL de ADreNaLiNe-DJ : http://www.gtaonline.fr/forums/index.php/topic,6269.0.html (http://www.gtaonline.fr/forums/index.php/topic,6269.0.html)
++
R@f
-
utiliser un serveur MySQL n'est pas un peu risqué ?
Lalu's utilise MySQL, donc je pense que non c'est pas risqué.
NV. 8)
-
Salut,
utiliser un serveur MySQL n'est pas un peu risqué ?
Enfin je ne sais pas si c'est protégé par un mot de passe ou autre mais le premier petit idiot qui te pirate supprime les comptes de ton serveur et
les joueurs vont s'attribuer des stats complètements faux ( du genre dire qu'on a un score de 13 alors qu'on a un score de 10 ..)
++
Beno
Tu peut faire en sorte que Mysql soit accessible qu'en local donc, moins de risque de piratage ( on peut même dire aucun risque, mais on sait jamais )
-
Merci énormément pour vos renseignement et votre partage d’expérience, je vai me documenté grâce au lien de R@f, et j’espère pouvoir le maîtriser aussi rapidement que Pawno :)
-
Par contre quand tu devras passé tes comptes .ini en .sql je te conseil de faire un shell. 25 lignes à tout cassé et tu poura passer surement tes 5'000 compte en fichier .sql sans aucun problème ;)
-
Une question est-ce qu'il est possible de créer des comptes avec File ? Ou Dini serait plus approprié ?
-
Salut,
Une question est-ce qu'il est possible de créer des comptes avec File ? Ou Dini serait plus approprié ?
oui c'est possible de faire des comptes directement avec les fonctions de fichiers.
Il existe même plusieurs méthodes....
1. On connait déjà la structure du fichier (donc la position de chaque information)
2. On cherche un caractère ou une chaîne de caractère l'identifiant
La seconde méthode ressemble un peu au système ini (même si on peut rendre le fichier radicalement différent).
La première donne les meilleurs résultats, mais il faut faire attention, surtout si les fichiers sont manipulés à la main...
Pour votre information, le point faible de dini, c'est qu'à chaque lecture il ouvre et teste ligne après ligne le fichier afin de trouver le bon identifiant (key), procédure longue et couteuse en temps (chargement du fichier, parcours des données contenues...). C'est encore pire quand on arrive à l'écriture, il faut chercher la ligne correspondante dans le fichier nouvellement ouvert, tout en retranscrivant les informations dans un nouveau fichier (temporaire), une fois la ligne trouvée, la retranscrire dans le fichier temporaire, mais modifiée puis terminer la retranscription. Puis renommer le fichier temporaire afin de remplacer le fichier ouvert. Sans la fonction frename non-inclue de base dans les fonctions fichier, cela signifie la lecture de ce fichier pour créer le fichier d'origine modifié et ensuite supprimer le fichier temporaire. Bref, c'est un gros boulot.
++Sim++
-
Merci de ces conseils Sim .
-
Dini est très simple, mais la rapidité d'écriture / lecture non ^^
Surtout si vous faites un truc qui sauvegarde les comptes tout les x secondes pour tout les joueurs en même temps, je voit bien les gros moment où le serveur ramme ^^
-
Mais bien sur que si qu'il comporte les timeout !
( Mon cas de figure s'applique aussi, si on restart, ou change de GM ^^ )
-
Pourquoi veux-tu choisir entre Dini et MySQL ? Les deux sont bien lourds pour l'usage que tu veux en faire, MySQL je doute que tu observes des gains de performance avant 10 000 enregistrements et Dini... Dini est une horreur codé avec les pieds.
Ce que je te conseille c'est de faire ton propre système de sauvegarde par fichier.
-
Salut,
Bah bien sûr que si qu'il prend en compte les timeout, j'avais fait quelques tests avec le PC de ma sœur et le miens en tant que serveur, et c'était très concluant.
serieusement ? ???
Il comporte les timeout ? o.o
Car le OnPlayerExitVehicle ne comporte pas les chute ( HS je sais mais c'est unpeu pareil)
les seul cas qui n'est pas détecté par la callback, c'est le crash du serveur (ce qui me parait logique...) et une très grosse charge de calcul genre boucle infinie qui empêche le serveur de répondre
++Sim++
-
C'est méchant Gz' lol
-
Gzsume s'il arrive à un système de sauvegarde opérationnel franchement, je doute qu'il puisse être plus mal codé que Dini.
-
Gzsume s'il arrive à un système de sauvegarde opérationnel franchement, je doute qu'il puisse être plus mal codé que Dini.
Dini n'est pas mal codé, il utilise juste des méthodes qui font qu'écrire sur un fichier est long ^^
-
Le terme approprié serait plutôt "mal pensé" en effet.
-
Il s'agit d'écrire sur le fichier sans le refermer/réouvrir à chaque fois, PEN1 fait ça très bien par exemple...