Hey Leute,
ich möchte das man in meinem Script auch Autos von außen (sprich man muss nicht im Auo sitzen) abschließen kann.
Dafür habe ich diesen Ansatz:
ocmd:olock(playerid,params[])
{
new Float:cX,Float:cY,Float:cZ,fahrzeug;
new vID = GetPlayerVehicleID(playerid);
fahrzeug = GetNearestVehicle(playerid, 10);
GetVehiclePos(fahrzeug,cX,cY,cZ);
if(IsPlayerInRangeOfPoint(playerid,10.0,cX,cY,cZ))
{
if(FahrzeugInfo[fahrzeug][fz_ID] == vID)
{
switch(FahrzeugInfo[fahrzeug][fz_Typ])
{
case 0:
{
if(pInfo[playerid][pFraktion] == FahrzeugInfo[fahrzeug][fz_Besitzer])
{
switch(FahrzeugInfo[fahrzeug][fz_Lock])
{
case 0:
{
FahrzeugInfo[fahrzeug][fz_Lock] = 1;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vID, engine, lights, alarm, 1, bonnet, boot, objective);
TextDrawSetString(TachoTueren[playerid], "~r~Abgeschlossen");
return 1;
}
case 1:
{
FahrzeugInfo[fahrzeug][fz_Lock] = 0;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vID, engine, lights, alarm, 0, bonnet, boot, objective);
TextDrawSetString(TachoTueren[playerid], "~g~Aufgeschlossen");
return 1;
}
}
}
else
{
SCM(playerid,ROT,"Du hast keine Schlüssel!");
return 1;
}
}
case 1:
{
if(playerid == FahrzeugInfo[fahrzeug][fz_Besitzer])
{
switch(FahrzeugInfo[fahrzeug][fz_Lock])
{
case 0:
{
FahrzeugInfo[fahrzeug][fz_Lock] = 1;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vID, engine, lights, alarm, 1, bonnet, boot, objective);
TextDrawSetString(TachoTueren[playerid], "~r~Abgeschlossen");
return 1;
}
case 1:
{
FahrzeugInfo[fahrzeug][fz_Lock] = 0;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vID, engine, lights, alarm, 0, bonnet, boot, objective);
TextDrawSetString(TachoTueren[playerid], "~g~Aufgeschlossen");
return 1;
}
}
}
else
{
SCM(playerid,ROT,"Du hast keine Schlüssel!");
return 1;
}
}
default:
{
switch(FahrzeugInfo[fahrzeug][fz_Lock])
{
case 0:
{
FahrzeugInfo[fahrzeug][fz_Lock] = 1;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vID, engine, lights, alarm, 1, bonnet, boot, objective);
TextDrawSetString(TachoTueren[playerid], "~r~Abgeschlossen");
return 1;
}
case 1:
{
FahrzeugInfo[fahrzeug][fz_Lock] = 0;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vID, engine, lights, alarm, 0, bonnet, boot, objective);
TextDrawSetString(TachoTueren[playerid], "~g~Aufgeschlossen");
return 1;
}
}
}
}
}
}
SCM(playerid,ROT,"Es ist kein Fahrzeug in deiner Nähe, was dir gehört!");
return 1;
}#
Der Stock:
stock GetNearestVehicle(playerid, Float:range)
{
new Float:p_X;
new Float:p_Y;
new Float:p_Z;
new Float:Distance;
new Float:PretendentDistance = range +1;
new Pretendent;
GetPlayerPos(playerid, p_X, p_Y, p_Z);
for(new vehicleid=1; vehicleid < MAX_VEHICLES; vehicleid++)
{
Distance = GetVehicleDistanceFromPoint(vehicleid, p_X, p_Y, p_Z);
if(Distance <= range && Distance <= PretendentDistance)
{
Pretendent = vehicleid;
PretendentDistance = Distance;
}
}
return Pretendent;
}
Ich denke, dass irgendwas mit dem Srock nicht stimmt bzw. meine ganze Konstruktion irgendwie nicht aufgeht! :o
Habt ihr eine Idee?