Finijumper Posted August 20, 2014 Posted August 20, 2014 Como puedo restringir los comandos para que solo los puedan usar los admins, por ej. hay uno que es /be (bala explosiva) y hora lo pueden usar todas las personal del servidor.
Castillo Posted August 20, 2014 Posted August 20, 2014 getPlayerAccount getAccountName aclGetGroup isObjectInACLGroup Necesitas esas funciones.
Finijumper Posted August 20, 2014 Author Posted August 20, 2014 Pero no se como usarlas o donde ponerlas
Tomas Posted August 20, 2014 Posted August 20, 2014 Publica el código o al menos la función que está handleada al comando.
Finijumper Posted August 21, 2014 Author Posted August 21, 2014 El client.lua es este: bBullets = false function enableBlowingbullets() if (bBullets == false)then bBullets = true outputChatBox("Bala explosiva ativada.", 0, 255, 0) outputChatBox("Use /be para desativar.", 0, 255, 0) else bBullets = false outputChatBox("Bala explosiva desativada.", 255, 0, 0) outputChatBox("Use /be para ativar.", 255, 0, 0) end end addCommandHandler("be", enableBlowingbullets) function weaponfired (weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement ) if (bBullets == true)then triggerServerEvent ("bulletboom", source, hitX, hitY, hitZ ) end end addEventHandler ( "onClientPlayerWeaponFire", getLocalPlayer (), weaponfired ) Y el server.lua ese: addEvent ("bulletboom", true ) function bulletexplosion (hitX, hitY, hitZ) createExplosion ( hitX, hitY, hitZ, 2 ) end addEventHandler("bulletboom",getRootElement(),bulletexplosion)
alex17 Posted August 21, 2014 Posted August 21, 2014 reemplaza tu server.lua por esto function bulletexplosion (hitX, hitY, hitZ) if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(source)), aclGetGroup ( "Admin" ) ) then createExplosion ( hitX, hitY, hitZ, 2 ) end end addEvent("bulletboom",true) addEventHandler("bulletboom",getRootElement(),bulletexplosion)
Finijumper Posted August 21, 2014 Author Posted August 21, 2014 Funciona, pero me gustaría que la gente que no fuera admin no puediera usar el comando (o que no le saliera ningún mensaje cuando lo escribieran, ya que ahora no pueden disparar explosivos pero ven esto:
Tomas Posted August 22, 2014 Posted August 22, 2014 bBullets = false function enableBlowingbullets() if (bBullets == false)then bBullets = true outputChatBox("Bala explosiva ativada.", 0, 255, 0) outputChatBox("Use /be para desativar.", 0, 255, 0) else bBullets = false outputChatBox("Bala explosiva desativada.", 255, 0, 0) outputChatBox("Use /be para ativar.", 255, 0, 0) end end addCommandHandler("be", enableBlowingbullets) function weaponfired (weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement ) if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(source)), aclGetGroup ( "Admin" ) ) then if (bBullets == true)then triggerServerEvent ("bulletboom", source, hitX, hitY, hitZ ) end end end addEventHandler ( "onClientPlayerWeaponFire", getLocalPlayer (), weaponfired ) Recuerda al postear códigos encerrarlos en el tag [lua ] [ /lua]
Finijumper Posted August 22, 2014 Author Posted August 22, 2014 Gracias por lo del tag, no lo sabía. Ahora pruebo el código y edito el mensaje. EDITO: No funciona, Tomasito, he remplazado todo el código por el tuyo y ahora ni los admin pueden disparar explosivos. Y los que no son admins pueden usar el comando igualmente (les sale la imagen que puse anteriormente).
Tomas Posted August 22, 2014 Posted August 22, 2014 Ohh cierto, ni me había dado cuenta que era Client-Side Con respecto a lo del chat no puedes poner un chat para una persona específica en el client-side. Deberías hacerlo en el sv-side. Postea todo el código y te lo arreglo todo, o al menos el orden de los argumentos de la función handleada al evento bulletboom.
Finijumper Posted August 22, 2014 Author Posted August 22, 2014 El client.lua es este: bBullets = false function enableBlowingbullets() if (bBullets == false)then bBullets = true outputChatBox("Bala explosiva ativada.", 0, 255, 0) outputChatBox("Use /be para desativar.", 0, 255, 0) else bBullets = false outputChatBox("Bala explosiva desativada.", 255, 0, 0) outputChatBox("Use /be para ativar.", 255, 0, 0) end end addCommandHandler("be", enableBlowingbullets) function weaponfired (weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement ) if (bBullets == true)then triggerServerEvent ("bulletboom", source, hitX, hitY, hitZ ) end end addEventHandler ( "onClientPlayerWeaponFire", getLocalPlayer (), weaponfired ) Y el server.lua ese: addEvent ("bulletboom", true ) function bulletexplosion (hitX, hitY, hitZ) createExplosion ( hitX, hitY, hitZ, 2 ) end addEventHandler("bulletboom",getRootElement(),bulletexplosion)
Tomas Posted August 22, 2014 Posted August 22, 2014 -- Sv side: function enableBlowingbullets(player) if getElementData(player,"bBullets") == "false" then if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(player)), aclGetGroup ( "Admin" ) ) then outputChatBox("Bala explosiva activada.",player, 0, 255, 0) outputChatBox("Use /be para desactivar.",player, 0, 255, 0) setElementData(player,"bBullets","true") else outputChatBox("Bala explosiva desactivada.",player, 255, 0, 0) outputChatBox("Use /be para activar.",player, 255, 0, 0) setElementData(player,"bBullets","false") end end end addCommandHandler("be", getRootElement(),enableBlowingbullets) function setfalse () setElementDatA(source,"bBullets","false") end addEventHandler("onPlayerLogin",getRootElement(),setfalse) -- Clientside addEvent ("bulletboom", true ) function bulletexplosion (hitX, hitY, hitZ) if getElementData(source,"bBullets") == "true" then createExplosion ( hitX, hitY, hitZ, 2 ) end end addEventHandler("bulletboom",getRootElement(),bulletexplosion)
Finijumper Posted August 23, 2014 Author Posted August 23, 2014 Ahora ni los admin pueden activar la bala explosiva Cuando le doy a start script me sale eso: https://www.dropbox.com/s/0gr6ba1lmlcp8fj/consola%20be.png?dl=0
Tomas Posted August 23, 2014 Posted August 23, 2014 Ahora ni los admin pueden activar la bala explosiva Cuando le doy a start script me sale eso: https://www.dropbox.com/s/0gr6ba1lmlcp8fj/consola%20be.png?dl=0 -- Sv side: function enableBlowingbullets(player) if getElementData(player,"bBullets") == "false" then if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(player)), aclGetGroup ( "Admin" ) ) then outputChatBox("Bala explosiva activada.",player, 0, 255, 0) outputChatBox("Use /be para desactivar.",player, 0, 255, 0) setElementData(player,"bBullets","true") else outputChatBox("Bala explosiva desactivada.",player, 255, 0, 0) outputChatBox("Use /be para activar.",player, 255, 0, 0) setElementData(player,"bBullets","false") end end end addCommandHandler("be",enableBlowingbullets) function setfalse () setElementDatA(source,"bBullets","false") end addEventHandler("onPlayerLogin",getRootElement(),setfalse) -- Clientside addEvent ("bulletboom", true ) function bulletexplosion (hitX, hitY, hitZ) if getElementData(source,"bBullets") == "true" then createExplosion ( hitX, hitY, hitZ, 2 ) end end addEventHandler("bulletboom",getRootElement(),bulletexplosion)
Finijumper Posted August 23, 2014 Author Posted August 23, 2014 No puedo activar el comando, independientemente de que sea Admin o no No se que podrá ser. Igualmente gracias por la ayuda que me estás dando crack
Tomas Posted August 23, 2014 Posted August 23, 2014 Lol, el problema es que puse setElementDatA y Lua es sensible a las mayúsculas, ahí lo arreglo, lo siento:} -- Sv side: function enableBlowingbullets(player) if getElementData(player,"bBullets") == "false" then if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(player)), aclGetGroup ( "Admin" ) ) then outputChatBox("Bala explosiva activada.",player, 0, 255, 0) outputChatBox("Use /be para desactivar.",player, 0, 255, 0) setElementData(player,"bBullets","true") else outputChatBox("Bala explosiva desactivada.",player, 255, 0, 0) outputChatBox("Use /be para activar.",player, 255, 0, 0) setElementData(player,"bBullets","false") end end end addCommandHandler("be",enableBlowingbullets) function setfalse () setElementData(source,"bBullets","false") end addEventHandler("onPlayerLogin",getRootElement(),setfalse) -- Clientside addEvent ("bulletboom", true ) function bulletexplosion (hitX, hitY, hitZ) if getElementData(source,"bBullets") == "true" then createExplosion ( hitX, hitY, hitZ, 2 ) end end addEventHandler("bulletboom",getRootElement(),bulletexplosion) PD: Para que funcione debes activar el script, y reconectar.
Finijumper Posted August 23, 2014 Author Posted August 23, 2014 Ahora funciona todo bien Pero cuando activo el comando como admin no disparo explosivos -.- Algo debe de estar mal en el código.
Tomas Posted August 24, 2014 Posted August 24, 2014 Ya descubrí el problema Client side: function bulletexplosion (a,b,c,hitX, hitY, hitZ) if getElementData(source,"bBullets") == "si" then createExplosion ( hitX, hitY, hitZ, 2 ) end end addEventHandler("onClientPlayerWeaponFire",getRootElement(),bulletexplosion) Server-side: function enableBlowingbullets(player) if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(player)), aclGetGroup ( "Admin" ) ) then if getElementData(player,"bBullets") == "no" or not getElementData(player,"bBullets") then outputChatBox("Bala explosiva activada.",player, 0, 255, 0) outputChatBox("Use /be para desactivar.",player, 0, 255, 0) setElementData(player,"bBullets","si") else outputChatBox("Bala explosiva desactivada.",player, 255, 0, 0) outputChatBox("Use /be para activar.",player, 255, 0, 0) setElementData(player,"bBullets","no") end else outputChatBox("Necesitas ser admin para usar este comando!",player,255,0,0) end end addCommandHandler("be",enableBlowingbullets) Y Alexs.. No me vengas a joder con los elementData ._.
Finijumper Posted August 24, 2014 Author Posted August 24, 2014 Muchas gracias Tomasito Funciona a la perfección y además me encanta la modificación que has echo con el mensaje de que necesitas ser admin.
Recommended Posts