SA-MP Forums Archive
How to check if vehicle is repaired in a X-Y-Z zone ? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: How to check if vehicle is repaired in a X-Y-Z zone ? (/showthread.php?tid=576604)



How to check if vehicle is repaired in a X-Y-Z zone ? - CaTaLinU - 05.06.2015

vehicle is going to be repaired/fixed in a zone (defined x-y-z and range) for example in Pay'n Spray , if veh=fixed return me a text message

How this can be done ?


Re: How to check if vehicle is repaired in a X-Y-Z zone ? - dusk - 05.06.2015

Well the easiest way would be using the streamer plugin. It has functions like CreteDynamicRectangle for a 2D zone and CreateDyanmicCuboid for a 3D one.


So in your case you would need a cuboid:
pawn Код:
new gPayNSpray;

public OnGameModeInit()
{
     // This will create a cube. The length of each side is 4.0
     // The  first 6 parameters are: minx, miny, minz, maxx, maxy, maxz
     gPayNSpray = CreateDynamicCuboid(-2.0, -2.0, -2.0, 2.0, 2.0, 2.0);
}
And then whenever you want to check if player is in that zone you just use IsPlayerInDynamicArea(playerid, gPayNSpray);


Re: How to check if vehicle is repaired in a X-Y-Z zone ? - CaTaLinU - 05.06.2015

Код:
Functie IsPlayerInArea(playerid, Float:minx, Float:miny, Float:maxx, Float:maxy)
{
   new Float:x, Float:y, Float:z;
   GetPlayerPos(playerid, x, y, z);
   if (x > minx && x < maxx && y > miny && y < maxy) return 1;
   return 0;
}
I can use this too but I wanna know how to make that "if(VehIsRepaired)" function ...


Re: How to check if vehicle is repaired in a X-Y-Z zone ? - Konstantinos - 05.06.2015

By setting the vehicle health to 999 when creating the vehicle and then if the player is in range the the vehicle's health is 1000, set it back to 999 and do your code.


Re: How to check if vehicle is repaired in a X-Y-Z zone ? - CaTaLinU - 05.06.2015

Ok i got it


Код:
public IsPlayerInArea(playerid, Float:minx, Float:miny, Float:maxx, Float:maxy)
{
   new Float:x, Float:y, Float:z;
   GetPlayerPos(playerid, x, y, z);
   if (x > minx && x < maxx && y > miny && y < maxy) return 1;
   return 0;
}
+

Код:
if(IsPlayerInArea(id, 1, 2, 3, 4))
{
    new Float:health;
    new veh = GetPlayerVehicleID(playerid);
    GetVehicleHealth(veh, health);
    if(health == 1000) return SendClientMessage(playerid, COLOR_RED, "FULL VEH HEALTH.");
    SetVehicleHealth(veh, 999.99);
}
But where should i add that "if..." ? in which "public.." function?


Re: How to check if vehicle is repaired in a X-Y-Z zone ? - Konstantinos - 06.06.2015

This one is mentioned in wiki: http://pastebin.com/zX96D4dA

You can modify it and use dynamic areas as dusk said, it'll probably be more efficient.


Re: How to check if vehicle is repaired in a X-Y-Z zone ? - CaTaLinU - 06.06.2015

I've got it
Step 1: SetTimerEx called IsVehAtPNS with 1milisec loading and loading and etc
Step 2: IsVehAtPNS function (forward & public) with IsPlayerInArea and range 3.0
Step 3: If playerstate==driver -> do something; else return message

Works Perfectly