[Funciones] ¡Publica tu código aquí!

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
Blezi
Aprendiz
Aprendiz
Mensajes: 18
Registrado: 27 Nov 2018 00:24
Ubicación: V774104
Contactar:
Reputación: 3

29 Nov 2018 03:17

DarkFireYT escribió:
27 Nov 2018 22:03
La verdad es muy simple :P
 Codigo Pawno:
1
2
3
4
5
6

stock Esperar(time)
{
    new stamp = tickcount();
    while (tickcount() - stamp < time){}
    return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 6
En un comando por ejemplo de ban podrías poner esto en vez de un settimer o settimerex
 Codigo Pawno:
1

Esperar(1000); // 1 segundo
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
que hace esto?
hace un tiempo de "espera" entre acciones:
un ejemplo seria :
Si tengo un sendclientmessage y despues un Esperar, la accion que sigue tendría un pequeño retraso antes de producirse (el retraso en milisegundos de Esperar)
Esto funciona como tú lo haz dicho pero, no mencionas que esto congela completamente el servidor, por lo que cuando esta función se ejecute (por ejemplo; al prohibir a un jugador, cargar un mapa, etc) los comandos, los timers, todo lo del servidor será congelado y no funcionarán hasta que termine de ejecutarse esa función.
Yasef99
Aprendiz
Aprendiz
Mensajes: 158
Registrado: 11 Dic 2015 01:31
Ubicación: México
Reputación: 5

09 Feb 2019 18:17

¿Qué tal colegas? Les dejaré por acá una función que les ahorrará posiblemente tiempo a la hora de enviar mensajes dentro de su servidor. se trata de "SendClientMessageEx" el cual lo pueden emplear de la siguiente forma:
 Codigo Pawno:
1

SendClientMessageEx(playerid, COLOR, MENSAJE, VARIABLES);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Por ejemplo:
 Codigo Pawno:
1

SendClientMessageEx(playerid, -1, "Hola %s, bienvenido a %s", PlayerName(playerid), ServerName); //Cabe destacar que PlayerName(), ServerName() son variables de mi servidor, pueden agregar las que ustedes requieran.
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Con esta función se evitarán el típico:
 Codigo Pawno:
1
2
3

new string[160];
format(string, sizeof(string), "Hola %s, Bienvenido a %s", PlayerName(playerid), SeverName);
SendClientMessage(playerid, -1, string);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
Es decir, nos evitamos 3 lineas de código ademas de estar creando variables que nos consuman memoria, por eso, les doy esta función, que deben añadir en la sección de "stocks" de su servidor.
 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

stock SendClientMessageEx(playerid, color, const text[], {Float, _}:...)
{
	static
	    args,
	    str[144];

	if ((args = numargs()) == 3)
	{
	    SendClientMessage(playerid, color, text);
	}
	else
	{
		while (--args >= 3)
		{
			#emit LCTRL 5
			#emit LOAD.alt args
			#emit SHL.C.alt 2
			#emit ADD.C 12
			#emit ADD
			#emit LOAD.I
			#emit PUSH.pri
		}
		#emit PUSH.S text
		#emit PUSH.C 144
		#emit PUSH.C str
		#emit PUSH.S 8
		#emit SYSREQ.C format
		#emit LCTRL 5
		#emit SCTRL 4

		SendClientMessage(playerid, color, str);

		#emit RETN
	}
	return 1;
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 36
Cualquier duda, los ayudaré por MP :)


+1 plox :3
Scripter: 40%
Mapper: 60%
WebMaster: 20%

¿Necesitas Ayuda? ¿Tienes errores en tu código?
¡Envíame MP con gusto te ayudaré!

APORTES

SendClientMessageEx https://pawnscript.com/foro/viewtopic.p ... 00#p165100
Sistema: Comida por Diálogo: https://pawnscript.com/foro/viewtopic.p ... 16#p116016

Avatar de Usuario
#Fede
Moderador Global
Moderador Global
Mensajes: 3123
Registrado: 12 Ene 2015 06:32
Ubicación: Montevideo, Uruguay.
Reputación: 75

11 Feb 2019 13:51

Yasef99 escribió:
09 Feb 2019 18:17
¿Qué tal colegas? Les dejaré por acá una función que les ahorrará posiblemente tiempo a la hora de enviar mensajes dentro de su servidor. se trata de "SendClientMessageEx" el cual lo pueden emplear de la siguiente forma:
 Codigo Pawno:
1

SendClientMessageEx(playerid, COLOR, MENSAJE, VARIABLES);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Por ejemplo:
 Codigo Pawno:
1

SendClientMessageEx(playerid, -1, "Hola %s, bienvenido a %s", PlayerName(playerid), ServerName); //Cabe destacar que PlayerName(), ServerName() son variables de mi servidor, pueden agregar las que ustedes requieran.
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Con esta función se evitarán el típico:
 Codigo Pawno:
1
2
3

new string[160];
format(string, sizeof(string), "Hola %s, Bienvenido a %s", PlayerName(playerid), SeverName);
SendClientMessage(playerid, -1, string);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
Es decir, nos evitamos 3 lineas de código ademas de estar creando variables que nos consuman memoria, por eso, les doy esta función, que deben añadir en la sección de "stocks" de su servidor.
 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

stock SendClientMessageEx(playerid, color, const text[], {Float, _}:...)
{
	static
	    args,
	    str[144];

	if ((args = numargs()) == 3)
	{
	    SendClientMessage(playerid, color, text);
	}
	else
	{
		while (--args >= 3)
		{
			#emit LCTRL 5
			#emit LOAD.alt args
			#emit SHL.C.alt 2
			#emit ADD.C 12
			#emit ADD
			#emit LOAD.I
			#emit PUSH.pri
		}
		#emit PUSH.S text
		#emit PUSH.C 144
		#emit PUSH.C str
		#emit PUSH.S 8
		#emit SYSREQ.C format
		#emit LCTRL 5
		#emit SCTRL 4

		SendClientMessage(playerid, color, str);

		#emit RETN
	}
	return 1;
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 36
Cualquier duda, los ayudaré por MP :)


+1 plox :3
Faltan los creditos correspondientes (Zeex), tambien debes decir que es mas lento que usar format y enviar el mensaje, y por ultimo; si los especificadores y los parametros no coinciden, el gamemode crashea.
Estoy fuera de SA-MP, no me envíen mensajes privados invitándome a proyectos.


scriptnoob escribió:Cada día se va mejorando el foro, nuestro objetivo es como el de una empresa:

Misión: Brindar ayuda y aportes a los usuarios.
Visión: Ser la página de mayor calidad de servicio de soporte referidos a lenguajes de programación.
Lee las reglas del foro para evitar ser sancionado




Avatar de Usuario
Alejandro44
Aprendiz
Aprendiz
Mensajes: 130
Registrado: 30 Ago 2017 07:07
Ubicación: Venezuela
Contactar:
Reputación: 6

17 Feb 2019 21:46

Bueno acá les traigo 2 comando facilisimos de hacer, es algo estúpido, pero lo traigo para las personas que lo necesitan.
 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

#define		SCM                 SendClientMessage // PONGAN SUS VARIABLES. Por ejemplo si el SendClientMessage es Mensaje solo cambienlo.

#define 	COLOR_WHITE         0xFFFFFF00

CMD:iddearmas2(playerid,params[])
{
	    SCM(playerid, COLOR_WHITE, "Usa: /armasxd [Player/ID] [ID Arma]");
	    SCM(playerid, COLOR_WHITE, "[1 Manopla] [2 Palo de Golf] [3 Porra] [4 Cuchillo] [5 Bate Baseball] [6 Pala] [7 Palo de billar] [8 Katana] [9 Motosierra]");
	    SCM(playerid, COLOR_WHITE, "[10 Consolador] [11 vibrador] [12 Vibrador/Grande] [13 vibrador/Plateado] [14 Flores] [15: Caña] [16 Granada]");
	    SCM(playerid, COLOR_WHITE, "[17 granada/Gas] [18 Molotov] [19 Vehicle Missile] [20 Hydra Flare] [21 Jetpack] [22 9mm] [23 9mm/silenciada] [24 Desert Eagle]");
	    SCM(playerid, COLOR_WHITE, "[26 Escopeta/Recortada] [27 SPAZ] [28 Micro SMG (Mac 10)] [29 MP5] [30 AK-47] [31 M4] [32 Tec9] [33 Rifle]");
	    SCM(playerid, COLOR_WHITE, "[25 Escopeta] [34 Francotirador] [35 Bazoka] [36 HS Rocket Launcher] [37Lanzallamas] [38 Minigun] [39 C4]");
	    SCM(playerid, COLOR_WHITE, "[40 Detonador] [41 Spray] [42 Extintor] [43 Camara] [44 Vision Nocturna] [45 Gafas Térmicas] [46 Paracaidas]");
	}
	return 1;
}
CMD:iddearmas(playerid,params[])
{
	    SCM(playerid, COLOR_WHITE, "[1 Manopla] [2 Palo de Golf] [3 Porra] [4 Cuchillo]");
	    SCM(playerid, COLOR_WHITE, "[5 Bate Baseball] [6 Pala] [7 Palo de billar][8 Katana]");
	    SCM(playerid, COLOR_WHITE, "[14 Flores] [16 Granada] [22 9mm] [23 9mm/silenciada] ");
	    SCM(playerid, COLOR_WHITE, "[29 MP5] [30 AK-47] [31 M4] [33 Rifle] [24 Desert Eagle]");
	    SCM(playerid, COLOR_WHITE, "[25 Escopeta][43 Camara]");
	}
	return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(4) | Lineas Totales: 27
