[Aporte]Velocímetro LS-RP.es

Aprende lo que no sabes de este lenguaje y encuentra herramientas y códigos útiles.

Moderador: Ayudantes

Reglas del Foro
  • Si tu código es corto, no crees un tema nuevo para liberarlo, publica un mensaje en el tema [Funciones] ¡Publica tu código aquí!.
  • Si creas una guía, debes explicar el código claramente. Evita poner la explicación en forma de comentarios dentro del mismo y no olvides utilizar el BBCode correspondiente: [Pawn]Código aquí[/Pawn].
  • No postear códigos sin probar. Publicar códigos con errores (que impidan compilar el script para el cual está destinado) en este apartado es motivo de sanción.
  • Si tu código necesita plugins, includes u otros códigos adicionales para funcionar, debes mencionarlo en el mensaje.
  • Si has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
  • Si tu aporte es para un GameMode en específico, debes publicar el tema en el apartado "Guías y Aportes para GameModes específicos".
Responder
Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

03 Dic 2017 03:17

Sí, el titulo tiene mas clickbait que un vídeo de YouTube. Pero si todo el mundo lo hace... why not me?

Hola, -hi
Imagen

Vengo a presentar un velocímetro que lleva incluido un código apto para usarse con un sistema propio de gasolina.

Historia de este código:
El velocímetro esta basado en uno que vi hace mucho tiempo en el conocido servidor LS-RP.es, cumple con las características estéticas y con similitudes a la hora de los timers utilizados.

La verdad de la milanesa es que es un código muy básico, sin mencionar que lo de la gasolina es del código propio de ZenonCity. Pero mucha gente tiene pereza de hacerlo y bueno, lo tenia en el baúl de recuerdos como "Mi primer TextDraw", así que... ¿porque no compartir mi recuerdo?.

Para usarlo, obviamente, necesitaremos la librería del SA-MP(a_samp).

Código:
Gasolina+Velocimetro:
Spoiler:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

new Text:Velocimetro[MAX_PLAYERS];//Arriba de todo, pero abajo del include "a_samp".
new VehicleFuel[MAX_VEHICLES] = 100;//Arriba de todo, pero abajo del include "a_samp".
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnPlayerStateChange.
	if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
	{
	    TextDrawShowForPlayer(playerid, Velocimetro[playerid]);
	}
	if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
	{
	    TextDrawHideForPlayer(playerid, Velocimetro[playerid]);
	}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnGameModeExit, yo lo pongo para eliminar el TextDraw si cambio de gamemode... si no cambias el gamemode manteniendo el servidor abierto, no es necesario que pongas esto.
	for(new i = 0; i<MAX_PLAYERS; i++)
	{
	    TextDrawHideForAll(Velocimetro[i]);
	    TextDrawDestroy(Velocimetro[i]);
	}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnGameModeInit
	SetTimer("SpeedoUpdate", 1000, 1);
	SetTimer("GasolinaUpdate", 50000, 1);
	for(new i = 0; i<MAX_PLAYERS; i++)
	{

		Velocimetro[i] = TextDrawCreate(212.313903, 384.999969, "Hola, soy un velocimetro y esto no sirve porque despues me van a cambiar.");
		TextDrawLetterSize(Velocimetro[i], 0.535269, 1.308334);
		TextDrawAlignment(Velocimetro[i], 1);
		TextDrawColor(Velocimetro[i], -1);
		TextDrawSetShadow(Velocimetro[i], 0);
		TextDrawSetOutline(Velocimetro[i], 1);
		TextDrawBackgroundColor(Velocimetro[i], 255);
		TextDrawFont(Velocimetro[i], 3);
		TextDrawSetProportional(Velocimetro[i], 1);
	}
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnPlayerEnterVehicle
	if(VehicleFuel[vehicleid] <= 0)
	{
	    GameTextForPlayer(playerid, "~R~MOTOR APAGADO", 2000, 4);
	    new lights,alarm,doors,bonnet,boot,objective;
	    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
	}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En donde quieras. Pero debajo de "a_samp" y del anterior new.
