Array 3D -
YazukiAkira - 12.08.2014
Hola quisiera saber como crear un enum y tener arrays 3D
Yo quiero tener un array de la siguiente manera:
JugadorInfo[playerid][personajeid][string_o_int]
playerid = id del jugador.
personajeid = id del personaje (0,1 o 2).
string_o_int = puede ser un string o un numero entero.
EJ de uso:
JugadorInfo[playerid][0][Score] <- Esto deberia darme el Score del personaje 0
JugadorInfo[playerid][1][Nombre] <- Esto deberia darme el nombre del personaje 1
їComo podria hacerlo?
Edit:
Como podria hacer funcionar esto con strings tambien, solo con enteros funciona.
pawn Код:
#define MAX_PERSONAJES 3
enum pInfo
{
Nombre[50],
Score
}
new PersonajeInfo[MAX_PLAYERS][pInfo][MAX_PERSONAJES];
// Lo usuaria asi para llenarlo:
PersonajeInfo[playerid][Nombre][0] = strval("Juancito"); // El personaje 0 tiene el nombre Juancito
PersonajeInfo[playerid][Score][0] = 5;
PersonajeInfo[playerid][Nombre][1] = strval("Pepito"); // El personaje 1 tiene el nombre Pepito
Respuesta: Array 3D -
OTACON - 12.08.2014
pawn Код:
#define MAX_PERSONAJES 3
enum pInfo{
Nombre[50],
Score,
};
new PersonajeInfo[MAX_PLAYERS][MAX_PERSONAJES][pInfo]={
{ "nombre 1", (15) },
{ "nombre 2", (30) },
{ "nombre 3", (22) }
};
format(PersonajeInfo[playerid][0][Nombre],50,"%s","nombre 1");
PersonajeInfo[playerid][0][Score] = strval(15);
format(PersonajeInfo[playerid][1][Nombre],50,"%s","nombre 2");
PersonajeInfo[playerid][1][Score] = strval(30);
format(PersonajeInfo[playerid][2][Nombre],50,"%s","nombre 3");
PersonajeInfo[playerid][2][Score] = strval(22);
PersonajeInfo[playerid][0][Nombre] //resultado = nombre 1
PersonajeInfo[playerid][0][Score] //resultado = score 15
PersonajeInfo[playerid][1][Nombre] //resultado = nombre 2
PersonajeInfo[playerid][1][Score] //resultado = score 30
PersonajeInfo[playerid][2][Nombre] //resultado = nombre 3
PersonajeInfo[playerid][2][Score] //resultado = score 22
pawn Код:
#define MAX_PERSONAJES 3
new PersonajeNombre[MAX_PLAYERS][MAX_PERSONAJES][50],
PersonajeScore[MAX_PLAYERS][MAX_PERSONAJES];
format(PersonajeNombre[playerid][0],50,"%s","nombre 1");
PersonajeScore[playerid][0] = strval(15);
format(PersonajeNombre[playerid][1],50,"%s","nombre 1");
PersonajeScore[playerid][1] = strval(30);
format(PersonajeNombre[playerid][2],50,"%s","nombre 3");
PersonajeScore[playerid][2] = strval(22);
PD: strval es para entero, para caracteres es strlen.
y para guardar un texto en una variable tipo string debes de usar format.
https://sampwiki.blast.hk/wiki/Strval
https://sampwiki.blast.hk/wiki/strlen
https://sampwiki.blast.hk/wiki/format
Respuesta: Array 3D -
[J]ulian - 12.08.2014
Srtval lo que hace es convertir una cadena de texto a un entero. La funciуn que necesitas son cualquiera de las siguientes:
https://sampwiki.blast.hk/wiki/Strins
https://sampwiki.blast.hk/wiki/Strmid
O en su defecto format.
Respuesta: Array 3D -
YazukiAkira - 12.08.2014
Encontre esta este mensaje buscando arrays... La cosa es que funciona perfecto con valores float pero no lo pude hacer funcionar con valores de tipo string.
Quote:
Originally Posted by iPLEOMAX
I don't understand, why can't you use enums like that?
pawn Код:
#define MAX_MISSIONS (256) #define CARGO_TYPES (5) #define MAX_CHECKPOINTS_IN_DEST (2) #define VEHICLE_SIZES (4)
enum e_MultiCheckpoint { Float:Xpos[MAX_CHECKPOINTS_IN_DEST], Float:Ypos[MAX_CHECKPOINTS_IN_DEST], Float:Zpos[MAX_CHECKPOINTS_IN_DEST] }
enum e_Mission { bool:M_Enabled, DestUsed, Float:Destination[e_MultiCheckpoint], Name[64] }
enum e_VehicleSizes { Size_A[e_Mission], Size_B[e_Mission], Size_C[e_Mission], Size_D[e_Mission] }
new Mission [MAX_MISSIONS] [CARGO_TYPES] [e_VehicleSizes];
public OnFilterScriptInit() { Mission[0][0][Size_A][Destination][Xpos][0] = 4.5; printf("%f", Mission[0][0][Size_A][Destination][Xpos][0]); return true; }
Sorry If I misread.
|