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; }
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];
new tmp[vInfo]; //tmp[InformacionVehiculo_] = 0; InformacionVehiculo_[params[0]] = tmp;
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]; ._.! |
for(new i; i < sizeof(PI[]); i++) PI[playerid][P_INFO: i] = 0;
new reset[P_INFO]; PI[playerid] = reset;
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; Код:
new reset[P_INFO]; PI[playerid] = reset; |
//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
}
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. |
enum _@en@cuenta
{
algo,
algo2[24],
algo3
}
new cuenta[MAX_PLAYERS][_@en@cuenta];
//OnPlayerConnect
memset(cuenta[playerid], 0, _:_@en@cuenta);
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 Код:
|