Jump to content

Besoin d'aide SVP


Recommended Posts

Bonjour/ Bonsoir à tous,

J'ai récemment creer un serveur MTA, et j'aimerais faire en sorte que tout joueur se connectant sur le serveur, qu'il aient le tous le même skin, perso je choisie le SWAT (id 285), et surtout qu'ils l'aient tout au long du jeu par exemple si le joueur meurt, il meurt étant SWAT, et re-spawn en SWAT, il se co en SWAT, se déco en SWAT et se reco la prochaine fois en SWAT, etc... :D (je compte y introduire mes propres skins)

En fouillant un peu partout avec mon notepad ++ j'ai rien trouver. Je vous prie de bien vouloir m'aider s'il vous plait, je ne sais pas crée un script (j'apprend un peu) mais j'ai quelques petites notions, merci. :(

LawrenceKnight

Link to comment

Bonsoir Citizen,

Oui j'utilise le gamemode "Play" et je précise que j'ai volontairement désactiver le freeroam (en supprimant cette ligne "" du fichier méta de "Play") , comme ça, lorsque les joueurs appuie sur F1, le panneau ne s'affiche pas.

Je m'explique, je fait un serveur résident evil donc un zombie :), et je ne veux pas que les joueurs puissent obtenir des armes, vehicules, jetpack et encore plus, sinon trop facile pour eux.

J'ai supprimer cette ligne puisque je ne trouver pas comment modifier les possibilité du pannel "freeroam".

Je trouve que c'est mieux comme ça, mais pour le moment je me demande comment faire en sorte que tout joueurs se déconnectant et reconnectant, ait le skin du SWAT. (info de plus on ne sais jamais: j'hébérge mon serveur moi même pour le moment, donc si les skins donner par l'admin (c'est à dire moi même) se sauvegarde lorsque je relance le serveur, se serait aussi cool, mais ça c'est autre chose pour plus tard ^^).

Link to comment
  • Moderators
pour le moment je me demande comment faire en sorte que tout joueurs se déconnectant et reconnectant, ait le skin du SWAT.

Je pense qu'il suffit de modifier la ligne 19 de broph.lua:

repeat until setElementModel(player,math.random(312)) 

En remplaçant le math.random(312) par l'id du SWAT directement, ça devrait le faire (sauf si une autre ressource vient s'en mêler).

si les skins donner par l'admin (c'est à dire moi même) se sauvegarde lorsque je relance le serveur, se serait aussi cool

Le moyen le plus simple sera d'utiliser les account datas, c'est comme les elements datas mais qui s'enregistre dans une base de données locale et donc sont récupérable après un reboot ou la reconnexion du joueur.

Cela t'obliges néanmoins à faire un système de register et de login pour les utiliser:

isGuestAccount checks to see if an account is a guest account. A guest account is an account automatically created for a user when they join the server and deleted when they quit or login to another account. Data stored in a guest account is not stored after the player has left the server. As a consequence, this function will check if a player is logged in or not.

Il te faura donc utiliser ces fonctions (server-side only):

addAccount   -- Pour le register 
logIn  -- Pour le login 
  