Última edición por Alejandro44 el 18 Feb 2019 22:51, editado 1 vez en total.
Mis aportes:


TomiiJuegah
Aprendiz
Aprendiz
Mensajes: 307
Registrado: 26 Nov 2015 10:15
Ubicación: Chile
Contactar:
Reputación: 5

18 Feb 2019 14:44

Alejandro44 escribió:
17 Feb 2019 21:46
Bueno acá les traigo 2 comando facilisimos de hacer, es algo estúpido, pero lo traigo para las personas que lo necesitan.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

CMD:iddearmas2(playerid,params[])
{
	    SCM(playerid, COLOR_WHITE, "Usa: /armasxd [Player/ID] [ID Arma]");
	    SCM(playerid, COLOR_WHITE, "[1 Manopla] [2 Palo de Golf] [3 Porra] [4 Cuchillo] [5 Bate Baseball] [6 Pala] [7 Palo de billar] [8 Katana] [9 Motosierra]");
	    SCM(playerid, COLOR_WHITE, "[10 Consolador] [11 vibrador] [12 Vibrador/Grande] [13 vibrador/Plateado] [14 Flores] [15: Caña] [16 Granada]");
	    SCM(playerid, COLOR_WHITE, "[17 granada/Gas] [18 Molotov] [19 Vehicle Missile] [20 Hydra Flare] [21 Jetpack] [22 9mm] [23 9mm/silenciada] [24 Desert Eagle]");
	    SCM(playerid, COLOR_WHITE, "[26 Escopeta/Recortada] [27 SPAZ] [28 Micro SMG (Mac 10)] [29 MP5] [30 AK-47] [31 M4] [32 Tec9] [33 Rifle]");
	    SCM(playerid, COLOR_WHITE, "[25 Escopeta] [34 Francotirador] [35 Bazoka] [36 HS Rocket Launcher] [37Lanzallamas] [38 Minigun] [39 C4]");
	    SCM(playerid, COLOR_WHITE, "[40 Detonador] [41 Spray] [42 Extintor] [43 Camara] [44 Vision Nocturna] [45 Gafas Térmicas] [46 Paracaidas]");
	}
	return 1;
}
CMD:iddearmas(playerid,params[])
{
	    SCM(playerid, COLOR_WHITE, "[1 Manopla] [2 Palo de Golf] [3 Porra] [4 Cuchillo]");
	    SCM(playerid, COLOR_WHITE, "[5 Bate Baseball] [6 Pala] [7 Palo de billar][8 Katana]");
	    SCM(playerid, COLOR_WHITE, "[14 Flores] [16 Granada] [22 9mm] [23 9mm/silenciada] ");
	    SCM(playerid, COLOR_WHITE, "[29 MP5] [30 AK-47] [31 M4] [33 Rifle] [24 Desert Eagle]");
	    SCM(playerid, COLOR_WHITE, "[25 Escopeta][43 Camara]");
	}
	return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(4) | Lineas Totales: 22
