Jump to content

Skin perso


Recommended Posts

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

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

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
  • Moderators

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
  • 2 weeks later...

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

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...