error 033: array must be indexed
#1

Buenas, disculpen, al momento de borrar un vehнculo en vez de reiniciar las variables del coche poniendo InformacionVehiculo_[params[0]][vColor] = 0 y asн con todo quiero todo en una sola lнnea, para mantener el cуdigo lo mejor posible, me basй en este topic https://sampforum.blast.hk/showthread.php?tid=560318 y hice lo siguiente en el comando.

Код:
CMD:borrarauto(playerid, params[])
{
	if(InformacionJugador_[playerid][pAdministrador] < 0) return 0;
	if(IsPlayerDuty(playerid))
	{
		if(sscanf(params, "i", params[0])) return SendSyntaxMessage(playerid, "/borrarauto [ID]");
		if(InformacionVehiculo_[params[0]][vSQLID] != 0)
		{
			new Query[50];
			format(Query, sizeof(Query), "DELETE FROM vehiculos WHERE vSQLID = `%d`", params[0]);
			mysql_tquery(MySQL, Query), --TotalVehiculos;

			new tmp[vInfo];
				tmp[InformacionVehiculo_] = 0; 

				InformacionVehiculo_[params[0]] = tmp;

			DestroyDynamic3DTextLabel(InformacionVehiculo_[params[0]][vTexto]);
			DestroyVehicle(InformacionVehiculo_[params[0]][vSQLID]);
		}
	}
	return 1;
}
Pero me sale el error de "error 033: array must be indexed (variable "InformacionVehiculo_")" en InformacionVehiculo_[params[0]] = tmp; їA quй se debe? asн tengo el enum del vehнculo.

Код:
enum vInfo
{
	vSQLID,/* ID del Vehнculo(Base de Datos */
	vModelo,/* Modelo del Vehнculo */
	vColor[2],/* Color 1/2 del Vehнculo */
	vPrecio,/* Precio del Vehнculo */
	vMotor,/* Motor del Vehнculo(0 = Apagado / 1 = Encendido */
	vPropietario[MAX_PLAYER_NAME + 1],/* Nombre del Dueсo */
	Float:vPos[3],/* Posiciуn X/Y/Z del Vehнculo */
	Float:vAngle,/* Angle del Vehнculo */
	Float:vSpawn[3],/* Spawn del Vehнculo en Venta */
	Float:vSAngle,/* Angle del Vehнculo en Venta */
	Float:vParking[3],/* Spawn del Vehнculo de Usuario */
	Float:vPAngle,/* Angle del Vehнculo de Usuario */
	vVirtualWorld,/* Mundo del Vehнculo */
	vInterior,/* Interior del Vehнculo */
	vEstado,/* Estado del Vehнculo(0 = Comprado / 1 = En Venta) */
	vTipo,/* Tipo del Vehнculo(0 = Normal / 1 = Premium) */
	vCantidad,/* Cantidad en Venta */
	vPartes[4],/* Partes de la Carrocerнa(Daсos) */
	Float:vDamage,/* Vida del Vehнculo */
    Float:vKilometros,/* Kilуmetros del Vehнculo */
    Text3D:vTexto[MAX_VEHICLES],/* Texto en Venta */
    vMatricula[10]/* Matrнcula del Vehнculo */
};
static InformacionVehiculo_[MAX_VEHICLES][vInfo];
Reply
#2

Quita lo de tmp = ...
Reply
#3

Quote:
Originally Posted by adri1
Посмотреть сообщение
Quita lo de tmp = ...
Estando asн
Код:
			new tmp[vInfo];
				//tmp[InformacionVehiculo_] = 0;

				InformacionVehiculo_[params[0]] = tmp;
que compila bien resetea todas las variables del auto a 0 como debe de ser?
Reply
#4

Supongo que resetea las variables, yo no lo hago de esa manera pero por lo que veo si que la resetea, comprueba con un print a ver que te da.
Reply
#5


1.- Que sentido tiene declarar una variable global como estбtica??


2.- InformacionVehiculo_ se supone que es un arreglo de dos dimensiones, osea que deberнa ser algo como: "InformacionVehiculo_[valor][variable] = valor;" y lo que estas haciendo tu es tratarlo como un arreglo de 1 dimensiуn.


3.- tmp[InformacionVehiculo_] esto no tiene sentido, se supone que es un arreglo de dos dimensiones y la tratas como una variable, ademas de que estas declarando ese arreglo y asignarle un valor dinamico?? hasta donde tengo entendido, no puedes asignarle valores dinamicos a los arreglos tienen que ser constantes al compilar.


4.- new tmp[vInfo]; ._.!
Reply
#6

Quote:
Originally Posted by Parka
Посмотреть сообщение

1.- Que sentido tiene declarar una variable global como estбtica??


