mirror of
				https://github.com/TES3MP/openmw-tes3mp.git
				synced 2025-10-31 13:56:45 +00:00 
			
		
		
		
	[Server] Add script callback and getter functions for ActorEquipment
This commit is contained in:
		
							parent
							
								
									311ce4119d
								
							
						
					
					
						commit
						f47a10dd4a
					
				
					 4 changed files with 71 additions and 43 deletions
				
			
		|  | @ -133,6 +133,21 @@ double ActorFunctions::GetActorFatigueCurrent(unsigned int i) noexcept | |||
|     return readActorList->baseActors.at(i).creatureStats.mDynamic[2].mCurrent; | ||||
| } | ||||
| 
 | ||||
| const char *ActorFunctions::GetActorEquipmentItemRefId(unsigned int i, unsigned short slot) noexcept | ||||
| { | ||||
|     return readActorList->baseActors.at(i).equipedItems[slot].refId.c_str(); | ||||
| } | ||||
| 
 | ||||
| int ActorFunctions::GetActorEquipmentItemCount(unsigned int i, unsigned short slot) noexcept | ||||
| { | ||||
|     return readActorList->baseActors.at(i).equipedItems[slot].count; | ||||
| } | ||||
| 
 | ||||
| int ActorFunctions::GetActorEquipmentItemCharge(unsigned int i, unsigned short slot) noexcept | ||||
| { | ||||
|     return readActorList->baseActors.at(i).equipedItems[slot].charge; | ||||
| } | ||||
| 
 | ||||
