Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: just_Sukiii poslato Oktobar 08, 2017, 13:00:46 POSLE PODNE

Naslov: Vehicle Damage ?
Poruka od: just_Sukiii poslato Oktobar 08, 2017, 13:00:46 POSLE PODNE


Koji callback da koristim da bih mogao da detektujem kad ja sa autom udarim nekog drugog ko je u autu ?
Postoji li uopste takav callback


Hvala unaprijed... :D

Naslov: Odg: Vehicle Damage ?
Poruka od: Łuk@ poslato Oktobar 08, 2017, 14:16:58 POSLE PODNE
probaj nekako sa  callbackom OnVehicleDamageStatusUpdate
Naslov: Odg: Vehicle Damage ?
Poruka od: just_Sukiii poslato Oktobar 08, 2017, 14:46:28 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=115254.msg765947#msg765947 date=1507465018]
probaj nekako sa  callbackom OnVehicleDamageStatusUpdate
Nemam neku ideju, moze li se koristiti
OnPlayerWeaponShot pa weaponid da bude WEAPON_VEHICLE tj id 49  ?
Naslov: Odg: Vehicle Damage ?
Poruka od: Łuk@ poslato Oktobar 09, 2017, 22:07:54 POSLE PODNE
Citat: just_Sukiiii poslato Oktobar 08, 2017, 14:46:28 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=115254.msg765947#msg765947 date=1507465018]
probaj nekako sa  callbackom OnVehicleDamageStatusUpdate
Nemam neku ideju, moze li se koristiti
OnPlayerWeaponShot pa weaponid da bude WEAPON_VEHICLE tj id 49  ?
Editovao sam include OnPlayerVehicleDamage od wupsa
INC>
[pawn]
#include <a_samp>


// defines
#if defined OPVD_INC
   #endinput
#endif
#define OPVD_INC

forward WhenPlayerOrVehicleDamageVehicle(playerid,vehicleid,Float:Damage);

static
      Float:OPVD_VehHealth[MAX_VEHICLES] = {1000.0, 1000.0,...},
      bool:OPVD_VehUpd[MAX_VEHICLES]={false,false,...},
      bool:OPVD_OPUP,
      bool:OPVD_OPSC;
      
      
