Function/Callback that detects...
#1

Function And/Or Callback that detects the tiniest damage on a vehicle?
Reply
#2

Nope there isn't one. All callbacks are listed here
You can make it yourself though.

put this in your filterscript
pawn Code:
#include vhealth.inc
public OnFilterScriptInit()
{
  SetTimer("VehicleHCheck", 500, 1);
}
//put this callback where you want it
public OnVehicleDamage(driverid, vehicleid)
{
.....
}
in an include file call it vhealth.inc put it in pawn/include
pawn Code:
//This is in here for security, just leave as is
#if defined _vhealthcallback_Included
    #endinput
#endif
#define _vhealthcallback_Included

//have a variable for all players for their cars vehicle healths.
new Float:playerVHealth[GetMaxPlayers()];

//This is your callback, put this where you want it in your filterscript
forward OnVehicleDamage(driverid, vehicleid);

forward VehicleHCheck();
public VehicleHCheck()
{
  new Float:VHealth, vehicleid;
  for(new playerid=0; player<GetMaxPlayers();playerid++)
  {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) continue;
    vehicleid = GetPlayerVehicleID(playerid);
    GetVehicleHealth(vehicleid, VHealth);
    if(VHealth < playerVHealth[playerid])
    {
      OnVehicleDamage(playerid, vehicle);
    }
    playerVHealth[playerid] = VHealth;
  }
}
Reply
#3

Wouldnt work for what im wanting it for
Reply
#4

pawn Code:
/* not tested, but it should work*/

forward myTimer();
forward OnVehicleHealthChange(vehicleid, newhealth, oldhealth);

new
    oldVehicleHealth[MAX_VEHICLES], newVehicleHealth[MAX_VEHICLES]; // change MAX_VEHICLES to your own vehicle amount.

Float:VehicleHealth(vehicleid)
{
  new
      Float:health;
  GetVehicleHealth(vehicleid, health);
  return health;
}

public myTimer()
{
  for(new v = 1; v <= MAX_VEHICLES; v++) // change MAX_VEHICLES to your own vehicle amount or use foreach function.
  {
    newVehicleHealth[v] = floatround(VehicleHealth(v));
    if(newVehicleHealth[v] != oldVehicleHealth[v])
    {
      OnVehicleHealthChange(v, newVehicleHealth[v], oldVehicleHealth[v]);
      oldVehicleHealth[v] = newVehicleHealth[v];
    }
  }
  return true;
}

public OnVehicleHealthChange(vehicleid, newhealth, oldhealth)
{
  if(newhealth < oldhealth)
  {
    // damage..
  }
  return true;
}

// under OnGameModeInit/OnFilterScriptInit-callback.
SetTimer("myTimer", 1000, true); // every second.
Reply
#5

Quote:
Originally Posted by Don Correlli
pawn Code:
/* not tested, but it should work*/

forward myTimer();
forward OnVehicleHealthChange(vehicleid, newhealth, oldhealth);

new
    oldVehicleHealth[MAX_VEHICLES], newVehicleHealth[MAX_VEHICLES]; // change MAX_VEHICLES to your own vehicle amount.

Float:VehicleHealth(vehicleid)
{
  new
      Float:health;
  GetVehicleHealth(vehicleid, health);
  return health;
}

public myTimer()
{
  for(new v = 1; v <= MAX_VEHICLES; v++) // change MAX_VEHICLES to your own vehicle amount or use foreach function.
  {
    newVehicleHealth[v] = floatround(VehicleHealth(v));
    if(newVehicleHealth[v] != oldVehicleHealth[v])
    {
      OnVehicleHealthChange(v, newVehicleHealth[v], oldVehicleHealth[v]);
      oldVehicleHealth[v] = newVehicleHealth[v];
    }
  }
  return true;
}

public OnVehicleHealthChange(vehicleid, newhealth, oldhealth)
{
  return true;
}

// under OnGameModeInit/OnFilterScriptInit-callback.
SetTimer("myTimer", 1000, true); // every second.
Still wouldnt work for what i want it for xd
Reply
#6

Quote:
Originally Posted by Torran
Still wouldnt work for what i want it for xd
And what do you want it for?
Reply
#7

Quote:
Originally Posted by Don Correlli
Quote:
Originally Posted by Torran
Still wouldnt work for what i want it for xd
And what do you want it for?
http://forum.sa-mp.com/index.php?topic=148011.0
Reply
#8

I already gave you the correct code.
Reply
#9

Quote:
Originally Posted by Don Correlli
I already gave you the correct code.
I mean, It wouldnt work for planes, Like hitting buildings, Or rockets or something like that
Reply
#10

How about if you try it out before you post again?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)