No hagan return de array en funciones

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
Graber
Junior
Junior
Mensajes: 194
Registrado: 10 Abr 2016 19:16
Contactar:
Reputación: 22

19 Jun 2018 07:57

Hola, hay funciones que retornan arrays como se ve aqui:
 Codigo Pawno:
1
2
3
4
5
6
7

stock UserPath(playerid)
{
    new str[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(str,sizeof(str),Path,name);
    return str;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Esto es malo ya que en ciertas ocasiones como se explica aqui puede causar errores en el código que hagan que la ejecución de vuestras funciones pare enseguida sin terminar.

Y como hacemos entonces si no podemos retornar arrays? Fácil:
Pasando vuestros arrays por referencia y editandolos directamente es la alternativa mas viable y lo mas importante:, segura:
 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

stock UserPath(playerid, array[], size = sizeof array)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    
	format(array, size, Path, name); //referencia
	
	return 1;
}

//alguna funcion en la que debais usar UserPath
Funcion(playerid)
{
	new string[123];
	UserPath(playerid, string);

	// string sera el array modificado con el valor que UserPath
	// le habra dado, lo podremos usar ahora en otra funcion:

	if(INI_Exist(string))
	{
		// blablabla, aunque, ¿quien usa .ini hoy en dia?
	}
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 24
Hay que deshacernos de las técnicas inseguras de hace 10 años, esta es una buena manera de empezar.
Imagen

No doy soporte por privado y no estoy disponible para ningún trabajo/proyecto/lo que sea. Eviten MPs de ese tema

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

19 Jun 2018 08:51

En lo personal, no tenia ni idea de este bug.
Muy buen aporte.


PD: ¿Para cuando el tutorial de instalación de sampctl en español -nosweat ?
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
Graber
Junior
Junior
Mensajes: 194
Registrado: 10 Abr 2016 19:16
Contactar:
Reputación: 22

19 Jun 2018 11:04

#Fede escribió:
19 Jun 2018 08:51
En lo personal, no tenia ni idea de este bug.
Muy buen aporte.


PD: ¿Para cuando el tutorial de instalación de sampctl en español -nosweat ?
Estoy en eso, tendría que traducir la wiki entera tambien, pero sampctl es una herramienta muy poderosa
Imagen

No doy soporte por privado y no estoy disponible para ningún trabajo/proyecto/lo que sea. Eviten MPs de ese tema

Avatar de Usuario
gloweryt
Junior
Junior
Mensajes: 191
Registrado: 16 May 2017 11:42
Reputación: 11

19 Jun 2018 13:55

Graber escribió:
19 Jun 2018 11:04
#Fede escribió:
19 Jun 2018 08:51
En lo personal, no tenia ni idea de este bug.
Muy buen aporte.


PD: ¿Para cuando el tutorial de instalación de sampctl en español -nosweat ?
Estoy en eso, tendría que traducir la wiki entera tambien, pero sampctl es una herramienta muy poderosa
Estaré esperando con ansias ver tal herramienta, por cierto tampoco tenía idea de tal bug... Gracias
No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo

-Ley Mosher de Ingeniería de Software

Mis aportes (hasta el momento):

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

18 Ago 2018 18:51

No tenía idea de ésto, siempre lo utilizaba y nunca me dio problemas para nada, cómo es que no pude enterarme antes.

Gracias por el dato, lo voy a aplicar ya mismo.
Felipe Blanco
Aprendiz
Aprendiz
Mensajes: 1108
Registrado: 26 Jul 2014 21:57
Ubicación: Córdoba, Argentina
Reputación: 9

25 Ago 2018 00:02

Pero no tendría sentido entonces, por que para eso usamos GetPlayerName en vez de la función que reemplazaría eso jaja
Avatar de Usuario
Kalex
Senior
Senior
Mensajes: 1179
Registrado: 10 Jun 2014 16:57
Ubicación: Ecuador, La Florida
Contactar:
Reputación: 52

25 Ago 2018 10:20

Eso podría explicar porque de la nada se me borra una que otra nota de datos del servidor, gracias por el aporte :)

» Kalex VH - Cuarentena [Supervivencia]
.:: Aquí estoy, con la sonrisa fingida que me dejó tu partida ::.
Copyright © Todos los Derechos reservados


Avatar de Usuario
Zack
Baneado
Baneado
Mensajes: 200
Registrado: 22 Ago 2018 11:09
Reputación: 19

25 Ago 2018 11:33

Buen aporte. -hi
Adiós.

Avatar de Usuario
Kemula
Junior
Junior
Mensajes: 207
Registrado: 25 Ago 2015 09:36
Ubicación: España.
Reputación: 14

26 Ago 2018 04:16

Vaya... No tenía ni idea de esto.

Gracias por la lectura -clapping .
Responder