public OnPlayerUpdate(playerid)
{
   static      PL_VehID;
   PL_VehID = GetPlayerVehicleID(playerid);
   if(PL_VehID)
   {
      static      Float:PL_VehHP;
      GetVehicleHealth(PL_VehID,PL_VehHP);
      if(OPVD_VehUpd[PL_VehID])
            OPVD_VehUpd[PL_VehID]=false;
      else
      {
         if(PL_VehHP != OPVD_VehHealth[PL_VehID] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
               CallLocalFunction("WhenPlayerOrVehicleDamageVehicle","iif",playerid,PL_VehID,(OPVD_VehHealth[PL_VehID]-PL_VehHP));
      }
      OPVD_VehHealth[PL_VehID]=PL_VehHP;
   }
   
   return (OPVD_OPUP)?CallLocalFunction("OPVD_OnPlayerUpdate","i",playerid):1;
}

#if defined _ALS_OnPlayerUpdate
   #undef OnPlayerUpdate
#else
   #define _ALS_OnPlayerUpdate
#endif

#define OnPlayerUpdate OPVD_OnPlayerUpdate
forward OPVD_OnPlayerUpdate(playerid);
// OnPlayerStateChange
public OnPlayerStateChange(playerid, newstate, oldstate)
{
   if(newstate == PLAYER_STATE_DRIVER)
      OPVD_VehUpd[GetPlayerVehicleID(playerid)]=true;
   return (OPVD_OPSC)?CallLocalFunction("OPVD_OnPlayerStateChange","iii",playerid,newstate,oldstate):1;
}
#if defined _ALS_OnPlayerStateChange
   #undef OnPlayerStateChange
#else
   #define _ALS_OnPlayerStateChange
#endif
#define OnPlayerStateChange OPVD_OnPlayerStateChange

forward OPVD_OnPlayerStateChange(playerid,newstate, oldstate);

forward OPVD_SetVehicleHealth(vehicleid,Float:health);
public OPVD_SetVehicleHealth(vehicleid,Float:health)
{
   OPVD_VehUpd[vehicleid]=true;
   return SetVehicleHealth(vehicleid, health);
}

forward OPVD_RepairVehicle(vehicleid);
public OPVD_RepairVehicle(vehicleid)
{
   OPVD_VehUpd[vehicleid]=true;
   return RepairVehicle(vehicleid);
}
#define RepairVehicle OPVD_RepairVehicle
#define SetVehicleHealth OPVD_SetVehicleHealth


#if defined FILTERSCRIPT
   // OnFilterScriptInit
   public OnFilterScriptInit()
   {
      OPVD_OPUP = (funcidx("OPVD_OnPlayerUpdate") != -1);
      OPVD_OPSC = (funcidx("OPVD_OnPlayerStateChange") != -1);
      return (funcidx("OPVD_OnFilterScriptInit") != -1)?CallLocalFunction("OPVD_OnFilterScriptInit",""):1;
   }
   #if defined _ALS_OnFilterScriptInit
      #undef OnFilterScriptInit
   #else
      #define _ALS_OnFilterScriptInit
   #endif
   #define OnFilterScriptInit OPVD_OnFilterScriptInit
   forward OPVD_OnFilterScriptInit();
#else
   // OnGameModeInit
   public OnGameModeInit()
   {
      OPVD_OPUP = (funcidx("OPVD_OnPlayerUpdate") != -1);
      OPVD_OPSC = (funcidx("OPVD_OnPlayerStateChange") != -1);
      return (funcidx("OPVD_OnGameModeInit") != -1)?CallLocalFunction("OPVD_OnGameModeInit",""):1;
   }
   #if defined _ALS_OnGameModeInit
      #undef OnGameModeInit
   #else
      #define _ALS_OnGameModeInit
   #endif
   #define OnGameModeInit OPVD_OnGameModeInit
   forward OPVD_OnGameModeInit();
#endif
// end

[/pawn]

KOD MOJ KOJI U SKRIPTU STAVIS:
[pawn]public WhenPlayerOrVehicleDamageVehicle(playerid,vehicleid,Float:Damage)
{
   new a = GetVehicleDriver(vehicleid);
   if(IsPlayerInVehicle(playerid))
   {
      if(IsPlayerInVehicle(a))
      {
         //sta da se desi
      }
   }
   return 1;
}[/pawn]

Nisam 100% siguran da li ce da radi :)
Naslov: Odg: Vehicle Damage ?
Poruka od: just_Sukiii poslato Oktobar 10, 2017, 00:30:10 PRE PODNE
Citat: Łukmember=1996][/member] link=topic=115254.msg766501#msg766501 date=1507579674]
Citat: just_Sukiiii poslato Oktobar 08, 2017, 14:46:28 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=115254.msg765947#msg765947 date=1507465018]
probaj nekako sa  callbackom OnVehicleDamageStatusUpdate
Nemam neku ideju, moze li se koristiti
OnPlayerWeaponShot pa weaponid da bude WEAPON_VEHICLE tj id 49  ?
Editovao sam include OnPlayerVehicleDamage od wupsa
INC>
[pawn]
#include <a_samp>


// defines
#if defined OPVD_INC
   #endinput
#endif
#define OPVD_INC

forward WhenPlayerOrVehicleDamageVehicle(playerid,vehicleid,Float:Damage);

static
      Float:OPVD_VehHealth[MAX_VEHICLES] = {1000.0, 1000.0,...},
      bool:OPVD_VehUpd[MAX_VEHICLES]={false,false,...},
      bool:OPVD_OPUP,
      bool:OPVD_OPSC;
      
      
