Furious^ONE! Posted December 20, 2013 Share Posted December 20, 2013 Salut a tous j'aimerai savoir ou mettre la ligne suivante : local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then A ce script là : tor_op = createObject(980 , 1525.64, 122.0486 , 90.2, 0 ,0 ,0) tor_s_op = "zu" addCommandHandler("op", function ( ) if tor_s_op == "zu" then moveObject(tor_op, 2000, 1525.64 , 122.0486 , 83) tor_s_op = "auf" else moveObject(tor_op, 2000, 1525.64 , 122.0486 , 90.2) tor_s_op = "zu" end end) Merci d'avance. Link to comment
Moderators Citizen Posted December 20, 2013 Moderators Share Posted December 20, 2013 T'as tenté quelque chose ? Rappel toi ce que j'ai dit sur ton post précédent ... Alors détaillons un peu ce qu'on a. On à le bout de code que t'as copié quelque part (très bien si c'est depuis le wiki): local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- notre "if" --Instructions à exécuter s'il est admin end Et on a les instructions que tu veux réserver qu'aux admins: if tor_s_op == "zu" then moveObject(tor_op, 2000, 1525.64 , 122.0486 , 83) tor_s_op = "auf" else moveObject(tor_op, 2000, 1525.64 , 122.0486 , 90.2) tor_s_op = "zu" end Donc si tu devines correctement, il te suffit de mettre toutes ces instructions à l'intérieur de notre "if": local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- notre "if" --Instructions à exécuter s'il est admin if tor_s_op == "zu" then moveObject(tor_op, 2000, 1525.64 , 122.0486 , 83) tor_s_op = "auf" else moveObject(tor_op, 2000, 1525.64 , 122.0486 , 90.2) tor_s_op = "zu" end end (Bien sûr tu peux supprimer les commentaires) Maintenant il suffit de prendre tout ça et de le mettre dans notre commande. Je te montre ici une "autre façon" de créer une commande. C'est exactement la même mais c'est plus lisible et donc plus simple à comprendre pour ceux qui commencent. (J'utilise toujours cette façon après 4 ans donc ... ) function ouvrirPorte(thePlayer, cmdName) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- notre "if" --Instructions à exécuter s'il est admin if tor_s_op == "zu" then moveObject(tor_op, 2000, 1525.64 , 122.0486 , 83) tor_s_op = "auf" else moveObject(tor_op, 2000, 1525.64 , 122.0486 , 90.2) tor_s_op = "zu" end end end addCommandHandler("op", ouvrirPorte) Donc comme tu peux le voir, il faut donc nommer la fonction pour ensuite le donner à notre addCommandHandler La version que tu nous a montré juste avant, est une forme avancée qui permet d'utiliser ce qu'on appelle une fonction anonyme. Le gain de performance est minime et négligeable. Mais attention, ce code ne peux pas encore fonctionner. En effet, si tu regardes bien cette ligne: local accName = getAccountName ( getPlayerAccount ( source ) ) On utilise la variable source dans la fonction getPlayerAccount mais cette variable n’existe pas. Note sur la variable source: Cette variable est une variable "cachée" qui est disponible dans les fonctions ont un addEventHandler et il n'est pas disponible avec un addCommandHandler. Si on regarde bien la page du wiki du addCommandHandler, on peut voir qu'il donne au minimum 2 arguments à la fonction qu'on lui donne: le joueur ayant tapé la commande et le nom de la commande tapée que je récupère respectivement dans les variables thePlayer et cmdName Donc pour que le script marche (car getPlayerAccount prends un joueur en arguement), je le corrige en lui donnant thePlayer. Code final: function ouvrirPorte(thePlayer, cmdName) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- notre "if" --Instructions à exécuter s'il est admin if tor_s_op == "zu" then moveObject(tor_op, 2000, 1525.64 , 122.0486 , 83) tor_s_op = "auf" else moveObject(tor_op, 2000, 1525.64 , 122.0486 , 90.2) tor_s_op = "zu" end end end addEventHandler("op", ouvrirPorte) N'hésite pas à demander si tu n'as pas compris quelque chose. Link to comment
Furious^ONE! Posted December 21, 2013 Author Share Posted December 21, 2013 J'ai testé celà : tor_op99 = createObject(980 , 2185.6999511719, -1767.5999755859 , 14, 0 ,0 ,0) tor_s_op99 = "zu" addCommandHandler("op99", function ( ) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then if tor_s_op99 == "zu" then moveObject(tor_op99, 2000, 2185.6999511719 , -1767.5999755859 , 7) tor_s_op99 = "auf" else moveObject(tor_op99, 2000, 2185.6999511719 , -1767.5999755859 , 14) tor_s_op99 = "zu" end end Et le debug script m'a marqué ça : [17:07:24] SCRIPT ERROR: testing\script.lua:15: 'end' expected (to close 'function' at line 5) near '' [17:07:24] ERROR: Loading script failed: testing\script.lua:15: 'end' expected (to close 'function' at line 5) near '' Link to comment
Moderators Citizen Posted December 21, 2013 Moderators Share Posted December 21, 2013 Question: Pourquoi tu t'obstines avec cette notation avancée que tu ne maîtrises absolument pas. Je t'ai donné le code final, pourquoi ne pas l'avoir essayé ???? 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