Jump to content

[MINI-APORTES] Aportes Blue


Recommended Posts

Bueno, aprovechando esta nueva sección Española, me gustaría crear mi tema para pequeños aportes para diferentes modalidades de juego, empezando por un simple script de specteo a otros jugadores el cual cuenta con lo siguiente:

Comando: Utilizando el comando /spectate [nombre del jugador] podremos observar lo que hace en cada momento ya que nuestra cámara se redirigirá a la suya. Nuestra posición antes de spectear se guardará en la tabla lPos y al volver a teclear el comando /spectate, nos devolverá a la misma.

Cualquier error, postear abajo. O sugerencias.

SCRIPT SERVER-SIDE

local lPos = { }
local specteando = { }
local g_permitidos = { "Admin", "Moderator", "Helper" }

addCommandHandler( "spectear",
	function( player, cmd, name )
		local name = tostring( name )
		local accName = getAccountName( getPlayerAccount( player ) )
		for i=1, #g_permitidos do
			local grupo = g_permitidos[i]
			if isObjectInACLGroup( "user."..accName, aclGetGroup( tostring( grupo ) ) ) then
				if specteando[ player ] == true then
					if lPos[ player ] then
						local x, y, z = lPos[ player ].x, lPos[ player ].y, lPos[ player ].z
						setElementPosition( player, x, y, z )
						setCameraTarget( player, player )
						setElementFrozen( player, false )
						setElementAlpha( player, 255 )
					else
						setElementPosition( player, 0, 0, -0.9 )
						setElementFrozen( player, false )
						setElementAlpha( player, 255 )
					end
				else
					if name then
						local p_ = getPlayerFromName( name )
						if p_ then
							local x, y, z = getElementPosition( player )
							lPos[ player ] = { x = x, y = y, z = z }
							specteando[ player ] = true	
							outputChatBox( "Ahora estás specteando a "..name, player, 0, 150, 0 )
							setCameraTarget( player, p_ )
							setElementFrozen( player, true )
							setElementAlpha( player, 0 )
							setElementPosition( player, 0, 0, 0 )
						else
							outputChatBox( "No se ha encontrado al jugador", player, 255, 0, 0 )
						end
					else
						outputChatBox( "/spectear [nombre del jugador]", player, 255, 255, 255 )
					end
				end
				break
			end
		end
	end
)

 

  • Like 1
Link to comment

Nuevo script: 24/04/2017

Bueno, no hay mucho que explicar. Se trata de un script que permite, cuando mueves la cámara, mover la cabeza del jugador como en SA:MP. Puede ser útil para servidores Roleplay o RPG, que es donde se suele usar para no rolear mirar a x lado, etc.

SCRIPT CLIENT-SIDE

addEventHandler( "onClientCursorMove", getRootElement( ),
    function ( _, _, _, _, x, y, z )
        setPedLookAt( getLocalPlayer( ), x, y, z )
    end
)

 

 

  • Like 1
Link to comment

Nuevo script: 25/04/2017

Este script de nametags al estilo SA:MP cuenta con una barra de vida y barra de chaleco indicando el nivel de cada uno de los estados. Se puede modificar a vuestro gusto. Se añade el nametag únicamente si el jugador está logueado, esto se puede editar también:

SERVER-SIDE

addEventHandler( "onPlayerQuit", getRootElement( ),
	function( )
		triggerClientEvent( root, "nmtgs:removePlayer", root, source )
	end
)

addEventHandler( "onPlayerLogout", getRootElement( ),
	function( )
		triggerClientEvent( root, "nmtgs:removePlayer", root, source )
	end
)

addEventHandler( "onPlayerLogin", getRootElement( ),
	function( )
		triggerClientEvent( root, "nmtgs:addPlayer", root, source )
	end
) 

CLIENT-SIDE

local players = { }

addEvent( "nmtgs:addPlayer", true )
addEventHandler( "nmtgs:addPlayer", getRootElement( ),
	function( player )
		players[ player ] = player
	end
)

