16.01.2015, 23:10
Example (can be done better):
prints
pawn Код:
// Get value from "m_arr"
#define g_mArr(%0,%1) (MEM_get_val(m_arr,(m_arr_w*(%0))+(%1)))
// Set value at "m_arr"
#define s_mArr(%0,%1,%2) (MEM_set_val(m_arr,(m_arr_w*(%0))+(%1)),(%2))
// Declarations
new Pointer:m_arr = Pointer:NULL;
new m_arr_h, m_arr_w;
// set "m_arr_h" and "m_arr_w" any number you like (except negative values!)
// Initialize somewhere (example OnGameModeInit())
m_arr = MEM::calloc(m_arr_w*m_arr_h);
if(m_arr)
{
// Check, if valid
}
// ...
// Free after not used anymore (example OnGameModeExit())
MEM::free(m_arr);
pawn Код:
// Init
m_arr_h = 20;
m_arr_w = 50;
m_arr = MEM::calloc(m_arr_h*m_arr_w);
if(m_arr)
{
// Check, if valid
}
// ...
// Set at index 19*50+47, also called [19][47] "100"
s_mArr(19, 47, 100);
// Set at index 19*50+48, also called [19][48] "200"
s_mArr(19, 48, 200);
// Set at index 19*50+49, also called [19][49] "300"
s_mArr(19, 49, 300);
new i = 19, j = 47;
printf("[%d][%d]: %d", i, j, g_mArr(i, j));
j++;
printf("[%d][%d]: %d", i, j, g_mArr(i, j));
j++;
printf("[%d][%d]: %d", i, j, g_mArr(i, j));
//...
// somewhere else...
// End
MEM::free(m_arr);
Код:
[19][47]: 100 [19][48]: 200 [19][49]: 300