2.- InformacionVehiculo_ se supone que es un arreglo de dos dimensiones, osea que deberнa ser algo como: "InformacionVehiculo_[valor][variable] = valor;" y lo que estas haciendo tu es tratarlo como un arreglo de 1 dimensiуn.


3.- tmp[InformacionVehiculo_] esto no tiene sentido, se supone que es un arreglo de dos dimensiones y la tratas como una variable, ademas de que estas declarando ese arreglo y asignarle un valor dinamico?? hasta donde tengo entendido, no puedes asignarle valores dinamicos a los arreglos tienen que ser constantes al compilar.


4.- new tmp[vInfo]; ._.!
Si que es vбlido el mйtodo ese para resetear la array entera, una cosa nueva que se aprende XD
yo lo hago de esta manera:
Код:
for(new i; i < sizeof(PI[]); i++) PI[playerid][P_INFO: i] = 0;
Y tambiйn se puede hacer asн:
Код:
new reset[P_INFO];
PI[playerid] = reset;
Reply
#7

Quote:
Originally Posted by adri1
Посмотреть сообщение
Si que es vбlido el mйtodo ese para resetear la array entera, una cosa nueva que se aprende XD
yo lo hago de esta manera:
Код:
for(new i; i < sizeof(PI[]); i++) PI[playerid][P_INFO: i] = 0;
Y tambiйn se puede hacer asн:
Код:
new reset[P_INFO];
PI[playerid] = reset;
De todo lo que dije, їQue es valido desde tu punto de vista? yo uso esto:

pawn Код:
//By Slice
memset(aArray[], iValue, iSize = sizeof(aArray)){
    new
        iAddress
    ;
   
    // Store the address of the array
    #emit LOAD.S.pri 12
    #emit STOR.S.pri iAddress
   
    // Convert the size from cells to bytes
    iSize *= 4;
   
    // Loop until there is nothing more to fill
    while (iSize > 0){
        // I have to do this because the FILL instruction doesn't accept a dynamic number.
        if (iSize >= 4096){
            #emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 4096
       
            iSize    -= 4096;
            iAddress += 4096;
        } else if (iSize >= 1024){
            #emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 1024

            iSize    -= 1024;
            iAddress += 1024;
        } else if (iSize >= 256){
            #emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 256

            iSize    -= 256;
            iAddress += 256;
        } else if (iSize >= 64){
            #emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 64

            iSize    -= 64;
            iAddress += 64;
        } else if (iSize >= 16){
            #emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 16

            iSize    -= 16;
            iAddress += 16;
        } else {
            #emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 4

            iSize    -= 4;
            iAddress += 4;
        }
    }
   
    // aArray is used, just not by its symbol name
    #pragma unused aArray
}
Reply
#8

En el punto 2, no lo estб haciendo con 1 dimension, la segunda dimensiуn es la array (en este caso 'tmp'), y el punto 4 no se que te resulta tan raro, pues es completamente vбlido.

Eso que pasaste que es? usas todo eso para resetear variables? pon un ejemplo o algo porque no lo use nunca.
Reply
#9

Quote:
Originally Posted by adri1
Посмотреть сообщение
En el punto 2, no lo estб haciendo con 1 dimension, la segunda dimensiуn es la array (en este caso 'tmp'), y el punto 4 no se que te resulta tan raro, pues es completamente vбlido.

Eso que pasaste que es? usas todo eso para resetear variables? pon un ejemplo o algo porque no lo use nunca.
Asн como tu no conoces eso, yo no conocнa lo otro, no dije que estaba mal, solo coloque una carita, porque le asigno el enumerado a esa variable, nada mas.

pawn Код:
enum _@en@cuenta
{
algo,
algo2[24],
algo3
}
new cuenta[MAX_PLAYERS][_@en@cuenta];
//OnPlayerConnect
memset(cuenta[playerid], 0, _:_@en@cuenta);
Reply
#10

Quote:
Originally Posted by Parka
Посмотреть сообщение
Asн como tu no conoces eso, yo no conocнa lo otro, no dije que estaba mal, solo coloque una carita, porque le asigno el enumerado a esa variable, nada mas.

pawn Код:
enum _@en@cuenta
{
algo,
algo2[24],
algo3
}
new cuenta[MAX_PLAYERS][_@en@cuenta];
//OnPlayerConnect
memset(cuenta[playerid], 0, _:_@en@cuenta);
Pues creo que ya tienes 2 metodos arriba mбs simples.
El metodo que 'aprendн' nuevo realmente tiene su lуgica pero no se me habнa ocurrido.

Ya que creas una array con el mimo enum que la array a resetear y todo es 0, y ese la mandas a la array a resetear, se ve mбs claro con el ejemplo XD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)