addEvent( "nmtgs:removePlayer", true )
addEventHandler( "nmtgs:removePlayer", getRootElement( ),
	function( player )
		if players[ player ] then
			players[ player ] = nil
		end
	end
)

addEventHandler( "onClientRender", root,
function()
	local cx, cy, cz = getCameraMatrix()
	local lx, ly, lz = getElementPosition( localPlayer )
	local jugadores = getElementsByType( "player" )
	for i=1, #jugadores do
		local p = jugadores[i]
		if players[ p ] then
			local x, y, z = getElementPosition( p )
			local dist =  getDistanceBetweenPoints3D( lx, ly, lz, x, y, z )
			if dist < 15 then
				if isLineOfSightClear( lx, ly, lz, x, y, z, true, false, false, true, false, false, false, localPlayer ) then
					local name = getPlayerName( p )
					local bone = { getPedBonePosition( p, 5 ) }
					local c = { getScreenFromWorldPosition( bone[1], bone[2], bone[3]+0.3 ) }
					local width, health = 80, getElementHealth( p )
					local armor = getPedArmor( p )
					if c[1] and c[2] then
						dxDrawText(name, c[1], c[2]-38, c[1], c[2], tocolor( 0, 0, 0 ), 1.5, "default-bold", "center", "center")
						dxDrawText(name, c[1], c[2]-40, c[1], c[2], tocolor( 255, 255, 255 ), 1.5, "default-bold", "center", "center")
						
						dxDrawRectangle( c[ 1 ] - ( width / 1.90 ), c[ 2 ] - 4, width+3, 11, tocolor( 0, 0, 0, 255 ) ) 
						dxDrawRectangle( c[ 1 ] - ( width / 2 ), c[ 2 ] - 2.3, width, 8, tocolor( 150, 0, 0, 255 ) ) 
						dxDrawRectangle( c[ 1 ] - ( width / 2 ), c[ 2 ] - 2.3, width * ( health / 100 ), 8, tocolor( 255, 0, 0, 255 ) ) 

						if armor and tonumber( armor ) > 0 then
							dxDrawRectangle( c[ 1 ] - ( width / 1.90 ), c[ 2 ] + 10, width+3, 11, tocolor( 0, 0, 0, 255 ) ) 
							dxDrawRectangle( c[ 1 ] - ( width / 2 ), c[ 2 ] + 11.3, width, 8, tocolor( 150, 150, 150, 150 ) ) 
							dxDrawRectangle( c[ 1 ] - ( width / 2 ), c[ 2 ] + 11.3, width * ( armor / 100 ), 8, tocolor( 255, 255, 255, 255 ) ) 		
						end
					end
				end
			end
		end
	end
end
)

IMÁGENES

Spoiler

PjmH2LL.jpg

oPJQJln.jpg

jcfbZbg.jpg

nrvSDOl.png

9Rhxaub.png

 

 

  • Like 2
Link to comment
  • 2 years later...

SCRIPT ERROR: NameTagRP\server.Lua:16:  "("  expected (to close "(" at line 13) near "<eof>"

ERROR: Loading script failed: NameTagRP\server.Lua:16:  "("  expected (to close "(" at line 13) near "<eof>"

Que puede ser? Es el lado server del NameTag, ayuda, necesito ese script.

Link to comment
1 hour ago, Cracker$ said:

SCRIPT ERROR: NameTagRP\server.Lua:16:  "("  expected (to close "(" at line 13) near "<eof>"

ERROR: Loading script failed: NameTagRP\server.Lua:16:  "("  expected (to close "(" at line 13) near "<eof>"

Que puede ser? Es el lado server del NameTag, ayuda, necesito ese script.

Creo que has copiado mal el código. Copiandolo como lo he puesto, funciona. Lo acabo de probar.

Link to comment
  • 2 years later...

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