mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
Implement new API changes.
Initial implementation of entity streaming events, 3D arrows, drunk effects., camera interpolation, entity options and whatnot. Not yet tested!
This commit is contained in:
parent
0b0ec9c40c
commit
7fdcf7efc0
@ -2,7 +2,7 @@
|
||||
Project: Vice City Multiplayer 0.4 Server / Plugin Kit
|
||||
File: plugin.h
|
||||
|
||||
Copyright 2011-2016 Ago Allikmaa (maxorator)
|
||||
Copyright 2011-2019 Ago Allikmaa (maxorator)
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@ -31,7 +31,7 @@ typedef struct {
|
||||
} ServerSettings;
|
||||
|
||||
#define PLUGIN_API_MAJOR 2
|
||||
#define PLUGIN_API_MINOR 0
|
||||
#define PLUGIN_API_MINOR 1
|
||||
|
||||
typedef struct {
|
||||
uint32_t structSize;
|
||||
@ -60,6 +60,8 @@ typedef enum {
|
||||
vcmpEntityPoolObject = 2,
|
||||
vcmpEntityPoolPickup = 3,
|
||||
vcmpEntityPoolRadio = 4,
|
||||
vcmpEntityPoolPlayer = 5,
|
||||
vcmpEntityReserved1 = 6,
|
||||
vcmpEntityPoolBlip = 7,
|
||||
vcmpEntityPoolCheckPoint = 8,
|
||||
forceSizeVcmpEntityPool = INT32_MAX
|
||||
@ -156,6 +158,7 @@ typedef enum {
|
||||
vcmpServerOptionWallGlitch = 19,
|
||||
vcmpServerOptionDisableBackfaceCulling = 20,
|
||||
vcmpServerOptionDisableHeliBladeDamage = 21,
|
||||
vcmpServerOptionDisableCrouch = 22,
|
||||
forceSizeVcmpServerOption = INT32_MAX
|
||||
} vcmpServerOption;
|
||||
|
||||
@ -169,7 +172,8 @@ typedef enum {
|
||||
vcmpPlayerOptionCanAttack = 6,
|
||||
vcmpPlayerOptionHasMarker = 7,
|
||||
vcmpPlayerOptionChatTagsEnabled = 8,
|
||||
vcmpPlayerOptionDrunkEffects = 9,
|
||||
vcmpPlayerOptionDrunkEffectsDeprecated = 9,
|
||||
vcmpPlayerOptionBleeding = 10,
|
||||
forceSizeVcmpPlayerOption = INT32_MAX
|
||||
} vcmpPlayerOption;
|
||||
|
||||
@ -181,6 +185,8 @@ typedef enum {
|
||||
vcmpVehicleOptionGhost = 4,
|
||||
vcmpVehicleOptionSiren = 5,
|
||||
vcmpVehicleOptionSingleUse = 6,
|
||||
vcmpVehicleOptionEngineDisabled = 7,
|
||||
vcmpVehicleOptionBootOpen = 8,
|
||||
forceSizeVcmpVehicleOption = INT32_MAX
|
||||
} vcmpVehicleOption;
|
||||
|
||||
@ -889,7 +895,8 @@ typedef struct {
|
||||
/* GetLastError: vcmpErrorNoSuchEntity */
|
||||
uint8_t (*IsObjectTouchedReportEnabled) (int32_t objectId);
|
||||
|
||||
// TODO: MOVE LATER
|
||||
/* 04rel005 SDK functions */
|
||||
/* ---------------------------------------------------------- */
|
||||
vcmpError (*GetPlayerModuleList) (int32_t playerId);
|
||||
|
||||
/* vcmpErrorNoSuchEntity, vcmpErrorArgumentOutOfBounds */
|
||||
@ -903,9 +910,35 @@ typedef struct {
|
||||
uint16_t (*GetFallTimer) (void);
|
||||
|
||||
/* vcmpErrorNoSuchEntity */
|
||||
vcmpError(*SetVehicleLightsData) (int32_t vehicleId, uint32_t lightsData);
|
||||
vcmpError (*SetVehicleLightsData) (int32_t vehicleId, uint32_t lightsData);
|
||||
/* GetLastError: vcmpErrorNoSuchEntity */
|
||||
uint32_t(*GetVehicleLightsData) (int32_t vehicleId);
|
||||
uint32_t (*GetVehicleLightsData) (int32_t vehicleId);
|
||||
|
||||
/* 04rel007 SDK functions */
|
||||
/* ---------------------------------------------------------- */
|
||||
/* vcmpErrorNoSuchEntity */
|
||||
vcmpError (*KillPlayer) (int32_t playerId);
|
||||
|
||||
/* vcmpErrorNoSuchEntity */
|
||||
vcmpError (*SetVehicle3DArrowForPlayer) (int32_t nVehicleId, int32_t nTargetPlayerId, uint8_t bEnabled);
|
||||
/* GetLastError: vcmpErrorNoSuchEntity */
|
||||
uint8_t (*GetVehicle3DArrowForPlayer) (int32_t nVehicleId, int32_t nTargetPlayerId);
|
||||
/* vcmpErrorNoSuchEntity */
|
||||
vcmpError (*SetPlayer3DArrowForPlayer) (int32_t nPlayerId, int32_t nTargetPlayerId, uint8_t bEnabled);
|
||||
/* GetLastError: vcmpErrorNoSuchEntity */
|
||||
uint8_t (*GetPlayer3DArrowForPlayer) (int32_t nPlayerId, int32_t nTargetPlayerId);
|
||||
|
||||
/* vcmpErrorNoSuchEntity */
|
||||
vcmpError (*SetPlayerDrunkHandling) (int32_t nPlayerId, uint32_t dwDrunkLevel);
|
||||
/* GetLastError: vcmpErrorNoSuchEntity */
|
||||
uint32_t (*GetPlayerDrunkHandling) (int32_t nPlayerId);
|
||||
/* vcmpErrorNoSuchEntity */
|
||||
vcmpError (*SetPlayerDrunkVisuals) (int32_t nPlayerId, uint8_t byteDrunkLevel);
|
||||
/* GetLastError: vcmpErrorNoSuchEntity */
|
||||
uint8_t (*GetPlayerDrunkVisuals) (int32_t nPlayerId);
|
||||
|
||||
/* vcmpErrorNoSuchEntity, vcmpErrorRequestDenied */
|
||||
vcmpError (*InterpolateCameraLookAt) (int32_t playerId, float lookX, float lookY, float lookZ, uint32_t dwInterpTimeMS);
|
||||
|
||||
} PluginFuncs;
|
||||
|
||||
@ -969,7 +1002,12 @@ typedef struct {
|
||||
void (*OnEntityPoolChange) (vcmpEntityPool entityType, int32_t entityId, uint8_t isDeleted);
|
||||
void (*OnServerPerformanceReport) (size_t entryCount, const char** descriptions, uint64_t* times);
|
||||
|
||||
// TODO: MOVE LATER
|
||||
void(*OnPlayerModuleList) (int32_t playerId, const char* list);
|
||||
/* 04rel005 SDK functions */
|
||||
/* ---------------------------------------------------------- */
|
||||
void (*OnPlayerModuleList) (int32_t playerId, const char* list);
|
||||
|
||||
/* 04rel007 SDK functions */
|
||||
/* ---------------------------------------------------------- */
|
||||
void (*OnEntityStreamingChange) (int32_t playerId, int32_t entityId, vcmpEntityPool entityType, uint8_t isDeleted);
|
||||
|
||||
} PluginCallbacks;
|
@ -194,6 +194,7 @@ protected:
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnDestroyed;
|
||||
SignalPair mOnCustom;
|
||||
SignalPair mOnStream;
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnEntered;
|
||||
@ -264,6 +265,7 @@ protected:
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnDestroyed;
|
||||
SignalPair mOnCustom;
|
||||
SignalPair mOnStream;
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnKeyPress;
|
||||
@ -326,6 +328,7 @@ protected:
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnDestroyed;
|
||||
SignalPair mOnCustom;
|
||||
SignalPair mOnStream;
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnShot;
|
||||
@ -391,6 +394,7 @@ protected:
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnDestroyed;
|
||||
SignalPair mOnCustom;
|
||||
SignalPair mOnStream;
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnRespawn;
|
||||
@ -484,6 +488,7 @@ protected:
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnDestroyed;
|
||||
SignalPair mOnCustom;
|
||||
SignalPair mOnStream;
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnRequestClass;
|
||||
@ -541,6 +546,7 @@ protected:
|
||||
SignalPair mOnCheckpointEntered;
|
||||
SignalPair mOnCheckpointExited;
|
||||
SignalPair mOnClientScriptData;
|
||||
SignalPair mOnEntityStream;
|
||||
SignalPair mOnUpdate;
|
||||
SignalPair mOnHealth;
|
||||
SignalPair mOnArmour;
|
||||
@ -631,6 +637,7 @@ protected:
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnDestroyed;
|
||||
SignalPair mOnCustom;
|
||||
SignalPair mOnStream;
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
SignalPair mOnEmbarking;
|
||||
@ -1228,6 +1235,16 @@ public:
|
||||
*/
|
||||
void EmitEntityPool(vcmpEntityPool entity_type, Int32 entity_id, bool is_deleted);
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Entity streaming changes events.
|
||||
*/
|
||||
void EmitCheckpointStream(int32_t player_id, int32_t entity_id, bool is_deleted);
|
||||
void EmitObjectStream(int32_t player_id, int32_t entity_id, bool is_deleted);
|
||||
void EmitPickupStream(int32_t player_id, int32_t entity_id, bool is_deleted);
|
||||
void EmitVehicleStream(int32_t player_id, int32_t entity_id, bool is_deleted);
|
||||
void EmitPlayerStream(int32_t player_id, int32_t entity_id, bool is_deleted);
|
||||
void EmitEntityStreaming(int32_t player_id, int32_t entity_id, vcmpEntityPool entity_type, bool is_deleted);
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Entity update events.
|
||||
*/
|
||||
@ -1273,6 +1290,11 @@ public:
|
||||
SignalPair mOnPickupCustom;
|
||||
SignalPair mOnPlayerCustom;
|
||||
SignalPair mOnVehicleCustom;
|
||||
SignalPair mOnCheckpointStream;
|
||||
SignalPair mOnObjectStream;
|
||||
SignalPair mOnPickupStream;
|
||||
SignalPair mOnPlayerStream;
|
||||
SignalPair mOnVehicleStream;
|
||||
SignalPair mOnServerStartup;
|
||||
SignalPair mOnServerShutdown;
|
||||
SignalPair mOnServerFrame;
|
||||
@ -1346,6 +1368,7 @@ public:
|
||||
SignalPair mOnCheckpointRadius;
|
||||
SignalPair mOnEntityPool;
|
||||
SignalPair mOnClientScriptData;
|
||||
SignalPair mOnPlayerStreamChange;
|
||||
SignalPair mOnPlayerUpdate;
|
||||
SignalPair mOnVehicleUpdate;
|
||||
SignalPair mOnPlayerHealth;
|
||||
@ -1379,6 +1402,7 @@ public:
|
||||
SignalPair mOnVehicleHandlingRule;
|
||||
SignalPair mOnVehicleEnterArea;
|
||||
SignalPair mOnVehicleLeaveArea;
|
||||
SignalPair mOnEntityStream;
|
||||
SignalPair mOnServerOption;
|
||||
SignalPair mOnScriptReload;
|
||||
SignalPair mOnScriptLoaded;
|
||||
|
@ -1277,6 +1277,118 @@ void Core::EmitPlayerUpdate(Int32 player_id, vcmpPlayerUpdate update_type)
|
||||
(*mOnPlayerUpdate.first)(inst.mObj, static_cast< Int32 >(update_type));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitCheckpointStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
CheckpointInst & _checkpoint = m_Checkpoints.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_checkpoint.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_checkpoint.mObj, static_cast< Int32 >(vcmpEntityPoolCheckPoint), is_deleted);
|
||||
(*mOnCheckpointStream.first)(_client.mObj, _checkpoint.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _checkpoint.mObj, static_cast< Int32 >(vcmpEntityPoolCheckPoint), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitObjectStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
ObjectInst & _object = m_Objects.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_object.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_object.mObj, static_cast< Int32 >(vcmpEntityPoolObject), is_deleted);
|
||||
(*mOnObjectStream.first)(_client.mObj, _object.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _object.mObj, static_cast< Int32 >(vcmpEntityPoolObject), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitPickupStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
PickupInst & _pickup = m_Pickups.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_pickup.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_pickup.mObj, static_cast< Int32 >(vcmpEntityPoolPickup), is_deleted);
|
||||
(*mOnPickupStream.first)(_client.mObj, _pickup.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _pickup.mObj, static_cast< Int32 >(vcmpEntityPoolPickup), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitVehicleStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
VehicleInst & _vehicle = m_Vehicles.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_vehicle.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_vehicle.mObj, static_cast< Int32 >(vcmpEntityPoolVehicle), is_deleted);
|
||||
(*mOnVehicleStream.first)(_client.mObj, _vehicle.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _vehicle.mObj, static_cast< Int32 >(vcmpEntityPoolVehicle), is_deleted);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitPlayerStream(int32_t player_id, int32_t entity_id, bool is_deleted)
|
||||
{
|
||||
PlayerInst & _player = m_Players.at(entity_id);
|
||||
PlayerInst & _client = m_Players.at(player_id);
|
||||
(*_player.mOnStream.first)(_client.mObj, is_deleted);
|
||||
(*_client.mOnEntityStream.first)(_player.mObj, static_cast< Int32 >(vcmpEntityPoolPlayer), is_deleted);
|
||||
(*mOnPlayerStream.first)(_client.mObj, _player.mObj, is_deleted);
|
||||
(*mOnEntityStream.first)(_client.mObj, _player.mObj, static_cast< Int32 >(vcmpEntityPoolPlayer), is_deleted);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitEntityStreaming(int32_t player_id, int32_t entity_id, vcmpEntityPool entity_type, bool is_deleted)
|
||||
{
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(player_id, SQMOD_PLAYER_POOL))
|
||||
{
|
||||
STHROWF("Cannot notify player with invalid identifier about streaming: %d", player_id);
|
||||
}
|
||||
// See what type of entity changed
|
||||
switch (entity_type)
|
||||
{
|
||||
case vcmpEntityPoolVehicle: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_VEHICLE_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream vehicle with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitVehicleStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolObject: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_OBJECT_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream object with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitObjectStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolPickup: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_PICKUP_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream pickup with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitPickupStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolPlayer: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_PLAYER_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream player with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitPlayerStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
case vcmpEntityPoolCheckPoint: {
|
||||
// Make sure that the specified entity identifier is valid
|
||||
if (INVALID_ENTITYEX(entity_id, SQMOD_CHECKPOINT_POOL))
|
||||
{
|
||||
STHROWF("Cannot stream checkpoint with invalid identifier: %d", entity_id);
|
||||
}
|
||||
// Forward the event to the dedicated handler
|
||||
EmitCheckpointStream(player_id, entity_id, is_deleted);
|
||||
} break;
|
||||
default:
|
||||
LogErr("Unknown change in entity streaming: client %d > type %d > entity %d", player_id, entity_type, entity_id);
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Core::EmitVehicleUpdate(Int32 vehicle_id, vcmpVehicleUpdate update_type)
|
||||
{
|
||||
|
@ -417,6 +417,7 @@ void Core::CheckpointInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnEntered, mEvents, "Entered");
|
||||
InitSignalPair(mOnExited, mEvents, "Exited");
|
||||
InitSignalPair(mOnWorld, mEvents, "World");
|
||||
@ -428,6 +429,7 @@ void Core::CheckpointInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnEntered);
|
||||
ResetSignalPair(mOnExited);
|
||||
ResetSignalPair(mOnWorld);
|
||||
@ -452,6 +454,7 @@ void Core::KeybindInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnKeyPress, mEvents, "KeyPress");
|
||||
InitSignalPair(mOnKeyRelease, mEvents, "KeyRelease");
|
||||
}
|
||||
@ -483,6 +486,7 @@ void Core::ObjectInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnShot, mEvents, "Shot");
|
||||
InitSignalPair(mOnTouched, mEvents, "Touched");
|
||||
InitSignalPair(mOnWorld, mEvents, "World");
|
||||
@ -495,6 +499,7 @@ void Core::ObjectInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnShot);
|
||||
ResetSignalPair(mOnTouched);
|
||||
ResetSignalPair(mOnWorld);
|
||||
@ -520,6 +525,7 @@ void Core::PickupInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnRespawn, mEvents, "Respawn");
|
||||
InitSignalPair(mOnClaimed, mEvents, "Claimed");
|
||||
InitSignalPair(mOnCollected, mEvents, "Collected");
|
||||
@ -535,6 +541,7 @@ void Core::PickupInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnRespawn);
|
||||
ResetSignalPair(mOnClaimed);
|
||||
ResetSignalPair(mOnCollected);
|
||||
@ -563,6 +570,7 @@ void Core::PlayerInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnRequestClass, mEvents, "RequestClass");
|
||||
InitSignalPair(mOnRequestSpawn, mEvents, "RequestSpawn");
|
||||
InitSignalPair(mOnSpawn, mEvents, "Spawn");
|
||||
@ -618,6 +626,7 @@ void Core::PlayerInst::InitEvents()
|
||||
InitSignalPair(mOnCheckpointEntered, mEvents, "CheckpointEntered");
|
||||
InitSignalPair(mOnCheckpointExited, mEvents, "CheckpointExited");
|
||||
InitSignalPair(mOnClientScriptData, mEvents, "ClientScriptData");
|
||||
InitSignalPair(mOnEntityStream, mEvents, "EntityStream");
|
||||
InitSignalPair(mOnUpdate, mEvents, "Update");
|
||||
InitSignalPair(mOnHealth, mEvents, "Health");
|
||||
InitSignalPair(mOnArmour, mEvents, "Armour");
|
||||
@ -643,6 +652,7 @@ void Core::PlayerInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnRequestClass);
|
||||
ResetSignalPair(mOnRequestSpawn);
|
||||
ResetSignalPair(mOnSpawn);
|
||||
@ -698,6 +708,7 @@ void Core::PlayerInst::DropEvents()
|
||||
ResetSignalPair(mOnCheckpointEntered);
|
||||
ResetSignalPair(mOnCheckpointExited);
|
||||
ResetSignalPair(mOnClientScriptData);
|
||||
ResetSignalPair(mOnEntityStream);
|
||||
ResetSignalPair(mOnUpdate);
|
||||
ResetSignalPair(mOnHealth);
|
||||
ResetSignalPair(mOnArmour);
|
||||
@ -736,6 +747,7 @@ void Core::VehicleInst::InitEvents()
|
||||
// Proceed to initializing the events
|
||||
InitSignalPair(mOnDestroyed, mEvents, "Destroyed");
|
||||
InitSignalPair(mOnCustom, mEvents, "Custom");
|
||||
InitSignalPair(mOnStream, mEvents, "Stream");
|
||||
InitSignalPair(mOnEmbarking, mEvents, "Embarking");
|
||||
InitSignalPair(mOnEmbarked, mEvents, "Embarked");
|
||||
InitSignalPair(mOnDisembark, mEvents, "Disembark");
|
||||
@ -763,6 +775,7 @@ void Core::VehicleInst::DropEvents()
|
||||
{
|
||||
ResetSignalPair(mOnDestroyed);
|
||||
ResetSignalPair(mOnCustom);
|
||||
ResetSignalPair(mOnStream);
|
||||
ResetSignalPair(mOnEmbarking);
|
||||
ResetSignalPair(mOnEmbarked);
|
||||
ResetSignalPair(mOnDisembark);
|
||||
|
@ -75,6 +75,11 @@ void Core::InitEvents()
|
||||
InitSignalPair(mOnPickupCustom, m_Events, "PickupCustom");
|
||||
InitSignalPair(mOnPlayerCustom, m_Events, "PlayerCustom");
|
||||
InitSignalPair(mOnVehicleCustom, m_Events, "VehicleCustom");
|
||||
InitSignalPair(mOnCheckpointStream, m_Events, "CheckpointStream");
|
||||
InitSignalPair(mOnObjectStream, m_Events, "ObjectStream");
|
||||
InitSignalPair(mOnPickupStream, m_Events, "PickupStream");
|
||||
InitSignalPair(mOnPlayerStream, m_Events, "PlayerStream");
|
||||
InitSignalPair(mOnVehicleStream, m_Events, "VehicleStream");
|
||||
InitSignalPair(mOnServerStartup, m_Events, "ServerStartup");
|
||||
InitSignalPair(mOnServerShutdown, m_Events, "ServerShutdown");
|
||||
InitSignalPair(mOnServerFrame, m_Events, "ServerFrame");
|
||||
@ -181,6 +186,7 @@ void Core::InitEvents()
|
||||
InitSignalPair(mOnVehicleHandlingRule, m_Events, "VehicleHandlingRule");
|
||||
InitSignalPair(mOnVehicleEnterArea, m_Events, "VehicleEnterArea");
|
||||
InitSignalPair(mOnVehicleLeaveArea, m_Events, "VehicleLeaveArea");
|
||||
InitSignalPair(mOnEntityStream, m_Events, "EntityStream");
|
||||
InitSignalPair(mOnServerOption, m_Events, "ServerOption");
|
||||
InitSignalPair(mOnScriptReload, m_Events, "ScriptReload");
|
||||
InitSignalPair(mOnScriptLoaded, m_Events, "ScriptLoaded");
|
||||
@ -210,6 +216,11 @@ void Core::DropEvents()
|
||||
ResetSignalPair(mOnPickupCustom);
|
||||
ResetSignalPair(mOnPlayerCustom);
|
||||
ResetSignalPair(mOnVehicleCustom);
|
||||
ResetSignalPair(mOnCheckpointStream);
|
||||
ResetSignalPair(mOnObjectStream);
|
||||
ResetSignalPair(mOnPickupStream);
|
||||
ResetSignalPair(mOnPlayerStream);
|
||||
ResetSignalPair(mOnVehicleStream);
|
||||
ResetSignalPair(mOnServerStartup);
|
||||
ResetSignalPair(mOnServerShutdown);
|
||||
ResetSignalPair(mOnServerFrame);
|
||||
@ -316,6 +327,7 @@ void Core::DropEvents()
|
||||
ResetSignalPair(mOnVehicleHandlingRule);
|
||||
ResetSignalPair(mOnVehicleEnterArea);
|
||||
ResetSignalPair(mOnVehicleLeaveArea);
|
||||
ResetSignalPair(mOnEntityStream);
|
||||
ResetSignalPair(mOnServerOption);
|
||||
ResetSignalPair(mOnScriptReload);
|
||||
ResetSignalPair(mOnScriptLoaded);
|
||||
|
@ -240,6 +240,15 @@ CSStr CPlayer::GetUID2() const
|
||||
return s_Buffer;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CPlayer::Kill() const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Perform the requested operation
|
||||
_Func->KillPlayer(m_ID);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CPlayer::Kick() const
|
||||
{
|
||||
@ -1377,6 +1386,59 @@ void CPlayer::Unspectate() const
|
||||
_Func->SetPlayerSpectateTarget(m_ID, -1);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CPlayer::SetPlayer3DArrow(CPlayer & target, bool toggle) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
_Func->SetPlayer3DArrowForPlayer(m_ID, target.GetID(), toggle);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool CPlayer::GetPlayer3DArrow(CPlayer & target) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
return _Func->GetPlayer3DArrowForPlayer(m_ID, target.GetID());
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CPlayer::SetPlayer3DArrowID(SQInteger id, bool toggle) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
_Func->SetPlayer3DArrowForPlayer(m_ID, id, toggle);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool CPlayer::GetPlayer3DArrowID(SQInteger id) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
return _Func->GetPlayer3DArrowForPlayer(m_ID, id);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool CPlayer::InterpolateCameraLookAt(const Vector3 & pos, Uint32 ms) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Perform the requested operation
|
||||
return _Func->InterpolateCameraLookAt(m_ID, pos.x, pos.y, pos.z, ms) != vcmpErrorRequestDenied;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool CPlayer::InterpolateCameraLookAtEx(Float32 x, Float32 y, Float32 z, Uint32 ms) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Perform the requested operation
|
||||
return _Func->InterpolateCameraLookAt(m_ID, x, y, z, ms) != vcmpErrorRequestDenied;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CPlayer::Redirect(StackStrF & ip, Uint32 port, StackStrF & nick,
|
||||
StackStrF & server_pass, StackStrF & user_pass)
|
||||
@ -1409,6 +1471,42 @@ void CPlayer::PlaySound(Int32 sound_id) const
|
||||
_Func->PlaySound(_Func->GetPlayerUniqueWorld(m_ID), sound_id, NAN, NAN, NAN);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CPlayer::SetDrunkHandling(SQInteger level) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Perform the requested operation
|
||||
_Func->SetPlayerDrunkHandling(m_ID, static_cast< Uint32 >(level));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
SQInteger CPlayer::GetDrunkHandling() const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Perform the requested operation
|
||||
return _Func->GetPlayerDrunkHandling(m_ID);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CPlayer::SetDrunkVisuals(SQInteger level) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Perform the requested operation
|
||||
_Func->SetPlayerDrunkVisuals(m_ID, static_cast< Uint8 >(level));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
SQInteger CPlayer::GetDrunkVisuals() const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Perform the requested operation
|
||||
return _Func->GetPlayerDrunkVisuals(m_ID);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
LightObj & CPlayer::CreateCheckpointEx(Int32 world, bool sphere, Float32 x, Float32 y, Float32 z,
|
||||
Uint8 r, Uint8 g, Uint8 b, Uint8 a, Float32 radius) const
|
||||
@ -2673,6 +2771,8 @@ void Register_CPlayer(HSQUIRRELVM vm)
|
||||
.Prop(_SC("Away"), &CPlayer::IsAway)
|
||||
.Prop(_SC("Spec"), &CPlayer::GetSpectator, &CPlayer::SetSpectator)
|
||||
.Prop(_SC("SpecID"), &CPlayer::GetSpectatorID, &CPlayer::SetSpectatorID)
|
||||
.Prop(_SC("DrunkHandling"), &CPlayer::GetDrunkHandling, &CPlayer::SetDrunkHandling)
|
||||
.Prop(_SC("DrunkVisuals"), &CPlayer::GetDrunkVisuals, &CPlayer::SetDrunkVisuals)
|
||||
.Prop(_SC("CollideAreas"), &CPlayer::GetCollideAreas, &CPlayer::SetCollideAreas)
|
||||
.Prop(_SC("Authority"), &CPlayer::GetAuthority, &CPlayer::SetAuthority)
|
||||
.Prop(_SC("TrackPosition"), &CPlayer::GetTrackPosition, &CPlayer::SetTrackPosition)
|
||||
@ -2693,6 +2793,7 @@ void Register_CPlayer(HSQUIRRELVM vm)
|
||||
.Prop(_SC("Blue"), &CPlayer::GetColorB, &CPlayer::SetColorB)
|
||||
// Member Methods
|
||||
.Func(_SC("StreamedFor"), &CPlayer::IsStreamedFor)
|
||||
.Func(_SC("Kill"), &CPlayer::Kill)
|
||||
.Func(_SC("Kick"), &CPlayer::Kick)
|
||||
.Func(_SC("Ban"), &CPlayer::Ban)
|
||||
.Func(_SC("KickBecause"), &CPlayer::KickBecause)
|
||||
@ -2722,6 +2823,12 @@ void Register_CPlayer(HSQUIRRELVM vm)
|
||||
.Func(_SC("Spectating"), &CPlayer::GetSpectator)
|
||||
.Func(_SC("Unspectate"), &CPlayer::Unspectate)
|
||||
.Func(_SC("Spectate"), &CPlayer::SetSpectator)
|
||||
.Func(_SC("SetPlayer3DArrow"), &CPlayer::SetPlayer3DArrow)
|
||||
.Func(_SC("GetPlayer3DArrow"), &CPlayer::GetPlayer3DArrow)
|
||||
.Func(_SC("SetPlayer3DArrowID"), &CPlayer::SetPlayer3DArrowID)
|
||||
.Func(_SC("GetPlayer3DArrowID"), &CPlayer::GetPlayer3DArrowID)
|
||||
.Func(_SC("InterpolateCameraLookAt"), &CPlayer::InterpolateCameraLookAt)
|
||||
.Func(_SC("InterpolateCameraLookAtEx"), &CPlayer::InterpolateCameraLookAtEx)
|
||||
.Func(_SC("Redirect"), &CPlayer::Redirect)
|
||||
.Func(_SC("GetModuleList"), &CPlayer::GetModuleList)
|
||||
.Func(_SC("PlaySound"), &CPlayer::PlaySound)
|
||||
|
@ -265,6 +265,11 @@ public:
|
||||
*/
|
||||
CSStr GetUID2() const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Set player's health to 0 and reset the death reason.
|
||||
*/
|
||||
void Kill() const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Kick the managed player entity from the server.
|
||||
*/
|
||||
@ -740,6 +745,36 @@ public:
|
||||
*/
|
||||
void Unspectate() const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Set whether the target player will see an objective arrow over a player.
|
||||
*/
|
||||
void SetPlayer3DArrow(CPlayer & target, bool toggle) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* See whether the target player sees an objective arrow over a player.
|
||||
*/
|
||||
bool GetPlayer3DArrow(CPlayer & target) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Set whether the target player will see an objective arrow over a player.
|
||||
*/
|
||||
void SetPlayer3DArrowID(SQInteger id, bool toggle) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* See whether the target player sees an objective arrow over a player.
|
||||
*/
|
||||
bool GetPlayer3DArrowID(SQInteger id) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Smoothly pivots the camera angle.
|
||||
*/
|
||||
bool InterpolateCameraLookAt(const Vector3 & pos, Uint32 ms) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Smoothly pivots the camera angle.
|
||||
*/
|
||||
bool InterpolateCameraLookAtEx(Float32 x, Float32 y, Float32 z, Uint32 ms) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Redirect the managed player entity to the specified server.
|
||||
*/
|
||||
@ -756,6 +791,26 @@ public:
|
||||
*/
|
||||
void PlaySound(Int32 sound_id) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Set how delayed a player's turn handling is when in a vehicle.
|
||||
*/
|
||||
void SetDrunkHandling(SQInteger level) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Retrieve how delayed a player's turn handling is when in a vehicle.
|
||||
*/
|
||||
SQInteger GetDrunkHandling() const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Set how intense the drunk blur overlay is for a player.
|
||||
*/
|
||||
void SetDrunkVisuals(SQInteger level) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Retrieve how intense the drunk blur overlay is for a player.
|
||||
*/
|
||||
SQInteger GetDrunkVisuals() const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Create a checkpoint or sphere for this player.
|
||||
*/
|
||||
|
@ -1148,6 +1148,42 @@ bool CVehicle::Embark(CPlayer & player, Int32 slot, bool allocate, bool warp) co
|
||||
!= vcmpErrorRequestDenied);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CVehicle::SetPlayer3DArrow(CPlayer & target, bool toggle) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
_Func->SetVehicle3DArrowForPlayer(m_ID, target.GetID(), toggle);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool CVehicle::GetPlayer3DArrow(CPlayer & target) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
return _Func->GetVehicle3DArrowForPlayer(m_ID, target.GetID());
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CVehicle::SetPlayer3DArrowID(SQInteger id, bool toggle) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
_Func->SetVehicle3DArrowForPlayer(m_ID, id, toggle);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool CVehicle::GetPlayer3DArrowID(SQInteger id) const
|
||||
{
|
||||
// Validate the managed identifier
|
||||
Validate();
|
||||
// Spectate the given target
|
||||
return _Func->GetVehicle3DArrowForPlayer(m_ID, id);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool CVehicle::GetCollideAreas() const
|
||||
{
|
||||
@ -2038,6 +2074,10 @@ void Register_CVehicle(HSQUIRRELVM vm)
|
||||
.Func(_SC("SetHandlingRule"), &CVehicle::SetHandlingRule)
|
||||
.Func(_SC("ResetHandlingRule"), &CVehicle::ResetHandlingRule)
|
||||
.Func(_SC("ResetHandlings"), &CVehicle::ResetHandlings)
|
||||
.Func(_SC("SetPlayer3DArrow"), &CVehicle::SetPlayer3DArrow)
|
||||
.Func(_SC("GetPlayer3DArrow"), &CVehicle::GetPlayer3DArrow)
|
||||
.Func(_SC("SetPlayer3DArrowID"), &CVehicle::SetPlayer3DArrowID)
|
||||
.Func(_SC("GetPlayer3DArrowID"), &CVehicle::GetPlayer3DArrowID)
|
||||
.Func(_SC("AreasCollide"), &CVehicle::SetAreasCollide)
|
||||
// Member Overloads
|
||||
.Overload< void (CVehicle::*)(const Vector3 &, bool) const >
|
||||
|
@ -622,6 +622,26 @@ public:
|
||||
*/
|
||||
bool Embark(CPlayer & player, Int32 slot, bool allocate, bool warp) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Set whether the target player will see an objective arrow over a vehicle.
|
||||
*/
|
||||
void SetPlayer3DArrow(CPlayer & target, bool toggle) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* See whether the target player sees an objective arrow over a vehicle.
|
||||
*/
|
||||
bool GetPlayer3DArrow(CPlayer & target) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Set whether the target player will see an objective arrow over a vehicle.
|
||||
*/
|
||||
void SetPlayer3DArrowID(SQInteger id, bool toggle) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* See whether the target player sees an objective arrow over a vehicle.
|
||||
*/
|
||||
bool GetPlayer3DArrowID(SQInteger id) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* See whether the managed vehicle entity collides with user defined areas.
|
||||
*/
|
||||
|
@ -867,6 +867,19 @@ static void OnEntityPoolChange(vcmpEntityPool entity_type, int32_t entity_id, ui
|
||||
SQMOD_RELOAD_CHECK(false)
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
static void OnEntityStreamingChange(int32_t player_id, int32_t entity_id, vcmpEntityPool entity_type, uint8_t is_deleted)
|
||||
{
|
||||
// Attempt to forward the event
|
||||
try
|
||||
{
|
||||
Core::Get().EmitEntityStreaming(player_id, entity_id, entity_type, is_deleted);
|
||||
}
|
||||
SQMOD_CATCH_EVENT_EXCEPTION(OnEntityStreamingChange)
|
||||
// See if a reload was requested
|
||||
SQMOD_RELOAD_CHECK(false)
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
static void OnServerPerformanceReport(size_t /*entry_count*/, CCStr * /*descriptions*/, uint64_t * /*times*/)
|
||||
{
|
||||
@ -973,6 +986,7 @@ SQMOD_API_EXPORT unsigned int VcmpPluginInit(PluginFuncs * funcs, PluginCallback
|
||||
_Clbk->OnEntityPoolChange = OnEntityPoolChange;
|
||||
_Clbk->OnServerPerformanceReport = OnServerPerformanceReport;
|
||||
_Clbk->OnPlayerModuleList = OnPlayerModuleList;
|
||||
_Clbk->OnEntityStreamingChange = OnEntityStreamingChange;
|
||||
// Attempt to initialize the plug-in exports
|
||||
InitExports();
|
||||
// Dummy spacing
|
||||
|
@ -245,6 +245,7 @@ static const EnumElement g_EntityPoolEnum[] = {
|
||||
{_SC("Object"), vcmpEntityPoolObject},
|
||||
{_SC("Pickup"), vcmpEntityPoolPickup},
|
||||
{_SC("Radio"), vcmpEntityPoolRadio},
|
||||
{_SC("Player"), vcmpEntityPoolPlayer},
|
||||
{_SC("Blip"), vcmpEntityPoolBlip},
|
||||
{_SC("Checkpoint"), vcmpEntityPoolCheckPoint},
|
||||
{_SC("Max"), vcmpEntityPoolCheckPoint}
|
||||
@ -330,7 +331,8 @@ static const EnumElement g_ServerOptionEnum[] = {
|
||||
{_SC("WallGlitch"), vcmpServerOptionWallGlitch},
|
||||
{_SC("DisableBackfaceCulling"), vcmpServerOptionDisableBackfaceCulling},
|
||||
{_SC("DisableHeliBladeDamage"), vcmpServerOptionDisableHeliBladeDamage},
|
||||
{_SC("Max"), vcmpServerOptionDisableHeliBladeDamage}
|
||||
{_SC("DisableCrouch "), vcmpServerOptionDisableCrouch},
|
||||
{_SC("Max"), vcmpServerOptionDisableCrouch}
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
@ -345,8 +347,8 @@ static const EnumElement g_PlayerOptionEnum[] = {
|
||||
{_SC("CanAttack"), vcmpPlayerOptionCanAttack},
|
||||
{_SC("HasMarker"), vcmpPlayerOptionHasMarker},
|
||||
{_SC("ChatTagsEnabled"), vcmpPlayerOptionChatTagsEnabled},
|
||||
{_SC("DrunkEffects"), vcmpPlayerOptionDrunkEffects},
|
||||
{_SC("Max"), vcmpPlayerOptionDrunkEffects}
|
||||
{_SC("DrunkEffects"), vcmpPlayerOptionBleeding},
|
||||
{_SC("Max"), vcmpPlayerOptionBleeding}
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
@ -358,6 +360,9 @@ static const EnumElement g_VehicleOptionEnum[] = {
|
||||
{_SC("RadioLocked"), vcmpVehicleOptionRadioLocked},
|
||||
{_SC("Ghost"), vcmpVehicleOptionGhost},
|
||||
{_SC("Siren"), vcmpVehicleOptionSiren},
|
||||
{_SC("SingleUse "), vcmpVehicleOptionSingleUse},
|
||||
{_SC("EngineDisabled "), vcmpVehicleOptionEngineDisabled},
|
||||
{_SC("BootOpen "), vcmpVehicleOptionBootOpen},
|
||||
{_SC("Max"), vcmpVehicleOptionSiren}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user