Latitepingouin Posted March 11, 2014 Share Posted March 11, 2014 Bonjour, on travaille actuellement sur notre serveur et on aimerait se mettre des skins personnels mais que seuls nous pourraient avoir. Parce que sur notre serveur DayZ, on peux trouver çà et là des "civilian clothes" et compagnie, que tout le monde peut avoir, mais nous on voudrait avoir des skins perso que tout le monde pourraient voir, mais pas avoir. Et on ne sait pas comment faire :3 Je me répète un peu mais c'est pour être sûre d'être claire ^^ Merci d'avance :B Link to comment
Moderators Citizen Posted March 12, 2014 Moderators Share Posted March 12, 2014 Bonjour Latitepingouin, Alors en supposant que tu as une texture que tu aurais téléchargé sur internet (un .txd) et placé dans le dossier skins dans le dossier de ta ressource: Il faut d'abord ajouter le fichier monFichier.txd dans la meta.xml <file src="skins/monFichier.txd" /> Ensuite, il faut créer un nouveau script (par exemple customSkins.lua) dans le dossier de ta ressource et l'ajouter dans ta meta.xml: <script src="customSkin.xml" type="client" /> Dans ce script, il va falloir charger le nouveau skin et remplacer un skin existant par celui là lorsque le script du joueur démarre: function loadCustomSkin() local txd = engineLoadTXD ( "skins/monFichier.txd" ) --on charge la texture depuis son fichier engineImportTXD ( txd, 0 ) -- on import cette texture en remplaçant la texture du skin 0 (celui de CJ) end addEventHandler("onClientResourceStart", root, loadCustomSkin) -- on executera loadCustomSkin lorsque le script se charge pour un joueur Et il nous faudra une autre fonction qu'on peut placer dans le même fichier pour rester simple et qui va donner le skin perso aux personnes autorisées. Je te file du code tout prêt donc je te demanderai au moins de lire TOUS les commentaires pour bien comprendre à quoi sert chaque ligne. C'est le minimum que je demande. -- je crée ici un tableau à une colonne (donc en gros un liste simple) avec les noms des personnes autorisées. local allowedPlayers = { {"latitepingouin"}, {"Citizen"}, {"KillerDu69"} -- le dernier élément d'une liste ne doit pas avoir de virgule } function setMySkin( cmd, skinID ) if not skinID then -- Si le joueur n'as pas précisé l'id qui voulait, alors return --on arrête la fonction ici en faisant un return end skinID = tonumber( skinID ) -- quand on récupère les donnée envoyer par une commande, on récupère du texte donc faut le transformer en nombre local playerName = getPlayerName( localPlayer ) --on récupère le nom du joueur sur lequel ce script s'éxécute --on appelle notre fonction isPlayerAllowed pour savoir s'il fait partit de notre tableau des personnes autorisées local allowed = isPlayerAllowed( playerName ) -- allowed vaudra true ou false s'il est autorisé ou non if allowed then -- s'il est autorisé (c'est la même chosew que de faire: if allowed == true then) setElementModel( localPlayer, skinID ) --on donne le skin au joueur end end addCommandHandler("pskin", setMySkin, false) --on ajoute notre commande /pskin qui appellera setMySkin function isPlayerAllowed ( playerName ) --on parcours le tableau des personnes autorisées grâce à cette boucle: for k, allowedName in ipairs ( allowedPlayers ) do if allowedName == playerName then --si on a trouvé dans la liste le même nom qu'on cherchait alors: return true --on renvoie true (vrai), (le return arrête la fonction je le rappelle) end end -- donc si le code arrive ici ça veut dire qu'on a parcouru le tableau en entier et donc qu'on a pas trouvé le nom dans la liste return false --on renvoie false (faux) end Il te faudra donc utiliser /pskin 0 pour avoir le skin 0 qui correspond à celui de CJ, mais comme on l'a remplacé par notre skin custom, tu obtiendra ce nouveau skin. (j'ai utilisé "pskin" pour "private skin", tu peux changer le nom si tu veux mais évite d'utiliser une commande qui pourrai être susceptible d'être déjà utilisé dans un autre script. Par exemple la commande "skin" y a 90% de chances qu'elle soit déjà utilisé.) Si jamais ça ne marche pas, j'aimerai avoir les erreurs éventuelles que tu pourras voir ingame en utilisant /debugscript 3. Pour utiliser cette commande, il te faut d'abord t'enregistrer en faisant /register mdp mdp que tu stoppes ton serveur complètement, modifie ensuite acl.xml (même endroit que mtaserver.conf), tu recherches ton nom dedans. Tu devrais trouver une ligne comme ceci: <object name="user.latitepingouin"/> il te faut la déplacer dans le groupe admin: <group name="Admin"> ... <object name="resource.admin"/> <object name="resource.webadmin"/> <object name="user.latitepingouin"/> </group> Relance le serveur et ensuite ingame fait /login mdp Et s'il y a une erreur, je veux l'erreur complète ! (y en a beaucoup qui ne mette pas la fin en pensant que ça nous est pas utile et on est obligé de deviner). Voilà en espérant que ça marche du premier coup. Link to comment
Latitepingouin Posted March 12, 2014 Author Share Posted March 12, 2014 Ok c'est super merci beaucoup Je donne ça à mon collègue qui s'occupe de ça et je donne des nouvelles Link to comment
Latitepingouin Posted March 13, 2014 Author Share Posted March 13, 2014 Bonjour, Alors on a essayé mais ça ne marche pas, apparemment y a pas de message d'erreur, mais le skin n'apparait pas. Il a écrit ça et m'a demandé de transmettre : function loadCustomSkin() local txd = engineLoadTXD ( "skins/statham.txd" ) engineImportTXD ( txd, 0 ) end addEventHandler("onClientResourceStart", root, loadCustomSkin) local allowedPlayers = { {"MR_LEGEND03"} } function setMySkin( cmd, skinID ) if not skinID then return end skinID = tonumber( skinID ) local playerName = getPlayerName( localPlayer ) local allowed = isPlayerAllowed( playerName ) if allowed then setElementModel( localPlayer, skinID ) end end addCommandHandler("monskin", setMySkin, false) function isPlayerAllowed ( playerName ) for k, allowedName in ipairs ( allowedPlayers ) do if allowedName == playerName then return true end end return false end function loadCustomSkin() local txd = engineLoadTXD ( "skins/larac.txd" ) engineImportTXD ( txd, 9 ) end addEventHandler("onClientResourceStart", root, loadCustomSkin) local allowedPlayers = { {"MISS_Pingouin"} } function setMySkin( cmd, skinID ) if not skinID then return end skinID = tonumber( skinID ) local playerName = getPlayerName( localPlayer ) local allowed = isPlayerAllowed( playerName ) if allowed then setElementModel( localPlayer, skinID ) end end addCommandHandler("monskin", setMySkin, false) function isPlayerAllowed ( playerName ) for k, allowedName in ipairs ( allowedPlayers ) do if allowedName == playerName then return true end end return false -- end Link to comment
Latitepingouin Posted March 13, 2014 Author Share Posted March 13, 2014 Oui ? Je n'ai pas bien compris la réponse x) Je pense qu'il a oublié de mettre deux trois choses ( comme skin ID ou je ne sait quoi ) mais je ne m'y connait pas du tout donc je ne peux pas l aider x) Link to comment
Moderators Citizen Posted March 14, 2014 Moderators Share Posted March 14, 2014 Et pourquoi ce n'est pas lui qui vient poster vu que c'est lui qui s'en occupe ? Aussi quand on colle du code lua, on le colle dans les balises lua comme ceci: [lua][/lua] Y a un bouton "lua" dans la barre sur la droite quand tu écris un message qui ajoute les balises, t'as plus qu'à coller entre les 2. ------------------------------------------------------------------------------------ Latitepingouin said: apparemment y a pas de message d'erreur ------------------------------------------------------------------------------------ Oh si y en a, mais comme c'est du code du côté client (n'est pas executer sur le serveur mais sur le pc du joueur) tu ne verras rien dans la console du serveur. Pour voir les erreurs du côté client, il faut se connecter au serveur et taper /debugscript 3 (ne marche que si tu t'es /login en administrateur) Si vous n'y arrivez pas, les logs sont dispo ici: C:\Program Files (x86)\MTA San Andreas 1.3\MTA\clientscript.log Si ce fichier est trop gros pour être ouvert, supprimez-le et relancer votre gamemode où se trouve ce script. Mais ça vous êtes censé le savoir car vous êtes censé avoir lu les tutos pour commencer à scripter: FR: https://wiki.multitheftauto.com/wiki/FR/ ... grammation https://wiki.multitheftauto.com/wiki/FR/Debugage Il est aussi interdit (dans le language) de dupliquer de code. Le code que je vous ai donné permet à une liste de joueurs définit de pouvoir utiliser la commande "/monskin" afin qu'ils puissent se mettre un skin particulier. La syntaxe de cette commande c'est: /monskin Donc /monskin ne marchera jamais avec mon code puisqu'il a pas l'id dont il a besoin. En dupliquant l'intégralité du code pour le coller juste en-dessous sans remplacer le nom des fonctions, commandes et le nom du tableau, vous pétez tout ce qu'il y a au-dessus. Je vois exactement ce qu'il a essayé de faire, mais c'est pas du tout comme ça qu'il fallait faire. Il fallait modifier mon code pour modifier son comportement au lieu de le dupliquer. Et d'avance, je vous réponds: non, je ne vais pas modifier le code à votre place. Il va falloir être motivé et suivre les tutos que j'ai linké au-dessus. Cordialement, Citizen Link to comment
Latitepingouin Posted March 14, 2014 Author Share Posted March 14, 2014 Merci Citizen Ne t'inquiètes pas je n'allais pas te demander de modifier tout le code pour nous, il se débrouillera Link to comment
Azfull Posted March 23, 2014 Share Posted March 23, 2014 Cela est normal si tu ne peut ajouté un skin sur le gm dayz avec un script hors gm dayz. Pour cela, tu va devoir ajouter le skin (l'objet) dans le gm dayz. Puis mettre le taux de spawn du skin a 0 pour que personne puisse le trouver. Ensuite, pour avoir le skin tu va devoir te le give avec le script GIP que tu aura modifié pour que tu puisse te donner ton skin perso. Voilà, j'espère t'avoir aider, Cordialement Azfull. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now