Falta defenir SCM y COLOR_WHITE.
Avatar de Usuario
Alejandro44
Aprendiz
Aprendiz
Mensajes: 130
Registrado: 30 Ago 2017 07:07
Ubicación: Venezuela
Contactar:
Reputación: 6

18 Feb 2019 22:52

Listo, ¡Gracias!
Mis aportes:


TomiiJuegah
Aprendiz
Aprendiz
Mensajes: 307
Registrado: 26 Nov 2015 10:15
Ubicación: Chile
Contactar:
Reputación: 5

24 Feb 2019 13:12

ALTCMDS: Consiste en comandos alternativos, ejemplo de uso:
ALTCMD:bal->baltica;

Código:
 Codigo Pawno:
1
2
3
4

#define ALTCMD:%1->%2;           \
CMD:%1(playerid, params[])   \
return cmd_%2(playerid, params);
// (Uso: ALTCM:bal->baltica;)
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 4
Créditos: una gm gringa, revside.
Avatar de Usuario
#Fede
Moderador Global
Moderador Global
Mensajes: 3123
Registrado: 12 Ene 2015 06:32
Ubicación: Montevideo, Uruguay.
Reputación: 75

27 Feb 2019 08:06

 Codigo Pawno:
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455

void:va_strcat(dest[], maxlength, const source[], GLOBAL_TAG_TYPES:...)
{
	if(maxlength < YSI_MAX_STRING)
	{
		format([email protected], sizeof ([email protected]), source, ___(3));
		strcat(dest, [email protected], maxlength);
	} else {
		new _str[1024];
		format(_str, sizeof (_str), source, ___(3));
		strcat(dest, _str, maxlength);
	}
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 12
Requerido: y_va (Al menos YSI 4.x, testeado en YSi 5.x).
Estoy fuera de SA-MP, no me envíen mensajes privados invitándome a proyectos.


scriptnoob escribió:Cada día se va mejorando el foro, nuestro objetivo es como el de una empresa:

Misión: Brindar ayuda y aportes a los usuarios.
Visión: Ser la página de mayor calidad de servicio de soporte referidos a lenguajes de programación.
Lee las reglas del foro para evitar ser sancionado




Responder