[Solucionado] Ayuda sumarle valores a un array de 2 dimensiones
#1
Estaba leyendo este tutorial y no entendí cómo agregarle más valores a un array de 2 dimensiones. (En el tuto ya lo define al declarar el array)

Código PHP:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new g_AgregarNombre[][];

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /agregar""agregar_nombre");
}

public 
agregar_nombre(id){

    static 
name[32];
    
get_user_name(idname31);
    
    
g_AgregarNombre[][] += name// acá


Si quiero sumarle muchas variables string a un array de 2 dimensiones, que no tenga límite, cómo es?
Responder
#2
No entiendo bien a que te referís con que no tenga límite, tampoco sé mucho de programación Triste
Pero supongo que si tenés un array que guarda nombres y apellidos, nombre es una variable y el apellido otra:

Código:
g_AgregarNombre[][] += name;
g_AgregarNombre[][] += apellido;

Todavía no trabaje tanto con arreglos, me llama la atención que no se defina el slot a dónde agregar la información.
Responder
#3
El límite lo defines cuando declaras la variable. No tienes arrays dinámicas como tipo de dato primitivo en Pawn.

Código PHP:
new g_aMyArray[5][10]; // Puedes almacenar 5 strings de hasta 9 caracteres (10 - 1)

copy(g_aMyArray[0], charsmax(g_aMyArray[]), "Hola.");
copy(g_aMyArray[1], charsmax(g_aMyArray[]), " Esto");
copy(g_aMyArray[2], charsmax(g_aMyArray[]), " es");
copy(g_aMyArray[3], charsmax(g_aMyArray[]), " una");
copy(g_aMyArray[4], charsmax(g_aMyArray[]), " prueba.");

client_print(0print_chat"%s %s %s %s %s"g_aMyArray[0], g_aMyArray[1], g_aMyArray[2], g_aMyArray[3], g_aMyArray[4]); 

Si quieres arrays dinámicas (para almacenar una cantidad "sin límite" de elementos), lee este tutorial: https://forums.alliedmods.net/showthread.php?t=249602
¡Pero primero debes entender bien el funcionamiento de los arrays primitivos!
Responder
#4
(30/06/2021, 07:09 PM)Mía escribió: El límite lo defines cuando declaras la variable. No tienes arrays dinámicas como tipo de dato primitivo en Pawn.

Código PHP:
new g_aMyArray[5][10]; // Puedes almacenar 5 strings de hasta 9 caracteres (10 - 1)

copy(g_aMyArray[0], charsmax(g_aMyArray[]), "Hola.");
copy(g_aMyArray[1], charsmax(g_aMyArray[]), " Esto");
copy(g_aMyArray[2], charsmax(g_aMyArray[]), " es");
copy(g_aMyArray[3], charsmax(g_aMyArray[]), " una");
copy(g_aMyArray[4], charsmax(g_aMyArray[]), " prueba.");

client_print(0print_chat"%s %s %s %s %s"g_aMyArray[0], g_aMyArray[1], g_aMyArray[2], g_aMyArray[3], g_aMyArray[4]); 

Si quieres arrays dinámicas (para almacenar una cantidad "sin límite" de elementos), lee este tutorial: https://forums.alliedmods.net/showthread.php?t=249602
¡Pero primero debes entender bien el funcionamiento de los arrays primitivos!

Gracias, buscaba arrays dinámicas. Leyendo el tutorial que compartiste encontré que el array se debe eliminar al finalizar el plugin.

"A dynamic array must be destroyed in plugin_end with ArrayDestroy( &Array:which ) native, to free up memory."



Mi duda es, si no lo destruyo y queda "almacenado" en el plugin, cada vez que se inicie tendré el valor guardado. ¿Por qué no se usa este método en vez de guardar los datos en vault o sistemas de almacenamiento?
"para liberar memoria" -> ¿Qué memoria? ¿Cuánto es el límite?
Responder
#5
En memoria RAM, no queda almacenado indefinidamente.
Osea que, en cada cambio de mapa los valores re se reinicializan a su estado default.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)