Problema con coche
#1

Buenas,

He hecho un sistema de abrir/cerrar las puertas del vehнculo. No me dб ningъn error pero al ejecutarlo en el juego; escribo /cerrar y las puertas se cierran y me sale un mensaje diciйndome que estбn cerradas, pero luego al escribir /abrir, no se quieren abrir pero me sale un mensaje diciйndome que estбn abriertas.

Estos son los dos comandos (abrir/cerrar):

pawn Код:
CMD:abrir(playerid,params[])
{
  new vehicleid = GetPlayerVehicleID(playerid);
  new engine,lights,alarm,doors,bonnet,boot,objective;
  if(VehicleInfo[playerid][llave] != 1) return SendClientMessage(playerid,red,"No tienes las llaves de este vehнculo");
  if(PlayerInfo[playerid][pKey] != vehicleid)
  if(!IsPlayerInRangeOfPoint(playerid,5.0,vehx,vehy,vehz)) return SendClientMessage(playerid,red,"Estбs demasiado lejos de tu coche");
  if(EstadoPuertas[vehicleid] == false)
  {
      GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
      SetVehicleParamsEx(vehicleid,engine,lights,alarm,true,bonnet,boot,objective);
      GameTextForPlayer(playerid,"~r~Puertas Desbloqueadas",1000,4);
      EstadoPuertas[vehicleid] = true;
  }
  return 1;
}
pawn Код:
CMD:cerrar(playerid,params[])
{
  new vehicleid = GetPlayerVehicleID(playerid);
  new engine,lights,alarm,doors,bonnet,boot,objective;
  if(VehicleInfo[playerid][llave] != 1) return SendClientMessage(playerid,red,"No tienes las llaves de este vehнculo");
  if(PlayerInfo[playerid][pKey] != vehicleid)
  if(!IsPlayerInRangeOfPoint(playerid,5.0,vehx,vehy,vehz)) return SendClientMessage(playerid,red,"Estбs demasiado lejos de tu coche");
  if(EstadoPuertas[vehicleid] == true)
  {
      GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
      SetVehicleParamsEx(vehicleid,engine,lights,alarm,false,bonnet,boot,objective);
      GameTextForPlayer(playerid,"~r~Puertas Bloqueadas",1000,4);
      EstadoPuertas[vehicleid] = false;
  }
  return 1;
}
Al comprar el coche, ya le dн las claves, las coordenadas del coche y puse esta variable: EstadoPuertas[vehicleid] = true;
Reply
#2

Ese cуdigo te funcionarб sуlo si estбs subido al vehнculo.

Cambia

pawn Код:
new vehicleid = GetPlayerVehicleID(playerid);
por

pawn Код:
new vehicleid = GetClosestVehicle(playerid, 5.0);
y al final aсade:

pawn Код:
stock GetClosestVehicle(playerid, Float: fRadius) // by RyDeR`
{
    new
        iClosestID = INVALID_VEHICLE_ID,
        Float: fFinalDistance,
        Float: fDistance,
        Float: fX,
        Float: fY,
        Float: fZ;
    GetPlayerPos(playerid, fX, fY, fZ);
    fFinalDistance = fRadius;
    for(new i; i != MAX_VEHICLES; i++)
    {
        if((fDistance = GetVehicleDistanceFromPoint(i, fX, fY, fZ)) < fFinalDistance)
        {
            fFinalDistance = fDistance;
            iClosestID = i;
        }
    }
    return iClosestID;
}
Reply
#3

Cuando pongo esto en el juego, hay unos bugs. Cuando pongo /abrir me sale: No tienes las llaves de este vehнculo y Estбs demasiado lejos de tu vehнculo

Cuando pongo /cerrar me sale: No tienes las llaves de este vehнculo
Reply
#4

Eso es por que tienes mal las variables, por ejemplo esto:

pawn Код:
if(VehicleInfo[playerid][llave] != 1) return SendClientMessage(playerid,red,"No tienes las llaves de este vehнculo");
if(PlayerInfo[playerid][pKey] != vehicleid)
Es difнcil decir como arreglar eso por que depende cуmo estй hecho el cуdigo entero.

Pero usando un poco de lуgica quizбs asн se te solucione:

pawn Код:
if(VehicleInfo[vehicleid][llave] != PlayerInfo[playerid][pKey]) return SendClientMessage(playerid,red,"No tienes las llaves de este vehнculo");
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)