| bool ActorFunctions::DoesActorHavePosition(unsigned int i) noexcept | ||||
| { | ||||
|     return readActorList->baseActors.at(i).hasPositionData; | ||||
|  |  | |||
|  | @ -2,60 +2,64 @@ | |||
| #define OPENMW_ACTORAPI_HPP | ||||
| 
 | ||||
| #define ACTORAPI \ | ||||
|     {"ReadLastActorList",          ActorFunctions::ReadLastActorList},\ | ||||
|     {"ReadCellActorList",          ActorFunctions::ReadCellActorList},\ | ||||
|     {"InitializeActorList",        ActorFunctions::InitializeActorList},\ | ||||
|     {"ReadLastActorList",           ActorFunctions::ReadLastActorList},\ | ||||
|     {"ReadCellActorList",           ActorFunctions::ReadCellActorList},\ | ||||
|     {"InitializeActorList",         ActorFunctions::InitializeActorList},\ | ||||
|     \ | ||||
|     {"GetActorListSize",           ActorFunctions::GetActorListSize},\ | ||||
|     {"GetActorListAction",         ActorFunctions::GetActorListAction},\ | ||||
|     {"GetActorListSize",            ActorFunctions::GetActorListSize},\ | ||||
|     {"GetActorListAction",          ActorFunctions::GetActorListAction},\ | ||||
|     \ | ||||
|     {"GetActorCell",               ActorFunctions::GetActorCell},\ | ||||
|     {"GetActorRefId",              ActorFunctions::GetActorRefId},\ | ||||
|     {"GetActorRefNumIndex",        ActorFunctions::GetActorRefNumIndex},\ | ||||
|     {"GetActorMpNum",              ActorFunctions::GetActorMpNum},\ | ||||
|     {"GetActorCell",                ActorFunctions::GetActorCell},\ | ||||
|     {"GetActorRefId",               ActorFunctions::GetActorRefId},\ | ||||
|     {"GetActorRefNumIndex",         ActorFunctions::GetActorRefNumIndex},\ | ||||
|     {"GetActorMpNum",               ActorFunctions::GetActorMpNum},\ | ||||
|     \ | ||||
|     {"GetActorPosX",               ActorFunctions::GetActorPosX},\ | ||||
|     {"GetActorPosY",               ActorFunctions::GetActorPosY},\ | ||||
|     {"GetActorPosZ",               ActorFunctions::GetActorPosZ},\ | ||||
|     {"GetActorRotX",               ActorFunctions::GetActorRotX},\ | ||||
|     {"GetActorRotY",               ActorFunctions::GetActorRotY},\ | ||||
|     {"GetActorRotZ",               ActorFunctions::GetActorRotZ},\ | ||||
|     {"GetActorPosX",                ActorFunctions::GetActorPosX},\ | ||||
|     {"GetActorPosY",                ActorFunctions::GetActorPosY},\ | ||||
|     {"GetActorPosZ",                ActorFunctions::GetActorPosZ},\ | ||||
|     {"GetActorRotX",                ActorFunctions::GetActorRotX},\ | ||||
|     {"GetActorRotY",                ActorFunctions::GetActorRotY},\ | ||||
|     {"GetActorRotZ",                ActorFunctions::GetActorRotZ},\ | ||||
|     \ | ||||
|     {"GetActorHealthBase",         ActorFunctions::GetActorHealthBase},\ | ||||
|     {"GetActorHealthCurrent",      ActorFunctions::GetActorHealthCurrent},\ | ||||
|     {"GetActorMagickaBase",        ActorFunctions::GetActorMagickaBase},\ | ||||
|     {"GetActorMagickaCurrent",     ActorFunctions::GetActorMagickaCurrent},\ | ||||
|     {"GetActorFatigueBase",        ActorFunctions::GetActorFatigueBase},\ | ||||
|     {"GetActorFatigueCurrent",     ActorFunctions::GetActorFatigueCurrent},\ | ||||
|     {"GetActorHealthBase",          ActorFunctions::GetActorHealthBase},\ | ||||
|     {"GetActorHealthCurrent",       ActorFunctions::GetActorHealthCurrent},\ | ||||
|     {"GetActorMagickaBase",         ActorFunctions::GetActorMagickaBase},\ | ||||
|     {"GetActorMagickaCurrent",      ActorFunctions::GetActorMagickaCurrent},\ | ||||
|     {"GetActorFatigueBase",         ActorFunctions::GetActorFatigueBase},\ | ||||
|     {"GetActorFatigueCurrent",      ActorFunctions::GetActorFatigueCurrent},\ | ||||
|     \ | ||||
|     {"DoesActorHavePosition",      ActorFunctions::DoesActorHavePosition},\ | ||||
|     {"DoesActorHaveStatsDynamic",  ActorFunctions::DoesActorHaveStatsDynamic},\ | ||||
|     {"GetActorEquipmentItemRefId",  ActorFunctions::GetActorEquipmentItemRefId},\ | ||||
|     {"GetActorEquipmentItemCount",  ActorFunctions::GetActorEquipmentItemCount},\ | ||||
|     {"GetActorEquipmentItemCharge", ActorFunctions::GetActorEquipmentItemCharge},\ | ||||
|     \ | ||||
|     {"SetActorListCell",           ActorFunctions::SetActorListCell},\ | ||||
|     {"SetActorListAction",         ActorFunctions::SetActorListAction},\ | ||||
|     {"DoesActorHavePosition",       ActorFunctions::DoesActorHavePosition},\ | ||||
|     {"DoesActorHaveStatsDynamic",   ActorFunctions::DoesActorHaveStatsDynamic},\ | ||||
|     \ | ||||
|     {"SetActorCell",               ActorFunctions::SetActorCell},\ | ||||
|     {"SetActorRefId",              ActorFunctions::SetActorRefId},\ | ||||
|     {"SetActorRefNumIndex",        ActorFunctions::SetActorRefNumIndex},\ | ||||
|     {"SetActorMpNum",              ActorFunctions::SetActorMpNum},\ | ||||
|     {"SetActorListCell",            ActorFunctions::SetActorListCell},\ | ||||
|     {"SetActorListAction",          ActorFunctions::SetActorListAction},\ | ||||
|     \ | ||||
|     {"SetActorPosition",           ActorFunctions::SetActorPosition},\ | ||||
|     {"SetActorRotation",           ActorFunctions::SetActorRotation},\ | ||||
|     {"SetActorCell",                ActorFunctions::SetActorCell},\ | ||||
|     {"SetActorRefId",               ActorFunctions::SetActorRefId},\ | ||||
|     {"SetActorRefNumIndex",         ActorFunctions::SetActorRefNumIndex},\ | ||||
|     {"SetActorMpNum",               ActorFunctions::SetActorMpNum},\ | ||||
|     \ | ||||
|     {"SetActorHealthBase",         ActorFunctions::SetActorHealthBase},\ | ||||
|     {"SetActorHealthCurrent",      ActorFunctions::SetActorHealthCurrent},\ | ||||
|     {"SetActorMagickaBase",        ActorFunctions::SetActorMagickaBase},\ | ||||
|     {"SetActorMagickaCurrent",     ActorFunctions::SetActorMagickaCurrent},\ | ||||
|     {"SetActorFatigueBase",        ActorFunctions::SetActorFatigueBase},\ | ||||
|     {"SetActorFatigueCurrent",     ActorFunctions::SetActorFatigueCurrent},\ | ||||
|     {"SetActorPosition",            ActorFunctions::SetActorPosition},\ | ||||
|     {"SetActorRotation",            ActorFunctions::SetActorRotation},\ | ||||
|     \ | ||||
|     {"AddActor",                   ActorFunctions::AddActor},\ | ||||
|     {"SetActorHealthBase",          ActorFunctions::SetActorHealthBase},\ | ||||
|     {"SetActorHealthCurrent",       ActorFunctions::SetActorHealthCurrent},\ | ||||
|     {"SetActorMagickaBase",         ActorFunctions::SetActorMagickaBase},\ | ||||
|     {"SetActorMagickaCurrent",      ActorFunctions::SetActorMagickaCurrent},\ | ||||
|     {"SetActorFatigueBase",         ActorFunctions::SetActorFatigueBase},\ | ||||
|     {"SetActorFatigueCurrent",      ActorFunctions::SetActorFatigueCurrent},\ | ||||
|     \ | ||||
|     {"SendActorList",              ActorFunctions::SendActorList},\ | ||||
|     {"SendActorAuthority",         ActorFunctions::SendActorAuthority},\ | ||||
|     {"SendActorPosition",          ActorFunctions::SendActorPosition},\ | ||||
|     {"SendActorStatsDynamic",      ActorFunctions::SendActorStatsDynamic},\ | ||||
|     {"SendActorCellChange",        ActorFunctions::SendActorCellChange} | ||||
|     {"AddActor",                    ActorFunctions::AddActor},\ | ||||
|     \ | ||||
|     {"SendActorList",               ActorFunctions::SendActorList},\ | ||||
|     {"SendActorAuthority",          ActorFunctions::SendActorAuthority},\ | ||||
|     {"SendActorPosition",           ActorFunctions::SendActorPosition},\ | ||||
|     {"SendActorStatsDynamic",       ActorFunctions::SendActorStatsDynamic},\ | ||||
|     {"SendActorCellChange",         ActorFunctions::SendActorCellChange} | ||||
| 
 | ||||
| class ActorFunctions | ||||
| { | ||||
|  | @ -87,6 +91,10 @@ public: | |||
|     static double GetActorFatigueBase(unsigned int i) noexcept; | ||||
|     static double GetActorFatigueCurrent(unsigned int i) noexcept; | ||||
| 
 | ||||
|     static const char *GetActorEquipmentItemRefId(unsigned int i, unsigned short slot) noexcept; | ||||
|     static int GetActorEquipmentItemCount(unsigned int i, unsigned short slot) noexcept; | ||||
|     static int GetActorEquipmentItemCharge(unsigned int i, unsigned short slot) noexcept; | ||||
| 
 | ||||
|     static bool DoesActorHavePosition(unsigned int i) noexcept; | ||||
|     static bool DoesActorHaveStatsDynamic(unsigned int i) noexcept; | ||||
| 
 | ||||
|  |  | |||
|  | @ -145,6 +145,7 @@ public: | |||
|             {"OnObjectScale",            Function<void, unsigned short, const char*>()}, | ||||
|             {"OnObjectTrap",             Function<void, unsigned short, const char*>()}, | ||||
|             {"OnActorList",              Function<void, unsigned short, const char*>()}, | ||||
|             {"OnActorEquipment",         Function<void, unsigned short, const char*>()}, | ||||
|             {"OnActorCellChange",        Function<void, unsigned short, const char*>()}, | ||||
|             {"OnActorTest",              Function<void, unsigned short, const char*>()}, | ||||
|             {"OnPlayerSendMessage",      Function<bool, unsigned short, const char*>()}, | ||||
|  |  | |||
|  | @ -19,7 +19,11 @@ namespace mwmp | |||
|             Cell *serverCell = CellController::get()->getCell(&actorList.cell); | ||||
| 
 | ||||
|             if (serverCell != nullptr) | ||||
|             { | ||||
|                 Script::Call<Script::CallbackIdentity("OnActorEquipment")>(player.getId(), actorList.cell.getDescription().c_str()); | ||||
| 
 | ||||
|                 serverCell->sendToLoaded(&packet, &actorList); | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue