Array 3D
#1

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
Reply
#2

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
Reply
#3

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.
Reply
#4

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)