public OnPlayerUpdate(playerid)
{
   static      PL_VehID;
   PL_VehID = GetPlayerVehicleID(playerid);
   if(PL_VehID)
   {
      static      Float:PL_VehHP;
      GetVehicleHealth(PL_VehID,PL_VehHP);
      if(OPVD_VehUpd[PL_VehID])
            OPVD_VehUpd[PL_VehID]=false;
      else
      {
         if(PL_VehHP != OPVD_VehHealth[PL_VehID] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
               CallLocalFunction("WhenPlayerOrVehicleDamageVehicle","iif",playerid,PL_VehID,(OPVD_VehHealth[PL_VehID]-PL_VehHP));
      }
      OPVD_VehHealth[PL_VehID]=PL_VehHP;
   }
   
   return (OPVD_OPUP)?CallLocalFunction("OPVD_OnPlayerUpdate","i",playerid):1;
}

#if defined _ALS_OnPlayerUpdate
   #undef OnPlayerUpdate
#else
   #define _ALS_OnPlayerUpdate
#endif

#define OnPlayerUpdate OPVD_OnPlayerUpdate
forward OPVD_OnPlayerUpdate(playerid);
// OnPlayerStateChange
public OnPlayerStateChange(playerid, newstate, oldstate)
{
   if(newstate == PLAYER_STATE_DRIVER)
      OPVD_VehUpd[GetPlayerVehicleID(playerid)]=true;
   return (OPVD_OPSC)?CallLocalFunction("OPVD_OnPlayerStateChange","iii",playerid,newstate,oldstate):1;
}
#if defined _ALS_OnPlayerStateChange
   #undef OnPlayerStateChange
#else
   #define _ALS_OnPlayerStateChange
#endif
#define OnPlayerStateChange OPVD_OnPlayerStateChange

forward OPVD_OnPlayerStateChange(playerid,newstate, oldstate);

forward OPVD_SetVehicleHealth(vehicleid,Float:health);
public OPVD_SetVehicleHealth(vehicleid,Float:health)
{
   OPVD_VehUpd[vehicleid]=true;
   return SetVehicleHealth(vehicleid, health);
}

forward OPVD_RepairVehicle(vehicleid);
public OPVD_RepairVehicle(vehicleid)
{
   OPVD_VehUpd[vehicleid]=true;
   return RepairVehicle(vehicleid);
}
#define RepairVehicle OPVD_RepairVehicle
#define SetVehicleHealth OPVD_SetVehicleHealth


#if defined FILTERSCRIPT
   // OnFilterScriptInit
   public OnFilterScriptInit()
   {
      OPVD_OPUP = (funcidx("OPVD_OnPlayerUpdate") != -1);
      OPVD_OPSC = (funcidx("OPVD_OnPlayerStateChange") != -1);
      return (funcidx("OPVD_OnFilterScriptInit") != -1)?CallLocalFunction("OPVD_OnFilterScriptInit",""):1;
   }
   #if defined _ALS_OnFilterScriptInit
      #undef OnFilterScriptInit
   #else
      #define _ALS_OnFilterScriptInit
   #endif
   #define OnFilterScriptInit OPVD_OnFilterScriptInit
   forward OPVD_OnFilterScriptInit();
#else
   // OnGameModeInit
   public OnGameModeInit()
   {
      OPVD_OPUP = (funcidx("OPVD_OnPlayerUpdate") != -1);
      OPVD_OPSC = (funcidx("OPVD_OnPlayerStateChange") != -1);
      return (funcidx("OPVD_OnGameModeInit") != -1)?CallLocalFunction("OPVD_OnGameModeInit",""):1;
   }
   #if defined _ALS_OnGameModeInit
      #undef OnGameModeInit
   #else
      #define _ALS_OnGameModeInit
   #endif
   #define OnGameModeInit OPVD_OnGameModeInit
   forward OPVD_OnGameModeInit();
#endif
// end

[/pawn]

KOD MOJ KOJI U SKRIPTU STAVIS:
[pawn]public WhenPlayerOrVehicleDamageVehicle(playerid,vehicleid,Float:Damage)
{
   new a = GetVehicleDriver(vehicleid);
   if(IsPlayerInVehicle(playerid))
   {
      if(IsPlayerInVehicle(a))
      {
         //sta da se desi
      }
   }
   return 1;
}[/pawn]

Nisam 100% siguran da li ce da radi :)


Eo ubacio sam sve mi se fino kompajla, al moramo cekat sutra da nabavim nego da testamo :D
Mada cini mi se da ce ovo radit, hvala ti puno na trudu <3
Naslov: Odg: Vehicle Damage ?
Poruka od: Łuk@ poslato Oktobar 10, 2017, 12:20:26 POSLE PODNE
Citat: just_Sukiiii poslato Oktobar 10, 2017, 00:30:10 PRE PODNE
Citat: Łukmember=1996][/member] link=topic=115254.msg766501#msg766501 date=1507579674]
Citat: just_Sukiiii poslato Oktobar 08, 2017, 14:46:28 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=115254.msg765947#msg765947 date=1507465018]
probaj nekako sa  callbackom OnVehicleDamageStatusUpdate
Nemam neku ideju, moze li se koristiti
OnPlayerWeaponShot pa weaponid da bude WEAPON_VEHICLE tj id 49  ?
Editovao sam include OnPlayerVehicleDamage od wupsa
INC>
[pawn]
#include <a_samp>


// defines
#if defined OPVD_INC
   #endinput
#endif
#define OPVD_INC

forward WhenPlayerOrVehicleDamageVehicle(playerid,vehicleid,Float:Damage);

static
      Float:OPVD_VehHealth[MAX_VEHICLES] = {1000.0, 1000.0,...},
      bool:OPVD_VehUpd[MAX_VEHICLES]={false,false,...},
      bool:OPVD_OPUP,
      bool:OPVD_OPSC;
      
      
