[server] Implement/match n_IsPlayerInVehicle(...)

This commit is contained in:
RD42
2024-09-18 23:37:30 +08:00
parent caf15b5742
commit 0afe0a4965
2 changed files with 28 additions and 3 deletions
+16 -2
View File
@@ -2,6 +2,17 @@
#ifndef SAMPSRV_PLAYER_H
#define SAMPSRV_PLAYER_H
#define PLAYER_STATE_NONE 0
#define PLAYER_STATE_ONFOOT 1
#define PLAYER_STATE_DRIVER 2
#define PLAYER_STATE_PASSENGER 3
#define PLAYER_STATE_EXIT_VEHICLE 4
#define PLAYER_STATE_ENTER_VEHICLE_DRIVER 5
#define PLAYER_STATE_ENTER_VEHICLE_PASSENGER 6
#define PLAYER_STATE_WASTED 7
#define PLAYER_STATE_SPAWNED 8
#define PLAYER_STATE_SPECTATING 9
#pragma pack(1)
typedef struct _PLAYER_SPAWN_INFO
{
@@ -147,7 +158,7 @@ public:
char _pad2BA5[4];
char field_2BA9;
BYTE m_byteState;
VECTOR m_vecCheckpoint;
float m_fCheckpointSize;
@@ -167,7 +178,7 @@ public:
char field_2C2F;
char field_2C30;
char field_2C31;
short field_2C32;
VEHICLEID m_VehicleID;
int field_2C34;
BOOL m_bCheckpointEnabled;
BOOL m_bRaceCheckpointEnabled;
@@ -199,6 +210,9 @@ public:
int field_2CDA;
BYTE GetState() { return m_byteState; };
void Say(unsigned char * szText, BYTE byteTextLength);
void SetSpawnInfo(PLAYER_SPAWN_INFO *pSpawn);
+12 -1
View File
@@ -977,9 +977,20 @@ static cell AMX_NATIVE_CALL n_RemovePlayerFromVehicle(AMX *amx, cell *params)
return 0;
}
// native IsPlayerInVehicle(playerid, vehicleid)
static cell AMX_NATIVE_CALL n_IsPlayerInVehicle(AMX *amx, cell *params)
{
// TODO: IsPlayerInVehicle
CPlayer* pPlayer = pNetGame->GetPlayerPool()->GetAt((PLAYERID)params[1]);
if (!pPlayer) return 0;
BYTE byteState = pPlayer->GetState();
if ((byteState == PLAYER_STATE_DRIVER) || (byteState == PLAYER_STATE_PASSENGER))
{
if (pPlayer->m_VehicleID == params[2])
{
return 1;
}
}
return 0;
}