Mod service: PlayerService

## Available commands:

```
Exor::Entity                	GetPlayerControlledEnt( Exor::PlayerId id );
void                        	RegisterLua( Exor::Lua & lua ) override;
float                       	GetResourceAmount( const Exor::String & resourceName );
float                       	GetResourceLimit( const Exor::String &resourceName );
bool                        	AddResourceAmount( const Exor::String & resourceName, float amount );
bool                        	AddResourceAmount( const Exor::String & resourceName, float amount, bool wasProduced );
                                SetResourceAmount( const Exor::String & resourceName, float amount, Exor::PlayerId playerId )
bool                        	IsResourceUnlocked( const Exor::String & resourceAmount );
void                        	ResetPadTriggerMode( Exor::PlayerId playerId, int index );
Exor::Optional< int >       	GetPadTriggerIndexForEquipmentSlot( Exor::PlayerId playerId, const Exor::String & itemSlot );
void                        	SetPadTriggerFeedbackMode( Exor::PlayerId playerId, int index, uint8_t position, uint8_t strength );
void                        	SetPadTriggerWeaponMode( Exor::PlayerId playerId, int index, uint8_t startPosition, uint8_t endPosition, uint8_t strength );
void                        	SetPadTriggerVibrationMode( Exor::PlayerId playerId, int index, uint8_t position, uint8_t amplitude, uint8_t frequency );
void                        	SetPadHapticFeedback( Exor::PlayerId playerId, const Exor::String & soundName, bool isLooped, int priority );
void                        	StopPadHapticFeedback( Exor::PlayerId playerId );
float                       	GetResourceIncome( const Exor::String & resourceName );
void                        	SetPickupRange( Exor::PlayerId id, float range );
float                       	GetPickupRange( Exor::PlayerId id );
unsigned int                	GetEnergyLvl( Exor::PlayerId id );
void                        	IncreaseEnergyLvl( Exor::PlayerId id );
void                        	SetEnergyLvl( Exor::PlayerId id, unsigned int lvl );
void                        	ResetEnergyLvl( Exor::PlayerId id );
void                        	BlockAction( const Exor::String & action );
void                       	 UnBlockAction( const Exor::String & action );
void                        	UnBlockAllActions();
bool                        	IsInBuildMode( Exor::Entity ent );
bool                        	IsInSelectorMode( Exor::Entity ent );
bool                        	IsInFighterMode( Exor::Entity ent );
Exor::Vector3               	GetWeaponLookPoint( Exor::Entity ent );
std::pair<bool,Exor::Vector3> 	FindPositionForTeleport( Exor::Entity ent, Exor::Vector3 pos, float maxDistance );
std::pair<bool,Exor::Vector3> 	FindPositionForJump( Exor::Entity ent, Exor::Vector3 pos, float maxDistance );
void                        	MovePlayer( Exor::Entity ent, Exor::Vector3 disp );
void                        	TeleportPlayer( Exor::Entity ent, Exor::Vector3 pos, float disappera, float wait, float appear );
void                        	TeleportPlayerByOffset( Exor::Entity ent, Exor::Vector3 pos  );
std::pair<Exor::Vector3, float> CalculateJumpTrajectory( float dt,  float status, Exor::Entity ent, Exor::Vector3 pos );
Exor::Entity::Id            	AddItemToInventory( Exor::PlayerId id, Exor::String item );
void                        	EquipItemInSlot( Exor::PlayerId id, Exor::Entity::Id item, Exor::String slotId );
Exor::Entities              	GetAllEquippedItemsInSlot( const Exor::String & slot );
void                        	ChangePlayerEquipmentVisibility( Exor::PlayerId playerId, bool visibility );
bool                        	HasEmptyEquipmentSlots(const Exor::String & slot );
void                        	EnableAllBuildings();
void                        	DisableAllBuildings();
void                        	EnableBuilding( const Exor::String & bp );
void                        	DisableBuilding( const Exor::String & bp );
void                        	UnlockResearch( const Exor::String & research );
void                       	HighlightResearch( const Exor::String & research, bool value );
void                        	DisableBuildMode( Exor::Entity player );
void                        	EnableBuildMode( Exor::Entity player );
bool                        	IsCraftingEnabled();
bool                        	IsResearchEnabled();
void                        	AddGlobalAward( Exor::String award);
Exor::Entity::Id            	BuildBuildingAtSpot( Exor::String blueprint, Exor::Vector3 pos );
unsigned int                	GetItemNumber( Exor::PlayerId id,  const Exor::String & name );
void                        	ShowBigMinimap();
bool                        	HarvestResource( Exor::Entity::Id interactive, Exor::Entity::Id owner );
void                        	DropItem( Exor::Entity::Id item, Exor::Entity::Id place, Exor::Entity::Id mech );
void                        	RecreateMechComponent( Exor::Entity::Id id );
void                        	RemoveMechComponent( Exor::Entity::Id id );
void                        	IncreaseFamilyInfoLvl( Exor::String familyName, Exor::String subspecies );
int                         	GetFamiliarityLevel( Exor::String familyName, Exor::String subspecies );
Exor::Vector<Exor::String>  	GetGlobalResourcesList();
Exor::Vector<Exor::String>  	GetAmmoList();
Exor::Vector<Exor::String>  	GetResearchesAvailableToUnlockList( bool withoutCurrentReserching );
Exor::Vector<Exor::String>  	GetUnlockedResearchesList();
bool                        	IsResearchUnlocked( Exor::String researchName );
void                        	EnableResearch( Exor::String researchName );
void                        	UnhideResearch( Exor::String researchName );
Exor::String                	GetResearchNameFromResearchId( Exor::String id );
????                            AddItemsByTypeToInventory( player: number, item_type: string )
bool                            HasGlobalAward( Exor::String award)
void                            GetOrCreateGlobalDatabase("NameOfDatabase")
void                            RemoveGlobalDatabase("NameofDatabase")

```

## Database

To work with the Database used in PlayerService:GetOrCreateGlobalDatabase(DB), see Database Function