22.08.2012, 17:10
Bueno, en mi gamemode (no el de ZC, otro) hay un sistema de maleteros de vehнculos muy buenos, pero.. estб incompleto, o sea, lo ъnico que falta es un comando para abrir y cerrar baъl.. Mientras tal comando no estй, no se podrб acceder a tales funciones. Me parece mejor crear un /llavesmaletero que al estar cerrado y pongas el comando lo abra, y al estar abierto y pongas el comando lo cierre, para no hacer dos comandos a la vez y simplificar trabajo.
A continuaciуn, algunas funciones del maletero:
A continuaciуn, algunas funciones del maletero:
pawn Код:
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;
}
if(strcmp(cmd,"/forzarmaletero", true) == 0)
{
new counter = 0;
new result;
new plyName[MAX_PLAYER_NAME];
if(JugadorInfo[playerid][jMiembro] > 2 && JugadorInfo[playerid][jMiembro] < 1 || JugadorInfo[playerid][jLider] > 2 && JugadorInfo[playerid][jLider] < 1)
{
SendClientMessage(playerid, ROJO_OSCURO, "* No eres RCSD ni USMC.");
return 1;
}
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(MaleteroAbierto[result] == 1)
{
SendClientMessage(playerid, ROJO_OSCURO, "* El maletero ya estб abierto.");
return 1;
}
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(result,engine,lights,alarm,doors,bonnet,boot,objective);
new suerte = random(6);
if(suerte == 0 || suerte == 3 || suerte == 5)
{
GetVehicleParamsEx(result,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(result,engine,lights,alarm,doors,bonnet,1,objective);
format(string, sizeof(string), "* %s intenta forzar el maletero y lo logra.", NombreJugador(playerid));
MandarMensajeCercano(30.0,playerid, string, VERDE_OSCURO,VERDE_OSCURO,VERDE_OSCURO,VERDE_OSCURO,VERDE_OSCURO);
MaleteroAbierto[result] = 1;
GuardarMaleteros();
return 1;
}
else
{
format(string, sizeof(string), "* %s intenta forzar el maletero y falla.", NombreJugador(playerid));
MandarMensajeCercano(30.0,playerid, string, ROJO_OSCURO,ROJO_OSCURO,ROJO_OSCURO,ROJO_OSCURO,ROJO_OSCURO);
MaleteroAbierto[result] = 0;
GuardarMaleteros();
}
}
}
return 1;
}