forward SpeedoUpdate();
public SpeedoUpdate()
{
        for(new i = 0; i<MAX_PLAYERS; i++)
        {
                new veh = GetPlayerVehicleID(i);
                new Float:fCurrentSpeed = player_get_speed(i);
                new velocity[128];
                format(velocity, 128,"        km/h:~w~ %.0f~n~~r~   gasolina:~w~ %d / 100", fCurrentSpeed, VehicleFuel[veh]);
                TextDrawSetString(Velocimetro[i], velocity);

        }
        return 1;
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
forward GasolinaUpdate();
public GasolinaUpdate()
{
    new engine,lights,alarm,doors,bonnet,boot,objective;
	for(new v = 0; v < MAX_VEHICLES; v++)
	{
		GetVehicleParamsEx(v,engine,lights,alarm,doors,bonnet,boot,objective);
		if(engine == VEHICLE_PARAMS_ON)
		{
			if(VehicleFuel[v] > 0 )
			{
				VehicleFuel[v]-=1;
				if(VehicleFuel[v] <= 0) SetVehicleParamsEx(v,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
			}
		}
	}
	return 1;
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//Arriba de los dos últimos timers.
Float: player_get_speed(playerid)//Creo que es de ZenonCity esto... creditos a sus autores.
{
	new
		Float: Floats[3];

	GetVehicleVelocity(GetPlayerVehicleID(playerid), Floats[0], Floats[1], Floats[2]);
	return floatsqroot(Floats[0] * Floats[0] + Floats[1] * Floats[1] + Floats[2] * Floats[2]) * 150;
}
  Cantidad de llaves: Abiertas(12)-Cerradas(13) | Lineas Totales: 90
Gasolina:
Spoiler:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

new VehicleFuel[MAX_VEHICLES] = 100;//Arriba de todo, pero abajo del include "a_samp".
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnGameModeInit
	SetTimer("GasolinaUpdate", 50000, 1);
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnPlayerEnterVehicle
	if(VehicleFuel[vehicleid] <= 0)
	{
	    GameTextForPlayer(playerid, "~R~MOTOR APAGADO", 2000, 4);
	    new lights,alarm,doors,bonnet,boot,objective;
	    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
	}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
forward GasolinaUpdate();
public GasolinaUpdate()
{
    new engine,lights,alarm,doors,bonnet,boot,objective;
	for(new v = 0; v < MAX_VEHICLES; v++)
	{
		GetVehicleParamsEx(v,engine,lights,alarm,doors,bonnet,boot,objective);
		if(engine == VEHICLE_PARAMS_ON)
		{
			if(VehicleFuel[v] > 0 )
			{
				VehicleFuel[v]-=1;
				if(VehicleFuel[v] <= 0) SetVehicleParamsEx(v,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
			}
		}
	}
	return 1;
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 31
Velocimetro(TextDraw + Código de update):-
Spoiler:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

new Text:Velocimetro[MAX_PLAYERS];//Arriba de todo, pero abajo del include "a_samp".
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnPlayerStateChange.
	if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
	{
	    TextDrawShowForPlayer(playerid, Velocimetro[playerid]);
	}
	if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
	{
	    TextDrawHideForPlayer(playerid, Velocimetro[playerid]);
	}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnGameModeExit, yo lo pongo para eliminar el TextDraw si cambio de gamemode... si no cambias el gamemode manteniendo el servidor abierto, no es necesario que pongas esto.
	for(new i = 0; i<MAX_PLAYERS; i++)
	{
	    TextDrawHideForAll(Velocimetro[i]);
	    TextDrawDestroy(Velocimetro[i]);
	}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En OnGameModeInit
	SetTimer("SpeedoUpdate", 1000, 1);
	for(new i = 0; i<MAX_PLAYERS; i++)
	{

		Velocimetro[i] = TextDrawCreate(212.313903, 384.999969, "Hola, soy un velocimetro y esto no sirve porque despues me van a cambiar.");
		TextDrawLetterSize(Velocimetro[i], 0.535269, 1.308334);
		TextDrawAlignment(Velocimetro[i], 1);
		TextDrawColor(Velocimetro[i], -1);
		TextDrawSetShadow(Velocimetro[i], 0);
		TextDrawSetOutline(Velocimetro[i], 1);
		TextDrawBackgroundColor(Velocimetro[i], 255);
		TextDrawFont(Velocimetro[i], 3);
		TextDrawSetProportional(Velocimetro[i], 1);
	}
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//En donde quieras. Pero debajo de "a_samp" y del anterior new.
forward SpeedoUpdate();
public SpeedoUpdate()
{
        for(new i = 0; i<MAX_PLAYERS; i++)
        {
                new veh = GetPlayerVehicleID(i);
                new Float:fCurrentSpeed = player_get_speed(i);
                new velocity[128];
                format(velocity, 128,"        km/h:~w~ %.0f~n~~r~   gasolina:~w~ %d / 100", fCurrentSpeed, VehicleFuel[veh]);
                TextDrawSetString(Velocimetro[i], velocity);

        }
        return 1;
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
//Arriba de los dos últimos timers.
Float: player_get_speed(playerid)//Creo que es de ZenonCity esto... creditos a sus autores.
{
	new
		Float: Floats[3];

	GetVehicleVelocity(GetPlayerVehicleID(playerid), Floats[0], Floats[1], Floats[2]);
	return floatsqroot(Floats[0] * Floats[0] + Floats[1] * Floats[1] + Floats[2] * Floats[2]) * 150;
}
  Cantidad de llaves: Abiertas(7)-Cerradas(8) | Lineas Totales: 61
Notas:
-El máximo de gasolina es de 100.
-La gasolina disminuye un punto cada 50 segundos.
-No incluye forma de rellenar la gasolina. Modifican la variable "VehicleFuel[vehicleid]" y listo. Sean creativos, hasta un simple comando basta...
-Todos los vehículos van a aparecer con 0 muchas veces... es porque tienen que guardar el valor y cargarlo de alguna forma para cada vehículo.
-Se puede optimizar mucho mas.
-Se recomienda usar ObtenerVelocidad para otras funciones que se manejen con la velocidad del vehículo. Para no confundir al usuario con valores diferentes.

Creditos:
Idea: LS-RP.es
TextDraw: Yo. Gracias a los editores In-Game de TextDraws(no recuerdo cual use...)
Código ajeno al TextDraw: ZenonCity y su equipo de desarrollo.(Variable de gasolina, idea de como disminuirla, todo menos el código general ya que lo retoque un poco...)

No lo revise In-Game, pero debería andar correctamente.

Saludos, -bye
/MH
Spoiler:
Si te gusto, ya sabes que podes hacer

Última edición por MattHudson el 05 Dic 2017 15:55, editado 4 veces en total.
Avatar de Usuario
Miwi
Baneado
Baneado
Mensajes: 502
Registrado: 02 Nov 2016 17:54
Ubicación: nicaragua
Contactar:
Reputación: 55

03 Dic 2017 14:13

-shock Hermoso simple, con colores suabes y agradables +1
Aportes y Liberaciones de script

[GM] Whaler Streep 1.8 viewtopic.php?f=41&t=23746
[FS] /emisoras con posibilidad de transmitir en vivo viewtopic.php?f=81&t=23747
[GM] Whaler Streep version final viewtopic.php?f=41&t=24317
[Aporte] /duda en dialogos viewtopic.php?f=40&t=22784
[Aporte] /vendertodas viewtopic.php?f=40&t=24331
[Aporte-Guía] Sistema de armas en el cuerpo viewtopic.php?f=40&t=24580
[GM] New States viewtopic.php?f=41&t=24645
[Aporte] Despendedora sistema único viewtopic.php?f=40&t=24660
[Aporte] /computadora para LSPD viewtopic.php?f=40&t=24789
[Aporte] Anti-Cbug Avanzado viewtopic.php?f=40&t=24839
[Guía] Explicación [TAG] En las variables viewtopic.php?f=40&t=25156
[Gamemode] Zombie vs Humanos Version Miwi viewtopic.php?f=41&t=25411&p=128322#p128322
[Guía] Alterar distancia de cargado de objetos streamer viewtopic.php?f=40&t=25970
[Guía] Actualizar seguridad y activar el corta fuegos VPS Linux viewtopic.php?f=40&t=26572
[Guía] Permitir el transito de datos en tu VPS Linux Ubuntu viewtopic.php?f=40&t=26595


NahuelFf
Baneado
Baneado
Mensajes: 31
Registrado: 01 Nov 2017 17:36
Reputación: 0

03 Dic 2017 15:27

Miwi escribió:
03 Dic 2017 14:13
-shock Hermoso simple, con colores suabes y agradables +1
Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

03 Dic 2017 16:21

Hola, -hi


Miwi escribió: -shock Hermoso simple, con colores suabes y agradables +1
NahuelFf escribió:
Miwi escribió:
03 Dic 2017 14:13
-shock Hermoso simple, con colores suabes y agradables +1
Gracias a ambos, es algo ya visto así que no tiene mucho de especial. Como dije en los créditos, el merito de la idea se lo llevan los autores de LS-RP.es. Yo solo hice un código de 6 lineas jej.


Saludos, -bye
/MH
Avatar de Usuario
Alfon
Baneado
Baneado
Mensajes: 693
Registrado: 17 Ene 2016 18:39
Ubicación: YOVIVOENALGUNAPARTEDEESTE INSIGNIFICANTEMUNDOLLENODE RARITOSYANORMALES PERONOPASANADACARNAL YOLOSAMO
Reputación: 24

05 Dic 2017 05:40

Miwi escribió:
03 Dic 2017 14:13
-shock Hermoso simple, con colores suabes y agradables +1

-shock -shock es suaves no suabes -shock -grin

Sobre el textdraw, uff joder -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock que pro -nosweat sigue así we que me encantan tus aportes y guías
Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

05 Dic 2017 21:42

Alfon escribió:
05 Dic 2017 05:40
Sobre el textdraw, uff joder -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock -shock que pro -nosweat sigue así we que me encantan tus aportes y guías
-thanks

Tema editado
Separado el código en tres instancias diferentes

MaxiBerni
Aprendiz
Aprendiz
Mensajes: 86
Registrado: 22 Nov 2015 12:01
Reputación: 7

06 Dic 2017 13:14

Buen día!!
Avatar de Usuario
gless
Avanzado
Avanzado
Mensajes: 448
Registrado: 22 Oct 2017 04:10
Ubicación: Soy de una casa versátil.
Reputación: 28

06 Dic 2017 13:43

Me gusto hudson...
Buen aporte.
Productor músical
Programador
Editor Gráfico
Compositor
Cantante
Editor Audiovisual
AMX Booster
Mastering
Webmaster
Scripter
Y odioso, jeje..

Perdí mi facebook, cualquier problema hablarme por privado..

Liberaciones y aportes qué recuerdo.....

[AFK System Pause]: Ir a el sistema
[Pawno y sus funciones] [GUÍA]: Ir a la guía
[Include easyDialog]: Ir a la librería
Tunear vehículo vía comando]: Ir a el sistema
Include foreach: Ir a la librería
Declaraciones ¡RECOMENDADO!: Ir a la guía
Depuraciones y crasheos ¡RECOMENDADO! Ir a la guía
Ordenador policial para OZ: Ir al aporte
Cambiar personaje cómo GTA V: Ir al filterscript
Gamemode Stories of Sa: Ir al gamemode
Mensajes aleatorios: Ir al aporte
Sistema de administración BÁSICO: Ir a el sistema
Modifica tu servidor desde un comando: Ir al aporte
Mapa VC Para GTA.. Ir al aporte

"Pensemos en la modalidad de ayudar al prójimo y no en la competencia.."


Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

06 Dic 2017 18:46

gless escribió:
06 Dic 2017 13:43
Me gusto hudson...
Buen aporte.
-thanks

Agregado una nueva nota del código

Avatar de Usuario
Strikeskp
Aprendiz
Aprendiz
Mensajes: 117
Registrado: 18 Jul 2015 19:26
Reputación: 1

28 Dic 2017 11:25

¿Por qué me aparece el text cuando me conecto? xdd Es decir, me aparece el text debajo en el medio sin estar en un auto, la gasolina me aparece 200/100.
Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

28 Dic 2017 13:00

Strikeskp escribió:
28 Dic 2017 11:25
¿Por qué me aparece el text cuando me conecto? xdd Es decir, me aparece el text debajo en el medio sin estar en un auto, la gasolina me aparece 200/100.
Hola Strike, -hi

Recuerda colocar las funciones para mostrar y ocultar los textdraws cuando el jugador no este en un vehículo.

Saludos, -bye
/MH
Avatar de Usuario
Seth V.
Aprendiz
Aprendiz
Mensajes: 230
Registrado: 18 Jul 2014 17:36
Reputación: 4

28 Dic 2017 19:49

Buen Aporte!

Aunque nunca eh jugado ese servidor..
Imagen

Spoiler:

Imagen Grupo Facebook. Imagen Web. Imagen Post Pawno.

Responder