getPlayerAccount  -- Pour récupérer le compte du joueur (vérifier que ce n'est pas un "guest account") 
getAccountData  -- Pour récupérer son skin 
setAccountData  -- Pour sauvegarder son skin 

Si on a réussi à récupérer un skin depuis son account, alors on utilisera cette valeur à la ligne 19, sinon, le skin du swat.

Link to comment

Re,

J'ai donc essayer le skin pour le moment. J'ai bien remplacer le "(player,math.random(312))" par "(player,math.random(285))" (avec le skin du swat), je "refresh" le serveur, celui-ci le fait avec succès, je me reco sur le serveur, mais toujours les skins aléatoires :(.

En ce qui concerne le système du login/register, j'avais déjà placer une ressource (un login pannel) qui enregistre bien les comptes, mais dois-je l'enlever pour y placer les fonctions ci dessus? (dans ces cas là je ne saurais pas ou l'écrire ^^')

Par contre j'ai une petite impression, le "(player,math.random(312))" signifierais pas plutot les skins dispo sur mon serveur? je veux dire, si je le remplace par 285 qui fasse en sorte de me mettre un skin aléatoire entre 0 à 285 plutot que 0 à 312? (juste une petite impression :) )

Et pour finir, qu'est-ce que le guest account exactement? est-ce un compte qui se connecte sans être enregistrer sur le serveur?

Link to comment
  • Moderators
le "(player,math.random(312))" signifierais pas plutot les skins dispo sur mon serveur? je veux dire, si je le remplace par 285 qui fasse en sorte de me mettre un skin aléatoire entre 0 à 285 plutot que 0 à 312?

Bah si, c'est à ça que sert la fonction math.random et j'avais bien dit de remplacer math.random(312) et donc pas juste le nombre 312.

Tu peux utiliser le login panel évidemment mais faut vérifier s'il utilise une base de données MySQL ou les account datas.

S'il utilse le système de compte intégré, alors il doit surement faire appelle aux fonctions addAccount et logIn.

Il te faut donc modifier broph.lua afin "d'écouter" l'event onPlayerLogin, récupérer le numéro du skin enregistré sur le compte (qui est passé en paramètre avec onPlayerLogin), et assigner le skin enregistré à l'utilisateur.

Et pour finir, qu'est-ce que le guest account exactement?

Bah ... Je t'ai cité le wiki qui explique justement ce que c'est ...

isGuestAccount checks to see if an account is a guest account. A guest account is an account automatically created for a user when they join the server and deleted when they quit or login to another account. Data stored in a guest account is not stored after the player has left the server. As a consequence, this function will check if a player is logged in or not.

Je pense que je dois traduire ?

isGuestAccount vérifie si un compte est un compte invité. Un compte invité est un compte automatiquement créé pour un joueur lorsqu'il rejoinds le serveur et est supprimé lorsque ce joueur quitte le serveur ou se connecte à un "vrai" compte. Les données enregistrées (via setAccountData) dans un compte invité ne sont pas sauvegardées après que le joueur ait quitté le serveur. Par consequent, cette fonction vous permet de vérifier si le joueur s'est authentifié ou non.

Je peux pas donner plus d'indice, sinon je te donnerai carrément le code :)

Link to comment

Oups et Oups ^^ j'avais mal comprit pour le "(player,math.random(312))" ainsi que pour wiki, je penser pas que ça expliquer le guest account ou dumoins j'avais la tête en l'air (je dormais pas encore à ce moment là ^^')

J'ai un ami qui s'y connais un peu plus et qui m'aide pour le serveur, je test et je tiens au courant ;)

Link to comment
  • Moderators

Bah c'est à lui de faire ça, là pour l'instant ça sera toujours le skin du SWAT parce que tu donnes 285 directement à la fonction setElementModel. Il faut donc modifier tout ça et passer par une variable.

Code en français à traduire en LUA:

Je set ma variable de skin à 285

je get son account

Si son account n'est pas un guest account, alors

++++Je récupère son account data pour le skin dans une autre variable

++++Si la valeur de cette autre variable n'est pas égale à false alors

++++++++Je set ma variable de skin à la valeur de cette autre variable (en la faisant d'abord passer par la fonction tonumber)

++++fin du si

fin du si

Je peux maintenant lui changer le skin en donnant ma variable de skin

Voilà y a rien de compliqué surtout maintenant que je vous ai donné le code en français :)

Link to comment

Au passage, en restant dans le domaine des skins (pour eviter un autre topic), j'ai suivi un tuto anglais sur youtube pour installer moi même mon skin .dff et .txd, je fais comme le tuto mais pourtant rien ne fonctionne... J'ai du faire ceci:

pour le "méta":

     "LawrenceKnight" version="1.0" type="script" /> 
     

puis le "script.lua":

function replaceskin () 
    txd = engineLoadTXD ( "hunk.txd" ) 
    engineImportTXD ( txd, 285) 
    dff = engineLoadDFF ( "hunk.dff", 285) 
    engineReplaceModel ( dff, 285) 
end 
addEventBandler ( "onClientResourceStart", getResourceRootElement (getThisResource()), replaceskin) 

Ensuite, je compresse ces 4 fichier (méta, script, hunk.txd/dff) en .zip puis les place dans les ressources, mais le skin reste le même, de même après le "refresh" suivi de la reconnection au serveur, pourtant le ressource est bien charger, ais-je fait une faute de frappe ou autres? :(

Link to comment
  • Moderators

C'est quoi un Bandler ? :D

addEventBandler ( "onClientResourceStart", getResourceRootElement (getThisResource()), replaceskin) 

De plus je ferrai les modifications/améliorations suivantes:

function replaceskin () 
    local txd = engineLoadTXD( "hunk.txd" ) 
    engineImportTXD( txd, 285 ) 
    local dff = engineLoadDFF( "hunk.dff", 285 ) 
    engineReplaceModel( dff, 285 ) 
end 
addEventHandler( "onClientResourceStart", resourceRoot, replaceskin) 

Tu noteras l'utilisation du mot clé local qui précise en gros que cette variable là sera détruite à la sortie du scope.

Pour ici les 2 variables seront libérées de la mémoire à la fin de la fonction.

Tu noteras également que j'ai utilisé la variable resourceRoot sans même la définir. En fait, c'est une variable prédéfinie de façon caché si je puis dire.

Pour voir d'autres variables prédéfinies comme celle-ci, je te renvois à ce topic: List of predefined variables

De plus tu n'es pas obligé de compresser ta ressource, tu peux la laisser sous forme de dossier sans aucun problème.

En général on ne compresse pas une ressource sur laquelle on travail. On l'a compressera si on pense qu'elle est terminée et ne subira plus ou presque plus de modifications.

Note sur le debugging:

Si ton script avait été un script server, tu aurais pu voir une erreur dans ta console au moment de (re)démarrer ta ressource.

Mais là comme c'est un script clients, les erreurs sont écrite dans un fichier log dans le dossier MTA du joueur:

C:\Program Files (x86)\MTA San Andreas 1.4\MTA\clientscript.log

Si tu l'ouvres maintenant et que tu vas vers la fin, tu devrai voir une erreur concernant ton addEventBandler :)

Tu peux également afficher les erreurs/warnings serveur ET client in-game en tapant la commande /debugscript 3 (Il faut être connecté en tant qu'admin pour l'utiliser)

(Tu remarqueras aussi que ta fonction addEventBandler n'a pas été coloré en bleu par le tag [ lua], ça m'a immédiatement interpellé)

Link to comment

Pas de moquerie :D

Je suis humain, j'ai des sentiments :D (hors sujet ^^)

Donc au final, oui erreur de frappe, désolé d'être noob :D, merci de l'aide, mais j'ai cependant trouver ceci: https://www.youtube.com/watch?v=Jqt5tk9Gg9c

J'ai pu installer mon skin ainsi qu'un véhicule, je peu aussi le voir sur le serveur, mais pensez vous que je suis le seul à le voir, ou les autres joueurs le peuvent aussi? :)

Sinon merci de l'aide, il restera qu'a configuré le login pannel. ^^

Link to comment
  • Moderators

La ressource modloader est une ressource à part qui à pour seul but de charger et remplacer des models et des skins sur un serveur sans avoir à coder.

https://forum.multitheftauto.com/viewtopic.php?f=108&t=36481

Etant donné que ce n'est qu'une simple ressource comme les autres et que tu n'as pas utilisé un logiciel afin de remplacer ces models/skins dans ton GTA SA,

il va de soit que ces models/skins ont été remplacés lorsque tu t'es simplement connecté à ton serveur (avec le chargement des fichiers au début).

Et donc que ça le fera aussi pour n'importe quel autre joueur.

Link to comment

Bonjour, J'ai donc trouver un script "login pannel", et un de ses fichier porte le nom SQL.sql, je pense que ceci peut être la clé qui permettra de save les skins ainsi que l'argent, armes et autres lorsque mon serveur sera fermer puis réouvert (enfin je l'éspère), mais y'a t'il moyens de vous envoyer le script afin que vous l'analysiez?

Link to comment
  • Moderators

Ce script sql doit être importer dans ton serveur MySQL (qui vient avec wamp ou easyPHP sur windows) via phpMyAdmin (http://localhost/phpMyAdmin).

Ton login panel doit être configurer avec l'adresse, le port, l'identifiant et le mot de passe de pour accéder à ce serveur MySQL.

Par défaut ça devrait être ceci:

Adresse: "localhost"

Port: 3306

Identifiant: "root"

Password: "" <= vide

Mais étant donné que c'est un simple login panel, je pense qu'il ne sauvegardera pas les skins, armes, l'argent et autres.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...