Jump to content

Ou ajouté la ligne pour un accés au admins


Recommended Posts

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

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

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

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