1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-30 00:36:41 +00:00

[Server] Add OnConsoleCommand event and associated script function

This commit is contained in:
David Cernat 2019-12-07 10:13:10 +02:00
parent eeb77f80d2
commit 0e0ac7a60f
6 changed files with 52 additions and 11 deletions

View file

@ -113,17 +113,17 @@ set(PROCESSORS_PLAYER
source_group(tes3mp-server\\processors\\player FILES ${PROCESSORS_PLAYER})
set(PROCESSORS_OBJECT
processors/object/ProcessorContainer.hpp processors/object/ProcessorDoorState.hpp
processors/object/ProcessorMusicPlay.hpp processors/object/ProcessorObjectActivate.hpp
processors/object/ProcessorObjectAnimPlay.hpp processors/object/ProcessorObjectDelete.hpp
processors/object/ProcessorObjectLock.hpp processors/object/ProcessorObjectMove.hpp
processors/object/ProcessorObjectPlace.hpp processors/object/ProcessorObjectRotate.hpp
processors/object/ProcessorObjectScale.hpp processors/object/ProcessorObjectSpawn.hpp
processors/object/ProcessorObjectState.hpp processors/object/ProcessorObjectTrap.hpp
processors/object/ProcessorScriptLocalShort.hpp processors/object/ProcessorScriptLocalFloat.hpp
processors/object/ProcessorScriptMemberShort.hpp processors/object/ProcessorScriptMemberFloat.hpp
processors/object/ProcessorScriptGlobalShort.hpp processors/object/ProcessorScriptGlobalFloat.hpp
processors/object/ProcessorVideoPlay.hpp
processors/object/ProcessorConsoleCommand.hpp processors/object/ProcessorContainer.hpp
processors/object/ProcessorDoorState.hpp processors/object/ProcessorMusicPlay.hpp
processors/object/ProcessorObjectActivate.hpp processors/object/ProcessorObjectAnimPlay.hpp
processors/object/ProcessorObjectDelete.hpp processors/object/ProcessorObjectLock.hpp
processors/object/ProcessorObjectMove.hpp processors/object/ProcessorObjectPlace.hpp
processors/object/ProcessorObjectRotate.hpp processors/object/ProcessorObjectScale.hpp
processors/object/ProcessorObjectSpawn.hpp processors/object/ProcessorObjectState.hpp
processors/object/ProcessorObjectTrap.hpp processors/object/ProcessorScriptLocalShort.hpp
processors/object/ProcessorScriptLocalFloat.hpp processors/object/ProcessorScriptMemberShort.hpp
processors/object/ProcessorScriptMemberFloat.hpp processors/object/ProcessorScriptGlobalShort.hpp
processors/object/ProcessorScriptGlobalFloat.hpp processors/object/ProcessorVideoPlay.hpp
)
source_group(tes3mp-server\\processors\\object FILES ${PROCESSORS_OBJECT})

View file

@ -64,6 +64,11 @@ unsigned char ObjectFunctions::GetObjectListAction() noexcept
return readObjectList->action;
}
const char *ObjectFunctions::GetObjectListConsoleCommand() noexcept
{
return readObjectList->consoleCommand.c_str();
}
unsigned char ObjectFunctions::GetObjectListContainerSubAction() noexcept
{
return readObjectList->containerSubAction;

View file

@ -13,6 +13,7 @@
{"GetObjectListOrigin", ObjectFunctions::GetObjectListOrigin},\
{"GetObjectListClientScript", ObjectFunctions::GetObjectListClientScript},\
{"GetObjectListAction", ObjectFunctions::GetObjectListAction},\
{"GetObjectListConsoleCommand", ObjectFunctions::GetObjectListConsoleCommand},\
{"GetObjectListContainerSubAction", ObjectFunctions::GetObjectListContainerSubAction},\
\
{"IsObjectPlayer", ObjectFunctions::IsObjectPlayer},\
@ -218,6 +219,13 @@ public:
*/
static unsigned char GetObjectListAction() noexcept;
/**
* \brief Get the console command used in the read object list.
*
* \return The console command.
*/
static const char *GetObjectListConsoleCommand() noexcept;
/**
* \brief Get the container subaction type used in the read object list.
*

View file

@ -185,6 +185,7 @@ public:
{"OnCellLoad", Callback<unsigned short, const char*>()},
{"OnCellUnload", Callback<unsigned short, const char*>()},
{"OnCellDeletion", Callback<const char*>()},
{"OnConsoleCommand", Callback<unsigned short, const char*>()},
{"OnContainer", Callback<unsigned short, const char*>()},
{"OnDoorState", Callback<unsigned short, const char*>()},
{"OnObjectActivate", Callback<unsigned short, const char*>()},

View file

@ -54,6 +54,7 @@
#include "actor/ProcessorActorPosition.hpp"
#include "actor/ProcessorActorSpeech.hpp"
#include "ObjectProcessor.hpp"
#include "object/ProcessorConsoleCommand.hpp"
#include "object/ProcessorContainer.hpp"
#include "object/ProcessorDoorState.hpp"
#include "object/ProcessorMusicPlay.hpp"
@ -135,6 +136,7 @@ void ProcessorInitializer()
ActorProcessor::AddProcessor(new ProcessorActorStatsDynamic());
ActorProcessor::AddProcessor(new ProcessorActorTest());
ObjectProcessor::AddProcessor(new ProcessorConsoleCommand());
ObjectProcessor::AddProcessor(new ProcessorContainer());
ObjectProcessor::AddProcessor(new ProcessorDoorState());
ObjectProcessor::AddProcessor(new ProcessorMusicPlay());

View file

@ -0,0 +1,25 @@
#ifndef OPENMW_PROCESSORCONSOLECOMMAND_HPP
#define OPENMW_PROCESSORCONSOLECOMMAND_HPP
#include "../ObjectProcessor.hpp"
namespace mwmp
{
class ProcessorConsoleCommand : public ObjectProcessor
{
public:
ProcessorConsoleCommand()
{
BPP_INIT(ID_CONSOLE_COMMAND)
}
void Do(ObjectPacket &packet, Player &player, BaseObjectList &objectList) override
{
LOG_MESSAGE_SIMPLE(TimedLog::LOG_INFO, "Received %s from %s", strPacketID.c_str(), player.npc.mName.c_str());
Script::Call<Script::CallbackIdentity("OnConsoleCommand")>(player.getId(), objectList.cell.getDescription().c_str());
}
};
}
#endif //OPENMW_PROCESSORCONSOLECOMMAND_HPP