Flipi Posted September 7, 2013 Share Posted September 7, 2013 hola, como puedo hacer un script para bloquer un skin y que solo se pueda usar ese skin perteneciendo a un grupo ACL determinado, Ejemplo skin 29 solo para admins... Link to comment
Atouk Posted September 7, 2013 Share Posted September 7, 2013 Usa: isObjectInACLGroup Ejemplo: function privarSkin() accountname = getAccountName( source ) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "admin" ) ) then setElementModel( source, 0 ) -- En 0 define el skin else outputChatBox( "Este comando es solo para administradores!", source, 255, 255, 255 ) end end addCommandHandler( "darSkin", privarSkin ) Espero que te sirva Link to comment
Flipi Posted September 7, 2013 Author Share Posted September 7, 2013 me aparece un error. [warning] .lua : 2 : Bad argument @ 'getAccountName' [Expected account at argument 1, got nil] [error] .lua : 3 : attempt to concatenate global 'accountname' (a boolean value) PD: lo que quiero es que ocupando el comando /ss "numero de skin" de freeroam, al poner por ejemplo /ss 4, diga "este skin es solo para admins". [me explique bien?] Link to comment
Castillo Posted September 7, 2013 Share Posted September 7, 2013 function privarSkin ( source ) local accountname = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) then setElementModel ( source, 0 ) -- En 0 define el skin else outputChatBox ( "Este comando es solo para administradores!", source, 255, 255, 255 ) end end addCommandHandler ( "darSkin", privarSkin ) 'source' no estaba definido y getAccountName necesita una cuenta, asi que necesitabas usar getPlayerAccount en conjunto. P.D: Si lo que queres es restringir los skins, entonces tenes que usar el evento "onElementModelChange". Link to comment
Alexs Posted September 7, 2013 Share Posted September 7, 2013 Usa: isObjectInACLGroup Ejemplo: function privarSkin() accountname = getAccountName( source ) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "admin" ) ) then setElementModel( source, 0 ) -- En 0 define el skin else outputChatBox( "Este comando es solo para administradores!", source, 255, 255, 255 ) end end addCommandHandler( "darSkin", privarSkin ) Espero que te sirva Tienes varios errores: 'source' no esta definido, 'accountname' es un 'boolean' y el grupo se llama 'Admin', no 'admin'. Link to comment
Flipi Posted September 7, 2013 Author Share Posted September 7, 2013 function privarSkin ( source ) local accountname = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) then setElementModel ( source, 0 ) -- En 0 define el skin else outputChatBox ( "Este comando es solo para administradores!", source, 255, 255, 255 ) end end addCommandHandler ( "darSkin", privarSkin ) 'source' no estaba definido y getAccountName necesita una cuenta, asi que necesitabas usar getPlayerAccount en conjunto. P.D: Si lo que queres es restringir los skins, entonces tenes que usar el evento "onElementModelChange". Como lo hago, es que no se como ocupar ese evento Link to comment
AlvareZ_ Posted September 7, 2013 Share Posted September 7, 2013 function privarSkin ( source ) local accountname = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) then setElementModel ( source, 0 ) -- En 0 define el skin else outputChatBox ( "Este comando es solo para administradores!", source, 255, 255, 255 ) end end addEventHandler("onElementModelChange", root, privarSkin) Link to comment
Sensacion Posted September 7, 2013 Share Posted September 7, 2013 (edited) Se me ocurre algo como esto: function alCambiarSkin( oldModel, newModel ) if ( getElementType( source ) == "player" ) then local accountname = getAccountName ( getPlayerAccount ( source ) ) if not ( isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) ) then if ( newModel == 29 ) then setTimer( setElementModel, 100, 1, source, oldModel ) outputChatBox ( "Este skin es solo para administradores!", source, 255, 0, 0 ) end end end end addEventHandler( "onElementModelChange", root, alCambiarSkin ) Edited September 7, 2013 by Guest Link to comment
Flipi Posted September 7, 2013 Author Share Posted September 7, 2013 Se me ocurre algo como esto: function alCambiarSkin( oldModel, newModel ) if ( getElementType( source ) == "player" ) then local accountname = getAccountName ( getPlayerAccount ( source ) ) if not ( isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) ) then if ( newModel == 29 ) then setElementModel ( source, oldModel ) outputChatBox ( "Este skin es solo para administradores!", source, 255, 0, 0 ) end end end end addEventHandler( "onElementModelChange", root, alCambiarSkin ) Funciona solo la parte del outputChatBox, pero igual permite cambiar el skin yo hice algo asi pero no funciona models = { [29] = true ; [294] = true ; } function alCambiarSkin( oldModel, newModel ) if ( models[getElementType( source ) == "player"] ) then local accountname = getAccountName ( getPlayerAccount ( source ) ) if not ( isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) ) then setElementModel ( source, oldModel ) outputChatBox ( "Este skin es solo para 'admins'!", source, 0, 128, 255 ) end end end addEventHandler( "onElementModelChange", root, alCambiarSkin ) Link to comment
Sensacion Posted September 7, 2013 Share Posted September 7, 2013 copia y prueba de nuevo Link to comment
Flipi Posted September 7, 2013 Author Share Posted September 7, 2013 copia y prueba de nuevo pasa lo mismo, pero como lo puedo hacer con el que modifique? models = { [29] = true ; [294] = true ; } function alCambiarSkin( oldModel, newModel ) if ( models[getElementType( source ) == "player"] ) then local accountname = getAccountName ( getPlayerAccount ( source ) ) if not ( isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) ) then setElementModel ( source, oldModel ) outputChatBox ( "Este skin es solo para 'admins'!", source, 0, 128, 255 ) end end end addEventHandler( "onElementModelChange", root, alCambiarSkin ) Link to comment
Sensacion Posted September 7, 2013 Share Posted September 7, 2013 copia y prueba de nuevo pasa lo mismo, pero como lo puedo hacer con el que modifique? models = { [29] = true ; [294] = true ; } function alCambiarSkin( oldModel, newModel ) if ( models[getElementType( source ) == "player"] ) then local accountname = getAccountName ( getPlayerAccount ( source ) ) if not ( isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) ) then setElementModel ( source, oldModel ) outputChatBox ( "Este skin es solo para 'admins'!", source, 0, 128, 255 ) end end end addEventHandler( "onElementModelChange", root, alCambiarSkin ) que raro, yo lo acabo de probar y funciona, me regresa al skin anterior. EDIT: Había puesto "aaa" en "Admin". Link to comment
Flipi Posted September 7, 2013 Author Share Posted September 7, 2013 que raro, yo lo acabo de probar y funciona, me regresa al skin anterior.EDIT: Había puesto "aaa" en "Admin". pero probaste con el que modifique o con el tuyo? Link to comment
Sensacion Posted September 7, 2013 Share Posted September 7, 2013 Con el mio, con lo que quieres agregar sería así: models = { [29] = true , [294] = true , } function alCambiarSkin( oldModel, newModel ) if ( getElementType( source ) == "player" ) then local accountname = getAccountName ( getPlayerAccount ( source ) ) if not ( isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) ) then if ( models[ newModel ] ) then setTimer( setElementModel, 100, 1, source, oldModel ) outputChatBox ( "Este skin es solo para administradores!", source, 255, 0, 0 ) end end end end addEventHandler( "onElementModelChange", root, alCambiarSkin ) Link to comment
Flipi Posted September 7, 2013 Author Share Posted September 7, 2013 Con el mio, con lo que quieres agregar sería así: models = { [29] = true , [294] = true , } function alCambiarSkin( oldModel, newModel ) if ( getElementType( source ) == "player" ) then local accountname = getAccountName ( getPlayerAccount ( source ) ) if not ( isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) ) then if ( models[ newModel ] ) then setTimer( setElementModel, 100, 1, source, oldModel ) outputChatBox ( "Este skin es solo para administradores!", source, 255, 0, 0 ) end end end end addEventHandler( "onElementModelChange", root, alCambiarSkin ) Ahora funciona ! gracias !! Link to comment
Recommended Posts