Problema con coche -
MrNatrio - 03.09.2014
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;
Respuesta: Problema con coche -
[J]ulian - 03.09.2014
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;
}
Re: Respuesta: Problema con coche -
MrNatrio - 05.09.2014
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
Respuesta: Problema con coche -
[J]ulian - 05.09.2014
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");