public OnPlayerUpdate(playerid)
{
   static      PL_VehID;
   PL_VehID = GetPlayerVehicleID(playerid);
   if(PL_VehID)
   {
      static      Float:PL_VehHP;
      GetVehicleHealth(PL_VehID,PL_VehHP);
      if(OPVD_VehUpd[PL_VehID])
            OPVD_VehUpd[PL_VehID]=false;
      else
      {
         if(PL_VehHP != OPVD_VehHealth[PL_VehID] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
               CallLocalFunction("WhenPlayerOrVehicleDamageVehicle","iif",playerid,PL_VehID,(OPVD_VehHealth[PL_VehID]-PL_VehHP));
      }
      OPVD_VehHealth[PL_VehID]=PL_VehHP;
   }
   
   return (OPVD_OPUP)?CallLocalFunction("OPVD_OnPlayerUpdate","i",playerid):1;
}

#if defined _ALS_OnPlayerUpdate
   #undef OnPlayerUpdate
#else
   #define _ALS_OnPlayerUpdate
#endif

#define OnPlayerUpdate OPVD_OnPlayerUpdate
forward OPVD_OnPlayerUpdate(playerid);
// OnPlayerStateChange
public OnPlayerStateChange(playerid, newstate, oldstate)
{
   if(newstate == PLAYER_STATE_DRIVER)
      OPVD_VehUpd[GetPlayerVehicleID(playerid)]=true;
   return (OPVD_OPSC)?CallLocalFunction("OPVD_OnPlayerStateChange","iii",playerid,newstate,oldstate):1;
}
#if defined _ALS_OnPlayerStateChange
   #undef OnPlayerStateChange
#else
   #define _ALS_OnPlayerStateChange
#endif
#define OnPlayerStateChange OPVD_OnPlayerStateChange

forward OPVD_OnPlayerStateChange(playerid,newstate, oldstate);

forward OPVD_SetVehicleHealth(vehicleid,Float:health);
public OPVD_SetVehicleHealth(vehicleid,Float:health)
{
   OPVD_VehUpd[vehicleid]=true;
   return SetVehicleHealth(vehicleid, health);
}

forward OPVD_RepairVehicle(vehicleid);
public OPVD_RepairVehicle(vehicleid)
{
   OPVD_VehUpd[vehicleid]=true;
   return RepairVehicle(vehicleid);
}
#define RepairVehicle OPVD_RepairVehicle
#define SetVehicleHealth OPVD_SetVehicleHealth


#if defined FILTERSCRIPT
   // OnFilterScriptInit
   public OnFilterScriptInit()
   {
      OPVD_OPUP = (funcidx("OPVD_OnPlayerUpdate") != -1);
      OPVD_OPSC = (funcidx("OPVD_OnPlayerStateChange") != -1);
      return (funcidx("OPVD_OnFilterScriptInit") != -1)?CallLocalFunction("OPVD_OnFilterScriptInit",""):1;
   }
   #if defined _ALS_OnFilterScriptInit
      #undef OnFilterScriptInit
   #else
      #define _ALS_OnFilterScriptInit
   #endif
   #define OnFilterScriptInit OPVD_OnFilterScriptInit
   forward OPVD_OnFilterScriptInit();
#else
   // OnGameModeInit
   public OnGameModeInit()
   {
      OPVD_OPUP = (funcidx("OPVD_OnPlayerUpdate") != -1);
      OPVD_OPSC = (funcidx("OPVD_OnPlayerStateChange") != -1);
      return (funcidx("OPVD_OnGameModeInit") != -1)?CallLocalFunction("OPVD_OnGameModeInit",""):1;
   }
   #if defined _ALS_OnGameModeInit
      #undef OnGameModeInit
   #else
      #define _ALS_OnGameModeInit
   #endif
   #define OnGameModeInit OPVD_OnGameModeInit
   forward OPVD_OnGameModeInit();
#endif
// end

[/pawn]

KOD MOJ KOJI U SKRIPTU STAVIS:
[pawn]public WhenPlayerOrVehicleDamageVehicle(playerid,vehicleid,Float:Damage)
{
   new a = GetVehicleDriver(vehicleid);
   if(IsPlayerInVehicle(playerid))
   {
      if(IsPlayerInVehicle(a))
      {
         //sta da se desi
      }
   }
   return 1;
}[/pawn]

Nisam 100% siguran da li ce da radi :)


Eo ubacio sam sve mi se fino kompajla, al moramo cekat sutra da nabavim nego da testamo :D
Mada cini mi se da ce ovo radit, hvala ti puno na trudu <3
Nnc, samo testiraj, ako radi lockaj, ako ne, imam jos ideja kako da napravim