[Tutorial]Como indexar [idx]
#1

Hola a todos, primero que nada un saludo hoy les traigo un tutorial. Y bueno vamos al grano

Algunas veces a ustedes al compilar les sale:

Quote:

X:\Rockstar Games\GTA San Andreas\XXXXXXXX\gamemodes\XXXXX.pwn(XXXX) : error 033: array must be indexed (variable "gMessage")

ese es el ejemplo del comando PM.

Para indexar aremos lo siguiente:

1) Para indexar hay que utilizar strtok

Si es para dcmd quedaria asi:

Ejemplo:

pawn Код:
new tmp[256], Index;
tmp = strtok(params, Index);
en strcmp quedaria asi:

Ejemplo:

Код:
new tmp[256], idx;
tmp = strtok(cmdtext, idx);
Un ejemplo del comando pm (que a mi me salia ese error)
Bueno este es el comando de PM:

pawn Код:
new cmd[256];
    new tmp[256];
    new Message[256];
    new gMessage[256];
    new pName[MAX_PLAYER_NAME+1];
    new iName[MAX_PLAYER_NAME+1];
    new idx;
   
    cmd = strtok(cmdtext, idx);

    // PM Command
    if(strcmp("/pm", cmd, true) == 0)
    {
        tmp = strtok(cmdtext,idx);
       
        if(!strlen(tmp) || strlen(tmp) > 5) {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Uso: /pm [ID] [Mensaje]");
            return 1;
        }
       
        new id = strval(tmp);
    gMessage = strrest(cmdtext,idx);
   
        if(!strlen(gMessage)) {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Uso: /pm [ID] [Mensaje]");
            return 1;
        }
       
        if(!IsPlayerConnected(id)) {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Mal jugador ID");
            return 1;
        }
       
        if(playerid != id) {
            GetPlayerName(id,iName,sizeof(iName));
            GetPlayerName(playerid,pName,sizeof(pName));
            format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
            SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
            format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
            SendClientMessage(id,PM_INCOMING_COLOR,Message);
            PlayerPlaySound(id,1085,0.0,0.0,0.0);
           
            printf("PM: %s",Message);
           
        }
        else {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"No puede Enviarse Pm a Usted Mismo");
        }
        return 1;
    }
Entonces como sale este error:

Quote:

X:\Rockstar Games\GTA San Andreas\XXXXXXXX\gamemodes\XXXXX.pwn(XXXX) : error 033: array must be indexed (variable "gMessage")

Aqui cambiaremos lo siguiente:

pawn Код:
new cmd[256];
    new tmp[256];
    new Message[256];
    new gMessage[256], idx; // Aqui le agregamos la idx
    new pName[MAX_PLAYER_NAME+1];
    new iName[MAX_PLAYER_NAME+1];
    new idx;
   
    cmd = strtok(cmdtext, idx);

    // PM Command
    if(strcmp("/pm", cmd, true) == 0)
    {
        tmp = strtok(cmdtext,idx);
       
        if(!strlen(tmp) || strlen(tmp) > 5) {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Uso: /pm [ID] [Mensaje]");
            return 1;
        }
       
        new id = strval(tmp);
    gMessage = strrest(cmdtext,idx); // el strrest por strtok
   
        if(!strlen(gMessage)) {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Uso: /pm [ID] [Mensaje]");
            return 1;
        }
       
        if(!IsPlayerConnected(id)) {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Mal jugador ID");
            return 1;
        }
       
        if(playerid != id) {
            GetPlayerName(id,iName,sizeof(iName));
            GetPlayerName(playerid,pName,sizeof(pName));
            format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
            SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
            format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
            SendClientMessage(id,PM_INCOMING_COLOR,Message);
            PlayerPlaySound(id,1085,0.0,0.0,0.0);
           
            printf("PM: %s",Message);
           
        }
        else {
            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"No puede Enviarse Pm a Usted Mismo");
        }
        return 1;
    }
Bueno eso fue todo. Si no entendieron me mandan un pm o por msn y se los explico mejor

PD: Gracias a The_Chaoz que me explico.


Saludos
Reply


Messages In This Thread
[Tutorial]Como indexar [idx] - by Adoniiz - 17.06.2010, 21:12
Re: [Tutorial]Como indexar [idx] - by MedinaRockz - 17.06.2010, 22:47
Re: [Tutorial]Como indexar [idx] - by Adoniiz - 17.06.2010, 23:16
Re: [Tutorial]Como indexar [idx] - by ConecCionMex - 17.06.2010, 23:18
Respuesta: [Tutorial]Como indexar [idx] - by [Nikk] - 17.01.2012, 08:56
Respuesta: [Tutorial]Como indexar [idx] - by TheChaoz - 17.01.2012, 09:18
Respuesta: [Tutorial]Como indexar [idx] - by [Nikk] - 17.01.2012, 09:24
Respuesta: [Tutorial]Como indexar [idx] - by TheChaoz - 17.01.2012, 09:26
Respuesta: [Tutorial]Como indexar [idx] - by [Nikk] - 17.01.2012, 09:27

Forum Jump:


Users browsing this thread: 2 Guest(s)