• Announcements

    • jhxp

      Forums are online again after a maintenance.   18/03/17

      MTA Forums maintenance is completed, although some automatic time-heavy tasks are still in process and will be finished eventually in background. Expect some features such as Forum Search to not display all results until all processes are finished. Please let us know if you spot a forum feature that worked correctly before the maintenance but does not work anymore now. Thanks. --MTA Team
    • jhxp

      Multi Theft Auto: San Andreas 1.5.4 is out!   21/04/17

      Click the link in the announcement for more details.  

aka Blue

Members
  • Content count

    1,946
  • Joined

  • Last visited

Community Reputation

50 Popular

7 Followers

About aka Blue

  • Rank
    Jacker
  • Birthday 13/10/00

Details

  • Gang
    $k
  • Location
    Gandia
  • Interests
    Lua, HTML, PHP and CSS

Recent Profile Visitors

1,731 profile views
  1. 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
  2. Gracias @danibayez, justamente lo que quería hacer!
  3. Buenas tardes. Estoy creando un pequeño sistema de nametags y me gustaría saber como es que podría dibujar una barra de vida usando las coordenadas que me ofrece la función getScreenFromWorldPosition Actualmente tengo ésto: local font = dxCreateFont( "Font.otf", 15 ) 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 r, g, b = getPlayerNametagColor ( p ) --local puntos = getElementData( p, "puntos" ) or 0 --local health = getElementHealth( 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") if getElementData( p, "adminduty" ) == true then dxDrawImage( c[1], c[2]+22, 20, 20, "staff.png", 0, 0, 0, tocolor( 0, 0, 0 ) ) dxDrawImage( c[1], c[2]+20, 20, 20, "staff.png", 0, 0, 0, tocolor( 255, 145, 0 ) ) end end end end --end end end ) Gracias de antemano!
  4. @Syntrax# Nice. ¿You gonna post the code?
  5. 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 )
  6. Yo creo que con el default es suficiente, aunque bueno, lo dejo a vuestra elección obviamente
  7. Si activarais de nuevo el radar seria genial. Me gusta mas ver el mapa pequeño que el grande ya que el grande quita el hud y tienes que estar abriendolo a cada rato para ver donde esta x lugar.
  8. Esta bastante bien. Lo que no entiendo es por qué habéis quitado el radar.
  9. 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 )
  10. @.:CiBeR:. Digo que provoca interferencias si no se coloca una variable antes. Y si la variable es source = source, supongo que también hará interferencia. PD: Corrígeme si me equivoco, llevo tiempo sin usar timers en mis códigos pero hace tiempo tuve un problema parecido.
  11. @.:CiBeR:. Fue lo que iba a sugerirle pero pensé que no serviría porque envias source igual De todos modos ahora que lo pienso, está en una función distinta. Eso sí... source = source no interferiría con el source del timer? Debería ser algo como player = source u otra cosa que no sea source.
  12. Es que si te fijas, al crear un setTimer, creas otra función, por lo que el source cambia. Luego te paso el código fixeado.
  13. Puedes usar tablas en vez de variables en server-side
  14. Love it! But, ¿can you explain me how to set up it? Thanks for sharing this awesome work!
  15. A mi me gustaría que se mantengan mis siguientes aportes, debido a que los puede usar mucha gente para sus proyectos y que pienso actualizar en cuanto salga de vacaciones Este último no es muy importante pero bueno, puede ser útil en algunas ocasiones. Gracias