17.09.2012, 20:16
No sй, pero tengo un comando que me hizo Otacon, y estб bien, y todo, estб adaptado al sistema de maleteros del GM, ya que estб muy bueno, sуlo que faltaba comando para abrir y cerrar el mismo.. El problema es que cualquiera puede abrir el maletero de cualquiera..
Creo que йsto detecta si uno es dueсo de un vehнculo:
Variables:
aOwner, : El comprador del vehнculo.
aOwned,: En 0, no tiene dueсo, en 1, lo tiene.
aCarkey,: El slot del vehнculo, hay slot 1, 2, 3, 4 y 5, es el mбximo de vehнculos por persona.
pawn Код:
if(strcmp(cmd,"/llavesmaletero", true) == 0)
{
new counter = 0;
new result;
new plyName[MAX_PLAYER_NAME];
GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, ROJO_OSCURO, " No hay ningъn vehнculo cerca tuyo !");
}
case 1:
{
if(MaleteroAbierto[result] == 0)
{
MaleteroAbierto[result] = 1;
SendClientMessage(playerid, ROJO_OSCURO, " Has abierto el maletero de tu vehнculo!");
new Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos;
GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos);
SetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, true, Objetivos);
}
else if(MaleteroAbierto[result] == 1)
{
MaleteroAbierto[result] = 0;
SendClientMessage(playerid, ROJO_OSCURO, " Has cerrado el maletero de tu vehнculo!");
new Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos;
GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos);
SetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, false, Objetivos);
}
}
default:
{
SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
}
}
return 1;
}
if(strcmp(cmd,"/maletero", true) == 0)
{
new counter = 0;
new result;
new plyName[MAX_PLAYER_NAME];
GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, ROJO_OSCURO, " No hay vehiculo cerca de ti !");
}
case 1:
{
if(MaleteroAbierto[result] == 1)
{
new buffer[512];
SendClientMessage(playerid, AMARILLO, "Maletero: ");
for(new slot = 1; slot != MAX_TRUNK_SLOTS; slot++)
{
new gunname[100];
if(vehTrunk[result][slot] != 0)
{
GetWeaponName(vehTrunk[result][slot], gunname, sizeof(gunname));
format(buffer, sizeof(buffer), " Espacio %i: %s (BALAS: %i)", slot, gunname, vehTrunkAmmo[result][slot]);
SendClientMessage(playerid, BLANCO, buffer);
}else
{
format(buffer, sizeof(buffer), " Espacio %i: Vacio (BALAS: N/A)", slot);
SendClientMessage(playerid, BLANCO, buffer);
}
}
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб cerrado!");
}
}
default:
{
SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
}
}
return 1;
}
if(strcmp(cmd,"/tomararma", true) == 0)
{
new counter = 0;
new result;
new plyName[MAX_PLAYER_NAME];
GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
if(JugadorInfo[playerid][jNivel] == 1)
{
SendClientMessage(playerid, ROJO_OSCURO, "No puedes retirar un arma siendo nivel 1!.");
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, ROJO_OSCURO, " No hay vehiculo cerca de ti !");
}
case 1:
{
if(vehTrunkCounter[result] != 0)
{
if(MaleteroAbierto[result] == 1)
{
if(MaleteroTimer[playerid] == 0)
{
new buffer[512];
new gunName[100];
EntregarArma(playerid, vehTrunk[result][vehTrunkCounter[result]], vehTrunkAmmo[result][vehTrunkCounter[result]]);
GetWeaponName(vehTrunk[result][vehTrunkCounter[result]], gunName, sizeof(gunName));
format(buffer, sizeof(buffer), "* Has tomado una %s (BALAS: %i) del Maletero del Vehiculo.", gunName, vehTrunkAmmo[result][vehTrunkCounter[result]]);
SendClientMessage(playerid, AMARILLO, buffer);
vehTrunk[result][vehTrunkCounter[result]] = '\0';
vehTrunkAmmo[result][vehTrunkCounter[result]] = '\0';
vehTrunkCounter[result]--;
GuardarMaleteros();
MaleteroTimer[playerid] = 1;
SetTimerEx("Maletero", 5000, false, "d", playerid);
format(string,sizeof(string), "* %s Toma un arma del maletero.", NombreJugador(playerid));
MandarMensajeCercano(30,playerid,string,ROSA,ROSA,ROSA,ROSA,ROSA);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " Espera 5 segundos para guardar un arma denuevo!");
return 1;
}
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб cerrado o este coche no tiene maletero!.");
return 1;
}
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб Vacio!");
return 1;
}
}
default:
{
SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
return 1;
}
}
return 1;
}
if(strcmp(cmd,"/guardararma", true) == 0)
{
new counter = 0;
new result;
new plyName[MAX_PLAYER_NAME];
GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, ROJO_OSCURO, "No hay coches cerca de ti.");
}
case 1:
{
if(vehTrunkCounter[result] != (MAX_TRUNK_SLOTS-1))
{
if(MaleteroAbierto[result] == 1)
{
if(MaleteroTimer[playerid] == 0)
{
new buffer[512];
new gunname[100];
new gunID = GetPlayerWeapon(playerid);
new gunAmmo = GetPlayerAmmo(playerid);
new plyWeapons[12];
new plyAmmo[12];
if(gunID != 0)
{
GetWeaponName(gunID, gunname, sizeof(gunname));
for(new slot = 0; slot != 12; slot++)
{
new wep, ammo;
GetPlayerWeaponData(playerid, slot, wep, ammo);
if(wep != gunID)
{
GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
}
}
vehTrunkCounter[result]++;
vehTrunk[result][vehTrunkCounter[result]] = gunID;
vehTrunkAmmo[result][vehTrunkCounter[result]] = gunAmmo;
format(buffer, sizeof(buffer), "[Maletero] Pusiste tu %s (BALAS: %i) en el Maletero del Auto.", gunname, gunAmmo);
SendClientMessage(playerid, AMARILLO, buffer);
ResetearArmas(playerid);
for(new slot = 0; slot != 12; slot++)
{
EntregarArma(playerid, plyWeapons[slot], plyAmmo[slot]);
}
MaleteroTimer[playerid] = 1;
SetTimerEx("Maletero", 5000, false, "d", playerid);
GuardarMaleteros();
format(string,sizeof(string), "* %s Guarda un arma del maletero.", NombreJugador(playerid));
MandarMensajeCercano(30,playerid,string,ROSA,ROSA,ROSA,ROSA,ROSA);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " No tienes arma para guardar!");
}
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " Espera 5 segundos para guardar un arma denuevo!");
}
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб cerrado o este coche no tiene maletero!");
}
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, " Este maletero esta lleno.");
}
}
default:
{
SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
}
}
return 1;
}
Код:
format(AutoInfo[tmpidcar][aOwner], MAX_PLAYER_NAME, "%s", cmd);
aOwner, : El comprador del vehнculo.
aOwned,: En 0, no tiene dueсo, en 1, lo tiene.
aCarkey,: El slot del vehнculo, hay slot 1, 2, 3, 4 y 5, es el mбximo de vehнculos por persona.