A question. -
Sjn - 28.11.2015
Is it somehow possible to create a function that gets called ONCE right when a player attaches a trailer to their truck without having to set a timer to check if the truck has trailer attached or not? As well as calling it right after they detach it?
Re: A question. -
Ahmad45123 - 28.11.2015
Quote:
Originally Posted by Sjn
Is it somehow possible to create a function that gets called ONCE right when a player attaches a trailer to their truck without having to set a timer to check if the truck has trailer attached or not? As well as calling it right after they detach it?
|
There is no any callback for it so impossible..
The only way is a loop with using this
IsTrailerAttachedToVehicle
Re: A question. -
Sjn - 28.11.2015
Oh well, i knew someone would suggest me to use IsTrailerAttachedToVehicle function, but that's not what i was looking for. I know such function doesn't exist but aren't there any ways i can create it myself?
I've seen a server where the trailer light turns on when you attach a trailer and turns off when detach.
Re: A question. -
Ahmad45123 - 28.11.2015
It IS what you are looking for.... There is no any callbacks for it so you need to do what you told not to do...
Create a timer and loop through all players, Check if there is a trailer attached to their car, if yes, get it and set its lights.
Re: A question. -
Vince - 28.11.2015
Intriguing question. Something like this might work. Haven't tested it, though.
PHP код:
public OnTrailerUpdate(playerid, vehicleid)
{
// vehicleid is the id of the trailer
new playerVehicle = GetPlayerVehicleID(playerid);
if(playerVehicle)
{
static attachedTrailer[MAX_VEHICLES];
new currentTrailer = GetVehicleTrailer(playerVehicle);
if(currentTrailer == vehicleid && attachedTrailer[playerVehicle] == 0)
{
OnVehicleTrailerAttached(playerVehicle, playerid, vehicleid);
attachedTrailer[playerVehicle] = vehicleid;
}
else if(currentTrailer == 0 && attachedTrailer[playerVehicle] == vehicleid)
{
OnVehicleTrailerDetached(playerVehicle, playerid, vehicleid);
attachedTrailer[playerVehicle] = 0;
}
}
return 1;
}
OnVehicleTrailerAttached(vehicleid, playerid, trailerid)
{
printf("new trailer with id %d attached to vehicle %d, driven by %d", trailerid, vehicleid, playerid);
}
OnVehicleTrailerDetached(vehicleid, playerid, oldtrailerid)
{
printf("old trailer with id %d detached from vehicle %d, driven by %d", oldtrailerid, vehicleid, playerid);
}
Important to note is that these custom callbacks will only get called if the player that sends those updates is actually in the driver's cabine. A trailer can also be connected by pushing it but in that case this custom callback will not fire until someone actually enters the driver's cabin.
Re: A question. -
Ahmad45123 - 28.11.2015
Quote:
Originally Posted by Vince
Important to note is that these custom callbacks will only get called if the player that sends those updates is actually in the driver's cabine. A trailer can also be connected by pushing it but in that case this custom callback will not fire until someone actually enters the driver's cabin.
|
So doing it from a vehicle side would work, right ?.. Actually would be very slow and inefficient but just asking out of curiosity.
Like looping through vehicles and checking if there is a trailer attached and bla bla...
Re: A question. -
Sjn - 28.11.2015
Quote:
Originally Posted by Vince
Intriguing question. Something like this might work. Haven't tested it, though.
PHP код:
public OnTrailerUpdate(playerid, vehicleid)
{
// vehicleid is the id of the trailer
new playerVehicle = GetPlayerVehicleID(playerid);
if(playerVehicle)
{
static attachedTrailer[MAX_VEHICLES];
new currentTrailer = GetVehicleTrailer(playerVehicle);
if(currentTrailer == vehicleid && attachedTrailer[playerVehicle] == 0)
{
OnVehicleTrailerAttached(playerVehicle, playerid, vehicleid);
attachedTrailer[playerVehicle] = vehicleid;
}
else if(currentTrailer == 0 && attachedTrailer[playerVehicle] == vehicleid)
{
OnVehicleTrailerDetached(playerVehicle, playerid, vehicleid);
attachedTrailer[playerVehicle] = 0;
}
}
return 1;
}
OnVehicleTrailerAttached(vehicleid, playerid, trailerid)
{
printf("new trailer with id %d attached to vehicle %d, driven by %d", trailerid, vehicleid, playerid);
}
OnVehicleTrailerDetached(vehicleid, playerid, oldtrailerid)
{
printf("old trailer with id %d detached from vehicle %d, driven by %d", oldtrailerid, vehicleid, playerid);
}
Important to note is that these custom callbacks will only get called if the player that sends those updates is actually in the driver's cabine. A trailer can also be connected by pushing it but in that case this custom callback will not fire until someone actually enters the driver's cabin.
|
Works, but the detach function isn't getting called.
And one question, does OnTrailerUpdate also has a timer running the same way as OnPlayerUpdate? If it does, i think making it with a server sided timer wouldn't make any difference, right? Just asking.
The reason why i am trying to avoid using a timer for this is because my server already has other timer functions and i don't want to add more scripts inside it as it could cause a bit of lag.