[Server] Trait all API functions as "extern C"

Move Timer & Public functions to Script/Functions
ffi-server-rewrite
Koncord 6 years ago
parent c058dce346
commit 6a2878820c

@ -60,6 +60,7 @@ set(SERVER
Script/Functions/Positions.cpp Script/Functions/Quests.cpp Script/Functions/RecordsDynamic.cpp Script/Functions/Positions.cpp Script/Functions/Quests.cpp Script/Functions/RecordsDynamic.cpp
Script/Functions/Server.cpp Script/Functions/Settings.cpp Script/Functions/Shapeshift.cpp Script/Functions/Server.cpp Script/Functions/Settings.cpp Script/Functions/Shapeshift.cpp
Script/Functions/Spells.cpp Script/Functions/Stats.cpp Script/Functions/Timer.cpp Script/Functions/Spells.cpp Script/Functions/Stats.cpp Script/Functions/Timer.cpp
Script/Functions/Public.cpp
Script/API/TimerAPI.cpp Script/API/PublicFnAPI.cpp Script/API/TimerAPI.cpp Script/API/PublicFnAPI.cpp
${LuaScript_Sources} ${LuaScript_Sources}
@ -184,6 +185,7 @@ if (UNIX)
target_link_libraries(tes3mp-server dl) target_link_libraries(tes3mp-server dl)
# Fix for not visible pthreads functions for linker with glibc 2.15 # Fix for not visible pthreads functions for linker with glibc 2.15
if(NOT APPLE) if(NOT APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic") # TODO: use -Wl,--dynamic-list=list.txt instead
target_link_libraries(tes3mp-server ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(tes3mp-server ${CMAKE_THREAD_LIBS_INIT})
endif(NOT APPLE) endif(NOT APPLE)
endif(UNIX) endif(UNIX)

@ -20,25 +20,25 @@ const BaseActor emptyActor = {};
static std::string tempCellDescription; static std::string tempCellDescription;
void ActorFunctions::ReadReceivedActorList() noexcept extern "C" void ActorFunctions::ReadReceivedActorList() noexcept
{ {
readActorList = mwmp::Networking::getPtr()->getReceivedActorList(); readActorList = mwmp::Networking::getPtr()->getReceivedActorList();
} }
void ActorFunctions::ReadCellActorList(const char* cellDescription) noexcept extern "C" void ActorFunctions::ReadCellActorList(const char* cellDescription) noexcept
{ {
ESM::Cell esmCell = Utils::getCellFromDescription(cellDescription); ESM::Cell esmCell = Utils::getCellFromDescription(cellDescription);
Cell *serverCell = CellController::get()->getCell(&esmCell); Cell *serverCell = CellController::get()->getCell(&esmCell);
readActorList = serverCell->getActorList(); readActorList = serverCell->getActorList();
} }
void ActorFunctions::ClearActorList() noexcept extern "C" void ActorFunctions::ClearActorList() noexcept
{ {
writeActorList.cell.blank(); writeActorList.cell.blank();
writeActorList.baseActors.clear(); writeActorList.baseActors.clear();
} }
void ActorFunctions::SetActorListPid(unsigned short pid) noexcept extern "C" void ActorFunctions::SetActorListPid(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -46,143 +46,143 @@ void ActorFunctions::SetActorListPid(unsigned short pid) noexcept
writeActorList.guid = player->guid; writeActorList.guid = player->guid;
} }
void ActorFunctions::CopyReceivedActorListToStore() noexcept extern "C" void ActorFunctions::CopyReceivedActorListToStore() noexcept
{ {
writeActorList = *readActorList; writeActorList = *readActorList;
} }
unsigned int ActorFunctions::GetActorListSize() noexcept extern "C" unsigned int ActorFunctions::GetActorListSize() noexcept
{ {
return readActorList->count; return readActorList->count;
} }
unsigned char ActorFunctions::GetActorListAction() noexcept extern "C" unsigned char ActorFunctions::GetActorListAction() noexcept
{ {
return readActorList->action; return readActorList->action;
} }
const char *ActorFunctions::GetActorCell(unsigned int index) noexcept extern "C" const char *ActorFunctions::GetActorCell(unsigned int index) noexcept
{ {
tempCellDescription = readActorList->baseActors.at(index).cell.getDescription(); tempCellDescription = readActorList->baseActors.at(index).cell.getDescription();
return tempCellDescription.c_str(); return tempCellDescription.c_str();
} }
const char *ActorFunctions::GetActorRefId(unsigned int index) noexcept extern "C" const char *ActorFunctions::GetActorRefId(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).refId.c_str(); return readActorList->baseActors.at(index).refId.c_str();
} }
unsigned int ActorFunctions::GetActorRefNum(unsigned int index) noexcept extern "C" unsigned int ActorFunctions::GetActorRefNum(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).refNum; return readActorList->baseActors.at(index).refNum;
} }
unsigned int ActorFunctions::GetActorMpNum(unsigned int index) noexcept extern "C" unsigned int ActorFunctions::GetActorMpNum(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).mpNum; return readActorList->baseActors.at(index).mpNum;
} }
double ActorFunctions::GetActorPosX(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorPosX(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).position.pos[0]; return readActorList->baseActors.at(index).position.pos[0];
} }
double ActorFunctions::GetActorPosY(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorPosY(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).position.pos[1]; return readActorList->baseActors.at(index).position.pos[1];
} }
double ActorFunctions::GetActorPosZ(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorPosZ(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).position.pos[2]; return readActorList->baseActors.at(index).position.pos[2];
} }
double ActorFunctions::GetActorRotX(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorRotX(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).position.rot[0]; return readActorList->baseActors.at(index).position.rot[0];
} }
double ActorFunctions::GetActorRotY(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorRotY(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).position.rot[1]; return readActorList->baseActors.at(index).position.rot[1];
} }
double ActorFunctions::GetActorRotZ(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorRotZ(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).position.rot[2]; return readActorList->baseActors.at(index).position.rot[2];
} }
double ActorFunctions::GetActorHealthBase(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorHealthBase(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[0].mBase; return readActorList->baseActors.at(index).creatureStats.mDynamic[0].mBase;
} }
double ActorFunctions::GetActorHealthCurrent(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorHealthCurrent(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[0].mCurrent; return readActorList->baseActors.at(index).creatureStats.mDynamic[0].mCurrent;
} }
double ActorFunctions::GetActorHealthModified(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorHealthModified(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[0].mMod; return readActorList->baseActors.at(index).creatureStats.mDynamic[0].mMod;
} }
double ActorFunctions::GetActorMagickaBase(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorMagickaBase(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[1].mBase; return readActorList->baseActors.at(index).creatureStats.mDynamic[1].mBase;
} }
double ActorFunctions::GetActorMagickaCurrent(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorMagickaCurrent(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[1].mCurrent; return readActorList->baseActors.at(index).creatureStats.mDynamic[1].mCurrent;
} }
double ActorFunctions::GetActorMagickaModified(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorMagickaModified(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[1].mMod; return readActorList->baseActors.at(index).creatureStats.mDynamic[1].mMod;
} }
double ActorFunctions::GetActorFatigueBase(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorFatigueBase(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[2].mBase; return readActorList->baseActors.at(index).creatureStats.mDynamic[2].mBase;
} }
double ActorFunctions::GetActorFatigueCurrent(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorFatigueCurrent(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[2].mCurrent; return readActorList->baseActors.at(index).creatureStats.mDynamic[2].mCurrent;
} }
double ActorFunctions::GetActorFatigueModified(unsigned int index) noexcept extern "C" double ActorFunctions::GetActorFatigueModified(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).creatureStats.mDynamic[2].mMod; return readActorList->baseActors.at(index).creatureStats.mDynamic[2].mMod;
} }
const char *ActorFunctions::GetActorEquipmentItemRefId(unsigned int index, unsigned short slot) noexcept extern "C" const char *ActorFunctions::GetActorEquipmentItemRefId(unsigned int index, unsigned short slot) noexcept
{ {
return readActorList->baseActors.at(index).equipmentItems[slot].refId.c_str(); return readActorList->baseActors.at(index).equipmentItems[slot].refId.c_str();
} }
int ActorFunctions::GetActorEquipmentItemCount(unsigned int index, unsigned short slot) noexcept extern "C" int ActorFunctions::GetActorEquipmentItemCount(unsigned int index, unsigned short slot) noexcept
{ {
return readActorList->baseActors.at(index).equipmentItems[slot].count; return readActorList->baseActors.at(index).equipmentItems[slot].count;
} }
int ActorFunctions::GetActorEquipmentItemCharge(unsigned int index, unsigned short slot) noexcept extern "C" int ActorFunctions::GetActorEquipmentItemCharge(unsigned int index, unsigned short slot) noexcept
{ {
return readActorList->baseActors.at(index).equipmentItems[slot].charge; return readActorList->baseActors.at(index).equipmentItems[slot].charge;
} }
double ActorFunctions::GetActorEquipmentItemEnchantmentCharge(unsigned int index, unsigned short slot) noexcept extern "C" double ActorFunctions::GetActorEquipmentItemEnchantmentCharge(unsigned int index, unsigned short slot) noexcept
{ {
return readActorList->baseActors.at(index).equipmentItems[slot].enchantmentCharge; return readActorList->baseActors.at(index).equipmentItems[slot].enchantmentCharge;
} }
bool ActorFunctions::DoesActorHavePlayerKiller(unsigned int index) noexcept extern "C" bool ActorFunctions::DoesActorHavePlayerKiller(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).killer.isPlayer; return readActorList->baseActors.at(index).killer.isPlayer;
} }
int ActorFunctions::GetActorKillerPid(unsigned int index) noexcept extern "C" int ActorFunctions::GetActorKillerPid(unsigned int index) noexcept
{ {
Player *player = Players::getPlayer(readActorList->baseActors.at(index).killer.guid); Player *player = Players::getPlayer(readActorList->baseActors.at(index).killer.guid);
@ -192,136 +192,136 @@ int ActorFunctions::GetActorKillerPid(unsigned int index) noexcept
return -1; return -1;
} }
const char *ActorFunctions::GetActorKillerRefId(unsigned int index) noexcept extern "C" const char *ActorFunctions::GetActorKillerRefId(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).killer.refId.c_str(); return readActorList->baseActors.at(index).killer.refId.c_str();
} }
unsigned int ActorFunctions::GetActorKillerRefNum(unsigned int index) noexcept extern "C" unsigned int ActorFunctions::GetActorKillerRefNum(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).killer.refNum; return readActorList->baseActors.at(index).killer.refNum;
} }
unsigned int ActorFunctions::GetActorKillerMpNum(unsigned int index) noexcept extern "C" unsigned int ActorFunctions::GetActorKillerMpNum(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).killer.mpNum; return readActorList->baseActors.at(index).killer.mpNum;
} }
const char *ActorFunctions::GetActorKillerName(unsigned int index) noexcept extern "C" const char *ActorFunctions::GetActorKillerName(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).killer.name.c_str(); return readActorList->baseActors.at(index).killer.name.c_str();
} }
bool ActorFunctions::DoesActorHavePosition(unsigned int index) noexcept extern "C" bool ActorFunctions::DoesActorHavePosition(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).hasPositionData; return readActorList->baseActors.at(index).hasPositionData;
} }
bool ActorFunctions::DoesActorHaveStatsDynamic(unsigned int index) noexcept extern "C" bool ActorFunctions::DoesActorHaveStatsDynamic(unsigned int index) noexcept
{ {
return readActorList->baseActors.at(index).hasStatsDynamicData; return readActorList->baseActors.at(index).hasStatsDynamicData;
} }
void ActorFunctions::SetActorListCell(const char* cellDescription) noexcept extern "C" void ActorFunctions::SetActorListCell(const char* cellDescription) noexcept
{ {
writeActorList.cell = Utils::getCellFromDescription(cellDescription); writeActorList.cell = Utils::getCellFromDescription(cellDescription);
} }
void ActorFunctions::SetActorListAction(unsigned char action) noexcept extern "C" void ActorFunctions::SetActorListAction(unsigned char action) noexcept
{ {
writeActorList.action = action; writeActorList.action = action;
} }
void ActorFunctions::SetActorCell(const char* cellDescription) noexcept extern "C" void ActorFunctions::SetActorCell(const char* cellDescription) noexcept
{ {
tempActor.cell = Utils::getCellFromDescription(cellDescription); tempActor.cell = Utils::getCellFromDescription(cellDescription);
} }
void ActorFunctions::SetActorRefId(const char* refId) noexcept extern "C" void ActorFunctions::SetActorRefId(const char* refId) noexcept
{ {
tempActor.refId = refId; tempActor.refId = refId;
} }
void ActorFunctions::SetActorRefNum(int refNum) noexcept extern "C" void ActorFunctions::SetActorRefNum(int refNum) noexcept
{ {
tempActor.refNum = refNum; tempActor.refNum = refNum;
} }
void ActorFunctions::SetActorMpNum(int mpNum) noexcept extern "C" void ActorFunctions::SetActorMpNum(int mpNum) noexcept
{ {
tempActor.mpNum = mpNum; tempActor.mpNum = mpNum;
} }
void ActorFunctions::SetActorPosition(double x, double y, double z) noexcept extern "C" void ActorFunctions::SetActorPosition(double x, double y, double z) noexcept
{ {
tempActor.position.pos[0] = x; tempActor.position.pos[0] = x;
tempActor.position.pos[1] = y; tempActor.position.pos[1] = y;
tempActor.position.pos[2] = z; tempActor.position.pos[2] = z;
} }
void ActorFunctions::SetActorRotation(double x, double y, double z) noexcept extern "C" void ActorFunctions::SetActorRotation(double x, double y, double z) noexcept
{ {
tempActor.position.rot[0] = x; tempActor.position.rot[0] = x;
tempActor.position.rot[1] = y; tempActor.position.rot[1] = y;
tempActor.position.rot[2] = z; tempActor.position.rot[2] = z;
} }
void ActorFunctions::SetActorHealthBase(double value) noexcept extern "C" void ActorFunctions::SetActorHealthBase(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[0].mBase = value; tempActor.creatureStats.mDynamic[0].mBase = value;
} }
void ActorFunctions::SetActorHealthCurrent(double value) noexcept extern "C" void ActorFunctions::SetActorHealthCurrent(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[0].mCurrent = value; tempActor.creatureStats.mDynamic[0].mCurrent = value;
} }
void ActorFunctions::SetActorHealthModified(double value) noexcept extern "C" void ActorFunctions::SetActorHealthModified(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[0].mMod = value; tempActor.creatureStats.mDynamic[0].mMod = value;
} }
void ActorFunctions::SetActorMagickaBase(double value) noexcept extern "C" void ActorFunctions::SetActorMagickaBase(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[1].mBase = value; tempActor.creatureStats.mDynamic[1].mBase = value;
} }
void ActorFunctions::SetActorMagickaCurrent(double value) noexcept extern "C" void ActorFunctions::SetActorMagickaCurrent(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[1].mCurrent = value; tempActor.creatureStats.mDynamic[1].mCurrent = value;
} }
void ActorFunctions::SetActorMagickaModified(double value) noexcept extern "C" void ActorFunctions::SetActorMagickaModified(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[1].mMod = value; tempActor.creatureStats.mDynamic[1].mMod = value;
} }
void ActorFunctions::SetActorFatigueBase(double value) noexcept extern "C" void ActorFunctions::SetActorFatigueBase(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[2].mBase = value; tempActor.creatureStats.mDynamic[2].mBase = value;
} }
void ActorFunctions::SetActorFatigueCurrent(double value) noexcept extern "C" void ActorFunctions::SetActorFatigueCurrent(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[2].mCurrent = value; tempActor.creatureStats.mDynamic[2].mCurrent = value;
} }
void ActorFunctions::SetActorFatigueModified(double value) noexcept extern "C" void ActorFunctions::SetActorFatigueModified(double value) noexcept
{ {
tempActor.creatureStats.mDynamic[2].mMod = value; tempActor.creatureStats.mDynamic[2].mMod = value;
} }
void ActorFunctions::SetActorSound(const char* sound) noexcept extern "C" void ActorFunctions::SetActorSound(const char* sound) noexcept
{ {
tempActor.sound = sound; tempActor.sound = sound;
} }
void ActorFunctions::SetActorAIAction(unsigned int action) noexcept extern "C" void ActorFunctions::SetActorAIAction(unsigned int action) noexcept
{ {
tempActor.aiAction = action; tempActor.aiAction = action;
} }
void ActorFunctions::SetActorAITargetToPlayer(unsigned short pid) noexcept extern "C" void ActorFunctions::SetActorAITargetToPlayer(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -332,7 +332,7 @@ void ActorFunctions::SetActorAITargetToPlayer(unsigned short pid) noexcept
tempActor.aiTarget.guid = player->guid; tempActor.aiTarget.guid = player->guid;
} }
void ActorFunctions::SetActorAITargetToObject(int refNum, int mpNum) noexcept extern "C" void ActorFunctions::SetActorAITargetToObject(int refNum, int mpNum) noexcept
{ {
tempActor.hasAiTarget = true; tempActor.hasAiTarget = true;
tempActor.aiTarget.isPlayer = false; tempActor.aiTarget.isPlayer = false;
@ -341,29 +341,29 @@ void ActorFunctions::SetActorAITargetToObject(int refNum, int mpNum) noexcept
tempActor.aiTarget.mpNum = mpNum; tempActor.aiTarget.mpNum = mpNum;
} }
void ActorFunctions::SetActorAICoordinates(double x, double y, double z) noexcept extern "C" void ActorFunctions::SetActorAICoordinates(double x, double y, double z) noexcept
{ {
tempActor.aiCoordinates.pos[0] = x; tempActor.aiCoordinates.pos[0] = x;
tempActor.aiCoordinates.pos[1] = y; tempActor.aiCoordinates.pos[1] = y;
tempActor.aiCoordinates.pos[2] = z; tempActor.aiCoordinates.pos[2] = z;
} }
void ActorFunctions::SetActorAIDistance(unsigned int distance) noexcept extern "C" void ActorFunctions::SetActorAIDistance(unsigned int distance) noexcept
{ {
tempActor.aiDistance = distance; tempActor.aiDistance = distance;
} }
void ActorFunctions::SetActorAIDuration(unsigned int duration) noexcept extern "C" void ActorFunctions::SetActorAIDuration(unsigned int duration) noexcept
{ {
tempActor.aiDuration = duration; tempActor.aiDuration = duration;
} }
void ActorFunctions::SetActorAIRepetition(bool shouldRepeat) noexcept extern "C" void ActorFunctions::SetActorAIRepetition(bool shouldRepeat) noexcept
{ {
tempActor.aiShouldRepeat = shouldRepeat; tempActor.aiShouldRepeat = shouldRepeat;
} }
void ActorFunctions::EquipActorItem(unsigned short slot, const char *refId, unsigned int count, int charge, double enchantmentCharge) noexcept extern "C" void ActorFunctions::EquipActorItem(unsigned short slot, const char *refId, unsigned int count, int charge, double enchantmentCharge) noexcept
{ {
tempActor.equipmentItems[slot].refId = refId; tempActor.equipmentItems[slot].refId = refId;
tempActor.equipmentItems[slot].count = count; tempActor.equipmentItems[slot].count = count;
@ -371,26 +371,26 @@ void ActorFunctions::EquipActorItem(unsigned short slot, const char *refId, unsi
tempActor.equipmentItems[slot].enchantmentCharge = enchantmentCharge; tempActor.equipmentItems[slot].enchantmentCharge = enchantmentCharge;
} }
void ActorFunctions::UnequipActorItem(unsigned short slot) noexcept extern "C" void ActorFunctions::UnequipActorItem(unsigned short slot) noexcept
{ {
ActorFunctions::EquipActorItem(slot, "", 0, -1, -1); ActorFunctions::EquipActorItem(slot, "", 0, -1, -1);
} }
void ActorFunctions::AddActor() noexcept extern "C" void ActorFunctions::AddActor() noexcept
{ {
writeActorList.baseActors.push_back(tempActor); writeActorList.baseActors.push_back(tempActor);
tempActor = emptyActor; tempActor = emptyActor;
} }
void ActorFunctions::SendActorList() noexcept extern "C" void ActorFunctions::SendActorList() noexcept
{ {
mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_LIST); mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_LIST);
actorPacket->setActorList(&writeActorList); actorPacket->setActorList(&writeActorList);
actorPacket->Send(writeActorList.guid); actorPacket->Send(writeActorList.guid);
} }
void ActorFunctions::SendActorAuthority() noexcept extern "C" void ActorFunctions::SendActorAuthority() noexcept
{ {
Cell *serverCell = CellController::get()->getCell(&writeActorList.cell); Cell *serverCell = CellController::get()->getCell(&writeActorList.cell);
@ -407,7 +407,7 @@ void ActorFunctions::SendActorAuthority() noexcept
} }
} }
void ActorFunctions::SendActorPosition(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept extern "C" void ActorFunctions::SendActorPosition(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept
{ {
mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_POSITION); mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_POSITION);
actorPacket->setActorList(&writeActorList); actorPacket->setActorList(&writeActorList);
@ -426,7 +426,7 @@ void ActorFunctions::SendActorPosition(bool sendToOtherVisitors, bool skipAttach
} }
} }
void ActorFunctions::SendActorStatsDynamic(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept extern "C" void ActorFunctions::SendActorStatsDynamic(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept
{ {
mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_STATS_DYNAMIC); mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_STATS_DYNAMIC);
actorPacket->setActorList(&writeActorList); actorPacket->setActorList(&writeActorList);
@ -445,7 +445,7 @@ void ActorFunctions::SendActorStatsDynamic(bool sendToOtherVisitors, bool skipAt
} }
} }
void ActorFunctions::SendActorEquipment(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept extern "C" void ActorFunctions::SendActorEquipment(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept
{ {
mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_EQUIPMENT); mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_EQUIPMENT);
actorPacket->setActorList(&writeActorList); actorPacket->setActorList(&writeActorList);
@ -464,7 +464,7 @@ void ActorFunctions::SendActorEquipment(bool sendToOtherVisitors, bool skipAttac
} }
} }
void ActorFunctions::SendActorSpeech(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept extern "C" void ActorFunctions::SendActorSpeech(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept
{ {
mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_SPEECH); mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_SPEECH);
actorPacket->setActorList(&writeActorList); actorPacket->setActorList(&writeActorList);
@ -483,7 +483,7 @@ void ActorFunctions::SendActorSpeech(bool sendToOtherVisitors, bool skipAttached
} }
} }
void ActorFunctions::SendActorAI(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept extern "C" void ActorFunctions::SendActorAI(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept
{ {
mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_AI); mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_AI);
actorPacket->setActorList(&writeActorList); actorPacket->setActorList(&writeActorList);
@ -502,7 +502,7 @@ void ActorFunctions::SendActorAI(bool sendToOtherVisitors, bool skipAttachedPlay
} }
} }
void ActorFunctions::SendActorCellChange(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept extern "C" void ActorFunctions::SendActorCellChange(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept
{ {
mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_CELL_CHANGE); mwmp::ActorPacket *actorPacket = mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_CELL_CHANGE);
actorPacket->setActorList(&writeActorList); actorPacket->setActorList(&writeActorList);
@ -521,36 +521,35 @@ void ActorFunctions::SendActorCellChange(bool sendToOtherVisitors, bool skipAtta
} }
} }
extern "C" // All methods below are deprecated versions of methods from above
// All methods below are deprecated versions of methods from above
void ActorFunctions::ReadLastActorList() noexcept void ActorFunctions::ReadLastActorList() noexcept
{ {
ReadReceivedActorList(); ReadReceivedActorList();
} }
void ActorFunctions::InitializeActorList(unsigned short pid) noexcept extern "C" void ActorFunctions::InitializeActorList(unsigned short pid) noexcept
{ {
ClearActorList(); ClearActorList();
SetActorListPid(pid); SetActorListPid(pid);
} }
void ActorFunctions::CopyLastActorListToStore() noexcept extern "C" void ActorFunctions::CopyLastActorListToStore() noexcept
{ {
CopyLastActorListToStore(); CopyLastActorListToStore();
} }
unsigned int ActorFunctions::GetActorRefNumIndex(unsigned int index) noexcept extern "C" unsigned int ActorFunctions::GetActorRefNumIndex(unsigned int index) noexcept
{ {
return GetActorRefNum(index); return GetActorRefNum(index);
} }
unsigned int ActorFunctions::GetActorKillerRefNumIndex(unsigned int index) noexcept extern "C" unsigned int ActorFunctions::GetActorKillerRefNumIndex(unsigned int index) noexcept
{ {
return GetActorKillerRefNum(index); return GetActorKillerRefNum(index);
} }
void ActorFunctions::SetActorRefNumIndex(int refNum) noexcept extern "C" void ActorFunctions::SetActorRefNumIndex(int refNum) noexcept
{ {
tempActor.refNum = refNum; tempActor.refNum = refNum;
} }

@ -102,16 +102,14 @@
{"GetActorKillerRefNumIndex", ActorFunctions::GetActorKillerRefNumIndex},\ {"GetActorKillerRefNumIndex", ActorFunctions::GetActorKillerRefNumIndex},\
{"SetActorRefNumIndex", ActorFunctions::SetActorRefNumIndex} {"SetActorRefNumIndex", ActorFunctions::SetActorRefNumIndex}
class ActorFunctions namespace ActorFunctions
{ {
public:
/** /**
* \brief Use the last actor list received by the server as the one being read. * \brief Use the last actor list received by the server as the one being read.
* *
* \return void * \return void
*/ */
static void ReadReceivedActorList() noexcept; extern "C" void ReadReceivedActorList() noexcept;
/** /**
* \brief Use the temporary actor list stored for a cell as the one being read. * \brief Use the temporary actor list stored for a cell as the one being read.
@ -122,14 +120,14 @@ public:
* \param cellDescription The description of the cell whose actor list should be read. * \param cellDescription The description of the cell whose actor list should be read.
* \return void * \return void
*/ */
static void ReadCellActorList(const char* cellDescription) noexcept; extern "C" void ReadCellActorList(const char* cellDescription) noexcept;
/** /**
* \brief Clear the data from the actor list stored on the server. * \brief Clear the data from the actor list stored on the server.
* *
* \return void * \return void
*/ */
static void ClearActorList() noexcept; extern "C" void ClearActorList() noexcept;
/** /**
* \brief Set the pid attached to the ActorList. * \brief Set the pid attached to the ActorList.
@ -137,7 +135,7 @@ public:
* \param pid The player ID to whom the actor list should be attached. * \param pid The player ID to whom the actor list should be attached.
* \return void * \return void
*/ */
static void SetActorListPid(unsigned short pid) noexcept; extern "C" void SetActorListPid(unsigned short pid) noexcept;
/** /**
* \brief Take the contents of the read-only actor list last received by the * \brief Take the contents of the read-only actor list last received by the
@ -146,21 +144,21 @@ public:
* *
* \return void * \return void
*/ */
static void CopyReceivedActorListToStore() noexcept; extern "C" void CopyReceivedActorListToStore() noexcept;
/** /**
* \brief Get the number of indexes in the read actor list. * \brief Get the number of indexes in the read actor list.
* *
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetActorListSize() noexcept; extern "C" unsigned int GetActorListSize() noexcept;
/** /**
* \brief Get the action type used in the read actor list. * \brief Get the action type used in the read actor list.
* *
* \return The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST). * \return The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST).
*/ */
static unsigned char GetActorListAction() noexcept; extern "C" unsigned char GetActorListAction() noexcept;
/** /**
* \brief Get the cell description of the actor at a certain index in the read actor list. * \brief Get the cell description of the actor at a certain index in the read actor list.
@ -168,7 +166,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The cell description. * \return The cell description.
*/ */
static const char *GetActorCell(unsigned int index) noexcept; extern "C" const char *GetActorCell(unsigned int index) noexcept;
/** /**
* \brief Get the refId of the actor at a certain index in the read actor list. * \brief Get the refId of the actor at a certain index in the read actor list.
@ -176,7 +174,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The refId. * \return The refId.
*/ */
static const char *GetActorRefId(unsigned int index) noexcept; extern "C" const char *GetActorRefId(unsigned int index) noexcept;
/** /**
* \brief Get the refNum of the actor at a certain index in the read actor list. * \brief Get the refNum of the actor at a certain index in the read actor list.
@ -184,7 +182,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The refNum. * \return The refNum.
*/ */
static unsigned int GetActorRefNum(unsigned int index) noexcept; extern "C" unsigned int GetActorRefNum(unsigned int index) noexcept;
/** /**
* \brief Get the mpNum of the actor at a certain index in the read actor list. * \brief Get the mpNum of the actor at a certain index in the read actor list.
@ -192,7 +190,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The mpNum. * \return The mpNum.
*/ */
static unsigned int GetActorMpNum(unsigned int index) noexcept; extern "C" unsigned int GetActorMpNum(unsigned int index) noexcept;
/** /**
* \brief Get the X position of the actor at a certain index in the read actor list. * \brief Get the X position of the actor at a certain index in the read actor list.
@ -200,7 +198,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The X position. * \return The X position.
*/ */
static double GetActorPosX(unsigned int index) noexcept; extern "C" double GetActorPosX(unsigned int index) noexcept;
/** /**
* \brief Get the Y position of the actor at a certain index in the read actor list. * \brief Get the Y position of the actor at a certain index in the read actor list.
@ -208,7 +206,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The Y position. * \return The Y position.
*/ */
static double GetActorPosY(unsigned int index) noexcept; extern "C" double GetActorPosY(unsigned int index) noexcept;
/** /**
* \brief Get the Z position of the actor at a certain index in the read actor list. * \brief Get the Z position of the actor at a certain index in the read actor list.
@ -216,7 +214,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The Z position. * \return The Z position.
*/ */
static double GetActorPosZ(unsigned int index) noexcept; extern "C" double GetActorPosZ(unsigned int index) noexcept;
/** /**
* \brief Get the X rotation of the actor at a certain index in the read actor list. * \brief Get the X rotation of the actor at a certain index in the read actor list.
@ -224,7 +222,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The X rotation. * \return The X rotation.
*/ */
static double GetActorRotX(unsigned int index) noexcept; extern "C" double GetActorRotX(unsigned int index) noexcept;
/** /**
* \brief Get the Y rotation of the actor at a certain index in the read actor list. * \brief Get the Y rotation of the actor at a certain index in the read actor list.
@ -232,7 +230,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The Y rotation. * \return The Y rotation.
*/ */
static double GetActorRotY(unsigned int index) noexcept; extern "C" double GetActorRotY(unsigned int index) noexcept;
/** /**
* \brief Get the Z rotation of the actor at a certain index in the read actor list. * \brief Get the Z rotation of the actor at a certain index in the read actor list.
@ -240,7 +238,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The Z rotation. * \return The Z rotation.
*/ */
static double GetActorRotZ(unsigned int index) noexcept; extern "C" double GetActorRotZ(unsigned int index) noexcept;
/** /**
* \brief Get the base health of the actor at a certain index in the read actor list. * \brief Get the base health of the actor at a certain index in the read actor list.
@ -248,7 +246,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The base health. * \return The base health.
*/ */
static double GetActorHealthBase(unsigned int index) noexcept; extern "C" double GetActorHealthBase(unsigned int index) noexcept;
/** /**
* \brief Get the current health of the actor at a certain index in the read actor list. * \brief Get the current health of the actor at a certain index in the read actor list.
@ -256,7 +254,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The current health. * \return The current health.
*/ */
static double GetActorHealthCurrent(unsigned int index) noexcept; extern "C" double GetActorHealthCurrent(unsigned int index) noexcept;
/** /**
* \brief Get the modified health of the actor at a certain index in the read actor list. * \brief Get the modified health of the actor at a certain index in the read actor list.
@ -264,7 +262,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The modified health. * \return The modified health.
*/ */
static double GetActorHealthModified(unsigned int index) noexcept; extern "C" double GetActorHealthModified(unsigned int index) noexcept;
/** /**
* \brief Get the base magicka of the actor at a certain index in the read actor list. * \brief Get the base magicka of the actor at a certain index in the read actor list.
@ -272,7 +270,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The base magicka. * \return The base magicka.
*/ */
static double GetActorMagickaBase(unsigned int index) noexcept; extern "C" double GetActorMagickaBase(unsigned int index) noexcept;
/** /**
* \brief Get the current magicka of the actor at a certain index in the read actor list. * \brief Get the current magicka of the actor at a certain index in the read actor list.
@ -280,7 +278,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The current magicka. * \return The current magicka.
*/ */
static double GetActorMagickaCurrent(unsigned int index) noexcept; extern "C" double GetActorMagickaCurrent(unsigned int index) noexcept;
/** /**
* \brief Get the modified magicka of the actor at a certain index in the read actor list. * \brief Get the modified magicka of the actor at a certain index in the read actor list.
@ -288,7 +286,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The modified magicka. * \return The modified magicka.
*/ */
static double GetActorMagickaModified(unsigned int index) noexcept; extern "C" double GetActorMagickaModified(unsigned int index) noexcept;
/** /**
* \brief Get the base fatigue of the actor at a certain index in the read actor list. * \brief Get the base fatigue of the actor at a certain index in the read actor list.
@ -296,7 +294,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The base fatigue. * \return The base fatigue.
*/ */
static double GetActorFatigueBase(unsigned int index) noexcept; extern "C" double GetActorFatigueBase(unsigned int index) noexcept;
/** /**
* \brief Get the current fatigue of the actor at a certain index in the read actor list. * \brief Get the current fatigue of the actor at a certain index in the read actor list.
@ -304,7 +302,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The current fatigue. * \return The current fatigue.
*/ */
static double GetActorFatigueCurrent(unsigned int index) noexcept; extern "C" double GetActorFatigueCurrent(unsigned int index) noexcept;
/** /**
* \brief Get the modified fatigue of the actor at a certain index in the read actor list. * \brief Get the modified fatigue of the actor at a certain index in the read actor list.
@ -312,7 +310,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The modified fatigue. * \return The modified fatigue.
*/ */
static double GetActorFatigueModified(unsigned int index) noexcept; extern "C" double GetActorFatigueModified(unsigned int index) noexcept;
/** /**
* \brief Get the refId of the item in a certain slot of the equipment of the actor at a * \brief Get the refId of the item in a certain slot of the equipment of the actor at a
@ -322,7 +320,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The refId. * \return The refId.
*/ */
static const char *GetActorEquipmentItemRefId(unsigned int index, unsigned short slot) noexcept; extern "C" const char *GetActorEquipmentItemRefId(unsigned int index, unsigned short slot) noexcept;
/** /**
* \brief Get the count of the item in a certain slot of the equipment of the actor at a * \brief Get the count of the item in a certain slot of the equipment of the actor at a
@ -332,7 +330,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The item count. * \return The item count.
*/ */
static int GetActorEquipmentItemCount(unsigned int index, unsigned short slot) noexcept; extern "C" int GetActorEquipmentItemCount(unsigned int index, unsigned short slot) noexcept;
/** /**
* \brief Get the charge of the item in a certain slot of the equipment of the actor at a * \brief Get the charge of the item in a certain slot of the equipment of the actor at a
@ -342,7 +340,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The charge. * \return The charge.
*/ */
static int GetActorEquipmentItemCharge(unsigned int index, unsigned short slot) noexcept; extern "C" int GetActorEquipmentItemCharge(unsigned int index, unsigned short slot) noexcept;
/** /**
* \brief Get the enchantment charge of the item in a certain slot of the equipment of the actor at a * \brief Get the enchantment charge of the item in a certain slot of the equipment of the actor at a
@ -352,7 +350,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The enchantment charge. * \return The enchantment charge.
*/ */
static double GetActorEquipmentItemEnchantmentCharge(unsigned int index, unsigned short slot) noexcept; extern "C" double GetActorEquipmentItemEnchantmentCharge(unsigned int index, unsigned short slot) noexcept;
/** /**
* \brief Check whether the killer of the actor at a certain index in the read actor list is a player. * \brief Check whether the killer of the actor at a certain index in the read actor list is a player.
@ -360,7 +358,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return Whether the actor was killed by a player. * \return Whether the actor was killed by a player.
*/ */
static bool DoesActorHavePlayerKiller(unsigned int index) noexcept; extern "C" bool DoesActorHavePlayerKiller(unsigned int index) noexcept;
/** /**
* \brief Get the player ID of the killer of the actor at a certain index in the read actor list. * \brief Get the player ID of the killer of the actor at a certain index in the read actor list.
@ -368,7 +366,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The player ID of the killer. * \return The player ID of the killer.
*/ */
static int GetActorKillerPid(unsigned int index) noexcept; extern "C" int GetActorKillerPid(unsigned int index) noexcept;
/** /**
* \brief Get the refId of the actor killer of the actor at a certain index in the read actor list. * \brief Get the refId of the actor killer of the actor at a certain index in the read actor list.
@ -376,7 +374,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The refId of the killer. * \return The refId of the killer.
*/ */
static const char *GetActorKillerRefId(unsigned int index) noexcept; extern "C" const char *GetActorKillerRefId(unsigned int index) noexcept;
/** /**
* \brief Get the refNum of the actor killer of the actor at a certain index in the read actor list. * \brief Get the refNum of the actor killer of the actor at a certain index in the read actor list.
@ -384,7 +382,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The refNum of the killer. * \return The refNum of the killer.
*/ */
static unsigned int GetActorKillerRefNum(unsigned int index) noexcept; extern "C" unsigned int GetActorKillerRefNum(unsigned int index) noexcept;
/** /**
* \brief Get the mpNum of the actor killer of the actor at a certain index in the read actor list. * \brief Get the mpNum of the actor killer of the actor at a certain index in the read actor list.
@ -392,7 +390,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The mpNum of the killer. * \return The mpNum of the killer.
*/ */
static unsigned int GetActorKillerMpNum(unsigned int index) noexcept; extern "C" unsigned int GetActorKillerMpNum(unsigned int index) noexcept;
/** /**
* \brief Get the name of the actor killer of the actor at a certain index in the read actor list. * \brief Get the name of the actor killer of the actor at a certain index in the read actor list.
@ -400,7 +398,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return The name of the killer. * \return The name of the killer.
*/ */
static const char *GetActorKillerName(unsigned int index) noexcept; extern "C" const char *GetActorKillerName(unsigned int index) noexcept;
/** /**
* \brief Check whether there is any positional data for the actor at a certain index in * \brief Check whether there is any positional data for the actor at a certain index in
@ -411,7 +409,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return Whether the read actor list contains positional data. * \return Whether the read actor list contains positional data.
*/ */
static bool DoesActorHavePosition(unsigned int index) noexcept; extern "C" bool DoesActorHavePosition(unsigned int index) noexcept;
/** /**
* \brief Check whether there is any dynamic stats data for the actor at a certain index in * \brief Check whether there is any dynamic stats data for the actor at a certain index in
@ -422,7 +420,7 @@ public:
* \param index The index of the actor. * \param index The index of the actor.
* \return Whether the read actor list contains dynamic stats data. * \return Whether the read actor list contains dynamic stats data.
*/ */
static bool DoesActorHaveStatsDynamic(unsigned int index) noexcept; extern "C" bool DoesActorHaveStatsDynamic(unsigned int index) noexcept;
/** /**
* \brief Set the cell of the temporary actor list stored on the server. * \brief Set the cell of the temporary actor list stored on the server.
@ -433,7 +431,7 @@ public:
* \param cellDescription The description of the cell. * \param cellDescription The description of the cell.
* \return void * \return void
*/ */
static void SetActorListCell(const char* cellDescription) noexcept; extern "C" void SetActorListCell(const char* cellDescription) noexcept;
/** /**
* \brief Set the action type of the temporary actor list stored on the server. * \brief Set the action type of the temporary actor list stored on the server.
@ -441,7 +439,7 @@ public:
* \param action The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST). * \param action The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST).
* \return void * \return void
*/ */
static void SetActorListAction(unsigned char action) noexcept; extern "C" void SetActorListAction(unsigned char action) noexcept;
/** /**
* \brief Set the cell of the temporary actor stored on the server. * \brief Set the cell of the temporary actor stored on the server.
@ -455,7 +453,7 @@ public:
* \param cellDescription The description of the cell. * \param cellDescription The description of the cell.
* \return void * \return void
*/ */
static void SetActorCell(const char* cellDescription) noexcept; extern "C" void SetActorCell(const char* cellDescription) noexcept;
/** /**
* \brief Set the refId of the temporary actor stored on the server. * \brief Set the refId of the temporary actor stored on the server.
@ -463,7 +461,7 @@ public:
* \param refId The refId. * \param refId The refId.
* \return void * \return void
*/ */
static void SetActorRefId(const char* refId) noexcept; extern "C" void SetActorRefId(const char* refId) noexcept;
/** /**
* \brief Set the refNum of the temporary actor stored on the server. * \brief Set the refNum of the temporary actor stored on the server.
@ -471,7 +469,7 @@ public:
* \param refNum The refNum. * \param refNum The refNum.
* \return void * \return void
*/ */
static void SetActorRefNum(int refNum) noexcept; extern "C" void SetActorRefNum(int refNum) noexcept;
/** /**
* \brief Set the mpNum of the temporary actor stored on the server. * \brief Set the mpNum of the temporary actor stored on the server.
@ -479,7 +477,7 @@ public:
* \param mpNum The mpNum. * \param mpNum The mpNum.
* \return void * \return void
*/ */
static void SetActorMpNum(int mpNum) noexcept; extern "C" void SetActorMpNum(int mpNum) noexcept;
/** /**
* \brief Set the position of the temporary actor stored on the server. * \brief Set the position of the temporary actor stored on the server.
@ -489,7 +487,7 @@ public:
* \param z The Z position. * \param z The Z position.
* \return void * \return void
*/ */
static void SetActorPosition(double x, double y, double z) noexcept; extern "C" void SetActorPosition(double x, double y, double z) noexcept;
/** /**
* \brief Set the rotation of the temporary actor stored on the server. * \brief Set the rotation of the temporary actor stored on the server.
@ -499,7 +497,7 @@ public:
* \param z The Z rotation. * \param z The Z rotation.
* \return void * \return void
*/ */
static void SetActorRotation(double x, double y, double z) noexcept; extern "C" void SetActorRotation(double x, double y, double z) noexcept;
/** /**
* \brief Set the base health of the temporary actor stored on the server. * \brief Set the base health of the temporary actor stored on the server.
@ -507,7 +505,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorHealthBase(double value) noexcept; extern "C" void SetActorHealthBase(double value) noexcept;
/** /**
* \brief Set the current health of the temporary actor stored on the server. * \brief Set the current health of the temporary actor stored on the server.
@ -515,7 +513,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorHealthCurrent(double value) noexcept; extern "C" void SetActorHealthCurrent(double value) noexcept;
/** /**
* \brief Set the modified health of the temporary actor stored on the server. * \brief Set the modified health of the temporary actor stored on the server.
@ -523,7 +521,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorHealthModified(double value) noexcept; extern "C" void SetActorHealthModified(double value) noexcept;
/** /**
* \brief Set the base magicka of the temporary actor stored on the server. * \brief Set the base magicka of the temporary actor stored on the server.
@ -531,7 +529,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorMagickaBase(double value) noexcept; extern "C" void SetActorMagickaBase(double value) noexcept;
/** /**
* \brief Set the current magicka of the temporary actor stored on the server. * \brief Set the current magicka of the temporary actor stored on the server.
@ -539,7 +537,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorMagickaCurrent(double value) noexcept; extern "C" void SetActorMagickaCurrent(double value) noexcept;
/** /**
* \brief Set the modified magicka of the temporary actor stored on the server. * \brief Set the modified magicka of the temporary actor stored on the server.
@ -547,7 +545,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorMagickaModified(double value) noexcept; extern "C" void SetActorMagickaModified(double value) noexcept;
/** /**
* \brief Set the base fatigue of the temporary actor stored on the server. * \brief Set the base fatigue of the temporary actor stored on the server.
@ -555,7 +553,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorFatigueBase(double value) noexcept; extern "C" void SetActorFatigueBase(double value) noexcept;
/** /**
* \brief Set the current fatigue of the temporary actor stored on the server. * \brief Set the current fatigue of the temporary actor stored on the server.
@ -563,7 +561,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorFatigueCurrent(double value) noexcept; extern "C" void SetActorFatigueCurrent(double value) noexcept;
/** /**
* \brief Set the modified fatigue of the temporary actor stored on the server. * \brief Set the modified fatigue of the temporary actor stored on the server.
@ -571,7 +569,7 @@ public:
* \param value The new value. * \param value The new value.
* \return void * \return void
*/ */
static void SetActorFatigueModified(double value) noexcept; extern "C" void SetActorFatigueModified(double value) noexcept;
/** /**
* \brief Set the sound of the temporary actor stored on the server. * \brief Set the sound of the temporary actor stored on the server.
@ -579,7 +577,7 @@ public:
* \param sound The sound. * \param sound The sound.
* \return void * \return void
*/ */
static void SetActorSound(const char* sound) noexcept; extern "C" void SetActorSound(const char* sound) noexcept;
/** /**
* \brief Set the AI action of the temporary actor stored on the server. * \brief Set the AI action of the temporary actor stored on the server.
@ -587,7 +585,7 @@ public:
* \param action The new action. * \param action The new action.
* \return void * \return void
*/ */
static void SetActorAIAction(unsigned int action) noexcept; extern "C" void SetActorAIAction(unsigned int action) noexcept;
/** /**
* \brief Set a player as the AI target of the temporary actor stored on the server. * \brief Set a player as the AI target of the temporary actor stored on the server.
@ -595,7 +593,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SetActorAITargetToPlayer(unsigned short pid) noexcept; extern "C" void SetActorAITargetToPlayer(unsigned short pid) noexcept;
/** /**
* \brief Set another object as the AI target of the temporary actor stored on the server. * \brief Set another object as the AI target of the temporary actor stored on the server.
@ -604,7 +602,7 @@ public:
* \param mpNum The mpNum of the target object. * \param mpNum The mpNum of the target object.
* \return void * \return void
*/ */
static void SetActorAITargetToObject(int refNum, int mpNum) noexcept; extern "C" void SetActorAITargetToObject(int refNum, int mpNum) noexcept;
/** /**
* \brief Set the coordinates for the AI package associated with the current AI action. * \brief Set the coordinates for the AI package associated with the current AI action.
@ -614,7 +612,7 @@ public:
* \param z The Z coordinate. * \param z The Z coordinate.
* \return void * \return void
*/ */
static void SetActorAICoordinates(double x, double y, double z) noexcept; extern "C" void SetActorAICoordinates(double x, double y, double z) noexcept;
/** /**
* \brief Set the distance of the AI package associated with the current AI action. * \brief Set the distance of the AI package associated with the current AI action.
@ -622,7 +620,7 @@ public:
* \param duration The distance of the package. * \param duration The distance of the package.
* \return void * \return void
*/ */
static void SetActorAIDistance(unsigned int distance) noexcept; extern "C" void SetActorAIDistance(unsigned int distance) noexcept;
/** /**
* \brief Set the duration of the AI package associated with the current AI action. * \brief Set the duration of the AI package associated with the current AI action.
@ -630,7 +628,7 @@ public:
* \param duration The duration of the package. * \param duration The duration of the package.
* \return void * \return void
*/ */
static void SetActorAIDuration(unsigned int duration) noexcept; extern "C" void SetActorAIDuration(unsigned int duration) noexcept;
/** /**
* \brief Set whether the current AI package should be repeated. * \brief Set whether the current AI package should be repeated.
@ -640,7 +638,7 @@ public:
* \param shouldRepeat Whether the package should be repeated. * \param shouldRepeat Whether the package should be repeated.
* \return void * \return void
*/ */
static void SetActorAIRepetition(bool shouldRepeat) noexcept; extern "C" void SetActorAIRepetition(bool shouldRepeat) noexcept;
/** /**
* \brief Equip an item in a certain slot of the equipment of the temporary actor stored * \brief Equip an item in a certain slot of the equipment of the temporary actor stored
@ -653,7 +651,7 @@ public:
* \param enchantmentCharge The enchantment charge of the item. * \param enchantmentCharge The enchantment charge of the item.
* \return void * \return void
*/ */
static void EquipActorItem(unsigned short slot, const char* refId, unsigned int count, int charge, double enchantmentCharge = -1) noexcept; extern "C" void EquipActorItem(unsigned short slot, const char* refId, unsigned int count, int charge, double enchantmentCharge = -1) noexcept;
/** /**
* \brief Unequip the item in a certain slot of the equipment of the temporary actor stored * \brief Unequip the item in a certain slot of the equipment of the temporary actor stored
@ -662,7 +660,7 @@ public:
* \param slot The equipment slot. * \param slot The equipment slot.
* \return void * \return void
*/ */
static void UnequipActorItem(unsigned short slot) noexcept; extern "C" void UnequipActorItem(unsigned short slot) noexcept;
/** /**
* \brief Add a copy of the server's temporary actor to the server's temporary actor list. * \brief Add a copy of the server's temporary actor to the server's temporary actor list.
@ -672,7 +670,7 @@ public:
* *
* \return void * \return void
*/ */
static void AddActor() noexcept; extern "C" void AddActor() noexcept;
/** /**
* \brief Send an ActorList packet. * \brief Send an ActorList packet.
@ -681,7 +679,7 @@ public:
* *
* \return void * \return void
*/ */
static void SendActorList() noexcept; extern "C" void SendActorList() noexcept;
/** /**
* \brief Send an ActorAuthority packet. * \brief Send an ActorAuthority packet.
@ -693,7 +691,7 @@ public:
* *
* \return void * \return void
*/ */
static void SendActorAuthority() noexcept; extern "C" void SendActorAuthority() noexcept;
/** /**
* \brief Send an ActorPosition packet. * \brief Send an ActorPosition packet.
@ -705,7 +703,7 @@ public:
* *
* \return void * \return void
*/ */
static void SendActorPosition(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept; extern "C" void SendActorPosition(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ActorStatsDynamic packet. * \brief Send an ActorStatsDynamic packet.
@ -717,7 +715,7 @@ public:
* *
* \return void * \return void
*/ */
static void SendActorStatsDynamic(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept; extern "C" void SendActorStatsDynamic(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ActorEquipment packet. * \brief Send an ActorEquipment packet.
@ -729,7 +727,7 @@ public:
* *
* \return void * \return void
*/ */
static void SendActorEquipment(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept; extern "C" void SendActorEquipment(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ActorSpeech packet. * \brief Send an ActorSpeech packet.
@ -740,7 +738,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendActorSpeech(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept; extern "C" void SendActorSpeech(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ActorAI packet. * \brief Send an ActorAI packet.
@ -751,7 +749,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendActorAI(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept; extern "C" void SendActorAI(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ActorCellChange packet. * \brief Send an ActorCellChange packet.
@ -763,18 +761,18 @@ public:
* *
* \return void * \return void
*/ */
static void SendActorCellChange(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept; extern "C" void SendActorCellChange(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void ReadLastActorList() noexcept; extern "C" void ReadLastActorList() noexcept;
static void InitializeActorList(unsigned short pid) noexcept; extern "C" void InitializeActorList(unsigned short pid) noexcept;
static void CopyLastActorListToStore() noexcept; extern "C" void CopyLastActorListToStore() noexcept;
static unsigned int GetActorRefNumIndex(unsigned int index) noexcept; extern "C" unsigned int GetActorRefNumIndex(unsigned int index) noexcept;
static unsigned int GetActorKillerRefNumIndex(unsigned int index) noexcept; extern "C" unsigned int GetActorKillerRefNumIndex(unsigned int index) noexcept;
static void SetActorRefNumIndex(int refNum) noexcept; extern "C" void SetActorRefNumIndex(int refNum) noexcept;
}; }
#endif //OPENMW_ACTORAPI_HPP #endif //OPENMW_ACTORAPI_HPP

@ -7,7 +7,7 @@
using namespace mwmp; using namespace mwmp;
void BookFunctions::ClearBookChanges(unsigned short pid) noexcept extern "C" void BookFunctions::ClearBookChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -15,7 +15,7 @@ void BookFunctions::ClearBookChanges(unsigned short pid) noexcept
player->bookChanges.books.clear(); player->bookChanges.books.clear();
} }
unsigned int BookFunctions::GetBookChangesSize(unsigned short pid) noexcept extern "C" unsigned int BookFunctions::GetBookChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -23,7 +23,7 @@ unsigned int BookFunctions::GetBookChangesSize(unsigned short pid) noexcept
return player->bookChanges.count; return player->bookChanges.count;
} }
void BookFunctions::AddBook(unsigned short pid, const char* bookId) noexcept extern "C" void BookFunctions::AddBook(unsigned short pid, const char* bookId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -34,7 +34,7 @@ void BookFunctions::AddBook(unsigned short pid, const char* bookId) noexcept
player->bookChanges.books.push_back(book); player->bookChanges.books.push_back(book);
} }
const char *BookFunctions::GetBookId(unsigned short pid, unsigned int index) noexcept extern "C" const char *BookFunctions::GetBookId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -45,7 +45,7 @@ const char *BookFunctions::GetBookId(unsigned short pid, unsigned int index) noe
return player->bookChanges.books.at(index).bookId.c_str(); return player->bookChanges.books.at(index).bookId.c_str();
} }
void BookFunctions::SendBookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void BookFunctions::SendBookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -62,7 +62,7 @@ void BookFunctions::SendBookChanges(unsigned short pid, bool sendToOtherPlayers,
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
void BookFunctions::InitializeBookChanges(unsigned short pid) noexcept extern "C" void BookFunctions::InitializeBookChanges(unsigned short pid) noexcept
{ {
ClearBookChanges(pid); ClearBookChanges(pid);
} }

@ -14,9 +14,8 @@
\ \
{"InitializeBookChanges", BookFunctions::InitializeBookChanges} {"InitializeBookChanges", BookFunctions::InitializeBookChanges}
class BookFunctions namespace BookFunctions
{ {
public:
/** /**
* \brief Clear the last recorded book changes for a player. * \brief Clear the last recorded book changes for a player.
@ -26,7 +25,7 @@ public:
* \param pid The player ID whose book changes should be used. * \param pid The player ID whose book changes should be used.
* \return void * \return void
*/ */
static void ClearBookChanges(unsigned short pid) noexcept; extern "C" void ClearBookChanges(unsigned short pid) noexcept;
/** /**
* \brief Get the number of indexes in a player's latest book changes. * \brief Get the number of indexes in a player's latest book changes.
@ -34,7 +33,7 @@ public:
* \param pid The player ID whose book changes should be used. * \param pid The player ID whose book changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetBookChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetBookChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Add a new book to the book changes for a player. * \brief Add a new book to the book changes for a player.
@ -43,7 +42,7 @@ public:
* \param bookId The bookId of the book. * \param bookId The bookId of the book.
* \return void * \return void
*/ */
static void AddBook(unsigned short pid, const char* bookId) noexcept; extern "C" void AddBook(unsigned short pid, const char* bookId) noexcept;
/** /**
* \brief Get the bookId at a certain index in a player's latest book changes. * \brief Get the bookId at a certain index in a player's latest book changes.
@ -52,7 +51,7 @@ public:
* \param index The index of the book. * \param index The index of the book.
* \return The bookId. * \return The bookId.
*/ */
static const char *GetBookId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetBookId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Send a PlayerBook packet with a player's recorded book changes. * \brief Send a PlayerBook packet with a player's recorded book changes.
@ -64,12 +63,11 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendBookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendBookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void InitializeBookChanges(unsigned short pid) noexcept; extern "C" void InitializeBookChanges(unsigned short pid) noexcept;
}
};
#endif //OPENMW_BOOKAPI_HPP #endif //OPENMW_BOOKAPI_HPP

@ -12,7 +12,7 @@ using namespace std;
static std::string tempCellDescription; static std::string tempCellDescription;
unsigned int CellFunctions::GetCellStateChangesSize(unsigned short pid) noexcept extern "C" unsigned int CellFunctions::GetCellStateChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -20,7 +20,7 @@ unsigned int CellFunctions::GetCellStateChangesSize(unsigned short pid) noexcept
return player->cellStateChanges.count; return player->cellStateChanges.count;
} }
unsigned int CellFunctions::GetCellStateType(unsigned short pid, unsigned int index) noexcept extern "C" unsigned int CellFunctions::GetCellStateType(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -28,7 +28,7 @@ unsigned int CellFunctions::GetCellStateType(unsigned short pid, unsigned int in
return player->cellStateChanges.cellStates.at(index).type; return player->cellStateChanges.cellStates.at(index).type;
} }
const char *CellFunctions::GetCellStateDescription(unsigned short pid, unsigned int index) noexcept extern "C" const char *CellFunctions::GetCellStateDescription(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -40,7 +40,7 @@ const char *CellFunctions::GetCellStateDescription(unsigned short pid, unsigned
return tempCellDescription.c_str(); return tempCellDescription.c_str();
} }
const char *CellFunctions::GetCell(unsigned short pid) noexcept extern "C" const char *CellFunctions::GetCell(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -49,21 +49,21 @@ const char *CellFunctions::GetCell(unsigned short pid) noexcept
return tempCellDescription.c_str(); return tempCellDescription.c_str();
} }
int CellFunctions::GetExteriorX(unsigned short pid) noexcept extern "C" int CellFunctions::GetExteriorX(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
return player->cell.mData.mX; return player->cell.mData.mX;
} }
int CellFunctions::GetExteriorY(unsigned short pid) noexcept extern "C" int CellFunctions::GetExteriorY(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
return player->cell.mData.mY; return player->cell.mData.mY;
} }
bool CellFunctions::IsInExterior(unsigned short pid) noexcept extern "C" bool CellFunctions::IsInExterior(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -71,7 +71,7 @@ bool CellFunctions::IsInExterior(unsigned short pid) noexcept
return player->cell.isExterior(); return player->cell.isExterior();
} }
const char *CellFunctions::GetRegion(unsigned short pid) noexcept extern "C" const char *CellFunctions::GetRegion(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -79,7 +79,7 @@ const char *CellFunctions::GetRegion(unsigned short pid) noexcept
return player->cell.mRegion.c_str(); return player->cell.mRegion.c_str();
} }
bool CellFunctions::IsChangingRegion(unsigned short pid) noexcept extern "C" bool CellFunctions::IsChangingRegion(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -87,7 +87,7 @@ bool CellFunctions::IsChangingRegion(unsigned short pid) noexcept
return player->isChangingRegion; return player->isChangingRegion;
} }
void CellFunctions::SetCell(unsigned short pid, const char *cellDescription) noexcept extern "C" void CellFunctions::SetCell(unsigned short pid, const char *cellDescription) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -98,7 +98,7 @@ void CellFunctions::SetCell(unsigned short pid, const char *cellDescription) noe
player->cell = Utils::getCellFromDescription(cellDescription); player->cell = Utils::getCellFromDescription(cellDescription);
} }
void CellFunctions::SetExteriorCell(unsigned short pid, int x, int y) noexcept extern "C" void CellFunctions::SetExteriorCell(unsigned short pid, int x, int y) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -115,7 +115,7 @@ void CellFunctions::SetExteriorCell(unsigned short pid, int x, int y) noexcept
player->cell.mData.mY = y; player->cell.mData.mY = y;
} }
void CellFunctions::SendCell(unsigned short pid) noexcept extern "C" void CellFunctions::SendCell(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );

@ -23,17 +23,15 @@
{"SendCell", CellFunctions::SendCell} {"SendCell", CellFunctions::SendCell}
class CellFunctions namespace CellFunctions
{ {
public:
/** /**
* \brief Get the number of indexes in a player's latest cell state changes. * \brief Get the number of indexes in a player's latest cell state changes.
* *
* \param pid The player ID whose cell state changes should be used. * \param pid The player ID whose cell state changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetCellStateChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetCellStateChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Get the cell state type at a certain index in a player's latest cell state changes. * \brief Get the cell state type at a certain index in a player's latest cell state changes.
@ -42,7 +40,7 @@ public:
* \param index The index of the cell state. * \param index The index of the cell state.
* \return The cell state type (0 for LOAD, 1 for UNLOAD). * \return The cell state type (0 for LOAD, 1 for UNLOAD).
*/ */
static unsigned int GetCellStateType(unsigned short pid, unsigned int index) noexcept; extern "C" unsigned int GetCellStateType(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the cell description at a certain index in a player's latest cell state changes. * \brief Get the cell description at a certain index in a player's latest cell state changes.
@ -51,7 +49,7 @@ public:
* \param index The index of the cell state. * \param index The index of the cell state.
* \return The cell description. * \return The cell description.
*/ */
static const char *GetCellStateDescription(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetCellStateDescription(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the cell description of a player's cell. * \brief Get the cell description of a player's cell.
@ -59,7 +57,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The cell description. * \return The cell description.
*/ */
static const char *GetCell(unsigned short pid) noexcept; extern "C" const char *GetCell(unsigned short pid) noexcept;
/** /**
* \brief Get the X coordinate of the player's exterior cell. * \brief Get the X coordinate of the player's exterior cell.
@ -67,7 +65,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The X coordinate of the cell. * \return The X coordinate of the cell.
*/ */
static int GetExteriorX(unsigned short pid) noexcept; extern "C" int GetExteriorX(unsigned short pid) noexcept;
/** /**
* \brief Get the Y coordinate of the player's exterior cell. * \brief Get the Y coordinate of the player's exterior cell.
@ -75,7 +73,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Y coordinate of the cell. * \return The Y coordinate of the cell.
*/ */
static int GetExteriorY(unsigned short pid) noexcept; extern "C" int GetExteriorY(unsigned short pid) noexcept;
/** /**
* \brief Check whether the player is in an exterior cell or not. * \brief Check whether the player is in an exterior cell or not.
@ -83,7 +81,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return Whether the player is in an exterior cell. * \return Whether the player is in an exterior cell.
*/ */
static bool IsInExterior(unsigned short pid) noexcept; extern "C" bool IsInExterior(unsigned short pid) noexcept;
/** /**
* \brief Get the region of the player's exterior cell. * \brief Get the region of the player's exterior cell.
@ -93,7 +91,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The region. * \return The region.
*/ */
static const char *GetRegion(unsigned short pid) noexcept; extern "C" const char *GetRegion(unsigned short pid) noexcept;
/** /**
* \brief Check whether the player's last cell change has involved a region change. * \brief Check whether the player's last cell change has involved a region change.
@ -101,7 +99,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return Whether the player has changed their region. * \return Whether the player has changed their region.
*/ */
static bool IsChangingRegion(unsigned short pid) noexcept; extern "C" bool IsChangingRegion(unsigned short pid) noexcept;
/** /**
* \brief Set the cell of a player. * \brief Set the cell of a player.
@ -116,7 +114,7 @@ public:
* \param cellDescription The cell description. * \param cellDescription The cell description.
* \return void * \return void
*/ */
static void SetCell(unsigned short pid, const char *cellDescription) noexcept; extern "C" void SetCell(unsigned short pid, const char *cellDescription) noexcept;
/** /**
* \brief Set the cell of a player to an exterior cell. * \brief Set the cell of a player to an exterior cell.
@ -129,7 +127,7 @@ public:
* \param y The Y coordinate of the cell. * \param y The Y coordinate of the cell.
* \return void * \return void
*/ */
static void SetExteriorCell(unsigned short pid, int x, int y) noexcept; extern "C" void SetExteriorCell(unsigned short pid, int x, int y) noexcept;
/** /**
* \brief Send a PlayerCellChange packet about a player. * \brief Send a PlayerCellChange packet about a player.
@ -139,8 +137,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendCell(unsigned short pid) noexcept; extern "C" void SendCell(unsigned short pid) noexcept;
}
};
#endif //OPENMW_CELLAPI_HPP #endif //OPENMW_CELLAPI_HPP

@ -12,7 +12,7 @@
using namespace std; using namespace std;
using namespace ESM; using namespace ESM;
const char *CharClassFunctions::GetDefaultClass(unsigned short pid) noexcept extern "C" const char *CharClassFunctions::GetDefaultClass(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -20,7 +20,7 @@ const char *CharClassFunctions::GetDefaultClass(unsigned short pid) noexcept
return player->charClass.mId.c_str(); return player->charClass.mId.c_str();
} }
const char *CharClassFunctions::GetClassName(unsigned short pid) noexcept extern "C" const char *CharClassFunctions::GetClassName(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -28,7 +28,7 @@ const char *CharClassFunctions::GetClassName(unsigned short pid) noexcept
return player->charClass.mName.c_str(); return player->charClass.mName.c_str();
} }
const char *CharClassFunctions::GetClassDesc(unsigned short pid) noexcept extern "C" const char *CharClassFunctions::GetClassDesc(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -36,7 +36,7 @@ const char *CharClassFunctions::GetClassDesc(unsigned short pid) noexcept
return player->charClass.mDescription.c_str(); return player->charClass.mDescription.c_str();
} }
int CharClassFunctions::GetClassMajorAttribute(unsigned short pid, unsigned char slot) noexcept extern "C" int CharClassFunctions::GetClassMajorAttribute(unsigned short pid, unsigned char slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -47,7 +47,7 @@ int CharClassFunctions::GetClassMajorAttribute(unsigned short pid, unsigned char
return player->charClass.mData.mAttribute[slot]; return player->charClass.mData.mAttribute[slot];
} }
int CharClassFunctions::GetClassSpecialization(unsigned short pid) noexcept extern "C" int CharClassFunctions::GetClassSpecialization(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -55,7 +55,7 @@ int CharClassFunctions::GetClassSpecialization(unsigned short pid) noexcept
return player->charClass.mData.mSpecialization; return player->charClass.mData.mSpecialization;
} }
int CharClassFunctions::GetClassMajorSkill(unsigned short pid, unsigned char slot) noexcept extern "C" int CharClassFunctions::GetClassMajorSkill(unsigned short pid, unsigned char slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -66,7 +66,7 @@ int CharClassFunctions::GetClassMajorSkill(unsigned short pid, unsigned char slo
return player->charClass.mData.mSkills[slot][1]; return player->charClass.mData.mSkills[slot][1];
} }
int CharClassFunctions::GetClassMinorSkill(unsigned short pid, unsigned char slot) noexcept extern "C" int CharClassFunctions::GetClassMinorSkill(unsigned short pid, unsigned char slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -77,7 +77,7 @@ int CharClassFunctions::GetClassMinorSkill(unsigned short pid, unsigned char slo
return player->charClass.mData.mSkills[slot][0]; return player->charClass.mData.mSkills[slot][0];
} }
int CharClassFunctions::IsClassDefault(unsigned short pid) noexcept extern "C" int CharClassFunctions::IsClassDefault(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -85,14 +85,15 @@ int CharClassFunctions::IsClassDefault(unsigned short pid) noexcept
return !player->charClass.mId.empty(); // true if default return !player->charClass.mId.empty(); // true if default
} }
void CharClassFunctions::SetDefaultClass(unsigned short pid, const char *id) noexcept extern "C" void CharClassFunctions::SetDefaultClass(unsigned short pid, const char *id) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
player->charClass.mId = id; player->charClass.mId = id;
} }
void CharClassFunctions::SetClassName(unsigned short pid, const char *name) noexcept
extern "C" void CharClassFunctions::SetClassName(unsigned short pid, const char *name) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -100,14 +101,16 @@ void CharClassFunctions::SetClassName(unsigned short pid, const char *name) noex
player->charClass.mName = name; player->charClass.mName = name;
player->charClass.mId = ""; player->charClass.mId = "";
} }
void CharClassFunctions::SetClassDesc(unsigned short pid, const char *desc) noexcept
extern "C" void CharClassFunctions::SetClassDesc(unsigned short pid, const char *desc) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
player->charClass.mDescription = desc; player->charClass.mDescription = desc;
} }
void CharClassFunctions::SetClassMajorAttribute(unsigned short pid, unsigned char slot, int attrId) noexcept
extern "C" void CharClassFunctions::SetClassMajorAttribute(unsigned short pid, unsigned char slot, int attrId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -118,14 +121,16 @@ void CharClassFunctions::SetClassMajorAttribute(unsigned short pid, unsigned cha
player->charClass.mData.mAttribute[slot] = attrId; player->charClass.mData.mAttribute[slot] = attrId;
} }
void CharClassFunctions::SetClassSpecialization(unsigned short pid, int spec) noexcept
extern "C" void CharClassFunctions::SetClassSpecialization(unsigned short pid, int spec) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
player->charClass.mData.mSpecialization = spec; player->charClass.mData.mSpecialization = spec;
} }
void CharClassFunctions::SetClassMajorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept
extern "C" void CharClassFunctions::SetClassMajorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -135,7 +140,8 @@ void CharClassFunctions::SetClassMajorSkill(unsigned short pid, unsigned char sl
player->charClass.mData.mSkills[slot][1] = skillId; player->charClass.mData.mSkills[slot][1] = skillId;
} }
void CharClassFunctions::SetClassMinorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept
extern "C" void CharClassFunctions::SetClassMinorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -146,7 +152,7 @@ void CharClassFunctions::SetClassMinorSkill(unsigned short pid, unsigned char sl
player->charClass.mData.mSkills[slot][0] = skillId; player->charClass.mData.mSkills[slot][0] = skillId;
} }
void CharClassFunctions::SendClass(unsigned short pid) noexcept extern "C" void CharClassFunctions::SendClass(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );

@ -28,17 +28,15 @@
{"SendClass", CharClassFunctions::SendClass} {"SendClass", CharClassFunctions::SendClass}
class CharClassFunctions namespace CharClassFunctions
{ {
public:
/** /**
* \brief Get the default class used by a player. * \brief Get the default class used by a player.
* *
* \param pid The player ID. * \param pid The player ID.
* \return The ID of the default class. * \return The ID of the default class.
*/ */
static const char *GetDefaultClass(unsigned short pid) noexcept; extern "C" const char *GetDefaultClass(unsigned short pid) noexcept;
/** /**
* \brief Get the name of the custom class used by a player. * \brief Get the name of the custom class used by a player.
@ -46,7 +44,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The name of the custom class. * \return The name of the custom class.
*/ */
static const char *GetClassName(unsigned short pid) noexcept; extern "C" const char *GetClassName(unsigned short pid) noexcept;
/** /**
* \brief Get the description of the custom class used by a player. * \brief Get the description of the custom class used by a player.
@ -54,7 +52,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The description of the custom class. * \return The description of the custom class.
*/ */
static const char *GetClassDesc(unsigned short pid) noexcept; extern "C" const char *GetClassDesc(unsigned short pid) noexcept;
/** /**
* \brief Get the ID of one of the two major attributes of a custom class used by a player. * \brief Get the ID of one of the two major attributes of a custom class used by a player.
@ -63,7 +61,7 @@ public:
* \param slot The slot of the major attribute (0 or 1). * \param slot The slot of the major attribute (0 or 1).
* \return The ID of the major attribute. * \return The ID of the major attribute.
*/ */
static int GetClassMajorAttribute(unsigned short pid, unsigned char slot) noexcept; extern "C" int GetClassMajorAttribute(unsigned short pid, unsigned char slot) noexcept;
/** /**
* \brief Get the specialization ID of the custom class used by a player. * \brief Get the specialization ID of the custom class used by a player.
@ -71,7 +69,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The specialization ID of the custom class (0 for Combat, 1 for Magic, 2 for Stealth). * \return The specialization ID of the custom class (0 for Combat, 1 for Magic, 2 for Stealth).
*/ */
static int GetClassSpecialization(unsigned short pid) noexcept; extern "C" int GetClassSpecialization(unsigned short pid) noexcept;
/** /**
* \brief Get the ID of one of the five major skills of a custom class used by a player. * \brief Get the ID of one of the five major skills of a custom class used by a player.
@ -80,7 +78,7 @@ public:
* \param slot The slot of the major skill (0 to 4). * \param slot The slot of the major skill (0 to 4).
* \return The ID of the major skill. * \return The ID of the major skill.
*/ */
static int GetClassMajorSkill(unsigned short pid, unsigned char slot) noexcept; extern "C" int GetClassMajorSkill(unsigned short pid, unsigned char slot) noexcept;
/** /**
* \brief Get the ID of one of the five minor skills of a custom class used by a player. * \brief Get the ID of one of the five minor skills of a custom class used by a player.
@ -89,7 +87,7 @@ public:
* \param slot The slot of the minor skill (0 to 4). * \param slot The slot of the minor skill (0 to 4).
* \return The ID of the minor skill. * \return The ID of the minor skill.
*/ */
static int GetClassMinorSkill(unsigned short pid, unsigned char slot) noexcept; extern "C" int GetClassMinorSkill(unsigned short pid, unsigned char slot) noexcept;
/** /**
* \brief Check whether the player is using a default class instead of a custom one. * \brief Check whether the player is using a default class instead of a custom one.
@ -97,7 +95,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return Whether the player is using a default class. * \return Whether the player is using a default class.
*/ */
static int IsClassDefault(unsigned short pid) noexcept; extern "C" int IsClassDefault(unsigned short pid) noexcept;
/** /**
* \brief Set the default class used by a player. * \brief Set the default class used by a player.
@ -108,7 +106,7 @@ public:
* \param id The ID of the default class. * \param id The ID of the default class.
* \return void * \return void
*/ */
static void SetDefaultClass(unsigned short pid, const char *id) noexcept; extern "C" void SetDefaultClass(unsigned short pid, const char *id) noexcept;
/** /**
* \brief Set the name of the custom class used by a player. * \brief Set the name of the custom class used by a player.
@ -117,7 +115,7 @@ public:
* \param name The name of the custom class. * \param name The name of the custom class.
* \return void * \return void
*/ */
static void SetClassName(unsigned short pid, const char *name) noexcept; extern "C" void SetClassName(unsigned short pid, const char *name) noexcept;
/** /**
* \brief Set the description of the custom class used by a player. * \brief Set the description of the custom class used by a player.
@ -126,7 +124,7 @@ public:
* \param desc The description of the custom class. * \param desc The description of the custom class.
* \return void * \return void
*/ */
static void SetClassDesc(unsigned short pid, const char *desc) noexcept; extern "C" void SetClassDesc(unsigned short pid, const char *desc) noexcept;
/** /**
* \brief Set the ID of one of the two major attributes of the custom class used by a player. * \brief Set the ID of one of the two major attributes of the custom class used by a player.
@ -136,7 +134,7 @@ public:
* \param attrId The ID to use for the attribute. * \param attrId The ID to use for the attribute.
* \return void * \return void
*/ */
static void SetClassMajorAttribute(unsigned short pid, unsigned char slot, int attrId) noexcept; extern "C" void SetClassMajorAttribute(unsigned short pid, unsigned char slot, int attrId) noexcept;
/** /**
* \brief Set the specialization of the custom class used by a player. * \brief Set the specialization of the custom class used by a player.
@ -145,7 +143,7 @@ public:
* \param spec The specialization ID to use (0 for Combat, 1 for Magic, 2 for Stealth). * \param spec The specialization ID to use (0 for Combat, 1 for Magic, 2 for Stealth).
* \return void * \return void
*/ */
static void SetClassSpecialization(unsigned short pid, int spec) noexcept; extern "C" void SetClassSpecialization(unsigned short pid, int spec) noexcept;
/** /**
* \brief Set the ID of one of the five major skills of the custom class used by a player. * \brief Set the ID of one of the five major skills of the custom class used by a player.
@ -155,7 +153,7 @@ public:
* \param skillId The ID to use for the skill. * \param skillId The ID to use for the skill.
* \return void * \return void
*/ */
static void SetClassMajorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept; extern "C" void SetClassMajorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept;
/** /**
* \brief Set the ID of one of the five minor skills of the custom class used by a player. * \brief Set the ID of one of the five minor skills of the custom class used by a player.
@ -165,7 +163,7 @@ public:
* \param skillId The ID to use for the skill. * \param skillId The ID to use for the skill.
* \return void * \return void
*/ */
static void SetClassMinorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept; extern "C" void SetClassMinorSkill(unsigned short pid, unsigned char slot, int skillId) noexcept;
/** /**
* \brief Send a PlayerCharClass packet about a player. * \brief Send a PlayerCharClass packet about a player.
@ -175,7 +173,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendClass(unsigned short pid) noexcept; extern "C" void SendClass(unsigned short pid) noexcept;
}; }
#endif //OPENMW_CHARCLASSAPI_HPP #endif //OPENMW_CHARCLASSAPI_HPP

@ -6,7 +6,7 @@
#include <apps/openmw-mp/Script/ScriptFunctions.hpp> #include <apps/openmw-mp/Script/ScriptFunctions.hpp>
#include <apps/openmw-mp/Networking.hpp> #include <apps/openmw-mp/Networking.hpp>
void ChatFunctions::SendMessage(unsigned short pid, const char *message, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ChatFunctions::SendMessage(unsigned short pid, const char *message, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -24,7 +24,7 @@ void ChatFunctions::SendMessage(unsigned short pid, const char *message, bool se
packet->Send(true); packet->Send(true);
} }
void ChatFunctions::CleanChatForPid(unsigned short pid) extern "C" void ChatFunctions::CleanChatForPid(unsigned short pid)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -37,7 +37,7 @@ void ChatFunctions::CleanChatForPid(unsigned short pid)
packet->Send(false); packet->Send(false);
} }
void ChatFunctions::CleanChat() extern "C" void ChatFunctions::CleanChat()
{ {
for (auto player : *Players::getPlayers()) for (auto player : *Players::getPlayers())
{ {

@ -8,10 +8,8 @@
{"CleanChatForPid", ChatFunctions::CleanChat},\ {"CleanChatForPid", ChatFunctions::CleanChat},\
{"CleanChat", ChatFunctions::CleanChatForPid} {"CleanChat", ChatFunctions::CleanChatForPid}
class ChatFunctions namespace ChatFunctions
{ {
public:
/** /**
* \brief Send a message to a certain player. * \brief Send a message to a certain player.
* *
@ -23,7 +21,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendMessage(unsigned short pid, const char *message, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendMessage(unsigned short pid, const char *message, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Remove all messages from chat for a certain player. * \brief Remove all messages from chat for a certain player.
@ -31,14 +29,14 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void CleanChatForPid(unsigned short pid); extern "C" void CleanChatForPid(unsigned short pid);
/** /**
* \brief Remove all messages from chat for everyone on the server. * \brief Remove all messages from chat for everyone on the server.
* *
* \return void * \return void
*/ */
static void CleanChat(); extern "C" void CleanChat();
}; }
#endif //OPENMW_CHATAPI_HPP #endif //OPENMW_CHATAPI_HPP

@ -7,7 +7,7 @@
using namespace mwmp; using namespace mwmp;
void DialogueFunctions::ClearTopicChanges(unsigned short pid) noexcept extern "C" void DialogueFunctions::ClearTopicChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -15,7 +15,7 @@ void DialogueFunctions::ClearTopicChanges(unsigned short pid) noexcept
player->topicChanges.topics.clear(); player->topicChanges.topics.clear();
} }
unsigned int DialogueFunctions::GetTopicChangesSize(unsigned short pid) noexcept extern "C" unsigned int DialogueFunctions::GetTopicChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -23,7 +23,7 @@ unsigned int DialogueFunctions::GetTopicChangesSize(unsigned short pid) noexcept
return player->topicChanges.count; return player->topicChanges.count;
} }
void DialogueFunctions::AddTopic(unsigned short pid, const char* topicId) noexcept extern "C" void DialogueFunctions::AddTopic(unsigned short pid, const char* topicId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -34,7 +34,7 @@ void DialogueFunctions::AddTopic(unsigned short pid, const char* topicId) noexce
player->topicChanges.topics.push_back(topic); player->topicChanges.topics.push_back(topic);
} }
const char *DialogueFunctions::GetTopicId(unsigned short pid, unsigned int index) noexcept extern "C" const char *DialogueFunctions::GetTopicId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -45,7 +45,7 @@ const char *DialogueFunctions::GetTopicId(unsigned short pid, unsigned int index
return player->topicChanges.topics.at(index).topicId.c_str(); return player->topicChanges.topics.at(index).topicId.c_str();
} }
void DialogueFunctions::SendTopicChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void DialogueFunctions::SendTopicChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -59,7 +59,7 @@ void DialogueFunctions::SendTopicChanges(unsigned short pid, bool sendToOtherPla
packet->Send(true); packet->Send(true);
} }
void DialogueFunctions::PlayAnimation(unsigned short pid, const char* groupname, int mode, int count, bool persist) noexcept extern "C" void DialogueFunctions::PlayAnimation(unsigned short pid, const char* groupname, int mode, int count, bool persist) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -76,7 +76,7 @@ void DialogueFunctions::PlayAnimation(unsigned short pid, const char* groupname,
player->sendToLoaded(packet); player->sendToLoaded(packet);
} }
void DialogueFunctions::PlaySpeech(unsigned short pid, const char* sound) noexcept extern "C" void DialogueFunctions::PlaySpeech(unsigned short pid, const char* sound) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -90,7 +90,7 @@ void DialogueFunctions::PlaySpeech(unsigned short pid, const char* sound) noexce
player->sendToLoaded(packet); player->sendToLoaded(packet);
} }
// All methods below are deprecated versions of methods from above extern "C" // All methods below are deprecated versions of methods from above
void DialogueFunctions::InitializeTopicChanges(unsigned short pid) noexcept void DialogueFunctions::InitializeTopicChanges(unsigned short pid) noexcept
{ {

@ -17,10 +17,8 @@
\ \
{"InitializeTopicChanges", DialogueFunctions::InitializeTopicChanges} {"InitializeTopicChanges", DialogueFunctions::InitializeTopicChanges}
class DialogueFunctions namespace DialogueFunctions
{ {
public:
/** /**
* \brief Clear the last recorded topic changes for a player. * \brief Clear the last recorded topic changes for a player.
* *
@ -29,7 +27,7 @@ public:
* \param pid The player ID whose topic changes should be used. * \param pid The player ID whose topic changes should be used.
* \return void * \return void
*/ */
static void ClearTopicChanges(unsigned short pid) noexcept; extern "C" void ClearTopicChanges(unsigned short pid) noexcept;
/** /**
* \brief Get the number of indexes in a player's latest topic changes. * \brief Get the number of indexes in a player's latest topic changes.
@ -37,7 +35,7 @@ public:
* \param pid The player ID whose topic changes should be used. * \param pid The player ID whose topic changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetTopicChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetTopicChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Add a new topic to the topic changes for a player. * \brief Add a new topic to the topic changes for a player.
@ -46,7 +44,7 @@ public:
* \param topicId The topicId of the topic. * \param topicId The topicId of the topic.
* \return void * \return void
*/ */
static void AddTopic(unsigned short pid, const char* topicId) noexcept; extern "C" void AddTopic(unsigned short pid, const char* topicId) noexcept;
/** /**
* \brief Get the topicId at a certain index in a player's latest topic changes. * \brief Get the topicId at a certain index in a player's latest topic changes.
@ -55,7 +53,7 @@ public:
* \param index The index of the topic. * \param index The index of the topic.
* \return The topicId. * \return The topicId.
*/ */
static const char *GetTopicId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetTopicId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Send a PlayerTopic packet with a player's recorded topic changes. * \brief Send a PlayerTopic packet with a player's recorded topic changes.
@ -67,7 +65,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendTopicChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendTopicChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Play a certain animation on a player's character by sending a PlayerAnimation * \brief Play a certain animation on a player's character by sending a PlayerAnimation
@ -80,7 +78,7 @@ public:
* \param bool Whether the animation should persist or not. * \param bool Whether the animation should persist or not.
* \return void * \return void
*/ */
static void PlayAnimation(unsigned short pid, const char* groupname, int mode, int count, bool persist) noexcept; extern "C" void PlayAnimation(unsigned short pid, const char* groupname, int mode, int count, bool persist) noexcept;
/** /**
* \brief Play a certain sound for a player as spoken by their character by sending * \brief Play a certain sound for a player as spoken by their character by sending
@ -90,12 +88,11 @@ public:
* \param sound The path of the sound file. * \param sound The path of the sound file.
* \return void * \return void
*/ */
static void PlaySpeech(unsigned short pid, const char* sound) noexcept; extern "C" void PlaySpeech(unsigned short pid, const char* sound) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void InitializeTopicChanges(unsigned short pid) noexcept; extern "C" void InitializeTopicChanges(unsigned short pid) noexcept;
}
};
#endif //OPENMW_DIALOGUEAPI_HPP #endif //OPENMW_DIALOGUEAPI_HPP

@ -11,7 +11,7 @@ using namespace mwmp;
Faction tempFaction; Faction tempFaction;
const Faction emptyFaction = {}; const Faction emptyFaction = {};
void FactionFunctions::ClearFactionChanges(unsigned short pid) noexcept extern "C" void FactionFunctions::ClearFactionChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -19,7 +19,7 @@ void FactionFunctions::ClearFactionChanges(unsigned short pid) noexcept
player->factionChanges.factions.clear(); player->factionChanges.factions.clear();
} }
unsigned int FactionFunctions::GetFactionChangesSize(unsigned short pid) noexcept extern "C" unsigned int FactionFunctions::GetFactionChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -27,7 +27,7 @@ unsigned int FactionFunctions::GetFactionChangesSize(unsigned short pid) noexcep
return player->factionChanges.count; return player->factionChanges.count;
} }
unsigned char FactionFunctions::GetFactionChangesAction(unsigned short pid) noexcept extern "C" unsigned char FactionFunctions::GetFactionChangesAction(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -35,7 +35,7 @@ unsigned char FactionFunctions::GetFactionChangesAction(unsigned short pid) noex
return player->factionChanges.action; return player->factionChanges.action;
} }
const char *FactionFunctions::GetFactionId(unsigned short pid, unsigned int index) noexcept extern "C" const char *FactionFunctions::GetFactionId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -46,7 +46,7 @@ const char *FactionFunctions::GetFactionId(unsigned short pid, unsigned int inde
return player->factionChanges.factions.at(index).factionId.c_str(); return player->factionChanges.factions.at(index).factionId.c_str();
} }
int FactionFunctions::GetFactionRank(unsigned short pid, unsigned int index) noexcept extern "C" int FactionFunctions::GetFactionRank(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -54,7 +54,7 @@ int FactionFunctions::GetFactionRank(unsigned short pid, unsigned int index) noe
return player->factionChanges.factions.at(index).rank; return player->factionChanges.factions.at(index).rank;
} }
bool FactionFunctions::GetFactionExpulsionState(unsigned short pid, unsigned int index) noexcept extern "C" bool FactionFunctions::GetFactionExpulsionState(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -62,7 +62,7 @@ bool FactionFunctions::GetFactionExpulsionState(unsigned short pid, unsigned int
return player->factionChanges.factions.at(index).isExpelled; return player->factionChanges.factions.at(index).isExpelled;
} }
int FactionFunctions::GetFactionReputation(unsigned short pid, unsigned int index) noexcept extern "C" int FactionFunctions::GetFactionReputation(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -70,7 +70,7 @@ int FactionFunctions::GetFactionReputation(unsigned short pid, unsigned int inde
return player->factionChanges.factions.at(index).reputation; return player->factionChanges.factions.at(index).reputation;
} }
void FactionFunctions::SetFactionChangesAction(unsigned short pid, unsigned char action) noexcept extern "C" void FactionFunctions::SetFactionChangesAction(unsigned short pid, unsigned char action) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -78,27 +78,27 @@ void FactionFunctions::SetFactionChangesAction(unsigned short pid, unsigned char
player->factionChanges.action = action; player->factionChanges.action = action;
} }
void FactionFunctions::SetFactionId(const char* factionId) noexcept extern "C" void FactionFunctions::SetFactionId(const char* factionId) noexcept
{ {
tempFaction.factionId = factionId; tempFaction.factionId = factionId;
} }
void FactionFunctions::SetFactionRank(unsigned int rank) noexcept extern "C" void FactionFunctions::SetFactionRank(unsigned int rank) noexcept
{ {
tempFaction.rank = rank; tempFaction.rank = rank;
} }
void FactionFunctions::SetFactionExpulsionState(bool expulsionState) noexcept extern "C" void FactionFunctions::SetFactionExpulsionState(bool expulsionState) noexcept
{ {
tempFaction.isExpelled = expulsionState; tempFaction.isExpelled = expulsionState;
} }
void FactionFunctions::SetFactionReputation(int reputation) noexcept extern "C" void FactionFunctions::SetFactionReputation(int reputation) noexcept
{ {
tempFaction.reputation = reputation; tempFaction.reputation = reputation;
} }
void FactionFunctions::AddFaction(unsigned short pid) noexcept extern "C" void FactionFunctions::AddFaction(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -108,7 +108,7 @@ void FactionFunctions::AddFaction(unsigned short pid) noexcept
tempFaction = emptyFaction; tempFaction = emptyFaction;
} }
void FactionFunctions::SendFactionChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void FactionFunctions::SendFactionChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -122,7 +122,7 @@ void FactionFunctions::SendFactionChanges(unsigned short pid, bool sendToOtherPl
packet->Send(true); packet->Send(true);
} }
// All methods below are deprecated versions of methods from above extern "C" // All methods below are deprecated versions of methods from above
void FactionFunctions::InitializeFactionChanges(unsigned short pid) noexcept void FactionFunctions::InitializeFactionChanges(unsigned short pid) noexcept
{ {

@ -24,10 +24,8 @@
\ \
{"InitializeFactionChanges", FactionFunctions::InitializeFactionChanges} {"InitializeFactionChanges", FactionFunctions::InitializeFactionChanges}
class FactionFunctions namespace FactionFunctions
{ {
public:
/** /**
* \brief Clear the last recorded faction changes for a player. * \brief Clear the last recorded faction changes for a player.
* *
@ -36,7 +34,7 @@ public:
* \param pid The player ID whose faction changes should be used. * \param pid The player ID whose faction changes should be used.
* \return void * \return void
*/ */
static void ClearFactionChanges(unsigned short pid) noexcept; extern "C" void ClearFactionChanges(unsigned short pid) noexcept;
/** /**
* \brief Get the number of indexes in a player's latest faction changes. * \brief Get the number of indexes in a player's latest faction changes.
@ -44,7 +42,7 @@ public:
* \param pid The player ID whose faction changes should be used. * \param pid The player ID whose faction changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetFactionChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetFactionChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Get the action type used in a player's latest faction changes. * \brief Get the action type used in a player's latest faction changes.
@ -52,7 +50,7 @@ public:
* \param pid The player ID whose faction changes should be used. * \param pid The player ID whose faction changes should be used.
* \return The action type (0 for RANK, 1 for EXPULSION, 2 for REPUTATION). * \return The action type (0 for RANK, 1 for EXPULSION, 2 for REPUTATION).
*/ */
static unsigned char GetFactionChangesAction(unsigned short pid) noexcept; extern "C" unsigned char GetFactionChangesAction(unsigned short pid) noexcept;
/** /**
* \brief Get the factionId at a certain index in a player's latest faction changes. * \brief Get the factionId at a certain index in a player's latest faction changes.
@ -61,7 +59,7 @@ public:
* \param index The index of the faction. * \param index The index of the faction.
* \return The factionId. * \return The factionId.
*/ */
static const char *GetFactionId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetFactionId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the rank at a certain index in a player's latest faction changes. * \brief Get the rank at a certain index in a player's latest faction changes.
@ -70,7 +68,7 @@ public:
* \param index The index of the faction. * \param index The index of the faction.
* \return The rank. * \return The rank.
*/ */
static int GetFactionRank(unsigned short pid, unsigned int index) noexcept; extern "C" int GetFactionRank(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the expulsion state at a certain index in a player's latest faction changes. * \brief Get the expulsion state at a certain index in a player's latest faction changes.
@ -79,7 +77,7 @@ public:
* \param index The index of the faction. * \param index The index of the faction.
* \return The expulsion state. * \return The expulsion state.
*/ */
static bool GetFactionExpulsionState(unsigned short pid, unsigned int index) noexcept; extern "C" bool GetFactionExpulsionState(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the reputation at a certain index in a player's latest faction changes. * \brief Get the reputation at a certain index in a player's latest faction changes.
@ -88,7 +86,7 @@ public:
* \param index The index of the faction. * \param index The index of the faction.
* \return The reputation. * \return The reputation.
*/ */
static int GetFactionReputation(unsigned short pid, unsigned int index) noexcept; extern "C" int GetFactionReputation(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Set the action type in a player's faction changes. * \brief Set the action type in a player's faction changes.
@ -97,7 +95,7 @@ public:
* \param action The action (0 for RANK, 1 for EXPULSION, 2 for REPUTATION). * \param action The action (0 for RANK, 1 for EXPULSION, 2 for REPUTATION).
* \return void * \return void
*/ */
static void SetFactionChangesAction(unsigned short pid, unsigned char action) noexcept; extern "C" void SetFactionChangesAction(unsigned short pid, unsigned char action) noexcept;
/** /**
* \brief Set the factionId of the temporary faction stored on the server. * \brief Set the factionId of the temporary faction stored on the server.
@ -105,7 +103,7 @@ public:
* \param factionId The factionId. * \param factionId The factionId.
* \return void * \return void
*/ */
static void SetFactionId(const char* factionId) noexcept; extern "C" void SetFactionId(const char* factionId) noexcept;
/** /**
* \brief Set the rank of the temporary faction stored on the server. * \brief Set the rank of the temporary faction stored on the server.
@ -113,7 +111,7 @@ public:
* \param rank The rank. * \param rank The rank.
* \return void * \return void
*/ */
static void SetFactionRank(unsigned int rank) noexcept; extern "C" void SetFactionRank(unsigned int rank) noexcept;
/** /**
* \brief Set the expulsion state of the temporary faction stored on the server. * \brief Set the expulsion state of the temporary faction stored on the server.
@ -121,7 +119,7 @@ public:
* \param expulsionState The expulsion state. * \param expulsionState The expulsion state.
* \return void * \return void
*/ */
static void SetFactionExpulsionState(bool expulsionState) noexcept; extern "C" void SetFactionExpulsionState(bool expulsionState) noexcept;
/** /**
* \brief Set the reputation of the temporary faction stored on the server. * \brief Set the reputation of the temporary faction stored on the server.
@ -129,7 +127,7 @@ public:
* \param reputation The reputation. * \param reputation The reputation.
* \return void * \return void
*/ */
static void SetFactionReputation(int reputation) noexcept; extern "C" void SetFactionReputation(int reputation) noexcept;
/** /**
* \brief Add the server's temporary faction to the faction changes for a player. * \brief Add the server's temporary faction to the faction changes for a player.
@ -140,7 +138,7 @@ public:
* \param pid The player ID whose faction changes should be used. * \param pid The player ID whose faction changes should be used.
* \return void * \return void
*/ */
static void AddFaction(unsigned short pid) noexcept; extern "C" void AddFaction(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerFaction packet with a player's recorded faction changes. * \brief Send a PlayerFaction packet with a player's recorded faction changes.
@ -152,12 +150,11 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendFactionChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendFactionChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void InitializeFactionChanges(unsigned short pid) noexcept; extern "C" void InitializeFactionChanges(unsigned short pid) noexcept;
}
};
#endif //OPENMW_FACTIONAPI_HPP #endif //OPENMW_FACTIONAPI_HPP

@ -5,7 +5,7 @@
#include <apps/openmw-mp/Script/ScriptFunctions.hpp> #include <apps/openmw-mp/Script/ScriptFunctions.hpp>
#include <apps/openmw-mp/Networking.hpp> #include <apps/openmw-mp/Networking.hpp>
void GUIFunctions::_MessageBox(unsigned short pid, int id, const char *label) noexcept extern "C" void GUIFunctions::_MessageBox(unsigned short pid, int id, const char *label) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -20,7 +20,7 @@ void GUIFunctions::_MessageBox(unsigned short pid, int id, const char *label) no
packet->Send(false); packet->Send(false);
} }
void GUIFunctions::CustomMessageBox(unsigned short pid, int id, const char *label, const char *buttons) noexcept extern "C" void GUIFunctions::CustomMessageBox(unsigned short pid, int id, const char *label, const char *buttons) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -36,7 +36,7 @@ void GUIFunctions::CustomMessageBox(unsigned short pid, int id, const char *labe
packet->Send(false); packet->Send(false);
} }
void GUIFunctions::InputDialog(unsigned short pid, int id, const char *label, const char *note) noexcept extern "C" void GUIFunctions::InputDialog(unsigned short pid, int id, const char *label, const char *note) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -52,7 +52,7 @@ void GUIFunctions::InputDialog(unsigned short pid, int id, const char *label, co
packet->Send(false); packet->Send(false);
} }
void GUIFunctions::PasswordDialog(unsigned short pid, int id, const char *label, const char *note) noexcept extern "C" void GUIFunctions::PasswordDialog(unsigned short pid, int id, const char *label, const char *note) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -68,7 +68,7 @@ void GUIFunctions::PasswordDialog(unsigned short pid, int id, const char *label,
packet->Send(false); packet->Send(false);
} }
void GUIFunctions::ListBox(unsigned short pid, int id, const char *label, const char *items) extern "C" void GUIFunctions::ListBox(unsigned short pid, int id, const char *label, const char *items)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -84,7 +84,7 @@ void GUIFunctions::ListBox(unsigned short pid, int id, const char *label, const
packet->Send(false); packet->Send(false);
} }
void GUIFunctions::ClearQuickKeyChanges(unsigned short pid) noexcept extern "C" void GUIFunctions::ClearQuickKeyChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -92,7 +92,7 @@ void GUIFunctions::ClearQuickKeyChanges(unsigned short pid) noexcept
player->quickKeyChanges.quickKeys.clear(); player->quickKeyChanges.quickKeys.clear();
} }
unsigned int GUIFunctions::GetQuickKeyChangesSize(unsigned short pid) noexcept extern "C" unsigned int GUIFunctions::GetQuickKeyChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -100,7 +100,7 @@ unsigned int GUIFunctions::GetQuickKeyChangesSize(unsigned short pid) noexcept
return player->quickKeyChanges.count; return player->quickKeyChanges.count;
} }
int GUIFunctions::GetQuickKeySlot(unsigned short pid, unsigned int index) noexcept extern "C" int GUIFunctions::GetQuickKeySlot(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -111,7 +111,7 @@ int GUIFunctions::GetQuickKeySlot(unsigned short pid, unsigned int index) noexce
return player->quickKeyChanges.quickKeys.at(index).slot; return player->quickKeyChanges.quickKeys.at(index).slot;
} }
int GUIFunctions::GetQuickKeyType(unsigned short pid, unsigned int index) noexcept extern "C" int GUIFunctions::GetQuickKeyType(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -122,7 +122,7 @@ int GUIFunctions::GetQuickKeyType(unsigned short pid, unsigned int index) noexce
return player->quickKeyChanges.quickKeys.at(index).type; return player->quickKeyChanges.quickKeys.at(index).type;
} }
const char *GUIFunctions::GetQuickKeyItemId(unsigned short pid, unsigned int index) noexcept extern "C" const char *GUIFunctions::GetQuickKeyItemId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -133,7 +133,7 @@ const char *GUIFunctions::GetQuickKeyItemId(unsigned short pid, unsigned int ind
return player->quickKeyChanges.quickKeys.at(index).itemId.c_str(); return player->quickKeyChanges.quickKeys.at(index).itemId.c_str();
} }
void GUIFunctions::AddQuickKey(unsigned short pid, unsigned short slot, int type, const char* itemId) noexcept extern "C" void GUIFunctions::AddQuickKey(unsigned short pid, unsigned short slot, int type, const char* itemId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -146,7 +146,7 @@ void GUIFunctions::AddQuickKey(unsigned short pid, unsigned short slot, int type
player->quickKeyChanges.quickKeys.push_back(quickKey); player->quickKeyChanges.quickKeys.push_back(quickKey);
} }
void GUIFunctions::SendQuickKeyChanges(unsigned short pid) noexcept extern "C" void GUIFunctions::SendQuickKeyChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -155,17 +155,17 @@ void GUIFunctions::SendQuickKeyChanges(unsigned short pid) noexcept
mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_QUICKKEYS)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_QUICKKEYS)->Send(false);
} }
void GUIFunctions::SetMapVisibility(unsigned short targetPid, unsigned short affectedPid, unsigned short state) noexcept extern "C" void GUIFunctions::SetMapVisibility(unsigned short targetPid, unsigned short affectedPid, unsigned short state) noexcept
{ {
LOG_MESSAGE(Log::LOG_WARN, "stub"); LOG_MESSAGE(Log::LOG_WARN, "stub");
} }
void GUIFunctions::SetMapVisibilityAll(unsigned short targetPid, unsigned short state) noexcept extern "C" void GUIFunctions::SetMapVisibilityAll(unsigned short targetPid, unsigned short state) noexcept
{ {
LOG_MESSAGE(Log::LOG_WARN, "stub"); LOG_MESSAGE(Log::LOG_WARN, "stub");
} }
// All methods below are deprecated versions of methods from above extern "C" // All methods below are deprecated versions of methods from above
void GUIFunctions::InitializeQuickKeyChanges(unsigned short pid) noexcept void GUIFunctions::InitializeQuickKeyChanges(unsigned short pid) noexcept
{ {

@ -25,10 +25,8 @@
\ \
{"InitializeQuickKeyChanges", GUIFunctions::InitializeQuickKeyChanges} {"InitializeQuickKeyChanges", GUIFunctions::InitializeQuickKeyChanges}
class GUIFunctions namespace GUIFunctions
{ {
public:
/** /**
* \brief Display a simple messagebox at the bottom of the screen that vanishes * \brief Display a simple messagebox at the bottom of the screen that vanishes
* after a few seconds. * after a few seconds.
@ -41,7 +39,7 @@ public:
* \param label The text in the messagebox. * \param label The text in the messagebox.
* \return void * \return void
*/ */
static void _MessageBox(unsigned short pid, int id, const char *label) noexcept; extern "C" void _MessageBox(unsigned short pid, int id, const char *label) noexcept;
/** /**
* \brief Display an interactive messagebox at the center of the screen that * \brief Display an interactive messagebox at the center of the screen that
@ -53,7 +51,7 @@ public:
* \parm buttons The captions of the buttons, separated by semicolons (e.g. "Yes;No;Maybe"). * \parm buttons The captions of the buttons, separated by semicolons (e.g. "Yes;No;Maybe").
* \return void * \return void
*/ */
static void CustomMessageBox(unsigned short pid, int id, const char *label, const char *buttons) noexcept; extern "C" void CustomMessageBox(unsigned short pid, int id, const char *label, const char *buttons) noexcept;
/** /**
* \brief Display an input dialog at the center of the screen. * \brief Display an input dialog at the center of the screen.
@ -64,7 +62,7 @@ public:
* \parm note The text at the bottom of the input dialog. * \parm note The text at the bottom of the input dialog.
* \return void * \return void
*/ */
static void InputDialog(unsigned short pid, int id, const char *label, const char *note) noexcept; extern "C" void InputDialog(unsigned short pid, int id, const char *label, const char *note) noexcept;
/** /**
* \brief Display a password dialog at the center of the screen. * \brief Display a password dialog at the center of the screen.
@ -78,7 +76,7 @@ public:
* \parm note The text at the bottom of the password dialog. * \parm note The text at the bottom of the password dialog.
* \return void * \return void
*/ */
static void PasswordDialog(unsigned short pid, int id, const char *label, const char *note) noexcept; extern "C" void PasswordDialog(unsigned short pid, int id, const char *label, const char *note) noexcept;
/** /**
* \brief Display a listbox at the center of the screen where each item takes up * \brief Display a listbox at the center of the screen where each item takes up
@ -91,7 +89,7 @@ public:
* \parm items The items in the listbox, separated by newlines (e.g. "Item 1\nItem 2"). * \parm items The items in the listbox, separated by newlines (e.g. "Item 1\nItem 2").
* \return void * \return void
*/ */
static void ListBox(unsigned short pid, int id, const char *label, const char *items); extern "C" void ListBox(unsigned short pid, int id, const char *label, const char *items);
/** /**
* \brief Clear the last recorded quick key changes for a player. * \brief Clear the last recorded quick key changes for a player.
@ -101,7 +99,7 @@ public:
* \param pid The player ID whose quick key changes should be used. * \param pid The player ID whose quick key changes should be used.
* \return void * \return void
*/ */
static void ClearQuickKeyChanges(unsigned short pid) noexcept; extern "C" void ClearQuickKeyChanges(unsigned short pid) noexcept;
/** /**
* \brief Get the number of indexes in a player's latest quick key changes. * \brief Get the number of indexes in a player's latest quick key changes.
@ -109,7 +107,7 @@ public:
* \param pid The player ID whose quick key changes should be used. * \param pid The player ID whose quick key changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetQuickKeyChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetQuickKeyChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Add a new quick key to the quick key changes for a player. * \brief Add a new quick key to the quick key changes for a player.
@ -120,7 +118,7 @@ public:
* \param itemId The itemId of the item. * \param itemId The itemId of the item.
* \return void * \return void
*/ */
static void AddQuickKey(unsigned short pid, unsigned short slot, int type, const char* itemId = "") noexcept; extern "C" void AddQuickKey(unsigned short pid, unsigned short slot, int type, const char* itemId = "") noexcept;
/** /**
* \brief Get the slot of the quick key at a certain index in a player's latest quick key changes. * \brief Get the slot of the quick key at a certain index in a player's latest quick key changes.
@ -129,7 +127,7 @@ public:
* \param index The index of the quick key in the quick key changes vector. * \param index The index of the quick key in the quick key changes vector.
* \return The slot. * \return The slot.
*/ */
static int GetQuickKeySlot(unsigned short pid, unsigned int index) noexcept; extern "C" int GetQuickKeySlot(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the type of the quick key at a certain index in a player's latest quick key changes. * \brief Get the type of the quick key at a certain index in a player's latest quick key changes.
@ -138,7 +136,7 @@ public:
* \param index The index of the quick key in the quick key changes vector. * \param index The index of the quick key in the quick key changes vector.
* \return The quick key type. * \return The quick key type.
*/ */
static int GetQuickKeyType(unsigned short pid, unsigned int index) noexcept; extern "C" int GetQuickKeyType(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the itemId at a certain index in a player's latest quick key changes. * \brief Get the itemId at a certain index in a player's latest quick key changes.
@ -147,7 +145,7 @@ public:
* \param index The index of the quick key in the quick key changes vector. * \param index The index of the quick key in the quick key changes vector.
* \return The itemId. * \return The itemId.
*/ */
static const char *GetQuickKeyItemId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetQuickKeyItemId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Send a PlayerQuickKeys packet with a player's recorded quick key changes. * \brief Send a PlayerQuickKeys packet with a player's recorded quick key changes.
@ -155,7 +153,7 @@ public:
* \param pid The player ID whose quick key changes should be used. * \param pid The player ID whose quick key changes should be used.
* \return void * \return void
*/ */
static void SendQuickKeyChanges(unsigned short pid) noexcept; extern "C" void SendQuickKeyChanges(unsigned short pid) noexcept;
//state 0 - disallow, 1 - allow //state 0 - disallow, 1 - allow
@ -169,7 +167,7 @@ public:
* \param state The state of the map marker (false to hide, true to reveal). * \param state The state of the map marker (false to hide, true to reveal).
* \return void * \return void
*/ */
static void SetMapVisibility(unsigned short targetPid, unsigned short affectedPid, unsigned short state) noexcept; extern "C" void SetMapVisibility(unsigned short targetPid, unsigned short affectedPid, unsigned short state) noexcept;
/** /**
* \brief Determine whether a player's map marker can be seen by all other players. * \brief Determine whether a player's map marker can be seen by all other players.
@ -180,12 +178,11 @@ public:
* \param state The state of the map marker (false to hide, true to reveal). * \param state The state of the map marker (false to hide, true to reveal).
* \return void * \return void
*/ */
static void SetMapVisibilityAll(unsigned short targetPid, unsigned short state) noexcept; extern "C" void SetMapVisibilityAll(unsigned short targetPid, unsigned short state) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void InitializeQuickKeyChanges(unsigned short pid) noexcept; extern "C" void InitializeQuickKeyChanges(unsigned short pid) noexcept;
}
};
#endif //OPENMW_GUIAPI_HPP #endif //OPENMW_GUIAPI_HPP

@ -9,7 +9,7 @@
using namespace mwmp; using namespace mwmp;
void ItemFunctions::ClearInventoryChanges(unsigned short pid) noexcept extern "C" void ItemFunctions::ClearInventoryChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -17,12 +17,12 @@ void ItemFunctions::ClearInventoryChanges(unsigned short pid) noexcept
player->inventoryChanges.items.clear(); player->inventoryChanges.items.clear();
} }
int ItemFunctions::GetEquipmentSize() noexcept extern "C" int ItemFunctions::GetEquipmentSize() noexcept
{ {
return MWWorld::InventoryStore::Slots; return MWWorld::InventoryStore::Slots;
} }
unsigned int ItemFunctions::GetInventoryChangesSize(unsigned short pid) noexcept extern "C" unsigned int ItemFunctions::GetInventoryChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -30,7 +30,7 @@ unsigned int ItemFunctions::GetInventoryChangesSize(unsigned short pid) noexcept
return player->inventoryChanges.count; return player->inventoryChanges.count;
} }
unsigned int ItemFunctions::GetInventoryChangesAction(unsigned short pid) noexcept extern "C" unsigned int ItemFunctions::GetInventoryChangesAction(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -38,7 +38,7 @@ unsigned int ItemFunctions::GetInventoryChangesAction(unsigned short pid) noexce
return player->inventoryChanges.action; return player->inventoryChanges.action;
} }
void ItemFunctions::SetInventoryChangesAction(unsigned short pid, unsigned char action) noexcept extern "C" void ItemFunctions::SetInventoryChangesAction(unsigned short pid, unsigned char action) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -46,7 +46,7 @@ void ItemFunctions::SetInventoryChangesAction(unsigned short pid, unsigned char
player->inventoryChanges.action = action; player->inventoryChanges.action = action;
} }
void ItemFunctions::EquipItem(unsigned short pid, unsigned short slot, const char *refId, unsigned int count, extern "C" void ItemFunctions::EquipItem(unsigned short pid, unsigned short slot, const char *refId, unsigned int count,
int charge, double enchantmentCharge) noexcept int charge, double enchantmentCharge) noexcept
{ {
Player *player; Player *player;
@ -61,7 +61,7 @@ void ItemFunctions::EquipItem(unsigned short pid, unsigned short slot, const cha
player->equipmentIndexChanges.push_back(slot); player->equipmentIndexChanges.push_back(slot);
} }
void ItemFunctions::UnequipItem(unsigned short pid, unsigned short slot) noexcept extern "C" void ItemFunctions::UnequipItem(unsigned short pid, unsigned short slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -69,7 +69,7 @@ void ItemFunctions::UnequipItem(unsigned short pid, unsigned short slot) noexcep
ItemFunctions::EquipItem(pid, slot, "", 0, -1, -1); ItemFunctions::EquipItem(pid, slot, "", 0, -1, -1);
} }
void ItemFunctions::AddItemChange(unsigned short pid, const char* refId, unsigned int count, int charge, extern "C" void ItemFunctions::AddItemChange(unsigned short pid, const char* refId, unsigned int count, int charge,
double enchantmentCharge, const char* soul) noexcept double enchantmentCharge, const char* soul) noexcept
{ {
Player *player; Player *player;
@ -85,7 +85,7 @@ void ItemFunctions::AddItemChange(unsigned short pid, const char* refId, unsigne
player->inventoryChanges.items.push_back(item); player->inventoryChanges.items.push_back(item);
} }
bool ItemFunctions::HasItemEquipped(unsigned short pid, const char* refId) extern "C" bool ItemFunctions::HasItemEquipped(unsigned short pid, const char* refId)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -96,7 +96,7 @@ bool ItemFunctions::HasItemEquipped(unsigned short pid, const char* refId)
return false; return false;
} }
const char *ItemFunctions::GetEquipmentItemRefId(unsigned short pid, unsigned short slot) noexcept extern "C" const char *ItemFunctions::GetEquipmentItemRefId(unsigned short pid, unsigned short slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -104,7 +104,7 @@ const char *ItemFunctions::GetEquipmentItemRefId(unsigned short pid, unsigned sh
return player->equipmentItems[slot].refId.c_str(); return player->equipmentItems[slot].refId.c_str();
} }
int ItemFunctions::GetEquipmentItemCount(unsigned short pid, unsigned short slot) noexcept extern "C" int ItemFunctions::GetEquipmentItemCount(unsigned short pid, unsigned short slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -112,7 +112,7 @@ int ItemFunctions::GetEquipmentItemCount(unsigned short pid, unsigned short slot
return player->equipmentItems[slot].count; return player->equipmentItems[slot].count;
} }
int ItemFunctions::GetEquipmentItemCharge(unsigned short pid, unsigned short slot) noexcept extern "C" int ItemFunctions::GetEquipmentItemCharge(unsigned short pid, unsigned short slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -120,7 +120,7 @@ int ItemFunctions::GetEquipmentItemCharge(unsigned short pid, unsigned short slo
return player->equipmentItems[slot].charge; return player->equipmentItems[slot].charge;
} }
double ItemFunctions::GetEquipmentItemEnchantmentCharge(unsigned short pid, unsigned short slot) noexcept extern "C" double ItemFunctions::GetEquipmentItemEnchantmentCharge(unsigned short pid, unsigned short slot) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -128,7 +128,7 @@ double ItemFunctions::GetEquipmentItemEnchantmentCharge(unsigned short pid, unsi
return player->equipmentItems[slot].enchantmentCharge; return player->equipmentItems[slot].enchantmentCharge;
} }
const char *ItemFunctions::GetInventoryItemRefId(unsigned short pid, unsigned int index) noexcept extern "C" const char *ItemFunctions::GetInventoryItemRefId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -139,7 +139,7 @@ const char *ItemFunctions::GetInventoryItemRefId(unsigned short pid, unsigned in
return player->inventoryChanges.items.at(index).refId.c_str(); return player->inventoryChanges.items.at(index).refId.c_str();
} }
int ItemFunctions::GetInventoryItemCount(unsigned short pid, unsigned int index) noexcept extern "C" int ItemFunctions::GetInventoryItemCount(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -147,7 +147,7 @@ int ItemFunctions::GetInventoryItemCount(unsigned short pid, unsigned int index)
return player->inventoryChanges.items.at(index).count; return player->inventoryChanges.items.at(index).count;
} }
int ItemFunctions::GetInventoryItemCharge(unsigned short pid, unsigned int index) noexcept extern "C" int ItemFunctions::GetInventoryItemCharge(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -155,7 +155,7 @@ int ItemFunctions::GetInventoryItemCharge(unsigned short pid, unsigned int index
return player->inventoryChanges.items.at(index).charge; return player->inventoryChanges.items.at(index).charge;
} }
double ItemFunctions::GetInventoryItemEnchantmentCharge(unsigned short pid, unsigned int index) noexcept extern "C" double ItemFunctions::GetInventoryItemEnchantmentCharge(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -163,7 +163,7 @@ double ItemFunctions::GetInventoryItemEnchantmentCharge(unsigned short pid, unsi
return player->inventoryChanges.items.at(index).enchantmentCharge; return player->inventoryChanges.items.at(index).enchantmentCharge;
} }
const char *ItemFunctions::GetInventoryItemSoul(unsigned short pid, unsigned int index) noexcept extern "C" const char *ItemFunctions::GetInventoryItemSoul(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -174,7 +174,7 @@ const char *ItemFunctions::GetInventoryItemSoul(unsigned short pid, unsigned int
return player->inventoryChanges.items.at(index).soul.c_str(); return player->inventoryChanges.items.at(index).soul.c_str();
} }
const char *ItemFunctions::GetUsedItemRefId(unsigned short pid) noexcept extern "C" const char *ItemFunctions::GetUsedItemRefId(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -182,7 +182,7 @@ const char *ItemFunctions::GetUsedItemRefId(unsigned short pid) noexcept
return player->usedItem.refId.c_str(); return player->usedItem.refId.c_str();
} }
int ItemFunctions::GetUsedItemCount(unsigned short pid) noexcept extern "C" int ItemFunctions::GetUsedItemCount(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -190,7 +190,7 @@ int ItemFunctions::GetUsedItemCount(unsigned short pid) noexcept
return player->usedItem.count; return player->usedItem.count;
} }
int ItemFunctions::GetUsedItemCharge(unsigned short pid) noexcept extern "C" int ItemFunctions::GetUsedItemCharge(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -198,7 +198,7 @@ int ItemFunctions::GetUsedItemCharge(unsigned short pid) noexcept
return player->usedItem.charge; return player->usedItem.charge;
} }
double ItemFunctions::GetUsedItemEnchantmentCharge(unsigned short pid) noexcept extern "C" double ItemFunctions::GetUsedItemEnchantmentCharge(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -206,7 +206,7 @@ double ItemFunctions::GetUsedItemEnchantmentCharge(unsigned short pid) noexcept
return player->usedItem.enchantmentCharge; return player->usedItem.enchantmentCharge;
} }
const char *ItemFunctions::GetUsedItemSoul(unsigned short pid) noexcept extern "C" const char *ItemFunctions::GetUsedItemSoul(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -214,7 +214,7 @@ const char *ItemFunctions::GetUsedItemSoul(unsigned short pid) noexcept
return player->usedItem.soul.c_str(); return player->usedItem.soul.c_str();
} }
void ItemFunctions::SendEquipment(unsigned short pid) noexcept extern "C" void ItemFunctions::SendEquipment(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -228,7 +228,7 @@ void ItemFunctions::SendEquipment(unsigned short pid) noexcept
player->equipmentIndexChanges.clear(); player->equipmentIndexChanges.clear();
} }
void ItemFunctions::SendInventoryChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ItemFunctions::SendInventoryChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -242,7 +242,7 @@ void ItemFunctions::SendInventoryChanges(unsigned short pid, bool sendToOtherPla
packet->Send(true); packet->Send(true);
} }
void ItemFunctions::SendItemUse(unsigned short pid) noexcept extern "C" void ItemFunctions::SendItemUse(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -253,14 +253,14 @@ void ItemFunctions::SendItemUse(unsigned short pid) noexcept
packet->Send(false); packet->Send(false);
} }
// All methods below are deprecated versions of methods from above extern "C" // All methods below are deprecated versions of methods from above
void ItemFunctions::InitializeInventoryChanges(unsigned short pid) noexcept void ItemFunctions::InitializeInventoryChanges(unsigned short pid) noexcept
{ {
ClearInventoryChanges(pid); ClearInventoryChanges(pid);
} }
void ItemFunctions::AddItem(unsigned short pid, const char* refId, unsigned int count, int charge, extern "C" void ItemFunctions::AddItem(unsigned short pid, const char* refId, unsigned int count, int charge,
double enchantmentCharge, const char* soul) noexcept double enchantmentCharge, const char* soul) noexcept
{ {
AddItemChange(pid, refId, count, charge, enchantmentCharge, soul); AddItemChange(pid, refId, count, charge, enchantmentCharge, soul);

@ -41,10 +41,8 @@
{"InitializeInventoryChanges", ItemFunctions::InitializeInventoryChanges},\ {"InitializeInventoryChanges", ItemFunctions::InitializeInventoryChanges},\
{"AddItem", ItemFunctions::AddItem} {"AddItem", ItemFunctions::AddItem}
class ItemFunctions namespace ItemFunctions
{ {
public:
/** /**
* \brief Clear the last recorded inventory changes for a player. * \brief Clear the last recorded inventory changes for a player.
* *
@ -53,7 +51,7 @@ public:
* \param pid The player ID whose inventory changes should be used. * \param pid The player ID whose inventory changes should be used.
* \return void * \return void
*/ */
static void ClearInventoryChanges(unsigned short pid) noexcept; extern "C" void ClearInventoryChanges(unsigned short pid) noexcept;
/** /**
* \brief Get the number of slots used for equipment. * \brief Get the number of slots used for equipment.
@ -62,7 +60,7 @@ public:
* *
* \return The number of slots. * \return The number of slots.
*/ */
static int GetEquipmentSize() noexcept; extern "C" int GetEquipmentSize() noexcept;
/** /**
* \brief Get the number of indexes in a player's latest inventory changes. * \brief Get the number of indexes in a player's latest inventory changes.
@ -70,7 +68,7 @@ public:
* \param pid The player ID whose inventory changes should be used. * \param pid The player ID whose inventory changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetInventoryChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetInventoryChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Get the action type used in a player's latest inventory changes. * \brief Get the action type used in a player's latest inventory changes.
@ -78,7 +76,7 @@ public:
* \param pid The player ID whose inventory changes should be used. * \param pid The player ID whose inventory changes should be used.
* \return The action type (0 for SET, 1 for ADD, 2 for REMOVE). * \return The action type (0 for SET, 1 for ADD, 2 for REMOVE).
*/ */
static unsigned int GetInventoryChangesAction(unsigned short pid) noexcept; extern "C" unsigned int GetInventoryChangesAction(unsigned short pid) noexcept;
/** /**
* \brief Set the action type in a player's inventory changes. * \brief Set the action type in a player's inventory changes.
@ -87,7 +85,7 @@ public:
* \param action The action (0 for SET, 1 for ADD, 2 for REMOVE). * \param action The action (0 for SET, 1 for ADD, 2 for REMOVE).
* \return void * \return void
*/ */
static void SetInventoryChangesAction(unsigned short pid, unsigned char action) noexcept; extern "C" void SetInventoryChangesAction(unsigned short pid, unsigned char action) noexcept;
/** /**
* \brief Equip an item in a certain slot of the equipment of a player. * \brief Equip an item in a certain slot of the equipment of a player.
@ -100,7 +98,7 @@ public:
* \param enchantmentCharge The enchantment charge of the item. * \param enchantmentCharge The enchantment charge of the item.
* \return void * \return void
*/ */
static void EquipItem(unsigned short pid, unsigned short slot, const char* refId, unsigned int count, int charge, extern "C" void EquipItem(unsigned short pid, unsigned short slot, const char* refId, unsigned int count, int charge,
double enchantmentCharge = -1) noexcept; double enchantmentCharge = -1) noexcept;
/** /**
@ -110,7 +108,7 @@ public:
* \param slot The equipment slot. * \param slot The equipment slot.
* \return void * \return void
*/ */
static void UnequipItem(unsigned short pid, unsigned short slot) noexcept; extern "C" void UnequipItem(unsigned short pid, unsigned short slot) noexcept;
/** /**
* \brief Add an item change to a player's inventory changes. * \brief Add an item change to a player's inventory changes.
@ -123,7 +121,7 @@ public:
* \param soul The soul of the item. * \param soul The soul of the item.
* \return void * \return void
*/ */
static void AddItemChange(unsigned short pid, const char* refId, unsigned int count, int charge, extern "C" void AddItemChange(unsigned short pid, const char* refId, unsigned int count, int charge,
double enchantmentCharge, const char* soul) noexcept; double enchantmentCharge, const char* soul) noexcept;
/** /**
@ -133,7 +131,7 @@ public:
* \param refId The refId of the item. * \param refId The refId of the item.
* \return Whether the player has the item equipped. * \return Whether the player has the item equipped.
*/ */
static bool HasItemEquipped(unsigned short pid, const char* refId); extern "C" bool HasItemEquipped(unsigned short pid, const char* refId);
/** /**
* \brief Get the refId of the item in a certain slot of the equipment of a player. * \brief Get the refId of the item in a certain slot of the equipment of a player.
@ -142,7 +140,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The refId. * \return The refId.
*/ */
static const char *GetEquipmentItemRefId(unsigned short pid, unsigned short slot) noexcept; extern "C" const char *GetEquipmentItemRefId(unsigned short pid, unsigned short slot) noexcept;
/** /**
* \brief Get the count of the item in a certain slot of the equipment of a player. * \brief Get the count of the item in a certain slot of the equipment of a player.
@ -151,7 +149,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The item count. * \return The item count.
*/ */
static int GetEquipmentItemCount(unsigned short pid, unsigned short slot) noexcept; extern "C" int GetEquipmentItemCount(unsigned short pid, unsigned short slot) noexcept;
/** /**
* \brief Get the charge of the item in a certain slot of the equipment of a player. * \brief Get the charge of the item in a certain slot of the equipment of a player.
@ -160,7 +158,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The charge. * \return The charge.
*/ */
static int GetEquipmentItemCharge(unsigned short pid, unsigned short slot) noexcept; extern "C" int GetEquipmentItemCharge(unsigned short pid, unsigned short slot) noexcept;
/** /**
* \brief Get the enchantment charge of the item in a certain slot of the equipment of * \brief Get the enchantment charge of the item in a certain slot of the equipment of
@ -170,7 +168,7 @@ public:
* \param slot The slot of the equipment item. * \param slot The slot of the equipment item.
* \return The enchantment charge. * \return The enchantment charge.
*/ */
static double GetEquipmentItemEnchantmentCharge(unsigned short pid, unsigned short slot) noexcept; extern "C" double GetEquipmentItemEnchantmentCharge(unsigned short pid, unsigned short slot) noexcept;
/** /**
* \brief Get the refId of the item at a certain index in a player's latest inventory * \brief Get the refId of the item at a certain index in a player's latest inventory
@ -180,7 +178,7 @@ public:
* \param index The index of the inventory item. * \param index The index of the inventory item.
* \return The refId. * \return The refId.
*/ */
static const char *GetInventoryItemRefId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetInventoryItemRefId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the count of the item at a certain index in a player's latest inventory * \brief Get the count of the item at a certain index in a player's latest inventory
@ -190,7 +188,7 @@ public:
* \param index The index of the inventory item. * \param index The index of the inventory item.
* \return The item count. * \return The item count.
*/ */
static int GetInventoryItemCount(unsigned short pid, unsigned int index) noexcept; extern "C" int GetInventoryItemCount(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the charge of the item at a certain index in a player's latest inventory * \brief Get the charge of the item at a certain index in a player's latest inventory
@ -200,7 +198,7 @@ public:
* \param index The index of the inventory item. * \param index The index of the inventory item.
* \return The charge. * \return The charge.
*/ */
static int GetInventoryItemCharge(unsigned short pid, unsigned int index) noexcept; extern "C" int GetInventoryItemCharge(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the enchantment charge of the item at a certain index in a player's * \brief Get the enchantment charge of the item at a certain index in a player's
@ -210,7 +208,7 @@ public:
* \param index The index of the inventory item. * \param index The index of the inventory item.
* \return The enchantment charge. * \return The enchantment charge.
*/ */
static double GetInventoryItemEnchantmentCharge(unsigned short pid, unsigned int index) noexcept; extern "C" double GetInventoryItemEnchantmentCharge(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the soul of the item at a certain index in a player's latest inventory * \brief Get the soul of the item at a certain index in a player's latest inventory
@ -220,7 +218,7 @@ public:
* \param index The index of the inventory item. * \param index The index of the inventory item.
* \return The soul. * \return The soul.
*/ */
static const char *GetInventoryItemSoul(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetInventoryItemSoul(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the refId of the item last used by a player. * \brief Get the refId of the item last used by a player.
@ -228,7 +226,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The refId. * \return The refId.
*/ */
static const char *GetUsedItemRefId(unsigned short pid) noexcept; extern "C" const char *GetUsedItemRefId(unsigned short pid) noexcept;
/** /**
* \brief Get the count of the item last used by a player. * \brief Get the count of the item last used by a player.
@ -236,7 +234,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The item count. * \return The item count.
*/ */
static int GetUsedItemCount(unsigned short pid) noexcept; extern "C" int GetUsedItemCount(unsigned short pid) noexcept;
/** /**
* \brief Get the charge of the item last used by a player. * \brief Get the charge of the item last used by a player.
@ -244,7 +242,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The charge. * \return The charge.
*/ */
static int GetUsedItemCharge(unsigned short pid) noexcept; extern "C" int GetUsedItemCharge(unsigned short pid) noexcept;
/** /**
* \brief Get the enchantment charge of the item last used by a player. * \brief Get the enchantment charge of the item last used by a player.
@ -252,7 +250,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The enchantment charge. * \return The enchantment charge.
*/ */
static double GetUsedItemEnchantmentCharge(unsigned short pid) noexcept; extern "C" double GetUsedItemEnchantmentCharge(unsigned short pid) noexcept;
/** /**
* \brief Get the soul of the item last used by a player. * \brief Get the soul of the item last used by a player.
@ -260,7 +258,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The soul. * \return The soul.
*/ */
static const char *GetUsedItemSoul(unsigned short pid) noexcept; extern "C" const char *GetUsedItemSoul(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerEquipment packet with a player's equipment. * \brief Send a PlayerEquipment packet with a player's equipment.
@ -270,7 +268,7 @@ public:
* \param pid The player ID whose equipment should be sent. * \param pid The player ID whose equipment should be sent.
* \return void * \return void
*/ */
static void SendEquipment(unsigned short pid) noexcept; extern "C" void SendEquipment(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerInventory packet with a player's recorded inventory changes. * \brief Send a PlayerInventory packet with a player's recorded inventory changes.
@ -282,7 +280,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendInventoryChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendInventoryChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a PlayerItemUse causing a player to use their recorded usedItem. * \brief Send a PlayerItemUse causing a player to use their recorded usedItem.
@ -290,17 +288,14 @@ public:
* \param pid The player ID affected. * \param pid The player ID affected.
* \return void * \return void
*/ */
static void SendItemUse(unsigned short pid) noexcept; extern "C" void SendItemUse(unsigned short pid) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void InitializeInventoryChanges(unsigned short pid) noexcept; extern "C" void InitializeInventoryChanges(unsigned short pid) noexcept;
static void AddItem(unsigned short pid, const char* refId, unsigned int count, int charge, extern "C" void AddItem(unsigned short pid, const char* refId, unsigned int count, int charge,
double enchantmentCharge, const char* soul) noexcept; double enchantmentCharge, const char* soul) noexcept;
}
private:
};
#endif //OPENMW_ITEMAPI_HPP #endif //OPENMW_ITEMAPI_HPP

@ -11,7 +11,7 @@ using namespace std;
static std::string tempCellDescription; static std::string tempCellDescription;
unsigned char MechanicsFunctions::GetMiscellaneousChangeType(unsigned short pid) noexcept extern "C" unsigned char MechanicsFunctions::GetMiscellaneousChangeType(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -19,7 +19,7 @@ unsigned char MechanicsFunctions::GetMiscellaneousChangeType(unsigned short pid)
return player->miscellaneousChangeType; return player->miscellaneousChangeType;
} }
const char *MechanicsFunctions::GetMarkCell(unsigned short pid) noexcept extern "C" const char *MechanicsFunctions::GetMarkCell(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -28,7 +28,7 @@ const char *MechanicsFunctions::GetMarkCell(unsigned short pid) noexcept
return tempCellDescription.c_str(); return tempCellDescription.c_str();
} }
double MechanicsFunctions::GetMarkPosX(unsigned short pid) noexcept extern "C" double MechanicsFunctions::GetMarkPosX(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -36,7 +36,7 @@ double MechanicsFunctions::GetMarkPosX(unsigned short pid) noexcept
return player->markPosition.pos[0]; return player->markPosition.pos[0];
} }
double MechanicsFunctions::GetMarkPosY(unsigned short pid) noexcept extern "C" double MechanicsFunctions::GetMarkPosY(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -44,7 +44,7 @@ double MechanicsFunctions::GetMarkPosY(unsigned short pid) noexcept
return player->markPosition.pos[1]; return player->markPosition.pos[1];
} }
double MechanicsFunctions::GetMarkPosZ(unsigned short pid) noexcept extern "C" double MechanicsFunctions::GetMarkPosZ(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -52,7 +52,7 @@ double MechanicsFunctions::GetMarkPosZ(unsigned short pid) noexcept
return player->markPosition.pos[2]; return player->markPosition.pos[2];
} }
double MechanicsFunctions::GetMarkRotX(unsigned short pid) noexcept extern "C" double MechanicsFunctions::GetMarkRotX(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -60,7 +60,7 @@ double MechanicsFunctions::GetMarkRotX(unsigned short pid) noexcept
return player->markPosition.rot[0]; return player->markPosition.rot[0];
} }
double MechanicsFunctions::GetMarkRotZ(unsigned short pid) noexcept extern "C" double MechanicsFunctions::GetMarkRotZ(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -68,7 +68,7 @@ double MechanicsFunctions::GetMarkRotZ(unsigned short pid) noexcept
return player->markPosition.rot[2]; return player->markPosition.rot[2];
} }
bool MechanicsFunctions::DoesPlayerHavePlayerKiller(unsigned short pid) noexcept extern "C" bool MechanicsFunctions::DoesPlayerHavePlayerKiller(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -76,7 +76,7 @@ bool MechanicsFunctions::DoesPlayerHavePlayerKiller(unsigned short pid) noexcept
return player->killer.isPlayer; return player->killer.isPlayer;
} }
int MechanicsFunctions::GetPlayerKillerPid(unsigned short pid) noexcept extern "C" int MechanicsFunctions::GetPlayerKillerPid(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -89,7 +89,7 @@ int MechanicsFunctions::GetPlayerKillerPid(unsigned short pid) noexcept
return -1; return -1;
} }
const char *MechanicsFunctions::GetPlayerKillerRefId(unsigned short pid) noexcept extern "C" const char *MechanicsFunctions::GetPlayerKillerRefId(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -97,7 +97,7 @@ const char *MechanicsFunctions::GetPlayerKillerRefId(unsigned short pid) noexcep
return player->killer.refId.c_str(); return player->killer.refId.c_str();
} }
unsigned int MechanicsFunctions::GetPlayerKillerRefNum(unsigned short pid) noexcept extern "C" unsigned int MechanicsFunctions::GetPlayerKillerRefNum(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -105,7 +105,7 @@ unsigned int MechanicsFunctions::GetPlayerKillerRefNum(unsigned short pid) noexc
return player->killer.refNum; return player->killer.refNum;
} }
unsigned int MechanicsFunctions::GetPlayerKillerMpNum(unsigned short pid) noexcept extern "C" unsigned int MechanicsFunctions::GetPlayerKillerMpNum(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -113,7 +113,7 @@ unsigned int MechanicsFunctions::GetPlayerKillerMpNum(unsigned short pid) noexce
return player->killer.mpNum; return player->killer.mpNum;
} }
const char *MechanicsFunctions::GetPlayerKillerName(unsigned short pid) noexcept extern "C" const char *MechanicsFunctions::GetPlayerKillerName(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -121,7 +121,7 @@ const char *MechanicsFunctions::GetPlayerKillerName(unsigned short pid) noexcept
return player->killer.name.c_str(); return player->killer.name.c_str();
} }
const char *MechanicsFunctions::GetSelectedSpellId(unsigned short pid) noexcept extern "C" const char *MechanicsFunctions::GetSelectedSpellId(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -129,7 +129,7 @@ const char *MechanicsFunctions::GetSelectedSpellId(unsigned short pid) noexcept
return player->selectedSpellId.c_str(); return player->selectedSpellId.c_str();
} }
unsigned int MechanicsFunctions::GetDrawState(unsigned short pid) noexcept extern "C" unsigned int MechanicsFunctions::GetDrawState(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -137,7 +137,7 @@ unsigned int MechanicsFunctions::GetDrawState(unsigned short pid) noexcept
return player->drawState; return player->drawState;
} }
bool MechanicsFunctions::GetSneakState(unsigned short pid) noexcept extern "C" bool MechanicsFunctions::GetSneakState(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -146,7 +146,7 @@ bool MechanicsFunctions::GetSneakState(unsigned short pid) noexcept
return (player->movementFlags & 8) != 0; return (player->movementFlags & 8) != 0;
} }
void MechanicsFunctions::SetMarkCell(unsigned short pid, const char *cellDescription) noexcept extern "C" void MechanicsFunctions::SetMarkCell(unsigned short pid, const char *cellDescription) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -154,7 +154,7 @@ void MechanicsFunctions::SetMarkCell(unsigned short pid, const char *cellDescrip
player->markCell = Utils::getCellFromDescription(cellDescription); player->markCell = Utils::getCellFromDescription(cellDescription);
} }
void MechanicsFunctions::SetMarkPos(unsigned short pid, double x, double y, double z) noexcept extern "C" void MechanicsFunctions::SetMarkPos(unsigned short pid, double x, double y, double z) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -164,7 +164,7 @@ void MechanicsFunctions::SetMarkPos(unsigned short pid, double x, double y, doub
player->markPosition.pos[2] = z; player->markPosition.pos[2] = z;
} }
void MechanicsFunctions::SetMarkRot(unsigned short pid, double x, double z) noexcept extern "C" void MechanicsFunctions::SetMarkRot(unsigned short pid, double x, double z) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -173,7 +173,7 @@ void MechanicsFunctions::SetMarkRot(unsigned short pid, double x, double z) noex
player->markPosition.rot[2] = z; player->markPosition.rot[2] = z;
} }
void MechanicsFunctions::SetSelectedSpellId(unsigned short pid, const char *spellId) noexcept extern "C" void MechanicsFunctions::SetSelectedSpellId(unsigned short pid, const char *spellId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -181,7 +181,7 @@ void MechanicsFunctions::SetSelectedSpellId(unsigned short pid, const char *spel
player->selectedSpellId = spellId; player->selectedSpellId = spellId;
} }
void MechanicsFunctions::SendMarkLocation(unsigned short pid) extern "C" void MechanicsFunctions::SendMarkLocation(unsigned short pid)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -194,7 +194,7 @@ void MechanicsFunctions::SendMarkLocation(unsigned short pid)
packet->Send(false); packet->Send(false);
} }
void MechanicsFunctions::SendSelectedSpell(unsigned short pid) extern "C" void MechanicsFunctions::SendSelectedSpell(unsigned short pid)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -207,7 +207,7 @@ void MechanicsFunctions::SendSelectedSpell(unsigned short pid)
packet->Send(false); packet->Send(false);
} }
void MechanicsFunctions::Jail(unsigned short pid, int jailDays, bool ignoreJailTeleportation, bool ignoreJailSkillIncreases, extern "C" void MechanicsFunctions::Jail(unsigned short pid, int jailDays, bool ignoreJailTeleportation, bool ignoreJailSkillIncreases,
const char* jailProgressText, const char* jailEndText) noexcept const char* jailProgressText, const char* jailEndText) noexcept
{ {
Player *player; Player *player;
@ -225,7 +225,7 @@ void MechanicsFunctions::Jail(unsigned short pid, int jailDays, bool ignoreJailT
packet->Send(false); packet->Send(false);
} }
void MechanicsFunctions::Resurrect(unsigned short pid, unsigned int type) noexcept extern "C" void MechanicsFunctions::Resurrect(unsigned short pid, unsigned int type) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -241,7 +241,7 @@ void MechanicsFunctions::Resurrect(unsigned short pid, unsigned int type) noexce
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
const char *MechanicsFunctions::GetDeathReason(unsigned short pid) noexcept extern "C" const char *MechanicsFunctions::GetDeathReason(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -259,7 +259,7 @@ const char *MechanicsFunctions::GetDeathReason(unsigned short pid) noexcept
return "suicide"; return "suicide";
} }
unsigned int MechanicsFunctions::GetPlayerKillerRefNumIndex(unsigned short pid) noexcept extern "C" unsigned int MechanicsFunctions::GetPlayerKillerRefNumIndex(unsigned short pid) noexcept
{ {
return GetPlayerKillerRefNum(pid); return GetPlayerKillerRefNum(pid);
} }

@ -38,17 +38,15 @@
{"GetDeathReason", MechanicsFunctions::GetDeathReason},\ {"GetDeathReason", MechanicsFunctions::GetDeathReason},\
{"GetPlayerKillerRefNumIndex", MechanicsFunctions::GetPlayerKillerRefNumIndex} {"GetPlayerKillerRefNumIndex", MechanicsFunctions::GetPlayerKillerRefNumIndex}
class MechanicsFunctions namespace MechanicsFunctions
{ {
public:
/** /**
* \brief Get the type of a PlayerMiscellaneous packet. * \brief Get the type of a PlayerMiscellaneous packet.
* *
* \param pid The player ID. * \param pid The player ID.
* \return The type. * \return The type.
*/ */
static unsigned char GetMiscellaneousChangeType(unsigned short pid) noexcept; extern "C" unsigned char GetMiscellaneousChangeType(unsigned short pid) noexcept;
/** /**
* \brief Get the cell description of a player's Mark cell. * \brief Get the cell description of a player's Mark cell.
@ -56,7 +54,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The cell description. * \return The cell description.
*/ */
static const char *GetMarkCell(unsigned short pid) noexcept; extern "C" const char *GetMarkCell(unsigned short pid) noexcept;
/** /**
* \brief Get the X position of a player's Mark. * \brief Get the X position of a player's Mark.
@ -64,7 +62,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The X position. * \return The X position.
*/ */
static double GetMarkPosX(unsigned short pid) noexcept; extern "C" double GetMarkPosX(unsigned short pid) noexcept;
/** /**
* \brief Get the Y position of a player's Mark. * \brief Get the Y position of a player's Mark.
@ -72,7 +70,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Y position. * \return The Y position.
*/ */
static double GetMarkPosY(unsigned short pid) noexcept; extern "C" double GetMarkPosY(unsigned short pid) noexcept;
/** /**
* \brief Get the Z position of a player's Mark. * \brief Get the Z position of a player's Mark.
@ -80,7 +78,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Z position. * \return The Z position.
*/ */
static double GetMarkPosZ(unsigned short pid) noexcept; extern "C" double GetMarkPosZ(unsigned short pid) noexcept;
/** /**
* \brief Get the X rotation of a player's Mark. * \brief Get the X rotation of a player's Mark.
@ -88,7 +86,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The X rotation. * \return The X rotation.
*/ */
static double GetMarkRotX(unsigned short pid) noexcept; extern "C" double GetMarkRotX(unsigned short pid) noexcept;
/** /**
* \brief Get the Z rotation of a player's Mark. * \brief Get the Z rotation of a player's Mark.
@ -96,7 +94,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The X rotation. * \return The X rotation.
*/ */
static double GetMarkRotZ(unsigned short pid) noexcept; extern "C" double GetMarkRotZ(unsigned short pid) noexcept;
/** /**
* \brief Get the ID of a player's selected spell. * \brief Get the ID of a player's selected spell.
@ -104,7 +102,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The spell ID. * \return The spell ID.
*/ */
static const char *GetSelectedSpellId(unsigned short pid) noexcept; extern "C" const char *GetSelectedSpellId(unsigned short pid) noexcept;
/** /**
* \brief Check whether the killer of a certain player is also a player. * \brief Check whether the killer of a certain player is also a player.
@ -112,7 +110,7 @@ public:
* \param pid The player ID of the killed player. * \param pid The player ID of the killed player.
* \return Whether the player was killed by another player. * \return Whether the player was killed by another player.
*/ */
static bool DoesPlayerHavePlayerKiller(unsigned short pid) noexcept; extern "C" bool DoesPlayerHavePlayerKiller(unsigned short pid) noexcept;
/** /**
* \brief Get the player ID of the killer of a certain player. * \brief Get the player ID of the killer of a certain player.
@ -120,7 +118,7 @@ public:
* \param pid The player ID of the killed player. * \param pid The player ID of the killed player.
* \return The player ID of the killer. * \return The player ID of the killer.
*/ */
static int GetPlayerKillerPid(unsigned short pid) noexcept; extern "C" int GetPlayerKillerPid(unsigned short pid) noexcept;
/** /**
* \brief Get the refId of the actor killer of a certain player. * \brief Get the refId of the actor killer of a certain player.
@ -128,7 +126,7 @@ public:
* \param pid The player ID of the killed player. * \param pid The player ID of the killed player.
* \return The refId of the killer. * \return The refId of the killer.
*/ */
static const char *GetPlayerKillerRefId(unsigned short pid) noexcept; extern "C" const char *GetPlayerKillerRefId(unsigned short pid) noexcept;
/** /**
* \brief Get the refNum of the actor killer of a certain player. * \brief Get the refNum of the actor killer of a certain player.
@ -136,7 +134,7 @@ public:
* \param pid The player ID of the killed player. * \param pid The player ID of the killed player.
* \return The refNum of the killer. * \return The refNum of the killer.
*/ */
static unsigned int GetPlayerKillerRefNum(unsigned short pid) noexcept; extern "C" unsigned int GetPlayerKillerRefNum(unsigned short pid) noexcept;
/** /**
* \brief Get the mpNum of the actor killer of a certain player. * \brief Get the mpNum of the actor killer of a certain player.
@ -144,7 +142,7 @@ public:
* \param pid The player ID of the killed player. * \param pid The player ID of the killed player.
* \return The mpNum of the killer. * \return The mpNum of the killer.
*/ */
static unsigned int GetPlayerKillerMpNum(unsigned short pid) noexcept; extern "C" unsigned int GetPlayerKillerMpNum(unsigned short pid) noexcept;
/** /**
* \brief Get the name of the actor killer of a certain player. * \brief Get the name of the actor killer of a certain player.
@ -152,7 +150,7 @@ public:
* \param pid The player ID of the killed player. * \param pid The player ID of the killed player.
* \return The name of the killer. * \return The name of the killer.
*/ */
static const char *GetPlayerKillerName(unsigned short pid) noexcept; extern "C" const char *GetPlayerKillerName(unsigned short pid) noexcept;
/** /**
* \brief Get the draw state of a player (0 for nothing, 1 for drawn weapon, * \brief Get the draw state of a player (0 for nothing, 1 for drawn weapon,
@ -161,7 +159,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The draw state. * \return The draw state.
*/ */
static unsigned int GetDrawState(unsigned short pid) noexcept; extern "C" unsigned int GetDrawState(unsigned short pid) noexcept;
/** /**
* \brief Get the sneak state of a player. * \brief Get the sneak state of a player.
@ -169,7 +167,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return Whether the player is sneaking. * \return Whether the player is sneaking.
*/ */
static bool GetSneakState(unsigned short pid) noexcept; extern "C" bool GetSneakState(unsigned short pid) noexcept;
/** /**
* \brief Set the Mark cell of a player. * \brief Set the Mark cell of a player.
@ -184,7 +182,7 @@ public:
* \param cellDescription The cell description. * \param cellDescription The cell description.
* \return void * \return void
*/ */
static void SetMarkCell(unsigned short pid, const char *cellDescription) noexcept; extern "C" void SetMarkCell(unsigned short pid, const char *cellDescription) noexcept;
/** /**
* \brief Set the Mark position of a player. * \brief Set the Mark position of a player.
@ -198,7 +196,7 @@ public:
* \param z The Z position. * \param z The Z position.
* \return void * \return void
*/ */
static void SetMarkPos(unsigned short pid, double x, double y, double z) noexcept; extern "C" void SetMarkPos(unsigned short pid, double x, double y, double z) noexcept;
/** /**
* \brief Set the Mark rotation of a player. * \brief Set the Mark rotation of a player.
@ -211,7 +209,7 @@ public:
* \param z The Z rotation. * \param z The Z rotation.
* \return void * \return void
*/ */
static void SetMarkRot(unsigned short pid, double x, double z) noexcept; extern "C" void SetMarkRot(unsigned short pid, double x, double z) noexcept;
/** /**
* \brief Set the ID of a player's selected spell. * \brief Set the ID of a player's selected spell.
@ -223,7 +221,7 @@ public:
* \param spellId The spell ID. * \param spellId The spell ID.
* \return void * \return void
*/ */
static void SetSelectedSpellId(unsigned short pid, const char *spellId) noexcept; extern "C" void SetSelectedSpellId(unsigned short pid, const char *spellId) noexcept;
/** /**
* \brief Send a PlayerMiscellaneous packet with a Mark location to a player. * \brief Send a PlayerMiscellaneous packet with a Mark location to a player.
@ -231,7 +229,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendMarkLocation(unsigned short pid); extern "C" void SendMarkLocation(unsigned short pid);
/** /**
* \brief Send a PlayerMiscellaneous packet with a selected spell ID to a player. * \brief Send a PlayerMiscellaneous packet with a selected spell ID to a player.
@ -239,7 +237,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendSelectedSpell(unsigned short pid); extern "C" void SendSelectedSpell(unsigned short pid);
/** /**
* \brief Send a PlayerJail packet about a player. * \brief Send a PlayerJail packet about a player.
@ -261,7 +259,7 @@ public:
* \param jailEndText The text that should be displayed once the jailing period is over. * \param jailEndText The text that should be displayed once the jailing period is over.
* \return void * \return void
*/ */
static void Jail(unsigned short pid, int jailDays, bool ignoreJailTeleportation, bool ignoreJailSkillIncreases, extern "C" void Jail(unsigned short pid, int jailDays, bool ignoreJailTeleportation, bool ignoreJailSkillIncreases,
const char* jailProgressText, const char* jailEndText) noexcept; const char* jailProgressText, const char* jailEndText) noexcept;
/** /**
@ -274,13 +272,12 @@ public:
* 2 for TRIBUNAL_TEMPLE). * 2 for TRIBUNAL_TEMPLE).
* \return void * \return void
*/ */
static void Resurrect(unsigned short pid, unsigned int type) noexcept; extern "C" void Resurrect(unsigned short pid, unsigned int type) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static const char *GetDeathReason(unsigned short pid) noexcept; extern "C" const char *GetDeathReason(unsigned short pid) noexcept;
static unsigned int GetPlayerKillerRefNumIndex(unsigned short pid) noexcept; extern "C" unsigned int GetPlayerKillerRefNumIndex(unsigned short pid) noexcept;
}
};
#endif //OPENMW_MECHANICSAPI_HPP #endif //OPENMW_MECHANICSAPI_HPP

@ -11,12 +11,12 @@ using namespace std;
static std::string tempFilename; static std::string tempFilename;
bool MiscellaneousFunctions::DoesFileExist(const char *filePath) noexcept extern "C" bool MiscellaneousFunctions::DoesFileExist(const char *filePath) noexcept
{ {
return boost::filesystem::exists(filePath); return boost::filesystem::exists(filePath);
} }
const char *MiscellaneousFunctions::GetCaseInsensitiveFilename(const char *folderPath, const char *filename) noexcept extern "C" const char *MiscellaneousFunctions::GetCaseInsensitiveFilename(const char *folderPath, const char *filename) noexcept
{ {
if (!boost::filesystem::exists(folderPath)) return "invalid"; if (!boost::filesystem::exists(folderPath)) return "invalid";
@ -33,27 +33,27 @@ const char *MiscellaneousFunctions::GetCaseInsensitiveFilename(const char *folde
return "invalid"; return "invalid";
} }
unsigned int MiscellaneousFunctions::GetLastPlayerId() noexcept extern "C" unsigned int MiscellaneousFunctions::GetLastPlayerId() noexcept
{ {
return Players::getLastPlayerId(); return Players::getLastPlayerId();
} }
int MiscellaneousFunctions::GetCurrentMpNum() noexcept extern "C" int MiscellaneousFunctions::GetCurrentMpNum() noexcept
{ {
return mwmp::Networking::getPtr()->getCurrentMpNum(); return mwmp::Networking::getPtr()->getCurrentMpNum();
} }
void MiscellaneousFunctions::SetCurrentMpNum(int mpNum) noexcept extern "C" void MiscellaneousFunctions::SetCurrentMpNum(int mpNum) noexcept
{ {
mwmp::Networking::getPtr()->setCurrentMpNum(mpNum); mwmp::Networking::getPtr()->setCurrentMpNum(mpNum);
} }
void MiscellaneousFunctions::LogMessage(unsigned short level, const char *message) noexcept extern "C" void MiscellaneousFunctions::LogMessage(unsigned short level, const char *message) noexcept
{ {
LOG_MESSAGE_SIMPLE(level, "[Script]: %s", message); LOG_MESSAGE_SIMPLE(level, "[Script]: %s", message);
} }
void MiscellaneousFunctions::LogAppend(unsigned short level, const char *message) noexcept extern "C" void MiscellaneousFunctions::LogAppend(unsigned short level, const char *message) noexcept
{ {
LOG_APPEND(level, "[Script]: %s", message); LOG_APPEND(level, "[Script]: %s", message);
} }

@ -15,10 +15,8 @@
{"LogMessage", MiscellaneousFunctions::LogMessage},\ {"LogMessage", MiscellaneousFunctions::LogMessage},\
{"LogAppend", MiscellaneousFunctions::LogAppend} {"LogAppend", MiscellaneousFunctions::LogAppend}
class MiscellaneousFunctions namespace MiscellaneousFunctions
{ {
public:
/** /**
* \brief Check whether a certain file exists. * \brief Check whether a certain file exists.
* *
@ -28,7 +26,7 @@ public:
* *
* \return Whether the file exists or not. * \return Whether the file exists or not.
*/ */
static bool DoesFileExist(const char *filePath) noexcept; extern "C" bool DoesFileExist(const char *filePath) noexcept;
/** /**
* \brief Get the first filename in a folder that has a case insensitive match with the filename * \brief Get the first filename in a folder that has a case insensitive match with the filename
@ -38,7 +36,7 @@ public:
* *
* \return The filename that matches. * \return The filename that matches.
*/ */
static const char *GetCaseInsensitiveFilename(const char *folderPath, const char *filename) noexcept; extern "C" const char *GetCaseInsensitiveFilename(const char *folderPath, const char *filename) noexcept;
/** /**
* \brief Get the last player ID currently connected to the server. * \brief Get the last player ID currently connected to the server.
@ -48,7 +46,7 @@ public:
* *
* \return The player ID. * \return The player ID.
*/ */
static unsigned int GetLastPlayerId() noexcept; extern "C" unsigned int GetLastPlayerId() noexcept;
/** /**
* \brief Get the current (latest) mpNum generated by the server. * \brief Get the current (latest) mpNum generated by the server.
@ -62,7 +60,7 @@ public:
* *
* \return The mpNum. * \return The mpNum.
*/ */
static int GetCurrentMpNum() noexcept; extern "C" int GetCurrentMpNum() noexcept;
/** /**
* \brief Set the current (latest) mpNum generated by the server. * \brief Set the current (latest) mpNum generated by the server.
@ -74,7 +72,7 @@ public:
* \param mpNum The number that should be used as the new current mpNum. * \param mpNum The number that should be used as the new current mpNum.
* \return void * \return void
*/ */
static void SetCurrentMpNum(int mpNum) noexcept; extern "C" void SetCurrentMpNum(int mpNum) noexcept;
/** /**
* \brief Write a log message with its own timestamp. * \brief Write a log message with its own timestamp.
@ -86,7 +84,7 @@ public:
* \param message The message logged. * \param message The message logged.
* \return void * \return void
*/ */
static void LogMessage(unsigned short level, const char *message) noexcept; extern "C" void LogMessage(unsigned short level, const char *message) noexcept;
/** /**
* \brief Write a log message without its own timestamp. * \brief Write a log message without its own timestamp.
@ -98,7 +96,7 @@ public:
* \param message The message logged. * \param message The message logged.
* \return void * \return void
*/ */
static void LogAppend(unsigned short level, const char *message) noexcept; extern "C" void LogAppend(unsigned short level, const char *message) noexcept;
}; }
#endif //OPENMW_MISCELLANEOUSAPI_HPP #endif //OPENMW_MISCELLANEOUSAPI_HPP

@ -19,19 +19,19 @@ const BaseObject emptyObject = {};
ContainerItem tempContainerItem; ContainerItem tempContainerItem;
const ContainerItem emptyContainerItem = {}; const ContainerItem emptyContainerItem = {};
void ObjectFunctions::ReadReceivedObjectList() noexcept extern "C" void ObjectFunctions::ReadReceivedObjectList() noexcept
{ {
readObjectList = mwmp::Networking::getPtr()->getReceivedObjectList(); readObjectList = mwmp::Networking::getPtr()->getReceivedObjectList();
} }
void ObjectFunctions::ClearObjectList() noexcept extern "C" void ObjectFunctions::ClearObjectList() noexcept
{ {
writeObjectList.cell.blank(); writeObjectList.cell.blank();
writeObjectList.baseObjects.clear(); writeObjectList.baseObjects.clear();
writeObjectList.packetOrigin = mwmp::PACKET_ORIGIN::SERVER_SCRIPT; writeObjectList.packetOrigin = mwmp::PACKET_ORIGIN::SERVER_SCRIPT;
} }
void ObjectFunctions::SetObjectListPid(unsigned short pid) noexcept extern "C" void ObjectFunctions::SetObjectListPid(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -39,42 +39,42 @@ void ObjectFunctions::SetObjectListPid(unsigned short pid) noexcept
writeObjectList.guid = player->guid; writeObjectList.guid = player->guid;
} }
void ObjectFunctions::CopyReceivedObjectListToStore() noexcept extern "C" void ObjectFunctions::CopyReceivedObjectListToStore() noexcept
{ {
writeObjectList = *readObjectList; writeObjectList = *readObjectList;
} }
unsigned int ObjectFunctions::GetObjectListSize() noexcept extern "C" unsigned int ObjectFunctions::GetObjectListSize() noexcept
{ {
return readObjectList->baseObjectCount; return readObjectList->baseObjectCount;
} }
unsigned char ObjectFunctions::GetObjectListOrigin() noexcept extern "C" unsigned char ObjectFunctions::GetObjectListOrigin() noexcept
{ {
return readObjectList->packetOrigin; return readObjectList->packetOrigin;
} }
const char *ObjectFunctions::GetObjectListClientScript() noexcept extern "C" const char *ObjectFunctions::GetObjectListClientScript() noexcept
{ {
return readObjectList->originClientScript.c_str(); return readObjectList->originClientScript.c_str();
} }
unsigned char ObjectFunctions::GetObjectListAction() noexcept extern "C" unsigned char ObjectFunctions::GetObjectListAction() noexcept
{ {
return readObjectList->action; return readObjectList->action;
} }
unsigned char ObjectFunctions::GetObjectListContainerSubAction() noexcept extern "C" unsigned char ObjectFunctions::GetObjectListContainerSubAction() noexcept
{ {
return readObjectList->containerSubAction; return readObjectList->containerSubAction;
} }
bool ObjectFunctions::IsObjectPlayer(unsigned int index) noexcept extern "C" bool ObjectFunctions::IsObjectPlayer(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).isPlayer; return readObjectList->baseObjects.at(index).isPlayer;
} }
int ObjectFunctions::GetObjectPid(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectPid(unsigned int index) noexcept
{ {
Player *player = Players::getPlayer(readObjectList->baseObjects.at(index).guid); Player *player = Players::getPlayer(readObjectList->baseObjects.at(index).guid);
@ -84,72 +84,72 @@ int ObjectFunctions::GetObjectPid(unsigned int index) noexcept
return -1; return -1;
} }
const char *ObjectFunctions::GetObjectRefId(unsigned int index) noexcept extern "C" const char *ObjectFunctions::GetObjectRefId(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).refId.c_str(); return readObjectList->baseObjects.at(index).refId.c_str();
} }
unsigned int ObjectFunctions::GetObjectRefNum(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectRefNum(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).refNum; return readObjectList->baseObjects.at(index).refNum;
} }
unsigned int ObjectFunctions::GetObjectMpNum(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectMpNum(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).mpNum; return readObjectList->baseObjects.at(index).mpNum;
} }
int ObjectFunctions::GetObjectCount(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectCount(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).count; return readObjectList->baseObjects.at(index).count;
} }
int ObjectFunctions::GetObjectCharge(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectCharge(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).charge; return readObjectList->baseObjects.at(index).charge;
} }
double ObjectFunctions::GetObjectEnchantmentCharge(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectEnchantmentCharge(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).enchantmentCharge; return readObjectList->baseObjects.at(index).enchantmentCharge;
} }
const char *ObjectFunctions::GetObjectSoul(unsigned int index) noexcept extern "C" const char *ObjectFunctions::GetObjectSoul(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).soul.c_str(); return readObjectList->baseObjects.at(index).soul.c_str();
} }
int ObjectFunctions::GetObjectGoldValue(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectGoldValue(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).goldValue; return readObjectList->baseObjects.at(index).goldValue;
} }
double ObjectFunctions::GetObjectScale(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectScale(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).scale; return readObjectList->baseObjects.at(index).scale;
} }
bool ObjectFunctions::GetObjectState(unsigned int index) noexcept extern "C" bool ObjectFunctions::GetObjectState(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).objectState; return readObjectList->baseObjects.at(index).objectState;
} }
int ObjectFunctions::GetObjectDoorState(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectDoorState(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).doorState; return readObjectList->baseObjects.at(index).doorState;
} }
int ObjectFunctions::GetObjectLockLevel(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectLockLevel(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).lockLevel; return readObjectList->baseObjects.at(index).lockLevel;
} }
bool ObjectFunctions::DoesObjectHavePlayerActivating(unsigned int index) noexcept extern "C" bool ObjectFunctions::DoesObjectHavePlayerActivating(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).activatingActor.isPlayer; return readObjectList->baseObjects.at(index).activatingActor.isPlayer;
} }
int ObjectFunctions::GetObjectActivatingPid(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectActivatingPid(unsigned int index) noexcept
{ {
Player *player = Players::getPlayer(readObjectList->baseObjects.at(index).activatingActor.guid); Player *player = Players::getPlayer(readObjectList->baseObjects.at(index).activatingActor.guid);
@ -159,42 +159,42 @@ int ObjectFunctions::GetObjectActivatingPid(unsigned int index) noexcept
return -1; return -1;
} }
const char *ObjectFunctions::GetObjectActivatingRefId(unsigned int index) noexcept extern "C" const char *ObjectFunctions::GetObjectActivatingRefId(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).activatingActor.refId.c_str(); return readObjectList->baseObjects.at(index).activatingActor.refId.c_str();
} }
unsigned int ObjectFunctions::GetObjectActivatingRefNum(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectActivatingRefNum(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).activatingActor.refNum; return readObjectList->baseObjects.at(index).activatingActor.refNum;
} }
unsigned int ObjectFunctions::GetObjectActivatingMpNum(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectActivatingMpNum(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).activatingActor.mpNum; return readObjectList->baseObjects.at(index).activatingActor.mpNum;
} }
const char *ObjectFunctions::GetObjectActivatingName(unsigned int index) noexcept extern "C" const char *ObjectFunctions::GetObjectActivatingName(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).activatingActor.name.c_str(); return readObjectList->baseObjects.at(index).activatingActor.name.c_str();
} }
bool ObjectFunctions::GetObjectSummonState(unsigned int index) noexcept extern "C" bool ObjectFunctions::GetObjectSummonState(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).isSummon; return readObjectList->baseObjects.at(index).isSummon;
} }
double ObjectFunctions::GetObjectSummonDuration(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectSummonDuration(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).summonDuration; return readObjectList->baseObjects.at(index).summonDuration;
} }
bool ObjectFunctions::DoesObjectHavePlayerSummoner(unsigned int index) noexcept extern "C" bool ObjectFunctions::DoesObjectHavePlayerSummoner(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).master.isPlayer; return readObjectList->baseObjects.at(index).master.isPlayer;
} }
int ObjectFunctions::GetObjectSummonerPid(unsigned int index) noexcept extern "C" int ObjectFunctions::GetObjectSummonerPid(unsigned int index) noexcept
{ {
Player *player = Players::getPlayer(readObjectList->baseObjects.at(index).master.guid); Player *player = Players::getPlayer(readObjectList->baseObjects.at(index).master.guid);
@ -204,202 +204,202 @@ int ObjectFunctions::GetObjectSummonerPid(unsigned int index) noexcept
return -1; return -1;
} }
const char *ObjectFunctions::GetObjectSummonerRefId(unsigned int index) noexcept extern "C" const char *ObjectFunctions::GetObjectSummonerRefId(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).master.refId.c_str(); return readObjectList->baseObjects.at(index).master.refId.c_str();
} }
unsigned int ObjectFunctions::GetObjectSummonerRefNum(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectSummonerRefNum(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).master.refNum; return readObjectList->baseObjects.at(index).master.refNum;
} }
unsigned int ObjectFunctions::GetObjectSummonerMpNum(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectSummonerMpNum(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).master.mpNum; return readObjectList->baseObjects.at(index).master.mpNum;
} }
double ObjectFunctions::GetObjectPosX(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectPosX(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).position.pos[0]; return readObjectList->baseObjects.at(index).position.pos[0];
} }
double ObjectFunctions::GetObjectPosY(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectPosY(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).position.pos[1]; return readObjectList->baseObjects.at(index).position.pos[1];
} }
double ObjectFunctions::GetObjectPosZ(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectPosZ(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).position.pos[2]; return readObjectList->baseObjects.at(index).position.pos[2];
} }
double ObjectFunctions::GetObjectRotX(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectRotX(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).position.rot[0]; return readObjectList->baseObjects.at(index).position.rot[0];
} }
double ObjectFunctions::GetObjectRotY(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectRotY(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).position.rot[1]; return readObjectList->baseObjects.at(index).position.rot[1];
} }
double ObjectFunctions::GetObjectRotZ(unsigned int index) noexcept extern "C" double ObjectFunctions::GetObjectRotZ(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).position.rot[2]; return readObjectList->baseObjects.at(index).position.rot[2];
} }
const char *ObjectFunctions::GetVideoFilename(unsigned int index) noexcept extern "C" const char *ObjectFunctions::GetVideoFilename(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).videoFilename.c_str(); return readObjectList->baseObjects.at(index).videoFilename.c_str();
} }
unsigned int ObjectFunctions::GetContainerChangesSize(unsigned int objectIndex) noexcept extern "C" unsigned int ObjectFunctions::GetContainerChangesSize(unsigned int objectIndex) noexcept
{ {
return readObjectList->baseObjects.at(objectIndex).containerItemCount; return readObjectList->baseObjects.at(objectIndex).containerItemCount;
} }
const char *ObjectFunctions::GetContainerItemRefId(unsigned int objectIndex, unsigned int itemIndex) noexcept extern "C" const char *ObjectFunctions::GetContainerItemRefId(unsigned int objectIndex, unsigned int itemIndex) noexcept
{ {
return readObjectList->baseObjects.at(objectIndex) return readObjectList->baseObjects.at(objectIndex)
.containerItems.at(itemIndex).refId.c_str(); .containerItems.at(itemIndex).refId.c_str();
} }
int ObjectFunctions::GetContainerItemCount(unsigned int objectIndex, unsigned int itemIndex) noexcept extern "C" int ObjectFunctions::GetContainerItemCount(unsigned int objectIndex, unsigned int itemIndex) noexcept
{ {
return readObjectList->baseObjects.at(objectIndex) return readObjectList->baseObjects.at(objectIndex)
.containerItems.at(itemIndex).count; .containerItems.at(itemIndex).count;
} }
int ObjectFunctions::GetContainerItemCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept extern "C" int ObjectFunctions::GetContainerItemCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept
{ {
return readObjectList->baseObjects.at(objectIndex) return readObjectList->baseObjects.at(objectIndex)
.containerItems.at(itemIndex).charge; .containerItems.at(itemIndex).charge;
} }
double ObjectFunctions::GetContainerItemEnchantmentCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept extern "C" double ObjectFunctions::GetContainerItemEnchantmentCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept
{ {
return readObjectList->baseObjects.at(objectIndex) return readObjectList->baseObjects.at(objectIndex)
.containerItems.at(itemIndex).enchantmentCharge; .containerItems.at(itemIndex).enchantmentCharge;
} }
const char *ObjectFunctions::GetContainerItemSoul(unsigned int objectIndex, unsigned int itemIndex) noexcept extern "C" const char *ObjectFunctions::GetContainerItemSoul(unsigned int objectIndex, unsigned int itemIndex) noexcept
{ {
return readObjectList->baseObjects.at(objectIndex) return readObjectList->baseObjects.at(objectIndex)
.containerItems.at(itemIndex).soul.c_str(); .containerItems.at(itemIndex).soul.c_str();
} }
int ObjectFunctions::GetContainerItemActionCount(unsigned int objectIndex, unsigned int itemIndex) noexcept extern "C" int ObjectFunctions::GetContainerItemActionCount(unsigned int objectIndex, unsigned int itemIndex) noexcept
{ {
return readObjectList->baseObjects.at(objectIndex) return readObjectList->baseObjects.at(objectIndex)
.containerItems.at(itemIndex).actionCount; .containerItems.at(itemIndex).actionCount;
} }
bool ObjectFunctions::DoesObjectHaveContainer(unsigned int index) noexcept extern "C" bool ObjectFunctions::DoesObjectHaveContainer(unsigned int index) noexcept
{ {
return readObjectList->baseObjects.at(index).hasContainer; return readObjectList->baseObjects.at(index).hasContainer;
} }
void ObjectFunctions::SetObjectListCell(const char* cellDescription) noexcept extern "C" void ObjectFunctions::SetObjectListCell(const char* cellDescription) noexcept
{ {
writeObjectList.cell = Utils::getCellFromDescription(cellDescription); writeObjectList.cell = Utils::getCellFromDescription(cellDescription);
} }
void ObjectFunctions::SetObjectListAction(unsigned char action) noexcept extern "C" void ObjectFunctions::SetObjectListAction(unsigned char action) noexcept
{ {
writeObjectList.action = action; writeObjectList.action = action;
} }
void ObjectFunctions::SetObjectListConsoleCommand(const char* consoleCommand) noexcept extern "C" void ObjectFunctions::SetObjectListConsoleCommand(const char* consoleCommand) noexcept
{ {
writeObjectList.consoleCommand = consoleCommand; writeObjectList.consoleCommand = consoleCommand;
} }
void ObjectFunctions::SetObjectRefId(const char* refId) noexcept extern "C" void ObjectFunctions::SetObjectRefId(const char* refId) noexcept
{ {
tempObject.refId = refId; tempObject.refId = refId;
} }
void ObjectFunctions::SetObjectRefNum(int refNum) noexcept extern "C" void ObjectFunctions::SetObjectRefNum(int refNum) noexcept
{ {
tempObject.refNum = refNum; tempObject.refNum = refNum;
} }
void ObjectFunctions::SetObjectMpNum(int mpNum) noexcept extern "C" void ObjectFunctions::SetObjectMpNum(int mpNum) noexcept
{ {
tempObject.mpNum = mpNum; tempObject.mpNum = mpNum;
} }
void ObjectFunctions::SetObjectCount(int count) noexcept extern "C" void ObjectFunctions::SetObjectCount(int count) noexcept
{ {
tempObject.count = count; tempObject.count = count;
} }
void ObjectFunctions::SetObjectCharge(int charge) noexcept extern "C" void ObjectFunctions::SetObjectCharge(int charge) noexcept
{ {
tempObject.charge = charge; tempObject.charge = charge;
} }
void ObjectFunctions::SetObjectEnchantmentCharge(double enchantmentCharge) noexcept extern "C" void ObjectFunctions::SetObjectEnchantmentCharge(double enchantmentCharge) noexcept
{ {
tempObject.enchantmentCharge = enchantmentCharge; tempObject.enchantmentCharge = enchantmentCharge;
} }
void ObjectFunctions::SetObjectSoul(const char* soul) noexcept extern "C" void ObjectFunctions::SetObjectSoul(const char* soul) noexcept
{ {
tempObject.soul = soul; tempObject.soul = soul;
} }
void ObjectFunctions::SetObjectGoldValue(int goldValue) noexcept extern "C" void ObjectFunctions::SetObjectGoldValue(int goldValue) noexcept
{ {
tempObject.goldValue = goldValue; tempObject.goldValue = goldValue;
} }
void ObjectFunctions::SetObjectScale(double scale) noexcept extern "C" void ObjectFunctions::SetObjectScale(double scale) noexcept
{ {
tempObject.scale = scale; tempObject.scale = scale;
} }
void ObjectFunctions::SetObjectState(bool objectState) noexcept extern "C" void ObjectFunctions::SetObjectState(bool objectState) noexcept
{ {
tempObject.objectState = objectState; tempObject.objectState = objectState;
} }
void ObjectFunctions::SetObjectLockLevel(int lockLevel) noexcept extern "C" void ObjectFunctions::SetObjectLockLevel(int lockLevel) noexcept
{ {
tempObject.lockLevel = lockLevel; tempObject.lockLevel = lockLevel;
} }
void ObjectFunctions::SetObjectSummonDuration(float summonDuration) noexcept extern "C" void ObjectFunctions::SetObjectSummonDuration(float summonDuration) noexcept
{ {
tempObject.summonDuration = summonDuration; tempObject.summonDuration = summonDuration;
} }
void ObjectFunctions::SetObjectDisarmState(bool disarmState) noexcept extern "C" void ObjectFunctions::SetObjectDisarmState(bool disarmState) noexcept
{ {
tempObject.isDisarmed = disarmState; tempObject.isDisarmed = disarmState;
} }
void ObjectFunctions::SetObjectSummonState(bool summonState) noexcept extern "C" void ObjectFunctions::SetObjectSummonState(bool summonState) noexcept
{ {
tempObject.isSummon = summonState; tempObject.isSummon = summonState;
} }
void ObjectFunctions::SetObjectPosition(double x, double y, double z) noexcept extern "C" void ObjectFunctions::SetObjectPosition(double x, double y, double z) noexcept
{ {
tempObject.position.pos[0] = x; tempObject.position.pos[0] = x;
tempObject.position.pos[1] = y; tempObject.position.pos[1] = y;
tempObject.position.pos[2] = z; tempObject.position.pos[2] = z;
} }
void ObjectFunctions::SetObjectRotation(double x, double y, double z) noexcept extern "C" void ObjectFunctions::SetObjectRotation(double x, double y, double z) noexcept
{ {
tempObject.position.rot[0] = x; tempObject.position.rot[0] = x;
tempObject.position.rot[1] = y; tempObject.position.rot[1] = y;
tempObject.position.rot[2] = z; tempObject.position.rot[2] = z;
} }
void ObjectFunctions::SetObjectActivatingPid(unsigned short pid) noexcept extern "C" void ObjectFunctions::SetObjectActivatingPid(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -408,35 +408,35 @@ void ObjectFunctions::SetObjectActivatingPid(unsigned short pid) noexcept
tempObject.activatingActor.isPlayer = true; tempObject.activatingActor.isPlayer = true;
} }
void ObjectFunctions::SetObjectDoorState(int doorState) noexcept extern "C" void ObjectFunctions::SetObjectDoorState(int doorState) noexcept
{ {
tempObject.doorState = doorState; tempObject.doorState = doorState;
} }
void ObjectFunctions::SetObjectDoorTeleportState(bool teleportState) noexcept extern "C" void ObjectFunctions::SetObjectDoorTeleportState(bool teleportState) noexcept
{ {
tempObject.teleportState = teleportState; tempObject.teleportState = teleportState;
} }
void ObjectFunctions::SetObjectDoorDestinationCell(const char* cellDescription) noexcept extern "C" void ObjectFunctions::SetObjectDoorDestinationCell(const char* cellDescription) noexcept
{ {
tempObject.destinationCell = Utils::getCellFromDescription(cellDescription); tempObject.destinationCell = Utils::getCellFromDescription(cellDescription);
} }
void ObjectFunctions::SetObjectDoorDestinationPosition(double x, double y, double z) noexcept extern "C" void ObjectFunctions::SetObjectDoorDestinationPosition(double x, double y, double z) noexcept
{ {
tempObject.destinationPosition.pos[0] = x; tempObject.destinationPosition.pos[0] = x;
tempObject.destinationPosition.pos[1] = y; tempObject.destinationPosition.pos[1] = y;
tempObject.destinationPosition.pos[2] = z; tempObject.destinationPosition.pos[2] = z;
} }
void ObjectFunctions::SetObjectDoorDestinationRotation(double x, double z) noexcept extern "C" void ObjectFunctions::SetObjectDoorDestinationRotation(double x, double z) noexcept
{ {
tempObject.destinationPosition.rot[0] = x; tempObject.destinationPosition.rot[0] = x;
tempObject.destinationPosition.rot[2] = z; tempObject.destinationPosition.rot[2] = z;
} }
void ObjectFunctions::SetPlayerAsObject(unsigned short pid) noexcept extern "C" void ObjectFunctions::SetPlayerAsObject(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -445,37 +445,37 @@ void ObjectFunctions::SetPlayerAsObject(unsigned short pid) noexcept
tempObject.isPlayer = true; tempObject.isPlayer = true;
} }
void ObjectFunctions::SetContainerItemRefId(const char* refId) noexcept extern "C" void ObjectFunctions::SetContainerItemRefId(const char* refId) noexcept
{ {
tempContainerItem.refId = refId; tempContainerItem.refId = refId;
} }
void ObjectFunctions::SetContainerItemCount(int count) noexcept extern "C" void ObjectFunctions::SetContainerItemCount(int count) noexcept
{ {
tempContainerItem.count = count; tempContainerItem.count = count;
} }
void ObjectFunctions::SetContainerItemCharge(int charge) noexcept extern "C" void ObjectFunctions::SetContainerItemCharge(int charge) noexcept
{ {
tempContainerItem.charge = charge; tempContainerItem.charge = charge;
} }
void ObjectFunctions::SetContainerItemEnchantmentCharge(double enchantmentCharge) noexcept extern "C" void ObjectFunctions::SetContainerItemEnchantmentCharge(double enchantmentCharge) noexcept
{ {
tempContainerItem.enchantmentCharge = enchantmentCharge; tempContainerItem.enchantmentCharge = enchantmentCharge;
} }
void ObjectFunctions::SetContainerItemSoul(const char* soul) noexcept extern "C" void ObjectFunctions::SetContainerItemSoul(const char* soul) noexcept
{ {
tempContainerItem.soul = soul; tempContainerItem.soul = soul;
} }
void ObjectFunctions::SetContainerItemActionCountByIndex(unsigned int objectIndex, unsigned int itemIndex, int actionCount) noexcept extern "C" void ObjectFunctions::SetContainerItemActionCountByIndex(unsigned int objectIndex, unsigned int itemIndex, int actionCount) noexcept
{ {
writeObjectList.baseObjects.at(objectIndex).containerItems.at(itemIndex).actionCount = actionCount; writeObjectList.baseObjects.at(objectIndex).containerItems.at(itemIndex).actionCount = actionCount;
} }
void ObjectFunctions::AddObject() noexcept extern "C" void ObjectFunctions::AddObject() noexcept
{ {
tempObject.droppedByPlayer = false; tempObject.droppedByPlayer = false;
writeObjectList.baseObjects.push_back(tempObject); writeObjectList.baseObjects.push_back(tempObject);
@ -483,14 +483,14 @@ void ObjectFunctions::AddObject() noexcept
tempObject = emptyObject; tempObject = emptyObject;
} }
void ObjectFunctions::AddContainerItem() noexcept extern "C" void ObjectFunctions::AddContainerItem() noexcept
{ {
tempObject.containerItems.push_back(tempContainerItem); tempObject.containerItems.push_back(tempContainerItem);
tempContainerItem = emptyContainerItem; tempContainerItem = emptyContainerItem;
} }
void ObjectFunctions::SendObjectActivate(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectActivate(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_ACTIVATE); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_ACTIVATE);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -501,7 +501,7 @@ void ObjectFunctions::SendObjectActivate(bool sendToOtherPlayers, bool skipAttac
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendObjectPlace(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectPlace(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_PLACE); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_PLACE);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -512,7 +512,7 @@ void ObjectFunctions::SendObjectPlace(bool sendToOtherPlayers, bool skipAttached
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendObjectSpawn(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectSpawn(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_SPAWN); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_SPAWN);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -523,7 +523,7 @@ void ObjectFunctions::SendObjectSpawn(bool sendToOtherPlayers, bool skipAttached
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendObjectDelete(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectDelete(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_DELETE); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_DELETE);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -534,7 +534,7 @@ void ObjectFunctions::SendObjectDelete(bool sendToOtherPlayers, bool skipAttache
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendObjectLock(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectLock(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_LOCK); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_LOCK);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -545,7 +545,7 @@ void ObjectFunctions::SendObjectLock(bool sendToOtherPlayers, bool skipAttachedP
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendObjectTrap(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectTrap(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_TRAP); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_TRAP);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -556,7 +556,7 @@ void ObjectFunctions::SendObjectTrap(bool sendToOtherPlayers, bool skipAttachedP
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendObjectScale(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectScale(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_SCALE); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_SCALE);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -567,7 +567,7 @@ void ObjectFunctions::SendObjectScale(bool sendToOtherPlayers, bool skipAttached
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendObjectState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendObjectState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_STATE); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_OBJECT_STATE);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -578,7 +578,7 @@ void ObjectFunctions::SendObjectState(bool sendToOtherPlayers, bool skipAttached
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendDoorState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendDoorState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_DOOR_STATE); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_DOOR_STATE);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -589,7 +589,7 @@ void ObjectFunctions::SendDoorState(bool sendToOtherPlayers, bool skipAttachedPl
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendDoorDestination(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendDoorDestination(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_DOOR_DESTINATION); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_DOOR_DESTINATION);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -600,7 +600,7 @@ void ObjectFunctions::SendDoorDestination(bool sendToOtherPlayers, bool skipAtta
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendContainer(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendContainer(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_CONTAINER); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_CONTAINER);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -611,7 +611,7 @@ void ObjectFunctions::SendContainer(bool sendToOtherPlayers, bool skipAttachedPl
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendVideoPlay(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendVideoPlay(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_VIDEO_PLAY); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_VIDEO_PLAY);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -622,7 +622,7 @@ void ObjectFunctions::SendVideoPlay(bool sendToOtherPlayers, bool skipAttachedPl
packet->Send(true); packet->Send(true);
} }
void ObjectFunctions::SendConsoleCommand(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void ObjectFunctions::SendConsoleCommand(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_CONSOLE_COMMAND); mwmp::ObjectPacket *packet = mwmp::Networking::get().getObjectPacketController()->GetPacket(ID_CONSOLE_COMMAND);
packet->setObjectList(&writeObjectList); packet->setObjectList(&writeObjectList);
@ -633,7 +633,7 @@ void ObjectFunctions::SendConsoleCommand(bool sendToOtherPlayers, bool skipAttac
packet->Send(true); packet->Send(true);
} }
extern "C"
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
void ObjectFunctions::ReadLastObjectList() noexcept void ObjectFunctions::ReadLastObjectList() noexcept
@ -641,73 +641,73 @@ void ObjectFunctions::ReadLastObjectList() noexcept
ReadReceivedObjectList(); ReadReceivedObjectList();
} }
void ObjectFunctions::ReadLastEvent() noexcept extern "C" void ObjectFunctions::ReadLastEvent() noexcept
{ {
ReadReceivedObjectList(); ReadReceivedObjectList();
} }
void ObjectFunctions::InitializeObjectList(unsigned short pid) noexcept extern "C" void ObjectFunctions::InitializeObjectList(unsigned short pid) noexcept
{ {
ClearObjectList(); ClearObjectList();
SetObjectListPid(pid); SetObjectListPid(pid);
} }
void ObjectFunctions::InitializeEvent(unsigned short pid) noexcept extern "C" void ObjectFunctions::InitializeEvent(unsigned short pid) noexcept
{ {
InitializeObjectList(pid); InitializeObjectList(pid);
} }
void ObjectFunctions::CopyLastObjectListToStore() noexcept extern "C" void ObjectFunctions::CopyLastObjectListToStore() noexcept
{ {
CopyReceivedObjectListToStore(); CopyReceivedObjectListToStore();
} }
unsigned int ObjectFunctions::GetObjectChangesSize() noexcept extern "C" unsigned int ObjectFunctions::GetObjectChangesSize() noexcept
{ {
return GetObjectListSize(); return GetObjectListSize();
} }
unsigned char ObjectFunctions::GetEventAction() noexcept extern "C" unsigned char ObjectFunctions::GetEventAction() noexcept
{ {
return GetObjectListAction(); return GetObjectListAction();
} }
unsigned char ObjectFunctions::GetEventContainerSubAction() noexcept extern "C" unsigned char ObjectFunctions::GetEventContainerSubAction() noexcept
{ {
return GetObjectListContainerSubAction(); return GetObjectListContainerSubAction();
} }
unsigned int ObjectFunctions::GetObjectRefNumIndex(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectRefNumIndex(unsigned int index) noexcept
{ {
return GetObjectRefNum(index); return GetObjectRefNum(index);
} }
unsigned int ObjectFunctions::GetObjectSummonerRefNumIndex(unsigned int index) noexcept extern "C" unsigned int ObjectFunctions::GetObjectSummonerRefNumIndex(unsigned int index) noexcept
{ {
return GetObjectSummonerRefNum(index); return GetObjectSummonerRefNum(index);
} }
void ObjectFunctions::SetEventCell(const char* cellDescription) noexcept extern "C" void ObjectFunctions::SetEventCell(const char* cellDescription) noexcept
{ {
SetObjectListCell(cellDescription); SetObjectListCell(cellDescription);
} }
void ObjectFunctions::SetEventAction(unsigned char action) noexcept extern "C" void ObjectFunctions::SetEventAction(unsigned char action) noexcept
{ {
SetObjectListAction(action); SetObjectListAction(action);
} }
void ObjectFunctions::SetEventConsoleCommand(const char* consoleCommand) noexcept extern "C" void ObjectFunctions::SetEventConsoleCommand(const char* consoleCommand) noexcept
{ {
SetObjectListConsoleCommand(consoleCommand); SetObjectListConsoleCommand(consoleCommand);
} }
void ObjectFunctions::SetObjectRefNumIndex(int refNum) noexcept extern "C" void ObjectFunctions::SetObjectRefNumIndex(int refNum) noexcept
{ {
SetObjectRefNum(refNum); SetObjectRefNum(refNum);
} }
void ObjectFunctions::AddWorldObject() noexcept extern "C" void ObjectFunctions::AddWorldObject() noexcept
{ {
AddObject(); AddObject();
} }

@ -136,23 +136,21 @@
{"SetObjectRefNumIndex", ObjectFunctions::SetObjectRefNumIndex},\ {"SetObjectRefNumIndex", ObjectFunctions::SetObjectRefNumIndex},\
{"AddWorldObject", ObjectFunctions::AddWorldObject} {"AddWorldObject", ObjectFunctions::AddWorldObject}
class ObjectFunctions namespace ObjectFunctions
{ {
public:
/** /**
* \brief Use the last object list received by the server as the one being read. * \brief Use the last object list received by the server as the one being read.
* *
* \return void * \return void
*/ */
static void ReadReceivedObjectList() noexcept; extern "C" void ReadReceivedObjectList() noexcept;
/** /**
* \brief Clear the data from the object list stored on the server. * \brief Clear the data from the object list stored on the server.
* *
* \return void * \return void
*/ */
static void ClearObjectList() noexcept; extern "C" void ClearObjectList() noexcept;
/** /**
* \brief Set the pid attached to the ObjectList. * \brief Set the pid attached to the ObjectList.
@ -160,7 +158,7 @@ public:
* \param pid The player ID to whom the object list should be attached. * \param pid The player ID to whom the object list should be attached.
* \return void * \return void
*/ */
static void SetObjectListPid(unsigned short pid) noexcept; extern "C" void SetObjectListPid(unsigned short pid) noexcept;
/** /**
* \brief Take the contents of the read-only object list last received by the * \brief Take the contents of the read-only object list last received by the
@ -169,14 +167,14 @@ public:
* *
* \return void * \return void
*/ */
static void CopyReceivedObjectListToStore() noexcept; extern "C" void CopyReceivedObjectListToStore() noexcept;
/** /**
* \brief Get the number of indexes in the read object list. * \brief Get the number of indexes in the read object list.
* *
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetObjectListSize() noexcept; extern "C" unsigned int GetObjectListSize() noexcept;
/** /**
* \brief Get the origin of the read object list. * \brief Get the origin of the read object list.
@ -185,7 +183,7 @@ public:
* CLIENT_DIALOGUE, 3 for CLIENT_SCRIPT_LOCAL, 4 for CLIENT_SCRIPT_GLOBAL, * CLIENT_DIALOGUE, 3 for CLIENT_SCRIPT_LOCAL, 4 for CLIENT_SCRIPT_GLOBAL,
* 5 for SERVER_SCRIPT). * 5 for SERVER_SCRIPT).
*/ */
static unsigned char GetObjectListOrigin() noexcept; extern "C" unsigned char GetObjectListOrigin() noexcept;
/** /**
* \brief Get the client script that the read object list originated from. * \brief Get the client script that the read object list originated from.
@ -194,21 +192,21 @@ public:
* *
* \return The ID of the client script. * \return The ID of the client script.
*/ */
static const char *GetObjectListClientScript() noexcept; extern "C" const char *GetObjectListClientScript() noexcept;
/** /**
* \brief Get the action type used in the read object list. * \brief Get the action type used in the read object list.
* *
* \return The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST). * \return The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST).
*/ */
static unsigned char GetObjectListAction() noexcept; extern "C" unsigned char GetObjectListAction() noexcept;
/** /**
* \brief Get the container subaction type used in the read object list. * \brief Get the container subaction type used in the read object list.
* *
* \return The action type (0 for NONE, 1 for DRAG, 2 for DROP, 3 for TAKE_ALL). * \return The action type (0 for NONE, 1 for DRAG, 2 for DROP, 3 for TAKE_ALL).
*/ */
static unsigned char GetObjectListContainerSubAction() noexcept; extern "C" unsigned char GetObjectListContainerSubAction() noexcept;
/** /**
* \brief Check whether the object at a certain index in the read object list is a * \brief Check whether the object at a certain index in the read object list is a
@ -221,7 +219,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return Whether the object is a player. * \return Whether the object is a player.
*/ */
static bool IsObjectPlayer(unsigned int index) noexcept; extern "C" bool IsObjectPlayer(unsigned int index) noexcept;
/** /**
* \brief Get the player ID of the object at a certain index in the read object list, * \brief Get the player ID of the object at a certain index in the read object list,
@ -233,7 +231,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The player ID of the object. * \return The player ID of the object.
*/ */
static int GetObjectPid(unsigned int index) noexcept; extern "C" int GetObjectPid(unsigned int index) noexcept;
/** /**
* \brief Get the refId of the object at a certain index in the read object list. * \brief Get the refId of the object at a certain index in the read object list.
@ -241,7 +239,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The refId. * \return The refId.
*/ */
static const char *GetObjectRefId(unsigned int index) noexcept; extern "C" const char *GetObjectRefId(unsigned int index) noexcept;
/** /**
* \brief Get the refNum of the object at a certain index in the read object list. * \brief Get the refNum of the object at a certain index in the read object list.
@ -249,7 +247,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The refNum. * \return The refNum.
*/ */
static unsigned int GetObjectRefNum(unsigned int index) noexcept; extern "C" unsigned int GetObjectRefNum(unsigned int index) noexcept;
/** /**
* \brief Get the mpNum of the object at a certain index in the read object list. * \brief Get the mpNum of the object at a certain index in the read object list.
@ -257,7 +255,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The mpNum. * \return The mpNum.
*/ */
static unsigned int GetObjectMpNum(unsigned int index) noexcept; extern "C" unsigned int GetObjectMpNum(unsigned int index) noexcept;
/** /**
* \brief Get the count of the object at a certain index in the read object list. * \brief Get the count of the object at a certain index in the read object list.
@ -265,7 +263,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The object count. * \return The object count.
*/ */
static int GetObjectCount(unsigned int index) noexcept; extern "C" int GetObjectCount(unsigned int index) noexcept;
/** /**
* \brief Get the charge of the object at a certain index in the read object list. * \brief Get the charge of the object at a certain index in the read object list.
@ -273,7 +271,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The charge. * \return The charge.
*/ */
static int GetObjectCharge(unsigned int index) noexcept; extern "C" int GetObjectCharge(unsigned int index) noexcept;
/** /**
* \brief Get the enchantment charge of the object at a certain index in the read object list. * \brief Get the enchantment charge of the object at a certain index in the read object list.
@ -281,7 +279,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The enchantment charge. * \return The enchantment charge.
*/ */
static double GetObjectEnchantmentCharge(unsigned int index) noexcept; extern "C" double GetObjectEnchantmentCharge(unsigned int index) noexcept;
/** /**
* \brief Get the soul of the object at a certain index in the read object list. * \brief Get the soul of the object at a certain index in the read object list.
@ -289,7 +287,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The soul. * \return The soul.
*/ */
static const char *GetObjectSoul(unsigned int index) noexcept; extern "C" const char *GetObjectSoul(unsigned int index) noexcept;
/** /**
* \brief Get the gold value of the object at a certain index in the read object list. * \brief Get the gold value of the object at a certain index in the read object list.
@ -299,7 +297,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The gold value. * \return The gold value.
*/ */
static int GetObjectGoldValue(unsigned int index) noexcept; extern "C" int GetObjectGoldValue(unsigned int index) noexcept;
/** /**
* \brief Get the object scale of the object at a certain index in the read object list. * \brief Get the object scale of the object at a certain index in the read object list.
@ -307,7 +305,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The object scale. * \return The object scale.
*/ */
static double GetObjectScale(unsigned int index) noexcept; extern "C" double GetObjectScale(unsigned int index) noexcept;
/** /**
* \brief Get the object state of the object at a certain index in the read object list. * \brief Get the object state of the object at a certain index in the read object list.
@ -315,7 +313,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The object state. * \return The object state.
*/ */
static bool GetObjectState(unsigned int index) noexcept; extern "C" bool GetObjectState(unsigned int index) noexcept;
/** /**
* \brief Get the door state of the object at a certain index in the read object list. * \brief Get the door state of the object at a certain index in the read object list.
@ -323,7 +321,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The door state. * \return The door state.
*/ */
static int GetObjectDoorState(unsigned int index) noexcept; extern "C" int GetObjectDoorState(unsigned int index) noexcept;
/** /**
* \brief Get the lock level of the object at a certain index in the read object list. * \brief Get the lock level of the object at a certain index in the read object list.
@ -331,7 +329,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The lock level. * \return The lock level.
*/ */
static int GetObjectLockLevel(unsigned int index) noexcept; extern "C" int GetObjectLockLevel(unsigned int index) noexcept;
/** /**
* \brief Check whether the object at a certain index in the read object list has been * \brief Check whether the object at a certain index in the read object list has been
@ -340,7 +338,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return Whether the object has been activated by a player. * \return Whether the object has been activated by a player.
*/ */
static bool DoesObjectHavePlayerActivating(unsigned int index) noexcept; extern "C" bool DoesObjectHavePlayerActivating(unsigned int index) noexcept;
/** /**
* \brief Get the player ID of the player activating the object at a certain index in the * \brief Get the player ID of the player activating the object at a certain index in the
@ -349,7 +347,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The player ID of the activating player. * \return The player ID of the activating player.
*/ */
static int GetObjectActivatingPid(unsigned int index) noexcept; extern "C" int GetObjectActivatingPid(unsigned int index) noexcept;
/** /**
* \brief Get the refId of the actor activating the object at a certain index in the read * \brief Get the refId of the actor activating the object at a certain index in the read
@ -358,7 +356,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The refId of the activating actor. * \return The refId of the activating actor.
*/ */
static const char *GetObjectActivatingRefId(unsigned int index) noexcept; extern "C" const char *GetObjectActivatingRefId(unsigned int index) noexcept;
/** /**
* \brief Get the refNum of the actor activating the object at a certain index in the read * \brief Get the refNum of the actor activating the object at a certain index in the read
@ -367,7 +365,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The refNum of the activating actor. * \return The refNum of the activating actor.
*/ */
static unsigned int GetObjectActivatingRefNum(unsigned int index) noexcept; extern "C" unsigned int GetObjectActivatingRefNum(unsigned int index) noexcept;
/** /**
* \brief Get the mpNum of the actor activating the object at a certain index in the read * \brief Get the mpNum of the actor activating the object at a certain index in the read
@ -376,7 +374,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The mpNum of the activating actor. * \return The mpNum of the activating actor.
*/ */
static unsigned int GetObjectActivatingMpNum(unsigned int index) noexcept; extern "C" unsigned int GetObjectActivatingMpNum(unsigned int index) noexcept;
/** /**
* \brief Get the name of the actor activating the object at a certain index in the read * \brief Get the name of the actor activating the object at a certain index in the read
@ -385,7 +383,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The name of the activating actor. * \return The name of the activating actor.
*/ */
static const char *GetObjectActivatingName(unsigned int index) noexcept; extern "C" const char *GetObjectActivatingName(unsigned int index) noexcept;
/** /**
* \brief Check whether the object at a certain index in the read object list is a * \brief Check whether the object at a certain index in the read object list is a
@ -395,7 +393,7 @@ public:
* *
* \return The summon state. * \return The summon state.
*/ */
static bool GetObjectSummonState(unsigned int index) noexcept; extern "C" bool GetObjectSummonState(unsigned int index) noexcept;
/** /**
* \brief Get the summon duration of the object at a certain index in the read object list. * \brief Get the summon duration of the object at a certain index in the read object list.
@ -405,7 +403,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The summon duration. * \return The summon duration.
*/ */
static double GetObjectSummonDuration(unsigned int index) noexcept; extern "C" double GetObjectSummonDuration(unsigned int index) noexcept;
/** /**
* \brief Check whether the object at a certain index in the read object list has a player * \brief Check whether the object at a certain index in the read object list has a player
@ -416,7 +414,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return Whether a player is the summoner of the object. * \return Whether a player is the summoner of the object.
*/ */
static bool DoesObjectHavePlayerSummoner(unsigned int index) noexcept; extern "C" bool DoesObjectHavePlayerSummoner(unsigned int index) noexcept;
/** /**
* \brief Get the player ID of the summoner of the object at a certain index in the read object * \brief Get the player ID of the summoner of the object at a certain index in the read object
@ -425,7 +423,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The player ID of the summoner. * \return The player ID of the summoner.
*/ */
static int GetObjectSummonerPid(unsigned int index) noexcept; extern "C" int GetObjectSummonerPid(unsigned int index) noexcept;
/** /**
* \brief Get the refId of the actor summoner of the object at a certain index in the read object * \brief Get the refId of the actor summoner of the object at a certain index in the read object
@ -434,7 +432,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The refId of the summoner. * \return The refId of the summoner.
*/ */
static const char *GetObjectSummonerRefId(unsigned int index) noexcept; extern "C" const char *GetObjectSummonerRefId(unsigned int index) noexcept;
/** /**
* \brief Get the refNum of the actor summoner of the object at a certain index in the read object * \brief Get the refNum of the actor summoner of the object at a certain index in the read object
@ -443,7 +441,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The refNum of the summoner. * \return The refNum of the summoner.
*/ */
static unsigned int GetObjectSummonerRefNum(unsigned int index) noexcept; extern "C" unsigned int GetObjectSummonerRefNum(unsigned int index) noexcept;
/** /**
* \brief Get the mpNum of the actor summoner of the object at a certain index in the read object list. * \brief Get the mpNum of the actor summoner of the object at a certain index in the read object list.
@ -451,7 +449,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The mpNum of the summoner. * \return The mpNum of the summoner.
*/ */
static unsigned int GetObjectSummonerMpNum(unsigned int index) noexcept; extern "C" unsigned int GetObjectSummonerMpNum(unsigned int index) noexcept;
/** /**
* \brief Get the X position of the object at a certain index in the read object list. * \brief Get the X position of the object at a certain index in the read object list.
@ -459,7 +457,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The X position. * \return The X position.
*/ */
static double GetObjectPosX(unsigned int index) noexcept; extern "C" double GetObjectPosX(unsigned int index) noexcept;
/** /**
* \brief Get the Y position of the object at a certain index in the read object list. * \brief Get the Y position of the object at a certain index in the read object list.
@ -467,7 +465,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The Y position. * \return The Y position.
*/ */
static double GetObjectPosY(unsigned int index) noexcept; extern "C" double GetObjectPosY(unsigned int index) noexcept;
/** /**
* \brief Get the Z position at a certain index in the read object list. * \brief Get the Z position at a certain index in the read object list.
@ -475,7 +473,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The Z position. * \return The Z position.
*/ */
static double GetObjectPosZ(unsigned int index) noexcept; extern "C" double GetObjectPosZ(unsigned int index) noexcept;
/** /**
* \brief Get the X rotation of the object at a certain index in the read object list. * \brief Get the X rotation of the object at a certain index in the read object list.
@ -483,7 +481,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The X rotation. * \return The X rotation.
*/ */
static double GetObjectRotX(unsigned int index) noexcept; extern "C" double GetObjectRotX(unsigned int index) noexcept;
/** /**
* \brief Get the Y rotation of the object at a certain index in the read object list. * \brief Get the Y rotation of the object at a certain index in the read object list.
@ -491,7 +489,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The Y rotation. * \return The Y rotation.
*/ */
static double GetObjectRotY(unsigned int index) noexcept; extern "C" double GetObjectRotY(unsigned int index) noexcept;
/** /**
* \brief Get the Z rotation of the object at a certain index in the read object list. * \brief Get the Z rotation of the object at a certain index in the read object list.
@ -499,14 +497,14 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The Z rotation. * \return The Z rotation.
*/ */
static double GetObjectRotZ(unsigned int index) noexcept; extern "C" double GetObjectRotZ(unsigned int index) noexcept;
/** /**
* \brief Get the videoFilename of the object at a certain index in the read object list. * \brief Get the videoFilename of the object at a certain index in the read object list.
* *
* \return The videoFilename. * \return The videoFilename.
*/ */
static const char *GetVideoFilename(unsigned int index) noexcept; extern "C" const char *GetVideoFilename(unsigned int index) noexcept;
/** /**
* \brief Get the number of container item indexes of the object at a certain index in the * \brief Get the number of container item indexes of the object at a certain index in the
@ -515,7 +513,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return The number of container item indexes. * \return The number of container item indexes.
*/ */
static unsigned int GetContainerChangesSize(unsigned int objectIndex) noexcept; extern "C" unsigned int GetContainerChangesSize(unsigned int objectIndex) noexcept;
/** /**
* \brief Get the refId of the container item at a certain itemIndex in the container changes * \brief Get the refId of the container item at a certain itemIndex in the container changes
@ -525,7 +523,7 @@ public:
* \param itemIndex The index of the container item. * \param itemIndex The index of the container item.
* \return The refId. * \return The refId.
*/ */
static const char *GetContainerItemRefId(unsigned int objectIndex, unsigned int itemIndex) noexcept; extern "C" const char *GetContainerItemRefId(unsigned int objectIndex, unsigned int itemIndex) noexcept;
/** /**
* \brief Get the item count of the container item at a certain itemIndex in the container * \brief Get the item count of the container item at a certain itemIndex in the container
@ -535,7 +533,7 @@ public:
* \param itemIndex The index of the container item. * \param itemIndex The index of the container item.
* \return The item count. * \return The item count.
*/ */
static int GetContainerItemCount(unsigned int objectIndex, unsigned int itemIndex) noexcept; extern "C" int GetContainerItemCount(unsigned int objectIndex, unsigned int itemIndex) noexcept;
/** /**
* \brief Get the charge of the container item at a certain itemIndex in the container changes * \brief Get the charge of the container item at a certain itemIndex in the container changes
@ -545,7 +543,7 @@ public:
* \param itemIndex The index of the container item. * \param itemIndex The index of the container item.
* \return The charge. * \return The charge.
*/ */
static int GetContainerItemCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept; extern "C" int GetContainerItemCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept;
/** /**
* \brief Get the enchantment charge of the container item at a certain itemIndex in the container changes * \brief Get the enchantment charge of the container item at a certain itemIndex in the container changes
@ -555,7 +553,7 @@ public:
* \param itemIndex The index of the container item. * \param itemIndex The index of the container item.
* \return The enchantment charge. * \return The enchantment charge.
*/ */
static double GetContainerItemEnchantmentCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept; extern "C" double GetContainerItemEnchantmentCharge(unsigned int objectIndex, unsigned int itemIndex) noexcept;
/** /**
* \brief Get the soul of the container item at a certain itemIndex in the container changes * \brief Get the soul of the container item at a certain itemIndex in the container changes
@ -565,7 +563,7 @@ public:
* \param itemIndex The index of the container item. * \param itemIndex The index of the container item.
* \return The soul. * \return The soul.
*/ */
static const char *GetContainerItemSoul(unsigned int objectIndex, unsigned int itemIndex) noexcept; extern "C" const char *GetContainerItemSoul(unsigned int objectIndex, unsigned int itemIndex) noexcept;
/** /**
* \brief Get the action count of the container item at a certain itemIndex in the container * \brief Get the action count of the container item at a certain itemIndex in the container
@ -575,7 +573,7 @@ public:
* \param itemIndex The index of the container item. * \param itemIndex The index of the container item.
* \return The action count. * \return The action count.
*/ */
static int GetContainerItemActionCount(unsigned int objectIndex, unsigned int itemIndex) noexcept; extern "C" int GetContainerItemActionCount(unsigned int objectIndex, unsigned int itemIndex) noexcept;
/** /**
* \brief Check whether the object at a certain index in the read object list has a container. * \brief Check whether the object at a certain index in the read object list has a container.
@ -586,7 +584,7 @@ public:
* \param index The index of the object. * \param index The index of the object.
* \return Whether the object has a container. * \return Whether the object has a container.
*/ */
static bool DoesObjectHaveContainer(unsigned int index) noexcept; extern "C" bool DoesObjectHaveContainer(unsigned int index) noexcept;
/** /**
* \brief Set the cell of the temporary object list stored on the server. * \brief Set the cell of the temporary object list stored on the server.
@ -597,7 +595,7 @@ public:
* \param cellDescription The description of the cell. * \param cellDescription The description of the cell.
* \return void * \return void
*/ */
static void SetObjectListCell(const char* cellDescription) noexcept; extern "C" void SetObjectListCell(const char* cellDescription) noexcept;
/** /**
* \brief Set the action type of the temporary object list stored on the server. * \brief Set the action type of the temporary object list stored on the server.
@ -605,7 +603,7 @@ public:
* \param action The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST). * \param action The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST).
* \return void * \return void
*/ */
static void SetObjectListAction(unsigned char action) noexcept; extern "C" void SetObjectListAction(unsigned char action) noexcept;
/** /**
* \brief Set the console command of the temporary object list stored on the server. * \brief Set the console command of the temporary object list stored on the server.
@ -616,7 +614,7 @@ public:
* \param consoleCommand The console command. * \param consoleCommand The console command.
* \return void * \return void
*/ */
static void SetObjectListConsoleCommand(const char* consoleCommand) noexcept; extern "C" void SetObjectListConsoleCommand(const char* consoleCommand) noexcept;
/** /**
* \brief Set the refId of the temporary object stored on the server. * \brief Set the refId of the temporary object stored on the server.
@ -624,7 +622,7 @@ public:
* \param refId The refId. * \param refId The refId.
* \return void * \return void
*/ */
static void SetObjectRefId(const char* refId) noexcept; extern "C" void SetObjectRefId(const char* refId) noexcept;
/** /**
* \brief Set the refNum of the temporary object stored on the server. * \brief Set the refNum of the temporary object stored on the server.
@ -638,7 +636,7 @@ public:
* \param refNum The refNum. * \param refNum The refNum.
* \return void * \return void
*/ */
static void SetObjectRefNum(int refNum) noexcept; extern "C" void SetObjectRefNum(int refNum) noexcept;
/** /**
* \brief Set the mpNum of the temporary object stored on the server. * \brief Set the mpNum of the temporary object stored on the server.
@ -653,7 +651,7 @@ public:
* \param mpNum The mpNum. * \param mpNum The mpNum.
* \return void * \return void
*/ */
static void SetObjectMpNum(int mpNum) noexcept; extern "C" void SetObjectMpNum(int mpNum) noexcept;
/** /**
* \brief Set the object count of the temporary object stored on the server. * \brief Set the object count of the temporary object stored on the server.
@ -663,7 +661,7 @@ public:
* \param count The object count. * \param count The object count.
* \return void * \return void
*/ */
static void SetObjectCount(int count) noexcept; extern "C" void SetObjectCount(int count) noexcept;
/** /**
* \brief Set the charge of the temporary object stored on the server. * \brief Set the charge of the temporary object stored on the server.
@ -673,7 +671,7 @@ public:
* \param charge The charge. * \param charge The charge.
* \return void * \return void
*/ */
static void SetObjectCharge(int charge) noexcept; extern "C" void SetObjectCharge(int charge) noexcept;
/** /**
* \brief Set the enchantment charge of the temporary object stored on the server. * \brief Set the enchantment charge of the temporary object stored on the server.
@ -683,7 +681,7 @@ public:
* \param charge The enchantment charge. * \param charge The enchantment charge.
* \return void * \return void
*/ */
static void SetObjectEnchantmentCharge(double enchantmentCharge) noexcept; extern "C" void SetObjectEnchantmentCharge(double enchantmentCharge) noexcept;
/** /**
* \brief Set the soul of the temporary object stored on the server. * \brief Set the soul of the temporary object stored on the server.
@ -691,7 +689,7 @@ public:
* \param refId The soul. * \param refId The soul.
* \return void * \return void
*/ */
static void SetObjectSoul(const char* soul) noexcept; extern "C" void SetObjectSoul(const char* soul) noexcept;
/** /**
* \brief Set the gold value of the temporary object stored on the server. * \brief Set the gold value of the temporary object stored on the server.
@ -701,7 +699,7 @@ public:
* \param goldValue The gold value. * \param goldValue The gold value.
* \return void * \return void
*/ */
static void SetObjectGoldValue(int goldValue) noexcept; extern "C" void SetObjectGoldValue(int goldValue) noexcept;
/** /**
* \brief Set the scale of the temporary object stored on the server. * \brief Set the scale of the temporary object stored on the server.
@ -711,7 +709,7 @@ public:
* \param scale The scale. * \param scale The scale.
* \return void * \return void
*/ */
static void SetObjectScale(double scale) noexcept; extern "C" void SetObjectScale(double scale) noexcept;
/** /**
* \brief Set the object state of the temporary object stored on the server. * \brief Set the object state of the temporary object stored on the server.
@ -721,7 +719,7 @@ public:
* \param objectState The object state. * \param objectState The object state.
* \return void * \return void
*/ */
static void SetObjectState(bool objectState) noexcept; extern "C" void SetObjectState(bool objectState) noexcept;
/** /**
* \brief Set the lock level of the temporary object stored on the server. * \brief Set the lock level of the temporary object stored on the server.
@ -729,7 +727,7 @@ public:
* \param lockLevel The lock level. * \param lockLevel The lock level.
* \return void * \return void
*/ */
static void SetObjectLockLevel(int lockLevel) noexcept; extern "C" void SetObjectLockLevel(int lockLevel) noexcept;
/** /**
* \brief Set the summon duration of the temporary object stored on the server. * \brief Set the summon duration of the temporary object stored on the server.
@ -737,7 +735,7 @@ public:
* \param summonDuration The summon duration. * \param summonDuration The summon duration.
* \return void * \return void
*/ */
static void SetObjectSummonDuration(float summonDuration) noexcept; extern "C" void SetObjectSummonDuration(float summonDuration) noexcept;
/** /**
* \brief Set the disarm state of the temporary object stored on the server. * \brief Set the disarm state of the temporary object stored on the server.
@ -745,7 +743,7 @@ public:
* \param disarmState The disarmState. * \param disarmState The disarmState.
* \return void * \return void
*/ */
static void SetObjectDisarmState(bool disarmState) noexcept; extern "C" void SetObjectDisarmState(bool disarmState) noexcept;
/** /**
* \brief Set the summon state of the temporary object stored on the server. * \brief Set the summon state of the temporary object stored on the server.
@ -756,7 +754,7 @@ public:
* \param summonState The summon state. * \param summonState The summon state.
* \return void * \return void
*/ */
static void SetObjectSummonState(bool summonState) noexcept; extern "C" void SetObjectSummonState(bool summonState) noexcept;
/** /**
* \brief Set the position of the temporary object stored on the server. * \brief Set the position of the temporary object stored on the server.
@ -766,7 +764,7 @@ public:
* \param z The Z position. * \param z The Z position.
* \return void * \return void
*/ */
static void SetObjectPosition(double x, double y, double z) noexcept; extern "C" void SetObjectPosition(double x, double y, double z) noexcept;
/** /**
* \brief Set the rotation of the temporary object stored on the server. * \brief Set the rotation of the temporary object stored on the server.
@ -776,7 +774,7 @@ public:
* \param z The Z rotation. * \param z The Z rotation.
* \return void * \return void
*/ */
static void SetObjectRotation(double x, double y, double z) noexcept; extern "C" void SetObjectRotation(double x, double y, double z) noexcept;
/** /**
* \brief Set the player ID of the player activating the temporary object stored on the * \brief Set the player ID of the player activating the temporary object stored on the
@ -785,7 +783,7 @@ public:
* \param pid The pid of the player. * \param pid The pid of the player.
* \return void * \return void
*/ */
static void SetObjectActivatingPid(unsigned short pid) noexcept; extern "C" void SetObjectActivatingPid(unsigned short pid) noexcept;
/** /**
* \brief Set the door state of the temporary object stored on the server. * \brief Set the door state of the temporary object stored on the server.
@ -795,7 +793,7 @@ public:
* \param doorState The door state. * \param doorState The door state.
* \return void * \return void
*/ */
static void SetObjectDoorState(int doorState) noexcept; extern "C" void SetObjectDoorState(int doorState) noexcept;
/** /**
* \brief Set the teleport state of the temporary object stored on the server. * \brief Set the teleport state of the temporary object stored on the server.
@ -806,7 +804,7 @@ public:
* \param teleportState The teleport state. * \param teleportState The teleport state.
* \return void * \return void
*/ */
static void SetObjectDoorTeleportState(bool teleportState) noexcept; extern "C" void SetObjectDoorTeleportState(bool teleportState) noexcept;
/** /**
* \brief Set the door destination cell of the temporary object stored on the server. * \brief Set the door destination cell of the temporary object stored on the server.
@ -817,7 +815,7 @@ public:
* \param cellDescription The description of the cell. * \param cellDescription The description of the cell.
* \return void * \return void
*/ */
static void SetObjectDoorDestinationCell(const char* cellDescription) noexcept; extern "C" void SetObjectDoorDestinationCell(const char* cellDescription) noexcept;
/** /**
* \brief Set the door destination position of the temporary object stored on the server. * \brief Set the door destination position of the temporary object stored on the server.
@ -827,7 +825,7 @@ public:
* \param z The Z position. * \param z The Z position.
* \return void * \return void
*/ */
static void SetObjectDoorDestinationPosition(double x, double y, double z) noexcept; extern "C" void SetObjectDoorDestinationPosition(double x, double y, double z) noexcept;
/** /**
* \brief Set the door destination rotation of the temporary object stored on the server. * \brief Set the door destination rotation of the temporary object stored on the server.
@ -839,7 +837,7 @@ public:
* \param z The Z rotation. * \param z The Z rotation.
* \return void * \return void
*/ */
static void SetObjectDoorDestinationRotation(double x, double z) noexcept; extern "C" void SetObjectDoorDestinationRotation(double x, double z) noexcept;
/** /**
* \brief Set a player as the object in the temporary object stored on the server. * \brief Set a player as the object in the temporary object stored on the server.
@ -848,7 +846,7 @@ public:
* \param pid The pid of the player. * \param pid The pid of the player.
* \return void * \return void
*/ */
static void SetPlayerAsObject(unsigned short pid) noexcept; extern "C" void SetPlayerAsObject(unsigned short pid) noexcept;
/** /**
* \brief Set the refId of the temporary container item stored on the server. * \brief Set the refId of the temporary container item stored on the server.
@ -856,7 +854,7 @@ public:
* \param refId The refId. * \param refId The refId.
* \return void * \return void
*/ */
static void SetContainerItemRefId(const char* refId) noexcept; extern "C" void SetContainerItemRefId(const char* refId) noexcept;
/** /**
* \brief Set the item count of the temporary container item stored on the server. * \brief Set the item count of the temporary container item stored on the server.
@ -864,7 +862,7 @@ public:
* \param count The item count. * \param count The item count.
* \return void * \return void
*/ */
static void SetContainerItemCount(int count) noexcept; extern "C" void SetContainerItemCount(int count) noexcept;
/** /**
* \brief Set the charge of the temporary container item stored on the server. * \brief Set the charge of the temporary container item stored on the server.
@ -872,7 +870,7 @@ public:
* \param charge The charge. * \param charge The charge.
* \return void * \return void
*/ */
static void SetContainerItemCharge(int charge) noexcept; extern "C" void SetContainerItemCharge(int charge) noexcept;
/** /**
* \brief Set the enchantment charge of the temporary container item stored on the server. * \brief Set the enchantment charge of the temporary container item stored on the server.
@ -880,7 +878,7 @@ public:
* \param charge The enchantment charge. * \param charge The enchantment charge.
* \return void * \return void
*/ */
static void SetContainerItemEnchantmentCharge(double enchantmentCharge) noexcept; extern "C" void SetContainerItemEnchantmentCharge(double enchantmentCharge) noexcept;
/** /**
* \brief Set the soul of the temporary container item stored on the server. * \brief Set the soul of the temporary container item stored on the server.
@ -888,7 +886,7 @@ public:
* \param refId The soul. * \param refId The soul.
* \return void * \return void
*/ */
static void SetContainerItemSoul(const char* soul) noexcept; extern "C" void SetContainerItemSoul(const char* soul) noexcept;
/** /**
* \brief Set the action count of the container item at a certain itemIndex in the container * \brief Set the action count of the container item at a certain itemIndex in the container
@ -903,7 +901,7 @@ public:
* \param actionCount The action count. * \param actionCount The action count.
* \return void * \return void
*/ */
static void SetContainerItemActionCountByIndex(unsigned int objectIndex, unsigned int itemIndex, int actionCount) noexcept; extern "C" void SetContainerItemActionCountByIndex(unsigned int objectIndex, unsigned int itemIndex, int actionCount) noexcept;
/** /**
* \brief Add a copy of the server's temporary object to the server's currently stored object * \brief Add a copy of the server's temporary object to the server's currently stored object
@ -914,7 +912,7 @@ public:
* *
* \return void * \return void
*/ */
static void AddObject() noexcept; extern "C" void AddObject() noexcept;
/** /**
* \brief Add a copy of the server's temporary container item to the container changes of the * \brief Add a copy of the server's temporary container item to the container changes of the
@ -925,7 +923,7 @@ public:
* *
* \return void * \return void
*/ */
static void AddContainerItem() noexcept; extern "C" void AddContainerItem() noexcept;
/** /**
* \brief Send an ObjectActivate packet. * \brief Send an ObjectActivate packet.
@ -936,7 +934,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendObjectActivate(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectActivate(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ObjectPlace packet. * \brief Send an ObjectPlace packet.
@ -947,7 +945,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendObjectPlace(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectPlace(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ObjectSpawn packet. * \brief Send an ObjectSpawn packet.
@ -958,7 +956,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendObjectSpawn(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectSpawn(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ObjectDelete packet. * \brief Send an ObjectDelete packet.
@ -968,7 +966,7 @@ public:
* *
* \return void * \return void
*/ */
static void SendObjectDelete(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectDelete(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ObjectLock packet. * \brief Send an ObjectLock packet.
@ -979,7 +977,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendObjectLock(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectLock(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ObjectTrap packet. * \brief Send an ObjectTrap packet.
@ -989,7 +987,7 @@ public:
* *
* \return void * \return void
*/ */
static void SendObjectTrap(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectTrap(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ObjectScale packet. * \brief Send an ObjectScale packet.
@ -1000,7 +998,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendObjectScale(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectScale(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send an ObjectState packet. * \brief Send an ObjectState packet.
@ -1011,7 +1009,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendObjectState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendObjectState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a DoorState packet. * \brief Send a DoorState packet.
@ -1022,7 +1020,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendDoorState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendDoorState(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a DoorDestination packet. * \brief Send a DoorDestination packet.
@ -1033,7 +1031,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendDoorDestination(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendDoorDestination(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a Container packet. * \brief Send a Container packet.
@ -1044,7 +1042,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendContainer(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendContainer(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a VideoPlay packet. * \brief Send a VideoPlay packet.
@ -1055,7 +1053,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendVideoPlay(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendVideoPlay(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a ConsoleCommand packet. * \brief Send a ConsoleCommand packet.
@ -1066,28 +1064,27 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendConsoleCommand(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendConsoleCommand(bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void ReadLastObjectList() noexcept; extern "C" void ReadLastObjectList() noexcept;
static void ReadLastEvent() noexcept; extern "C" void ReadLastEvent() noexcept;
static void InitializeObjectList(unsigned short pid) noexcept; extern "C" void InitializeObjectList(unsigned short pid) noexcept;
static void InitializeEvent(unsigned short pid) noexcept; extern "C" void InitializeEvent(unsigned short pid) noexcept;
static void CopyLastObjectListToStore() noexcept; extern "C" void CopyLastObjectListToStore() noexcept;
static unsigned int GetObjectChangesSize() noexcept; extern "C" unsigned int GetObjectChangesSize() noexcept;
static unsigned char GetEventAction() noexcept; extern "C" unsigned char GetEventAction() noexcept;
static unsigned char GetEventContainerSubAction() noexcept; extern "C" unsigned char GetEventContainerSubAction() noexcept;
static unsigned int GetObjectRefNumIndex(unsigned int index) noexcept; extern "C" unsigned int GetObjectRefNumIndex(unsigned int index) noexcept;
static unsigned int GetObjectSummonerRefNumIndex(unsigned int index) noexcept; extern "C" unsigned int GetObjectSummonerRefNumIndex(unsigned int index) noexcept;
static void SetEventCell(const char* cellDescription) noexcept; extern "C" void SetEventCell(const char* cellDescription) noexcept;
static void SetEventAction(unsigned char action) noexcept; extern "C" void SetEventAction(unsigned char action) noexcept;
static void SetEventConsoleCommand(const char* consoleCommand) noexcept; extern "C" void SetEventConsoleCommand(const char* consoleCommand) noexcept;
static void SetObjectRefNumIndex(int refNum) noexcept; extern "C" void SetObjectRefNumIndex(int refNum) noexcept;
static void AddWorldObject() noexcept; extern "C" void AddWorldObject() noexcept;
}
};
#endif //OPENMW_OBJECTAPI_HPP #endif //OPENMW_OBJECTAPI_HPP

@ -15,7 +15,7 @@ double PositionFunctions::GetPosX(unsigned short pid) noexcept
return player->position.pos[0]; return player->position.pos[0];
} }
double PositionFunctions::GetPosY(unsigned short pid) noexcept extern "C" double PositionFunctions::GetPosY(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -23,7 +23,7 @@ double PositionFunctions::GetPosY(unsigned short pid) noexcept
return player->position.pos[1]; return player->position.pos[1];
} }
double PositionFunctions::GetPosZ(unsigned short pid) noexcept extern "C" double PositionFunctions::GetPosZ(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -31,7 +31,7 @@ double PositionFunctions::GetPosZ(unsigned short pid) noexcept
return player->position.pos[2]; return player->position.pos[2];
} }
double PositionFunctions::GetPreviousCellPosX(unsigned short pid) noexcept extern "C" double PositionFunctions::GetPreviousCellPosX(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -39,7 +39,7 @@ double PositionFunctions::GetPreviousCellPosX(unsigned short pid) noexcept
return player->previousCellPosition.pos[0]; return player->previousCellPosition.pos[0];
} }
double PositionFunctions::GetPreviousCellPosY(unsigned short pid) noexcept extern "C" double PositionFunctions::GetPreviousCellPosY(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -47,7 +47,7 @@ double PositionFunctions::GetPreviousCellPosY(unsigned short pid) noexcept
return player->previousCellPosition.pos[1]; return player->previousCellPosition.pos[1];
} }
double PositionFunctions::GetPreviousCellPosZ(unsigned short pid) noexcept extern "C" double PositionFunctions::GetPreviousCellPosZ(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -63,7 +63,7 @@ double PositionFunctions::GetRotX(unsigned short pid) noexcept
return player->position.rot[0]; return player->position.rot[0];
} }
double PositionFunctions::GetRotZ(unsigned short pid) noexcept extern "C" double PositionFunctions::GetRotZ(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -71,7 +71,7 @@ double PositionFunctions::GetRotZ(unsigned short pid) noexcept
return player->position.rot[2]; return player->position.rot[2];
} }
void PositionFunctions::SetPos(unsigned short pid, double x, double y, double z) noexcept extern "C" void PositionFunctions::SetPos(unsigned short pid, double x, double y, double z) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -81,7 +81,7 @@ void PositionFunctions::SetPos(unsigned short pid, double x, double y, double z)
player->position.pos[2] = z; player->position.pos[2] = z;
} }
void PositionFunctions::SetRot(unsigned short pid, double x, double z) noexcept extern "C" void PositionFunctions::SetRot(unsigned short pid, double x, double z) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -90,7 +90,7 @@ void PositionFunctions::SetRot(unsigned short pid, double x, double z) noexcept
player->position.rot[2] = z; player->position.rot[2] = z;
} }
void PositionFunctions::SetMomentum(unsigned short pid, double x, double y, double z) noexcept extern "C" void PositionFunctions::SetMomentum(unsigned short pid, double x, double y, double z) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -100,7 +100,7 @@ void PositionFunctions::SetMomentum(unsigned short pid, double x, double y, doub
player->momentum.pos[2] = z; player->momentum.pos[2] = z;
} }
void PositionFunctions::SendPos(unsigned short pid) noexcept extern "C" void PositionFunctions::SendPos(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -111,7 +111,7 @@ void PositionFunctions::SendPos(unsigned short pid) noexcept
packet->Send(false); packet->Send(false);
} }
void PositionFunctions::SendMomentum(unsigned short pid) noexcept extern "C" void PositionFunctions::SendMomentum(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );

@ -23,17 +23,15 @@
{"SendMomentum", PositionFunctions::SendMomentum} {"SendMomentum", PositionFunctions::SendMomentum}
class PositionFunctions namespace PositionFunctions
{ {
public:
/** /**
* \brief Get the X position of a player. * \brief Get the X position of a player.
* *
* \param pid The player ID. * \param pid The player ID.
* \return The X position. * \return The X position.
*/ */
static double GetPosX(unsigned short pid) noexcept; extern "C" double GetPosX(unsigned short pid) noexcept;
/** /**
* \brief Get the Y position of a player. * \brief Get the Y position of a player.
@ -41,7 +39,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Y position. * \return The Y position.
*/ */
static double GetPosY(unsigned short pid) noexcept; extern "C" double GetPosY(unsigned short pid) noexcept;
/** /**
* \brief Get the Z position of a player. * \brief Get the Z position of a player.
@ -49,7 +47,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Z position. * \return The Z position.
*/ */
static double GetPosZ(unsigned short pid) noexcept; extern "C" double GetPosZ(unsigned short pid) noexcept;
/** /**
* \brief Get the X position of a player from before their latest cell change. * \brief Get the X position of a player from before their latest cell change.
@ -57,7 +55,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The X position. * \return The X position.
*/ */
static double GetPreviousCellPosX(unsigned short pid) noexcept; extern "C" double GetPreviousCellPosX(unsigned short pid) noexcept;
/** /**
* \brief Get the Y position of a player from before their latest cell change. * \brief Get the Y position of a player from before their latest cell change.
@ -65,7 +63,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Y position. * \return The Y position.
*/ */
static double GetPreviousCellPosY(unsigned short pid) noexcept; extern "C" double GetPreviousCellPosY(unsigned short pid) noexcept;
/** /**
* \brief Get the Z position of a player from before their latest cell change. * \brief Get the Z position of a player from before their latest cell change.
@ -73,7 +71,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Z position. * \return The Z position.
*/ */
static double GetPreviousCellPosZ(unsigned short pid) noexcept; extern "C" double GetPreviousCellPosZ(unsigned short pid) noexcept;
/** /**
* \brief Get the X rotation of a player. * \brief Get the X rotation of a player.
@ -81,7 +79,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The X rotation. * \return The X rotation.
*/ */
static double GetRotX(unsigned short pid) noexcept; extern "C" double GetRotX(unsigned short pid) noexcept;
/** /**
* \brief Get the Z rotation of a player. * \brief Get the Z rotation of a player.
@ -89,7 +87,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The Z rotation. * \return The Z rotation.
*/ */
static double GetRotZ(unsigned short pid) noexcept; extern "C" double GetRotZ(unsigned short pid) noexcept;
/** /**
* \brief Set the position of a player. * \brief Set the position of a player.
@ -103,7 +101,7 @@ public:
* \param z The Z position. * \param z The Z position.
* \return void * \return void
*/ */
static void SetPos(unsigned short pid, double x, double y, double z) noexcept; extern "C" void SetPos(unsigned short pid, double x, double y, double z) noexcept;
/** /**
* \brief Set the rotation of a player. * \brief Set the rotation of a player.
@ -118,7 +116,7 @@ public:
* \param z The Z position. * \param z The Z position.
* \return void * \return void
*/ */
static void SetRot(unsigned short pid, double x, double z) noexcept; extern "C" void SetRot(unsigned short pid, double x, double z) noexcept;
/** /**
* \brief Set the momentum of a player. * \brief Set the momentum of a player.
@ -132,7 +130,7 @@ public:
* \param z The Z momentum. * \param z The Z momentum.
* \return void * \return void
*/ */
static void SetMomentum(unsigned short pid, double x, double y, double z) noexcept; extern "C" void SetMomentum(unsigned short pid, double x, double y, double z) noexcept;
/** /**
* \brief Send a PlayerPosition packet about a player. * \brief Send a PlayerPosition packet about a player.
@ -142,7 +140,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendPos(unsigned short pid) noexcept; extern "C" void SendPos(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerMomentum packet about a player. * \brief Send a PlayerMomentum packet about a player.
@ -152,7 +150,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendMomentum(unsigned short pid) noexcept; extern "C" void SendMomentum(unsigned short pid) noexcept;
}; }
#endif //OPENMW_POSITIONAPI_HPP #endif //OPENMW_POSITIONAPI_HPP

@ -0,0 +1,29 @@
//
// Created by koncord on 09.12.18.
//
#include "Public.hpp"
#include <Script/ScriptFunctions.hpp>
#include <Script/API/PublicFnAPI.hpp>
extern "C" void PublicFunctions::MakePublic(ScriptFunc _public, const char *name, char ret_type, const char *def) noexcept
{
Public::MakePublic(_public, name, ret_type, def);
}
extern "C" boost::any PublicFunctions::CallPublic(const char *name, va_list args) noexcept
{
std::vector<boost::any> params;
try
{
std::string def = Public::GetDefinition(name);
ScriptFunctions::GetArguments(params, args, def);
return Public::Call(name, params);
}
catch (...) {}
return 0;
}

@ -0,0 +1,16 @@
//
// Created by koncord on 09.12.18.
//
#ifndef OPENMW_PUBLIC_HPP
#define OPENMW_PUBLIC_HPP
#include <apps/openmw-mp/Script/ScriptFunction.hpp>
namespace PublicFunctions
{
extern "C" void MakePublic(ScriptFunc _public, const char *name, char ret_type, const char *def) noexcept;
extern "C" boost::any CallPublic(const char *name, va_list args) noexcept;
}
#endif

@ -8,7 +8,7 @@
using namespace mwmp; using namespace mwmp;
void QuestFunctions::ClearJournalChanges(unsigned short pid) noexcept extern "C" void QuestFunctions::ClearJournalChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -16,7 +16,7 @@ void QuestFunctions::ClearJournalChanges(unsigned short pid) noexcept
player->journalChanges.journalItems.clear(); player->journalChanges.journalItems.clear();
} }
void QuestFunctions::ClearKillChanges(unsigned short pid) noexcept extern "C" void QuestFunctions::ClearKillChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -24,7 +24,7 @@ void QuestFunctions::ClearKillChanges(unsigned short pid) noexcept
player->killChanges.kills.clear(); player->killChanges.kills.clear();
} }
unsigned int QuestFunctions::GetJournalChangesSize(unsigned short pid) noexcept extern "C" unsigned int QuestFunctions::GetJournalChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -32,7 +32,7 @@ unsigned int QuestFunctions::GetJournalChangesSize(unsigned short pid) noexcept
return player->journalChanges.count; return player->journalChanges.count;
} }
unsigned int QuestFunctions::GetKillChangesSize(unsigned short pid) noexcept extern "C" unsigned int QuestFunctions::GetKillChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -40,7 +40,7 @@ unsigned int QuestFunctions::GetKillChangesSize(unsigned short pid) noexcept
return player->killChanges.count; return player->killChanges.count;
} }
void QuestFunctions::AddJournalEntry(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId) noexcept extern "C" void QuestFunctions::AddJournalEntry(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -55,7 +55,7 @@ void QuestFunctions::AddJournalEntry(unsigned short pid, const char* quest, unsi
player->journalChanges.journalItems.push_back(journalItem); player->journalChanges.journalItems.push_back(journalItem);
} }
void QuestFunctions::AddJournalEntryWithTimestamp(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId, extern "C" void QuestFunctions::AddJournalEntryWithTimestamp(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId,
unsigned int daysPassed, unsigned int month, unsigned int day) noexcept unsigned int daysPassed, unsigned int month, unsigned int day) noexcept
{ {
Player *player; Player *player;
@ -75,7 +75,7 @@ void QuestFunctions::AddJournalEntryWithTimestamp(unsigned short pid, const char
player->journalChanges.journalItems.push_back(journalItem); player->journalChanges.journalItems.push_back(journalItem);
} }
void QuestFunctions::AddJournalIndex(unsigned short pid, const char* quest, unsigned int index) noexcept extern "C" void QuestFunctions::AddJournalIndex(unsigned short pid, const char* quest, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -88,7 +88,7 @@ void QuestFunctions::AddJournalIndex(unsigned short pid, const char* quest, unsi
player->journalChanges.journalItems.push_back(journalItem); player->journalChanges.journalItems.push_back(journalItem);
} }
void QuestFunctions::AddKill(unsigned short pid, const char* refId, int number) noexcept extern "C" void QuestFunctions::AddKill(unsigned short pid, const char* refId, int number) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -100,7 +100,7 @@ void QuestFunctions::AddKill(unsigned short pid, const char* refId, int number)
player->killChanges.kills.push_back(kill); player->killChanges.kills.push_back(kill);
} }
void QuestFunctions::SetReputation(unsigned short pid, int value) noexcept extern "C" void QuestFunctions::SetReputation(unsigned short pid, int value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -108,7 +108,7 @@ void QuestFunctions::SetReputation(unsigned short pid, int value) noexcept
player->npcStats.mReputation = value; player->npcStats.mReputation = value;
} }
const char *QuestFunctions::GetJournalItemQuest(unsigned short pid, unsigned int index) noexcept extern "C" const char *QuestFunctions::GetJournalItemQuest(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -119,7 +119,7 @@ const char *QuestFunctions::GetJournalItemQuest(unsigned short pid, unsigned int
return player->journalChanges.journalItems.at(index).quest.c_str(); return player->journalChanges.journalItems.at(index).quest.c_str();
} }
int QuestFunctions::GetJournalItemIndex(unsigned short pid, unsigned int index) noexcept extern "C" int QuestFunctions::GetJournalItemIndex(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -127,7 +127,7 @@ int QuestFunctions::GetJournalItemIndex(unsigned short pid, unsigned int index)
return player->journalChanges.journalItems.at(index).index; return player->journalChanges.journalItems.at(index).index;
} }
int QuestFunctions::GetJournalItemType(unsigned short pid, unsigned int index) noexcept extern "C" int QuestFunctions::GetJournalItemType(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -135,7 +135,7 @@ int QuestFunctions::GetJournalItemType(unsigned short pid, unsigned int index) n
return player->journalChanges.journalItems.at(index).type; return player->journalChanges.journalItems.at(index).type;
} }
const char *QuestFunctions::GetJournalItemActorRefId(unsigned short pid, unsigned int index) noexcept extern "C" const char *QuestFunctions::GetJournalItemActorRefId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -143,7 +143,7 @@ const char *QuestFunctions::GetJournalItemActorRefId(unsigned short pid, unsigne
return player->journalChanges.journalItems.at(index).actorRefId.c_str(); return player->journalChanges.journalItems.at(index).actorRefId.c_str();
} }
const char *QuestFunctions::GetKillRefId(unsigned short pid, unsigned int index) noexcept extern "C" const char *QuestFunctions::GetKillRefId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -154,7 +154,7 @@ const char *QuestFunctions::GetKillRefId(unsigned short pid, unsigned int index)
return player->killChanges.kills.at(index).refId.c_str(); return player->killChanges.kills.at(index).refId.c_str();
} }
int QuestFunctions::GetKillNumber(unsigned short pid, unsigned int index) noexcept extern "C" int QuestFunctions::GetKillNumber(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -162,7 +162,7 @@ int QuestFunctions::GetKillNumber(unsigned short pid, unsigned int index) noexce
return player->killChanges.kills.at(index).number; return player->killChanges.kills.at(index).number;
} }
int QuestFunctions::GetReputation(unsigned short pid) noexcept extern "C" int QuestFunctions::GetReputation(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -170,7 +170,7 @@ int QuestFunctions::GetReputation(unsigned short pid) noexcept
return player->npcStats.mReputation; return player->npcStats.mReputation;
} }
void QuestFunctions::SendJournalChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void QuestFunctions::SendJournalChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -184,7 +184,7 @@ void QuestFunctions::SendJournalChanges(unsigned short pid, bool sendToOtherPlay
packet->Send(true); packet->Send(true);
} }
void QuestFunctions::SendKillChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void QuestFunctions::SendKillChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -198,7 +198,7 @@ void QuestFunctions::SendKillChanges(unsigned short pid, bool sendToOtherPlayers
packet->Send(true); packet->Send(true);
} }
void QuestFunctions::SendReputation(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void QuestFunctions::SendReputation(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -212,14 +212,14 @@ void QuestFunctions::SendReputation(unsigned short pid, bool sendToOtherPlayers,
packet->Send(true); packet->Send(true);
} }
// All methods below are deprecated versions of methods from above extern "C" // All methods below are deprecated versions of methods from above
void QuestFunctions::InitializeJournalChanges(unsigned short pid) noexcept void QuestFunctions::InitializeJournalChanges(unsigned short pid) noexcept
{ {
ClearJournalChanges(pid); ClearJournalChanges(pid);
} }
void QuestFunctions::InitializeKillChanges(unsigned short pid) noexcept extern "C" void QuestFunctions::InitializeKillChanges(unsigned short pid) noexcept
{ {
ClearKillChanges(pid); ClearKillChanges(pid);
} }

@ -31,10 +31,8 @@
{"InitializeJournalChanges", QuestFunctions::InitializeJournalChanges},\ {"InitializeJournalChanges", QuestFunctions::InitializeJournalChanges},\
{"InitializeKillChanges", QuestFunctions::InitializeKillChanges} {"InitializeKillChanges", QuestFunctions::InitializeKillChanges}
class QuestFunctions namespace QuestFunctions
{ {
public:
/** /**
* \brief Clear the last recorded journal changes for a player. * \brief Clear the last recorded journal changes for a player.
* *
@ -43,7 +41,7 @@ public:
* \param pid The player ID whose journal changes should be used. * \param pid The player ID whose journal changes should be used.
* \return void * \return void
*/ */
static void ClearJournalChanges(unsigned short pid) noexcept; extern "C" void ClearJournalChanges(unsigned short pid) noexcept;
/** /**
* \brief Clear the last recorded kill count changes for a player. * \brief Clear the last recorded kill count changes for a player.
@ -53,7 +51,7 @@ public:
* \param pid The player ID whose kill count changes should be used. * \param pid The player ID whose kill count changes should be used.
* \return void * \return void
*/ */
static void ClearKillChanges(unsigned short pid) noexcept; extern "C" void ClearKillChanges(unsigned short pid) noexcept;
/** /**
* \brief Get the number of indexes in a player's latest journal changes. * \brief Get the number of indexes in a player's latest journal changes.
@ -61,7 +59,7 @@ public:
* \param pid The player ID whose journal changes should be used. * \param pid The player ID whose journal changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetJournalChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetJournalChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Get the number of indexes in a player's latest kill count changes. * \brief Get the number of indexes in a player's latest kill count changes.
@ -69,7 +67,7 @@ public:
* \param pid The player ID whose kill count changes should be used. * \param pid The player ID whose kill count changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetKillChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetKillChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Add a new journal item of type ENTRY to the journal changes for a player, * \brief Add a new journal item of type ENTRY to the journal changes for a player,
@ -81,7 +79,7 @@ public:
* \param actorRefId The actor refId of the journal item. * \param actorRefId The actor refId of the journal item.
* \return void * \return void
*/ */
static void AddJournalEntry(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId) noexcept; extern "C" void AddJournalEntry(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId) noexcept;
/** /**
* \brief Add a new journal item of type ENTRY to the journal changes for a player, * \brief Add a new journal item of type ENTRY to the journal changes for a player,
@ -96,7 +94,7 @@ public:
* \param The day of the month for the journal item. * \param The day of the month for the journal item.
* \return void * \return void
*/ */
static void AddJournalEntryWithTimestamp(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId, extern "C" void AddJournalEntryWithTimestamp(unsigned short pid, const char* quest, unsigned int index, const char* actorRefId,
unsigned int daysPassed, unsigned int month, unsigned int day) noexcept; unsigned int daysPassed, unsigned int month, unsigned int day) noexcept;
/** /**
@ -107,7 +105,7 @@ public:
* \param index The quest index of the journal item. * \param index The quest index of the journal item.
* \return void * \return void
*/ */
static void AddJournalIndex(unsigned short pid, const char* quest, unsigned int index) noexcept; extern "C" void AddJournalIndex(unsigned short pid, const char* quest, unsigned int index) noexcept;
/** /**
* \brief Add a new kill count to the kill count changes for a player. * \brief Add a new kill count to the kill count changes for a player.
@ -117,7 +115,7 @@ public:
* \param number The number of kills in the kill count. * \param number The number of kills in the kill count.
* \return void * \return void
*/ */
static void AddKill(unsigned short pid, const char* refId, int number) noexcept; extern "C" void AddKill(unsigned short pid, const char* refId, int number) noexcept;
/** /**
* \brief Set the reputation of a certain player. * \brief Set the reputation of a certain player.
@ -126,7 +124,7 @@ public:
* \param value The reputation. * \param value The reputation.
* \return void * \return void
*/ */
static void SetReputation(unsigned short pid, int value) noexcept; extern "C" void SetReputation(unsigned short pid, int value) noexcept;
/** /**
* \brief Get the quest at a certain index in a player's latest journal changes. * \brief Get the quest at a certain index in a player's latest journal changes.
@ -135,7 +133,7 @@ public:
* \param index The index of the journalItem. * \param index The index of the journalItem.
* \return The quest. * \return The quest.
*/ */
static const char *GetJournalItemQuest(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetJournalItemQuest(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the quest index at a certain index in a player's latest journal changes. * \brief Get the quest index at a certain index in a player's latest journal changes.
@ -144,7 +142,7 @@ public:
* \param index The index of the journalItem. * \param index The index of the journalItem.
* \return The quest index. * \return The quest index.
*/ */
static int GetJournalItemIndex(unsigned short pid, unsigned int index) noexcept; extern "C" int GetJournalItemIndex(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the journal item type at a certain index in a player's latest journal changes. * \brief Get the journal item type at a certain index in a player's latest journal changes.
@ -153,7 +151,7 @@ public:
* \param index The index of the journalItem. * \param index The index of the journalItem.
* \return The type (0 for ENTRY, 1 for INDEX). * \return The type (0 for ENTRY, 1 for INDEX).
*/ */
static int GetJournalItemType(unsigned short pid, unsigned int index) noexcept; extern "C" int GetJournalItemType(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the actor refId at a certain index in a player's latest journal changes. * \brief Get the actor refId at a certain index in a player's latest journal changes.
@ -164,7 +162,7 @@ public:
* \param index The index of the journalItem. * \param index The index of the journalItem.
* \return The actor refId. * \return The actor refId.
*/ */
static const char *GetJournalItemActorRefId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetJournalItemActorRefId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the refId at a certain index in a player's latest kill count changes. * \brief Get the refId at a certain index in a player's latest kill count changes.
@ -173,7 +171,7 @@ public:
* \param index The index of the kill count. * \param index The index of the kill count.
* \return The refId. * \return The refId.
*/ */
static const char *GetKillRefId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetKillRefId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the number of kills at a certain index in a player's latest kill count changes. * \brief Get the number of kills at a certain index in a player's latest kill count changes.
@ -182,7 +180,7 @@ public:
* \param index The index of the kill count. * \param index The index of the kill count.
* \return The number of kills. * \return The number of kills.
*/ */
static int GetKillNumber(unsigned short pid, unsigned int index) noexcept; extern "C" int GetKillNumber(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Get the a certain player's reputation. * \brief Get the a certain player's reputation.
@ -190,7 +188,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The reputation. * \return The reputation.
*/ */
static int GetReputation(unsigned short pid) noexcept; extern "C" int GetReputation(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerJournal packet with a player's recorded journal changes. * \brief Send a PlayerJournal packet with a player's recorded journal changes.
@ -202,7 +200,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendJournalChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendJournalChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a WorldKillCount packet with a player's recorded kill count changes. * \brief Send a WorldKillCount packet with a player's recorded kill count changes.
@ -214,7 +212,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendKillChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendKillChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a PlayerReputation packet with a player's recorded reputation. * \brief Send a PlayerReputation packet with a player's recorded reputation.
@ -226,15 +224,12 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendReputation(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendReputation(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void InitializeJournalChanges(unsigned short pid) noexcept; extern "C" void InitializeJournalChanges(unsigned short pid) noexcept;
static void InitializeKillChanges(unsigned short pid) noexcept; extern "C" void InitializeKillChanges(unsigned short pid) noexcept;
}
private:
};
#endif //OPENMW_QUESTAPI_HPP #endif //OPENMW_QUESTAPI_HPP

@ -31,7 +31,7 @@ mwmp::Item tempInventoryItem;
const ESM::EffectList emptyEffectList = {}; const ESM::EffectList emptyEffectList = {};
const ESM::EffectList& GetRecordEffects(unsigned int recordIndex) extern "C" const ESM::EffectList& GetRecordEffects(unsigned int recordIndex)
{ {
unsigned short recordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short recordsType = RecordsDynamicFunctions::GetRecordType();
@ -45,7 +45,7 @@ const ESM::EffectList& GetRecordEffects(unsigned int recordIndex)
return emptyEffectList; return emptyEffectList;
} }
void RecordsDynamicFunctions::ClearRecords() noexcept extern "C" void RecordsDynamicFunctions::ClearRecords() noexcept
{ {
WorldstateFunctions::writeWorldstate.spellRecords.clear(); WorldstateFunctions::writeWorldstate.spellRecords.clear();
WorldstateFunctions::writeWorldstate.potionRecords.clear(); WorldstateFunctions::writeWorldstate.potionRecords.clear();
@ -59,22 +59,22 @@ void RecordsDynamicFunctions::ClearRecords() noexcept
WorldstateFunctions::writeWorldstate.weaponRecords.clear(); WorldstateFunctions::writeWorldstate.weaponRecords.clear();
} }
unsigned short RecordsDynamicFunctions::GetRecordType() noexcept extern "C" unsigned short RecordsDynamicFunctions::GetRecordType() noexcept
{ {
return WorldstateFunctions::readWorldstate->recordsType; return WorldstateFunctions::readWorldstate->recordsType;
} }
unsigned int RecordsDynamicFunctions::GetRecordCount() noexcept extern "C" unsigned int RecordsDynamicFunctions::GetRecordCount() noexcept
{ {
return WorldstateFunctions::readWorldstate->recordsCount; return WorldstateFunctions::readWorldstate->recordsCount;
} }
unsigned int RecordsDynamicFunctions::GetRecordEffectCount(unsigned int recordIndex) noexcept extern "C" unsigned int RecordsDynamicFunctions::GetRecordEffectCount(unsigned int recordIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.size(); return GetRecordEffects(recordIndex).mList.size();
} }
int RecordsDynamicFunctions::GetRecordSubtype(unsigned int index) noexcept extern "C" int RecordsDynamicFunctions::GetRecordSubtype(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -86,7 +86,7 @@ int RecordsDynamicFunctions::GetRecordSubtype(unsigned int index) noexcept
return -1; return -1;
} }
const char *RecordsDynamicFunctions::GetRecordId(unsigned int index) noexcept extern "C" const char *RecordsDynamicFunctions::GetRecordId(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -100,7 +100,7 @@ const char *RecordsDynamicFunctions::GetRecordId(unsigned int index) noexcept
return "invalid"; return "invalid";
} }
const char *RecordsDynamicFunctions::GetRecordBaseId(unsigned int index) noexcept extern "C" const char *RecordsDynamicFunctions::GetRecordBaseId(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -122,7 +122,7 @@ const char *RecordsDynamicFunctions::GetRecordBaseId(unsigned int index) noexcep
return "invalid"; return "invalid";
} }
const char *RecordsDynamicFunctions::GetRecordName(unsigned int index) noexcept extern "C" const char *RecordsDynamicFunctions::GetRecordName(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -142,7 +142,7 @@ const char *RecordsDynamicFunctions::GetRecordName(unsigned int index) noexcept
return "invalid"; return "invalid";
} }
const char *RecordsDynamicFunctions::GetRecordModel(unsigned int index) noexcept extern "C" const char *RecordsDynamicFunctions::GetRecordModel(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -152,7 +152,7 @@ const char *RecordsDynamicFunctions::GetRecordModel(unsigned int index) noexcept
return "invalid"; return "invalid";
} }
const char *RecordsDynamicFunctions::GetRecordIcon(unsigned int index) noexcept extern "C" const char *RecordsDynamicFunctions::GetRecordIcon(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -162,7 +162,7 @@ const char *RecordsDynamicFunctions::GetRecordIcon(unsigned int index) noexcept
return "invalid"; return "invalid";
} }
const char *RecordsDynamicFunctions::GetRecordScript(unsigned int index) noexcept extern "C" const char *RecordsDynamicFunctions::GetRecordScript(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -172,7 +172,7 @@ const char *RecordsDynamicFunctions::GetRecordScript(unsigned int index) noexcep
return "invalid"; return "invalid";
} }
const char *RecordsDynamicFunctions::GetRecordEnchantmentId(unsigned int index) noexcept extern "C" const char *RecordsDynamicFunctions::GetRecordEnchantmentId(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -188,7 +188,7 @@ const char *RecordsDynamicFunctions::GetRecordEnchantmentId(unsigned int index)
return "invalid"; return "invalid";
} }
int RecordsDynamicFunctions::GetRecordEnchantmentCharge(unsigned int index) noexcept extern "C" int RecordsDynamicFunctions::GetRecordEnchantmentCharge(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -204,7 +204,7 @@ int RecordsDynamicFunctions::GetRecordEnchantmentCharge(unsigned int index) noex
return -1; return -1;
} }
int RecordsDynamicFunctions::GetRecordAutoCalc(unsigned int index) noexcept extern "C" int RecordsDynamicFunctions::GetRecordAutoCalc(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -216,7 +216,7 @@ int RecordsDynamicFunctions::GetRecordAutoCalc(unsigned int index) noexcept
return -1; return -1;
} }
int RecordsDynamicFunctions::GetRecordCharge(unsigned int index) noexcept extern "C" int RecordsDynamicFunctions::GetRecordCharge(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -226,7 +226,7 @@ int RecordsDynamicFunctions::GetRecordCharge(unsigned int index) noexcept
return -1; return -1;
} }
int RecordsDynamicFunctions::GetRecordCost(unsigned int index) noexcept extern "C" int RecordsDynamicFunctions::GetRecordCost(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -238,7 +238,7 @@ int RecordsDynamicFunctions::GetRecordCost(unsigned int index) noexcept
return -1; return -1;
} }
int RecordsDynamicFunctions::GetRecordFlags(unsigned int index) noexcept extern "C" int RecordsDynamicFunctions::GetRecordFlags(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -248,7 +248,7 @@ int RecordsDynamicFunctions::GetRecordFlags(unsigned int index) noexcept
return -1; return -1;
} }
int RecordsDynamicFunctions::GetRecordValue(unsigned int index) noexcept extern "C" int RecordsDynamicFunctions::GetRecordValue(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -258,7 +258,7 @@ int RecordsDynamicFunctions::GetRecordValue(unsigned int index) noexcept
return -1; return -1;
} }
double RecordsDynamicFunctions::GetRecordWeight(unsigned int index) noexcept extern "C" double RecordsDynamicFunctions::GetRecordWeight(unsigned int index) noexcept
{ {
unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType(); unsigned short readRecordsType = RecordsDynamicFunctions::GetRecordType();
@ -268,52 +268,52 @@ double RecordsDynamicFunctions::GetRecordWeight(unsigned int index) noexcept
return -1; return -1;
} }
unsigned int RecordsDynamicFunctions::GetRecordEffectId(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" unsigned int RecordsDynamicFunctions::GetRecordEffectId(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mEffectID; return GetRecordEffects(recordIndex).mList.at(effectIndex).mEffectID;
} }
int RecordsDynamicFunctions::GetRecordEffectAttribute(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" int RecordsDynamicFunctions::GetRecordEffectAttribute(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mAttribute; return GetRecordEffects(recordIndex).mList.at(effectIndex).mAttribute;
} }
int RecordsDynamicFunctions::GetRecordEffectSkill(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" int RecordsDynamicFunctions::GetRecordEffectSkill(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mSkill; return GetRecordEffects(recordIndex).mList.at(effectIndex).mSkill;
} }
unsigned int RecordsDynamicFunctions::GetRecordEffectRangeType(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" unsigned int RecordsDynamicFunctions::GetRecordEffectRangeType(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mRange; return GetRecordEffects(recordIndex).mList.at(effectIndex).mRange;
} }
int RecordsDynamicFunctions::GetRecordEffectArea(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" int RecordsDynamicFunctions::GetRecordEffectArea(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mArea; return GetRecordEffects(recordIndex).mList.at(effectIndex).mArea;
} }
int RecordsDynamicFunctions::GetRecordEffectDuration(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" int RecordsDynamicFunctions::GetRecordEffectDuration(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mDuration; return GetRecordEffects(recordIndex).mList.at(effectIndex).mDuration;
} }
int RecordsDynamicFunctions::GetRecordEffectMagnitudeMax(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" int RecordsDynamicFunctions::GetRecordEffectMagnitudeMax(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mMagnMax; return GetRecordEffects(recordIndex).mList.at(effectIndex).mMagnMax;
} }
int RecordsDynamicFunctions::GetRecordEffectMagnitudeMin(unsigned int recordIndex, unsigned int effectIndex) noexcept extern "C" int RecordsDynamicFunctions::GetRecordEffectMagnitudeMin(unsigned int recordIndex, unsigned int effectIndex) noexcept
{ {
return GetRecordEffects(recordIndex).mList.at(effectIndex).mMagnMin; return GetRecordEffects(recordIndex).mList.at(effectIndex).mMagnMin;
} }
void RecordsDynamicFunctions::SetRecordType(unsigned int type) noexcept extern "C" void RecordsDynamicFunctions::SetRecordType(unsigned int type) noexcept
{ {
WorldstateFunctions::writeWorldstate.recordsType = type; WorldstateFunctions::writeWorldstate.recordsType = type;
} }
void RecordsDynamicFunctions::SetRecordId(const char* id) noexcept extern "C" void RecordsDynamicFunctions::SetRecordId(const char* id) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -342,7 +342,7 @@ void RecordsDynamicFunctions::SetRecordId(const char* id) noexcept
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set id for record type %i which lacks that property", writeRecordsType); LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set id for record type %i which lacks that property", writeRecordsType);
} }
void RecordsDynamicFunctions::SetRecordBaseId(const char* baseId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordBaseId(const char* baseId) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -370,7 +370,7 @@ void RecordsDynamicFunctions::SetRecordBaseId(const char* baseId) noexcept
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set baseId for record type %i which lacks that property", writeRecordsType); LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set baseId for record type %i which lacks that property", writeRecordsType);
} }
void RecordsDynamicFunctions::SetRecordInventoryBaseId(const char* inventoryBaseId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordInventoryBaseId(const char* inventoryBaseId) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -382,7 +382,7 @@ void RecordsDynamicFunctions::SetRecordInventoryBaseId(const char* inventoryBase
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set inventoryBaseId for record type %i which lacks that property", writeRecordsType); LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set inventoryBaseId for record type %i which lacks that property", writeRecordsType);
} }
void RecordsDynamicFunctions::SetRecordSubtype(unsigned int subtype) noexcept extern "C" void RecordsDynamicFunctions::SetRecordSubtype(unsigned int subtype) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -407,7 +407,7 @@ void RecordsDynamicFunctions::SetRecordSubtype(unsigned int subtype) noexcept
tempOverrides.hasSubtype = true; tempOverrides.hasSubtype = true;
} }
void RecordsDynamicFunctions::SetRecordName(const char* name) noexcept extern "C" void RecordsDynamicFunctions::SetRecordName(const char* name) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -438,7 +438,7 @@ void RecordsDynamicFunctions::SetRecordName(const char* name) noexcept
tempOverrides.hasName = true; tempOverrides.hasName = true;
} }
void RecordsDynamicFunctions::SetRecordModel(const char* model) noexcept extern "C" void RecordsDynamicFunctions::SetRecordModel(const char* model) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -467,7 +467,7 @@ void RecordsDynamicFunctions::SetRecordModel(const char* model) noexcept
tempOverrides.hasModel = true; tempOverrides.hasModel = true;
} }
void RecordsDynamicFunctions::SetRecordIcon(const char* icon) noexcept extern "C" void RecordsDynamicFunctions::SetRecordIcon(const char* icon) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -492,7 +492,7 @@ void RecordsDynamicFunctions::SetRecordIcon(const char* icon) noexcept
tempOverrides.hasIcon = true; tempOverrides.hasIcon = true;
} }
void RecordsDynamicFunctions::SetRecordScript(const char* script) noexcept extern "C" void RecordsDynamicFunctions::SetRecordScript(const char* script) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -521,7 +521,7 @@ void RecordsDynamicFunctions::SetRecordScript(const char* script) noexcept
tempOverrides.hasScript = true; tempOverrides.hasScript = true;
} }
void RecordsDynamicFunctions::SetRecordEnchantmentId(const char* enchantmentId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEnchantmentId(const char* enchantmentId) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -542,7 +542,7 @@ void RecordsDynamicFunctions::SetRecordEnchantmentId(const char* enchantmentId)
tempOverrides.hasEnchantmentId = true; tempOverrides.hasEnchantmentId = true;
} }
void RecordsDynamicFunctions::SetRecordEnchantmentCharge(int enchantmentCharge) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEnchantmentCharge(int enchantmentCharge) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -563,7 +563,7 @@ void RecordsDynamicFunctions::SetRecordEnchantmentCharge(int enchantmentCharge)
tempOverrides.hasEnchantmentCharge = true; tempOverrides.hasEnchantmentCharge = true;
} }
void RecordsDynamicFunctions::SetRecordAutoCalc(int autoCalc) noexcept extern "C" void RecordsDynamicFunctions::SetRecordAutoCalc(int autoCalc) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -593,7 +593,7 @@ void RecordsDynamicFunctions::SetRecordAutoCalc(int autoCalc) noexcept
tempOverrides.hasAutoCalc = true; tempOverrides.hasAutoCalc = true;
} }
void RecordsDynamicFunctions::SetRecordCharge(int charge) noexcept extern "C" void RecordsDynamicFunctions::SetRecordCharge(int charge) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -608,7 +608,7 @@ void RecordsDynamicFunctions::SetRecordCharge(int charge) noexcept
tempOverrides.hasCharge = true; tempOverrides.hasCharge = true;
} }
void RecordsDynamicFunctions::SetRecordCost(int cost) noexcept extern "C" void RecordsDynamicFunctions::SetRecordCost(int cost) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -625,7 +625,7 @@ void RecordsDynamicFunctions::SetRecordCost(int cost) noexcept
tempOverrides.hasCost = true; tempOverrides.hasCost = true;
} }
void RecordsDynamicFunctions::SetRecordFlags(int flags) noexcept extern "C" void RecordsDynamicFunctions::SetRecordFlags(int flags) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -646,7 +646,7 @@ void RecordsDynamicFunctions::SetRecordFlags(int flags) noexcept
tempOverrides.hasFlags = true; tempOverrides.hasFlags = true;
} }
void RecordsDynamicFunctions::SetRecordValue(int value) noexcept extern "C" void RecordsDynamicFunctions::SetRecordValue(int value) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -671,7 +671,7 @@ void RecordsDynamicFunctions::SetRecordValue(int value) noexcept
tempOverrides.hasValue = true; tempOverrides.hasValue = true;
} }
void RecordsDynamicFunctions::SetRecordWeight(double weight) noexcept extern "C" void RecordsDynamicFunctions::SetRecordWeight(double weight) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -696,7 +696,7 @@ void RecordsDynamicFunctions::SetRecordWeight(double weight) noexcept
tempOverrides.hasWeight = true; tempOverrides.hasWeight = true;
} }
void RecordsDynamicFunctions::SetRecordArmorRating(int armorRating) noexcept extern "C" void RecordsDynamicFunctions::SetRecordArmorRating(int armorRating) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -711,7 +711,7 @@ void RecordsDynamicFunctions::SetRecordArmorRating(int armorRating) noexcept
tempOverrides.hasArmorRating = true; tempOverrides.hasArmorRating = true;
} }
void RecordsDynamicFunctions::SetRecordHealth(int health) noexcept extern "C" void RecordsDynamicFunctions::SetRecordHealth(int health) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -732,7 +732,7 @@ void RecordsDynamicFunctions::SetRecordHealth(int health) noexcept
tempOverrides.hasHealth = true; tempOverrides.hasHealth = true;
} }
void RecordsDynamicFunctions::SetRecordDamageChop(unsigned int minDamage, unsigned int maxDamage) noexcept extern "C" void RecordsDynamicFunctions::SetRecordDamageChop(unsigned int minDamage, unsigned int maxDamage) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -750,7 +750,7 @@ void RecordsDynamicFunctions::SetRecordDamageChop(unsigned int minDamage, unsign
tempOverrides.hasDamageChop = true; tempOverrides.hasDamageChop = true;
} }
void RecordsDynamicFunctions::SetRecordDamageSlash(unsigned int minDamage, unsigned int maxDamage) noexcept extern "C" void RecordsDynamicFunctions::SetRecordDamageSlash(unsigned int minDamage, unsigned int maxDamage) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -768,7 +768,7 @@ void RecordsDynamicFunctions::SetRecordDamageSlash(unsigned int minDamage, unsig
tempOverrides.hasDamageSlash = true; tempOverrides.hasDamageSlash = true;
} }
void RecordsDynamicFunctions::SetRecordDamageThrust(unsigned int minDamage, unsigned int maxDamage) noexcept extern "C" void RecordsDynamicFunctions::SetRecordDamageThrust(unsigned int minDamage, unsigned int maxDamage) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -786,7 +786,7 @@ void RecordsDynamicFunctions::SetRecordDamageThrust(unsigned int minDamage, unsi
tempOverrides.hasDamageThrust = true; tempOverrides.hasDamageThrust = true;
} }
void RecordsDynamicFunctions::SetRecordReach(double reach) noexcept extern "C" void RecordsDynamicFunctions::SetRecordReach(double reach) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -801,7 +801,7 @@ void RecordsDynamicFunctions::SetRecordReach(double reach) noexcept
tempOverrides.hasReach = true; tempOverrides.hasReach = true;
} }
void RecordsDynamicFunctions::SetRecordSpeed(double speed) noexcept extern "C" void RecordsDynamicFunctions::SetRecordSpeed(double speed) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -816,7 +816,7 @@ void RecordsDynamicFunctions::SetRecordSpeed(double speed) noexcept
tempOverrides.hasSpeed = true; tempOverrides.hasSpeed = true;
} }
void RecordsDynamicFunctions::SetRecordKeyState(bool keyState) noexcept extern "C" void RecordsDynamicFunctions::SetRecordKeyState(bool keyState) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -831,7 +831,7 @@ void RecordsDynamicFunctions::SetRecordKeyState(bool keyState) noexcept
tempOverrides.hasKeyState = true; tempOverrides.hasKeyState = true;
} }
void RecordsDynamicFunctions::SetRecordScrollState(bool scrollState) noexcept extern "C" void RecordsDynamicFunctions::SetRecordScrollState(bool scrollState) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -846,7 +846,7 @@ void RecordsDynamicFunctions::SetRecordScrollState(bool scrollState) noexcept
tempOverrides.hasScrollState = true; tempOverrides.hasScrollState = true;
} }
void RecordsDynamicFunctions::SetRecordSkillId(int skillId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordSkillId(int skillId) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -861,7 +861,7 @@ void RecordsDynamicFunctions::SetRecordSkillId(int skillId) noexcept
tempOverrides.hasSkillId = true; tempOverrides.hasSkillId = true;
} }
void RecordsDynamicFunctions::SetRecordText(const char* text) noexcept extern "C" void RecordsDynamicFunctions::SetRecordText(const char* text) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -876,7 +876,7 @@ void RecordsDynamicFunctions::SetRecordText(const char* text) noexcept
tempOverrides.hasText = true; tempOverrides.hasText = true;
} }
void RecordsDynamicFunctions::SetRecordHair(const char* hair) noexcept extern "C" void RecordsDynamicFunctions::SetRecordHair(const char* hair) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -891,7 +891,7 @@ void RecordsDynamicFunctions::SetRecordHair(const char* hair) noexcept
tempOverrides.hasHair = true; tempOverrides.hasHair = true;
} }
void RecordsDynamicFunctions::SetRecordHead(const char* head) noexcept extern "C" void RecordsDynamicFunctions::SetRecordHead(const char* head) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -906,7 +906,7 @@ void RecordsDynamicFunctions::SetRecordHead(const char* head) noexcept
tempOverrides.hasHead = true; tempOverrides.hasHead = true;
} }
void RecordsDynamicFunctions::SetRecordGender(unsigned int gender) noexcept extern "C" void RecordsDynamicFunctions::SetRecordGender(unsigned int gender) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -923,7 +923,7 @@ void RecordsDynamicFunctions::SetRecordGender(unsigned int gender) noexcept
tempOverrides.hasGender = true; tempOverrides.hasGender = true;
} }
void RecordsDynamicFunctions::SetRecordRace(const char* race) noexcept extern "C" void RecordsDynamicFunctions::SetRecordRace(const char* race) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -933,7 +933,7 @@ void RecordsDynamicFunctions::SetRecordRace(const char* race) noexcept
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set race for record type %i which lacks that property", writeRecordsType); LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set race for record type %i which lacks that property", writeRecordsType);
} }
void RecordsDynamicFunctions::SetRecordClass(const char* charClass) noexcept extern "C" void RecordsDynamicFunctions::SetRecordClass(const char* charClass) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -943,7 +943,7 @@ void RecordsDynamicFunctions::SetRecordClass(const char* charClass) noexcept
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set character class for record type %i which lacks that property", writeRecordsType); LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set character class for record type %i which lacks that property", writeRecordsType);
} }
void RecordsDynamicFunctions::SetRecordFaction(const char* faction) noexcept extern "C" void RecordsDynamicFunctions::SetRecordFaction(const char* faction) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -958,7 +958,7 @@ void RecordsDynamicFunctions::SetRecordFaction(const char* faction) noexcept
tempOverrides.hasFaction = true; tempOverrides.hasFaction = true;
} }
void RecordsDynamicFunctions::SetRecordLevel(int level) noexcept extern "C" void RecordsDynamicFunctions::SetRecordLevel(int level) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -975,7 +975,7 @@ void RecordsDynamicFunctions::SetRecordLevel(int level) noexcept
tempOverrides.hasLevel = true; tempOverrides.hasLevel = true;
} }
void RecordsDynamicFunctions::SetRecordMagicka(int magicka) noexcept extern "C" void RecordsDynamicFunctions::SetRecordMagicka(int magicka) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -992,7 +992,7 @@ void RecordsDynamicFunctions::SetRecordMagicka(int magicka) noexcept
tempOverrides.hasMagicka = true; tempOverrides.hasMagicka = true;
} }
void RecordsDynamicFunctions::SetRecordFatigue(int fatigue) noexcept extern "C" void RecordsDynamicFunctions::SetRecordFatigue(int fatigue) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1009,7 +1009,7 @@ void RecordsDynamicFunctions::SetRecordFatigue(int fatigue) noexcept
tempOverrides.hasFatigue = true; tempOverrides.hasFatigue = true;
} }
void RecordsDynamicFunctions::SetRecordAIFight(int aiFight) noexcept extern "C" void RecordsDynamicFunctions::SetRecordAIFight(int aiFight) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1026,7 +1026,7 @@ void RecordsDynamicFunctions::SetRecordAIFight(int aiFight) noexcept
tempOverrides.hasAiFight = true; tempOverrides.hasAiFight = true;
} }
void RecordsDynamicFunctions::SetRecordIdByIndex(unsigned int index, const char* id) noexcept extern "C" void RecordsDynamicFunctions::SetRecordIdByIndex(unsigned int index, const char* id) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1048,7 +1048,7 @@ void RecordsDynamicFunctions::SetRecordIdByIndex(unsigned int index, const char*
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set id for record type %i which lacks that property", writeRecordsType); LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set id for record type %i which lacks that property", writeRecordsType);
} }
void RecordsDynamicFunctions::SetRecordEnchantmentIdByIndex(unsigned int index, const char* enchantmentId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEnchantmentIdByIndex(unsigned int index, const char* enchantmentId) noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1064,72 +1064,72 @@ void RecordsDynamicFunctions::SetRecordEnchantmentIdByIndex(unsigned int index,
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set enchantmentId for record type %i which lacks that property", writeRecordsType); LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Tried to set enchantmentId for record type %i which lacks that property", writeRecordsType);
} }
void RecordsDynamicFunctions::SetRecordEffectId(unsigned int effectId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectId(unsigned int effectId) noexcept
{ {
tempEffect.mEffectID = effectId; tempEffect.mEffectID = effectId;
} }
void RecordsDynamicFunctions::SetRecordEffectAttribute(int attributeId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectAttribute(int attributeId) noexcept
{ {
tempEffect.mAttribute = attributeId; tempEffect.mAttribute = attributeId;
} }
void RecordsDynamicFunctions::SetRecordEffectSkill(int skillId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectSkill(int skillId) noexcept
{ {
tempEffect.mSkill = skillId; tempEffect.mSkill = skillId;
} }
void RecordsDynamicFunctions::SetRecordEffectRangeType(unsigned int rangeType) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectRangeType(unsigned int rangeType) noexcept
{ {
tempEffect.mRange = rangeType; tempEffect.mRange = rangeType;
} }
void RecordsDynamicFunctions::SetRecordEffectArea(int area) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectArea(int area) noexcept
{ {
tempEffect.mArea = area; tempEffect.mArea = area;
} }
void RecordsDynamicFunctions::SetRecordEffectDuration(int duration) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectDuration(int duration) noexcept
{ {
tempEffect.mDuration = duration; tempEffect.mDuration = duration;
} }
void RecordsDynamicFunctions::SetRecordEffectMagnitudeMax(int magnitudeMax) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectMagnitudeMax(int magnitudeMax) noexcept
{ {
tempEffect.mMagnMax = magnitudeMax; tempEffect.mMagnMax = magnitudeMax;
} }
void RecordsDynamicFunctions::SetRecordEffectMagnitudeMin(int magnitudeMin) noexcept extern "C" void RecordsDynamicFunctions::SetRecordEffectMagnitudeMin(int magnitudeMin) noexcept
{ {
tempEffect.mMagnMin = magnitudeMin; tempEffect.mMagnMin = magnitudeMin;
} }
void RecordsDynamicFunctions::SetRecordBodyPartType(unsigned int partType) noexcept extern "C" void RecordsDynamicFunctions::SetRecordBodyPartType(unsigned int partType) noexcept
{ {
tempBodyPart.mPart = partType; tempBodyPart.mPart = partType;
} }
void RecordsDynamicFunctions::SetRecordBodyPartIdForMale(const char* partId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordBodyPartIdForMale(const char* partId) noexcept
{ {
tempBodyPart.mMale = partId; tempBodyPart.mMale = partId;
} }
void RecordsDynamicFunctions::SetRecordBodyPartIdForFemale(const char* partId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordBodyPartIdForFemale(const char* partId) noexcept
{ {
tempBodyPart.mFemale = partId; tempBodyPart.mFemale = partId;
} }
void RecordsDynamicFunctions::SetRecordInventoryItemId(const char* itemId) noexcept extern "C" void RecordsDynamicFunctions::SetRecordInventoryItemId(const char* itemId) noexcept
{ {
tempInventoryItem.refId = itemId; tempInventoryItem.refId = itemId;
} }
void RecordsDynamicFunctions::SetRecordInventoryItemCount(unsigned int count) noexcept extern "C" void RecordsDynamicFunctions::SetRecordInventoryItemCount(unsigned int count) noexcept
{ {
tempInventoryItem.count = count; tempInventoryItem.count = count;
} }
void RecordsDynamicFunctions::AddRecord() noexcept extern "C" void RecordsDynamicFunctions::AddRecord() noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1197,7 +1197,7 @@ void RecordsDynamicFunctions::AddRecord() noexcept
tempOverrides = {}; tempOverrides = {};
} }
void RecordsDynamicFunctions::AddRecordEffect() noexcept extern "C" void RecordsDynamicFunctions::AddRecordEffect() noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1212,7 +1212,7 @@ void RecordsDynamicFunctions::AddRecordEffect() noexcept
tempEffect = {}; tempEffect = {};
} }
void RecordsDynamicFunctions::AddRecordBodyPart() noexcept extern "C" void RecordsDynamicFunctions::AddRecordBodyPart() noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1225,7 +1225,7 @@ void RecordsDynamicFunctions::AddRecordBodyPart() noexcept
tempBodyPart = {}; tempBodyPart = {};
} }
void RecordsDynamicFunctions::AddRecordInventoryItem() noexcept extern "C" void RecordsDynamicFunctions::AddRecordInventoryItem() noexcept
{ {
unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType; unsigned short writeRecordsType = WorldstateFunctions::writeWorldstate.recordsType;
@ -1238,7 +1238,7 @@ void RecordsDynamicFunctions::AddRecordInventoryItem() noexcept
tempInventoryItem = {}; tempInventoryItem = {};
} }
void RecordsDynamicFunctions::SendRecordDynamic(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void RecordsDynamicFunctions::SendRecordDynamic(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );

@ -110,16 +110,14 @@
\ \
{"SendRecordDynamic", RecordsDynamicFunctions::SendRecordDynamic} {"SendRecordDynamic", RecordsDynamicFunctions::SendRecordDynamic}
class RecordsDynamicFunctions namespace RecordsDynamicFunctions
{ {
public:
/** /**
* \brief Clear the data from the records stored on the server. * \brief Clear the data from the records stored on the server.
* *
* \return void * \return void
*/ */
static void ClearRecords() noexcept; extern "C" void ClearRecords() noexcept;
/** /**
* \brief Get the type of records in the read worldstate's dynamic records. * \brief Get the type of records in the read worldstate's dynamic records.
@ -127,14 +125,14 @@ public:
* \return The type of records (0 for SPELL, 1 for POTION, 2 for ENCHANTMENT, * \return The type of records (0 for SPELL, 1 for POTION, 2 for ENCHANTMENT,
* 3 for NPC). * 3 for NPC).
*/ */
static unsigned short GetRecordType() noexcept; extern "C" unsigned short GetRecordType() noexcept;
/** /**
* \brief Get the number of records in the read worldstate's dynamic records. * \brief Get the number of records in the read worldstate's dynamic records.
* *
* \return The number of records. * \return The number of records.
*/ */
static unsigned int GetRecordCount() noexcept; extern "C" unsigned int GetRecordCount() noexcept;
/** /**
* \brief Get the number of effects for the record at a certain index in the read * \brief Get the number of effects for the record at a certain index in the read
@ -143,7 +141,7 @@ public:
* \param recordIndex The index of the record. * \param recordIndex The index of the record.
* \return The number of effects. * \return The number of effects.
*/ */
static unsigned int GetRecordEffectCount(unsigned int recordIndex) noexcept; extern "C" unsigned int GetRecordEffectCount(unsigned int recordIndex) noexcept;
/** /**
* \brief Get the id of the record at a certain index in the read worldstate's * \brief Get the id of the record at a certain index in the read worldstate's
@ -152,7 +150,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The id of the record. * \return The id of the record.
*/ */
static const char *GetRecordId(unsigned int index) noexcept; extern "C" const char *GetRecordId(unsigned int index) noexcept;
/** /**
* \brief Get the base id (i.e. the id this record should inherit default * \brief Get the base id (i.e. the id this record should inherit default
@ -162,7 +160,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The base id of the record. * \return The base id of the record.
*/ */
static const char *GetRecordBaseId(unsigned int index) noexcept; extern "C" const char *GetRecordBaseId(unsigned int index) noexcept;
/** /**
* \brief Get the subtype of the record at a certain index in the read worldstate's * \brief Get the subtype of the record at a certain index in the read worldstate's
@ -171,7 +169,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The type of the record. * \return The type of the record.
*/ */
static int GetRecordSubtype(unsigned int index) noexcept; extern "C" int GetRecordSubtype(unsigned int index) noexcept;
/** /**
* \brief Get the name of the record at a certain index in the read worldstate's * \brief Get the name of the record at a certain index in the read worldstate's
@ -180,7 +178,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The name of the record. * \return The name of the record.
*/ */
static const char *GetRecordName(unsigned int index) noexcept; extern "C" const char *GetRecordName(unsigned int index) noexcept;
/** /**
* \brief Get the model of the record at a certain index in the read worldstate's * \brief Get the model of the record at a certain index in the read worldstate's
@ -189,7 +187,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The model of the record. * \return The model of the record.
*/ */
static const char *GetRecordModel(unsigned int index) noexcept; extern "C" const char *GetRecordModel(unsigned int index) noexcept;
/** /**
* \brief Get the icon of the record at a certain index in the read worldstate's * \brief Get the icon of the record at a certain index in the read worldstate's
@ -198,7 +196,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The icon of the record. * \return The icon of the record.
*/ */
static const char *GetRecordIcon(unsigned int index) noexcept; extern "C" const char *GetRecordIcon(unsigned int index) noexcept;
/** /**
* \brief Get the script of the record at a certain index in the read worldstate's * \brief Get the script of the record at a certain index in the read worldstate's
@ -207,7 +205,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The script of the record. * \return The script of the record.
*/ */
static const char *GetRecordScript(unsigned int index) noexcept; extern "C" const char *GetRecordScript(unsigned int index) noexcept;
/** /**
* \brief Get the enchantment id of the record at a certain index in the read * \brief Get the enchantment id of the record at a certain index in the read
@ -216,7 +214,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The enchantment id of the record. * \return The enchantment id of the record.
*/ */
static const char *GetRecordEnchantmentId(unsigned int index) noexcept; extern "C" const char *GetRecordEnchantmentId(unsigned int index) noexcept;
/** /**
* \brief Get the enchantment charge of the record at a certain index in * \brief Get the enchantment charge of the record at a certain index in
@ -225,7 +223,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The enchantment charge of the record. * \return The enchantment charge of the record.
*/ */
static int GetRecordEnchantmentCharge(unsigned int index) noexcept; extern "C" int GetRecordEnchantmentCharge(unsigned int index) noexcept;
/** /**
* \brief Get the auto-calculation flag value of the record at a certain index in * \brief Get the auto-calculation flag value of the record at a certain index in
@ -234,7 +232,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The auto-calculation flag value of the record. * \return The auto-calculation flag value of the record.
*/ */
static int GetRecordAutoCalc(unsigned int index) noexcept; extern "C" int GetRecordAutoCalc(unsigned int index) noexcept;
/** /**
* \brief Get the charge of the record at a certain index in the read worldstate's * \brief Get the charge of the record at a certain index in the read worldstate's
@ -243,7 +241,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The charge of the record. * \return The charge of the record.
*/ */
static int GetRecordCharge(unsigned int index) noexcept; extern "C" int GetRecordCharge(unsigned int index) noexcept;
/** /**
* \brief Get the cost of the record at a certain index in the read worldstate's * \brief Get the cost of the record at a certain index in the read worldstate's
@ -252,7 +250,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The cost of the record. * \return The cost of the record.
*/ */
static int GetRecordCost(unsigned int index) noexcept; extern "C" int GetRecordCost(unsigned int index) noexcept;
/** /**
* \brief Get the flags of the record at a certain index in the read worldstate's * \brief Get the flags of the record at a certain index in the read worldstate's
@ -261,7 +259,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The flags of the spell as an integer. * \return The flags of the spell as an integer.
*/ */
static int GetRecordFlags(unsigned int index) noexcept; extern "C" int GetRecordFlags(unsigned int index) noexcept;
/** /**
* \brief Get the value of the record at a certain index in the read worldstate's * \brief Get the value of the record at a certain index in the read worldstate's
@ -270,7 +268,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The value of the record. * \return The value of the record.
*/ */
static int GetRecordValue(unsigned int index) noexcept; extern "C" int GetRecordValue(unsigned int index) noexcept;
/** /**
* \brief Get the weight of the record at a certain index in the read worldstate's * \brief Get the weight of the record at a certain index in the read worldstate's
@ -279,7 +277,7 @@ public:
* \param index The index of the record. * \param index The index of the record.
* \return The weight of the record. * \return The weight of the record.
*/ */
static double GetRecordWeight(unsigned int index) noexcept; extern "C" double GetRecordWeight(unsigned int index) noexcept;
/** /**
* \brief Get the ID of the effect at a certain index in the read worldstate's * \brief Get the ID of the effect at a certain index in the read worldstate's
@ -289,7 +287,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The ID of the effect. * \return The ID of the effect.
*/ */
static unsigned int GetRecordEffectId(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" unsigned int GetRecordEffectId(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Get the ID of the attribute modified by the effect at a certain index in the * \brief Get the ID of the attribute modified by the effect at a certain index in the
@ -299,7 +297,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The attribute ID for the effect. * \return The attribute ID for the effect.
*/ */
static int GetRecordEffectAttribute(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" int GetRecordEffectAttribute(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Get the ID of the skill modified by the effect at a certain index in the * \brief Get the ID of the skill modified by the effect at a certain index in the
@ -309,7 +307,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The skill ID for the effect. * \return The skill ID for the effect.
*/ */
static int GetRecordEffectSkill(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" int GetRecordEffectSkill(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Get the range type of the effect at a certain index in the read worldstate's * \brief Get the range type of the effect at a certain index in the read worldstate's
@ -319,7 +317,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The range of the effect. * \return The range of the effect.
*/ */
static unsigned int GetRecordEffectRangeType(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" unsigned int GetRecordEffectRangeType(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Get the area of the effect at a certain index in the read worldstate's current * \brief Get the area of the effect at a certain index in the read worldstate's current
@ -329,7 +327,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The area of the effect. * \return The area of the effect.
*/ */
static int GetRecordEffectArea(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" int GetRecordEffectArea(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Get the duration of the effect at a certain index in the read worldstate's current * \brief Get the duration of the effect at a certain index in the read worldstate's current
@ -339,7 +337,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The duration of the effect. * \return The duration of the effect.
*/ */
static int GetRecordEffectDuration(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" int GetRecordEffectDuration(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Get the maximum magnitude of the effect at a certain index in the read * \brief Get the maximum magnitude of the effect at a certain index in the read
@ -349,7 +347,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The maximum magnitude of the effect. * \return The maximum magnitude of the effect.
*/ */
static int GetRecordEffectMagnitudeMax(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" int GetRecordEffectMagnitudeMax(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Get the minimum magnitude of the effect at a certain index in the read * \brief Get the minimum magnitude of the effect at a certain index in the read
@ -359,7 +357,7 @@ public:
* \param effectIndex The index of the effect. * \param effectIndex The index of the effect.
* \return The minimum magnitude of the effect. * \return The minimum magnitude of the effect.
*/ */
static int GetRecordEffectMagnitudeMin(unsigned int recordIndex, unsigned int effectIndex) noexcept; extern "C" int GetRecordEffectMagnitudeMin(unsigned int recordIndex, unsigned int effectIndex) noexcept;
/** /**
* \brief Set which type of temporary records stored on the server should have * \brief Set which type of temporary records stored on the server should have
@ -368,7 +366,7 @@ public:
* \param type The type of records. * \param type The type of records.
* \return void * \return void
*/ */
static void SetRecordType(unsigned int type) noexcept; extern "C" void SetRecordType(unsigned int type) noexcept;
/** /**
* \brief Set the id of the temporary record stored on the server for the * \brief Set the id of the temporary record stored on the server for the
@ -377,7 +375,7 @@ public:
* \param id The id of the record. * \param id The id of the record.
* \return void * \return void
*/ */
static void SetRecordId(const char* id) noexcept; extern "C" void SetRecordId(const char* id) noexcept;
/** /**
* \brief Set the base id (i.e. the id this record should inherit default * \brief Set the base id (i.e. the id this record should inherit default
@ -387,7 +385,7 @@ public:
* \param baseId The baseId of the record. * \param baseId The baseId of the record.
* \return void * \return void
*/ */
static void SetRecordBaseId(const char* baseId) noexcept; extern "C" void SetRecordBaseId(const char* baseId) noexcept;
/** /**
* \brief Set the inventory base id (i.e. the id this record should inherit * \brief Set the inventory base id (i.e. the id this record should inherit
@ -397,7 +395,7 @@ public:
* \param inventoryBaseId The inventoryBaseId of the record. * \param inventoryBaseId The inventoryBaseId of the record.
* \return void * \return void
*/ */
static void SetRecordInventoryBaseId(const char* inventoryBaseId) noexcept; extern "C" void SetRecordInventoryBaseId(const char* inventoryBaseId) noexcept;
/** /**
* \brief Set the subtype of the temporary record stored on the server for * \brief Set the subtype of the temporary record stored on the server for
@ -406,7 +404,7 @@ public:
* \param type The spell type. * \param type The spell type.
* \return void * \return void
*/ */
static void SetRecordSubtype(unsigned int subtype) noexcept; extern "C" void SetRecordSubtype(unsigned int subtype) noexcept;
/** /**
* \brief Set the name of the temporary record stored on the server for the * \brief Set the name of the temporary record stored on the server for the
@ -415,7 +413,7 @@ public:
* \param name The name of the record. * \param name The name of the record.
* \return void * \return void
*/ */
static void SetRecordName(const char* name) noexcept; extern "C" void SetRecordName(const char* name) noexcept;
/** /**
* \brief Set the model of the temporary record stored on the server for the * \brief Set the model of the temporary record stored on the server for the
@ -424,7 +422,7 @@ public:
* \param model The model of the record. * \param model The model of the record.
* \return void * \return void
*/ */
static void SetRecordModel(const char* model) noexcept; extern "C" void SetRecordModel(const char* model) noexcept;
/** /**
* \brief Set the icon of the temporary record stored on the server for the * \brief Set the icon of the temporary record stored on the server for the
@ -433,7 +431,7 @@ public:
* \param icon The icon of the record. * \param icon The icon of the record.
* \return void * \return void
*/ */
static void SetRecordIcon(const char* icon) noexcept; extern "C" void SetRecordIcon(const char* icon) noexcept;
/** /**
* \brief Set the script of the temporary record stored on the server for the * \brief Set the script of the temporary record stored on the server for the
@ -442,7 +440,7 @@ public:
* \param script The script of the record. * \param script The script of the record.
* \return void * \return void
*/ */
static void SetRecordScript(const char* script) noexcept; extern "C" void SetRecordScript(const char* script) noexcept;
/** /**
* \brief Set the enchantment id of the temporary record stored on the server * \brief Set the enchantment id of the temporary record stored on the server
@ -451,7 +449,7 @@ public:
* \param enchantmentId The enchantment id of the record. * \param enchantmentId The enchantment id of the record.
* \return void * \return void
*/ */
static void SetRecordEnchantmentId(const char* enchantmentId) noexcept; extern "C" void SetRecordEnchantmentId(const char* enchantmentId) noexcept;
/** /**
* \brief Set the enchantment charge of the temporary record stored on the server * \brief Set the enchantment charge of the temporary record stored on the server
@ -460,7 +458,7 @@ public:
* \param enchantmentCharge The enchantmentCharge of the record. * \param enchantmentCharge The enchantmentCharge of the record.
* \return void * \return void
*/ */
static void SetRecordEnchantmentCharge(int enchantmentCharge) noexcept; extern "C" void SetRecordEnchantmentCharge(int enchantmentCharge) noexcept;
/** /**
* \brief Set the auto-calculation flag value of the temporary record stored * \brief Set the auto-calculation flag value of the temporary record stored
@ -469,7 +467,7 @@ public:
* \param autoCalc The auto-calculation flag value of the record. * \param autoCalc The auto-calculation flag value of the record.
* \return void * \return void
*/ */
static void SetRecordAutoCalc(int autoCalc) noexcept; extern "C" void SetRecordAutoCalc(int autoCalc) noexcept;
/** /**
* \brief Set the charge of the temporary record stored on the server for the * \brief Set the charge of the temporary record stored on the server for the
@ -478,7 +476,7 @@ public:
* \param charge The charge of the record. * \param charge The charge of the record.
* \return void * \return void
*/ */
static void SetRecordCharge(int charge) noexcept; extern "C" void SetRecordCharge(int charge) noexcept;
/** /**
* \brief Set the cost of the temporary record stored on the server for the * \brief Set the cost of the temporary record stored on the server for the
@ -487,7 +485,7 @@ public:
* \param cost The cost of the record. * \param cost The cost of the record.
* \return void * \return void
*/ */
static void SetRecordCost(int cost) noexcept; extern "C" void SetRecordCost(int cost) noexcept;
/** /**
* \brief Set the flags of the temporary record stored on the server for the * \brief Set the flags of the temporary record stored on the server for the
@ -496,7 +494,7 @@ public:
* \param flags The flags of the record. * \param flags The flags of the record.
* \return void * \return void
*/ */
static void SetRecordFlags(int flags) noexcept; extern "C" void SetRecordFlags(int flags) noexcept;
/** /**
* \brief Set the value of the temporary record stored on the server for the * \brief Set the value of the temporary record stored on the server for the
@ -505,7 +503,7 @@ public:
* \param value The value of the record. * \param value The value of the record.
* \return void * \return void
*/ */
static void SetRecordValue(int value) noexcept; extern "C" void SetRecordValue(int value) noexcept;
/** /**
* \brief Set the weight of the temporary record stored on the server for the * \brief Set the weight of the temporary record stored on the server for the
@ -514,7 +512,7 @@ public:
* \param weight The weight of the record. * \param weight The weight of the record.
* \return void * \return void
*/ */
static void SetRecordWeight(double weight) noexcept; extern "C" void SetRecordWeight(double weight) noexcept;
/** /**
* \brief Set the armor rating of the temporary record stored on the server * \brief Set the armor rating of the temporary record stored on the server
@ -523,7 +521,7 @@ public:
* \param armorRating The armor rating of the record. * \param armorRating The armor rating of the record.
* \return void * \return void
*/ */
static void SetRecordArmorRating(int armorRating) noexcept; extern "C" void SetRecordArmorRating(int armorRating) noexcept;
/** /**
* \brief Set the health of the temporary record stored on the server for the * \brief Set the health of the temporary record stored on the server for the
@ -532,7 +530,7 @@ public:
* \param health The health of the record. * \param health The health of the record.
* \return void * \return void
*/ */
static void SetRecordHealth(int health) noexcept; extern "C" void SetRecordHealth(int health) noexcept;
/** /**
* \brief Set the chop damage of the temporary record stored on the server for the * \brief Set the chop damage of the temporary record stored on the server for the
@ -542,7 +540,7 @@ public:
* \param maxDamage The maximum damage of the record. * \param maxDamage The maximum damage of the record.
* \return void * \return void
*/ */
static void SetRecordDamageChop(unsigned int minDamage, unsigned int maxDamage) noexcept; extern "C" void SetRecordDamageChop(unsigned int minDamage, unsigned int maxDamage) noexcept;
/** /**
* \brief Set the slash damage of the temporary record stored on the server for the * \brief Set the slash damage of the temporary record stored on the server for the
@ -552,7 +550,7 @@ public:
* \param maxDamage The maximum damage of the record. * \param maxDamage The maximum damage of the record.
* \return void * \return void
*/ */
static void SetRecordDamageSlash(unsigned int minDamage, unsigned int maxDamage) noexcept; extern "C" void SetRecordDamageSlash(unsigned int minDamage, unsigned int maxDamage) noexcept;
/** /**
* \brief Set the thrust damage of the temporary record stored on the server for the * \brief Set the thrust damage of the temporary record stored on the server for the
@ -562,7 +560,7 @@ public:
* \param maxDamage The maximum damage of the record. * \param maxDamage The maximum damage of the record.
* \return void * \return void
*/ */
static void SetRecordDamageThrust(unsigned int minDamage, unsigned int maxDamage) noexcept; extern "C" void SetRecordDamageThrust(unsigned int minDamage, unsigned int maxDamage) noexcept;
/** /**
* \brief Set the reach of the temporary record stored on the server for the * \brief Set the reach of the temporary record stored on the server for the
@ -571,7 +569,7 @@ public:
* \param reach The reach of the record. * \param reach The reach of the record.
* \return void * \return void
*/ */
static void SetRecordReach(double reach) noexcept; extern "C" void SetRecordReach(double reach) noexcept;
/** /**
* \brief Set the speed of the temporary record stored on the server for the * \brief Set the speed of the temporary record stored on the server for the
@ -580,7 +578,7 @@ public:
* \param speed The speed of the record. * \param speed The speed of the record.
* \return void * \return void
*/ */
static void SetRecordSpeed(double speed) noexcept; extern "C" void SetRecordSpeed(double speed) noexcept;
/** /**
* \brief Set whether the temporary record stored on the server for the * \brief Set whether the temporary record stored on the server for the
@ -591,7 +589,7 @@ public:
* \param keyState Whether the record is a key. * \param keyState Whether the record is a key.
* \return void * \return void
*/ */
static void SetRecordKeyState(bool keyState) noexcept; extern "C" void SetRecordKeyState(bool keyState) noexcept;
/** /**
* \brief Set whether the temporary record stored on the server for the * \brief Set whether the temporary record stored on the server for the
@ -602,7 +600,7 @@ public:
* \param scrollState Whether the record is a scroll. * \param scrollState Whether the record is a scroll.
* \return void * \return void
*/ */
static void SetRecordScrollState(bool scrollState) noexcept; extern "C" void SetRecordScrollState(bool scrollState) noexcept;
/** /**
* \brief Set the skill ID of the temporary record stored on the server for the * \brief Set the skill ID of the temporary record stored on the server for the
@ -611,7 +609,7 @@ public:
* \param skillId The skill ID of the record. * \param skillId The skill ID of the record.
* \return void * \return void
*/ */
static void SetRecordSkillId(int skillId) noexcept; extern "C" void SetRecordSkillId(int skillId) noexcept;
/** /**
* \brief Set the text of the temporary record stored on the server for the * \brief Set the text of the temporary record stored on the server for the
@ -620,7 +618,7 @@ public:
* \param text The text of the record. * \param text The text of the record.
* \return void * \return void
*/ */
static void SetRecordText(const char* text) noexcept; extern "C" void SetRecordText(const char* text) noexcept;
/** /**
* \brief Set the hair of the temporary record stored on the server for the * \brief Set the hair of the temporary record stored on the server for the
@ -629,7 +627,7 @@ public:
* \param hair The hair of the record. * \param hair The hair of the record.
* \return void * \return void
*/ */
static void SetRecordHair(const char* hair) noexcept; extern "C" void SetRecordHair(const char* hair) noexcept;
/** /**
* \brief Set the head of the temporary record stored on the server for the * \brief Set the head of the temporary record stored on the server for the
@ -638,7 +636,7 @@ public:
* \param hair The head of the record. * \param hair The head of the record.
* \return void * \return void
*/ */
static void SetRecordHead(const char* head) noexcept; extern "C" void SetRecordHead(const char* head) noexcept;
/** /**
* \brief Set the gender of the temporary record stored on the server for the * \brief Set the gender of the temporary record stored on the server for the
@ -647,7 +645,7 @@ public:
* \param hair The race of the record. * \param hair The race of the record.
* \return void * \return void
*/ */
static void SetRecordGender(unsigned int gender) noexcept; extern "C" void SetRecordGender(unsigned int gender) noexcept;
/** /**
* \brief Set the race of the temporary record stored on the server for the * \brief Set the race of the temporary record stored on the server for the
@ -656,7 +654,7 @@ public:
* \param hair The race of the record. * \param hair The race of the record.
* \return void * \return void
*/ */
static void SetRecordRace(const char* race) noexcept; extern "C" void SetRecordRace(const char* race) noexcept;
/** /**
* \brief Set the character class of the temporary record stored on the server * \brief Set the character class of the temporary record stored on the server
@ -665,7 +663,7 @@ public:
* \param hair The character class of the record. * \param hair The character class of the record.
* \return void * \return void
*/ */
static void SetRecordClass(const char* charClass) noexcept; extern "C" void SetRecordClass(const char* charClass) noexcept;
/** /**
* \brief Set the faction of the temporary record stored on the server for the * \brief Set the faction of the temporary record stored on the server for the
@ -674,7 +672,7 @@ public:
* \param faction The faction of the record. * \param faction The faction of the record.
* \return void * \return void
*/ */
static void SetRecordFaction(const char* faction) noexcept; extern "C" void SetRecordFaction(const char* faction) noexcept;
/** /**
* \brief Set the level of the temporary record stored on the server for the * \brief Set the level of the temporary record stored on the server for the
@ -683,7 +681,7 @@ public:
* \param level The level of the record. * \param level The level of the record.
* \return void * \return void
*/ */
static void SetRecordLevel(int level) noexcept; extern "C" void SetRecordLevel(int level) noexcept;
/** /**
* \brief Set the magicka of the temporary record stored on the server for the * \brief Set the magicka of the temporary record stored on the server for the
@ -692,7 +690,7 @@ public:
* \param magicka The magicka of the record. * \param magicka The magicka of the record.
* \return void * \return void
*/ */
static void SetRecordMagicka(int magicka) noexcept; extern "C" void SetRecordMagicka(int magicka) noexcept;
/** /**
* \brief Set the fatigue of the temporary record stored on the server for the * \brief Set the fatigue of the temporary record stored on the server for the
@ -701,7 +699,7 @@ public:
* \param fatigue The fatigue of the record. * \param fatigue The fatigue of the record.
* \return void * \return void
*/ */
static void SetRecordFatigue(int fatigue) noexcept; extern "C" void SetRecordFatigue(int fatigue) noexcept;
/** /**
* \brief Set the AI fight value of the temporary record stored on the server for the * \brief Set the AI fight value of the temporary record stored on the server for the
@ -710,7 +708,7 @@ public:
* \param aiFight The AI fight value of the record. * \param aiFight The AI fight value of the record.
* \return void * \return void
*/ */
static void SetRecordAIFight(int aiFight) noexcept; extern "C" void SetRecordAIFight(int aiFight) noexcept;
/** /**
* \brief Set the id of the record at a certain index in the records stored on the server. * \brief Set the id of the record at a certain index in the records stored on the server.
@ -722,7 +720,7 @@ public:
* \param id The id of the record. * \param id The id of the record.
* \return void * \return void
*/ */
static void SetRecordIdByIndex(unsigned int index, const char* id) noexcept; extern "C" void SetRecordIdByIndex(unsigned int index, const char* id) noexcept;
/** /**
* \brief Set the enchantment id of the record at a certain index in the records stored on * \brief Set the enchantment id of the record at a certain index in the records stored on
@ -735,7 +733,7 @@ public:
* \param enchantmentId The enchantment id of the record. * \param enchantmentId The enchantment id of the record.
* \return void * \return void
*/ */
static void SetRecordEnchantmentIdByIndex(unsigned int index, const char* enchantmentId) noexcept; extern "C" void SetRecordEnchantmentIdByIndex(unsigned int index, const char* enchantmentId) noexcept;
/** /**
* \brief Set the ID of the temporary effect stored on the server. * \brief Set the ID of the temporary effect stored on the server.
@ -743,7 +741,7 @@ public:
* \param effectId The ID of the effect. * \param effectId The ID of the effect.
* \return void * \return void
*/ */
static void SetRecordEffectId(unsigned int effectId) noexcept; extern "C" void SetRecordEffectId(unsigned int effectId) noexcept;
/** /**
* \brief Set the ID of the attribute modified by the temporary effect stored on * \brief Set the ID of the attribute modified by the temporary effect stored on
@ -752,7 +750,7 @@ public:
* \param attributeId The ID of the attribute. * \param attributeId The ID of the attribute.
* \return void * \return void
*/ */
static void SetRecordEffectAttribute(int attributeId) noexcept; extern "C" void SetRecordEffectAttribute(int attributeId) noexcept;
/** /**
* \brief Set the ID of the skill modified by the temporary effect stored on the * \brief Set the ID of the skill modified by the temporary effect stored on the
@ -761,7 +759,7 @@ public:
* \param skillId The ID of the skill. * \param skillId The ID of the skill.
* \return void * \return void
*/ */
static void SetRecordEffectSkill(int skillId) noexcept; extern "C" void SetRecordEffectSkill(int skillId) noexcept;
/** /**
* \brief Set the range type of the temporary effect stored on the server (0 for * \brief Set the range type of the temporary effect stored on the server (0 for
@ -770,7 +768,7 @@ public:
* \param rangeType The range type of the effect. * \param rangeType The range type of the effect.
* \return void * \return void
*/ */
static void SetRecordEffectRangeType(unsigned int rangeType) noexcept; extern "C" void SetRecordEffectRangeType(unsigned int rangeType) noexcept;
/** /**
* \brief Set the area of the temporary effect stored on the server. * \brief Set the area of the temporary effect stored on the server.
@ -778,7 +776,7 @@ public:
* \param area The area of the effect. * \param area The area of the effect.
* \return void * \return void
*/ */
static void SetRecordEffectArea(int area) noexcept; extern "C" void SetRecordEffectArea(int area) noexcept;
/** /**
* \brief Set the duration of the temporary effect stored on the server. * \brief Set the duration of the temporary effect stored on the server.
@ -786,7 +784,7 @@ public:
* \param duration The duration of the effect. * \param duration The duration of the effect.
* \return void * \return void
*/ */
static void SetRecordEffectDuration(int duration) noexcept; extern "C" void SetRecordEffectDuration(int duration) noexcept;
/** /**
* \brief Set the maximum magnitude of the temporary effect stored on the server. * \brief Set the maximum magnitude of the temporary effect stored on the server.
@ -794,7 +792,7 @@ public:
* \param magnitudeMax The maximum magnitude of the effect. * \param magnitudeMax The maximum magnitude of the effect.
* \return void * \return void
*/ */
static void SetRecordEffectMagnitudeMax(int magnitudeMax) noexcept; extern "C" void SetRecordEffectMagnitudeMax(int magnitudeMax) noexcept;
/** /**
* \brief Set the minimum magnitude of the temporary effect stored on the server. * \brief Set the minimum magnitude of the temporary effect stored on the server.
@ -802,7 +800,7 @@ public:
* \param magnitudeMin The minimum magnitude of the effect. * \param magnitudeMin The minimum magnitude of the effect.
* \return void * \return void
*/ */
static void SetRecordEffectMagnitudeMin(int magnitudeMin) noexcept; extern "C" void SetRecordEffectMagnitudeMin(int magnitudeMin) noexcept;
/** /**
* \brief Set the type of the temporary body part stored on the server. * \brief Set the type of the temporary body part stored on the server.
@ -810,7 +808,7 @@ public:
* \param partType The type of the body part. * \param partType The type of the body part.
* \return void * \return void
*/ */
static void SetRecordBodyPartType(unsigned int partType) noexcept; extern "C" void SetRecordBodyPartType(unsigned int partType) noexcept;
/** /**
* \brief Set the id of the male version of the temporary body part stored on the * \brief Set the id of the male version of the temporary body part stored on the
@ -819,7 +817,7 @@ public:
* \param partId The id of the body part. * \param partId The id of the body part.
* \return void * \return void
*/ */
static void SetRecordBodyPartIdForMale(const char* partId) noexcept; extern "C" void SetRecordBodyPartIdForMale(const char* partId) noexcept;
/** /**
* \brief Set the id of the female version of the temporary body part stored on the * \brief Set the id of the female version of the temporary body part stored on the
@ -828,7 +826,7 @@ public:
* \param partId The id of the body part. * \param partId The id of the body part.
* \return void * \return void
*/ */
static void SetRecordBodyPartIdForFemale(const char* partId) noexcept; extern "C" void SetRecordBodyPartIdForFemale(const char* partId) noexcept;
/** /**
* \brief Set the id of the of the temporary inventory item stored on the server. * \brief Set the id of the of the temporary inventory item stored on the server.
@ -836,7 +834,7 @@ public:
* \param partId The id of the inventory item. * \param partId The id of the inventory item.
* \return void * \return void
*/ */
static void SetRecordInventoryItemId(const char* itemId) noexcept; extern "C" void SetRecordInventoryItemId(const char* itemId) noexcept;
/** /**
* \brief Set the count of the of the temporary inventory item stored on the server. * \brief Set the count of the of the temporary inventory item stored on the server.
@ -844,7 +842,7 @@ public:
* \param count The count of the inventory item. * \param count The count of the inventory item.
* \return void * \return void
*/ */
static void SetRecordInventoryItemCount(unsigned int count) noexcept; extern "C" void SetRecordInventoryItemCount(unsigned int count) noexcept;
/** /**
* \brief Add a copy of the server's temporary record of the current specified * \brief Add a copy of the server's temporary record of the current specified
@ -855,7 +853,7 @@ public:
* *
* \return void * \return void
*/ */
static void AddRecord() noexcept; extern "C" void AddRecord() noexcept;
/** /**
* \brief Add a copy of the server's temporary effect to the temporary record * \brief Add a copy of the server's temporary effect to the temporary record
@ -866,7 +864,7 @@ public:
* *
* \return void * \return void
*/ */
static void AddRecordEffect() noexcept; extern "C" void AddRecordEffect() noexcept;
/** /**
* \brief Add a copy of the server's temporary body part to the temporary record * \brief Add a copy of the server's temporary body part to the temporary record
@ -877,7 +875,7 @@ public:
* *
* \return void * \return void
*/ */
static void AddRecordBodyPart() noexcept; extern "C" void AddRecordBodyPart() noexcept;
/** /**
* \brief Add a copy of the server's temporary inventory item to the temporary record * \brief Add a copy of the server's temporary inventory item to the temporary record
@ -891,7 +889,7 @@ public:
* *
* \return void * \return void
*/ */
static void AddRecordInventoryItem() noexcept; extern "C" void AddRecordInventoryItem() noexcept;
/** /**
* \brief Send a RecordDynamic packet with the current specified record type. * \brief Send a RecordDynamic packet with the current specified record type.
@ -903,8 +901,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendRecordDynamic(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendRecordDynamic(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
}
};
#endif //OPENMW_RECORDSDYNAMICAPI_HPP #endif //OPENMW_RECORDSDYNAMICAPI_HPP

@ -10,12 +10,12 @@
#include <Script/Script.hpp> #include <Script/Script.hpp>
void ServerFunctions::StopServer(int code) noexcept extern "C" void ServerFunctions::StopServer(int code) noexcept
{ {
mwmp::Networking::getPtr()->stopServer(code); mwmp::Networking::getPtr()->stopServer(code);
} }
void ServerFunctions::Kick(unsigned short pid) noexcept extern "C" void ServerFunctions::Kick(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -25,45 +25,45 @@ void ServerFunctions::Kick(unsigned short pid) noexcept
player->setLoadState(Player::KICKED); player->setLoadState(Player::KICKED);
} }
void ServerFunctions::BanAddress(const char *ipAddress) noexcept extern "C" void ServerFunctions::BanAddress(const char *ipAddress) noexcept
{ {
mwmp::Networking::getPtr()->banAddress(ipAddress); mwmp::Networking::getPtr()->banAddress(ipAddress);
} }
void ServerFunctions::UnbanAddress(const char *ipAddress) noexcept extern "C" void ServerFunctions::UnbanAddress(const char *ipAddress) noexcept
{ {
mwmp::Networking::getPtr()->unbanAddress(ipAddress); mwmp::Networking::getPtr()->unbanAddress(ipAddress);
} }
const char *ServerFunctions::GetOperatingSystemType() noexcept extern "C" const char *ServerFunctions::GetOperatingSystemType() noexcept
{ {
return Utils::getOperatingSystemType().c_str(); return Utils::getOperatingSystemType().c_str();
} }
const char *ServerFunctions::GetArchitectureType() noexcept extern "C" const char *ServerFunctions::GetArchitectureType() noexcept
{ {
return Utils::getArchitectureType().c_str(); return Utils::getArchitectureType().c_str();
} }
const char *ServerFunctions::GetServerVersion() noexcept extern "C" const char *ServerFunctions::GetServerVersion() noexcept
{ {
return TES3MP_VERSION; return TES3MP_VERSION;
} }
const char *ServerFunctions::GetProtocolVersion() noexcept extern "C" const char *ServerFunctions::GetProtocolVersion() noexcept
{ {
static std::string version = std::to_string(TES3MP_PROTO_VERSION); static std::string version = std::to_string(TES3MP_PROTO_VERSION);
return version.c_str(); return version.c_str();
} }
int ServerFunctions::GetAvgPing(unsigned short pid) noexcept extern "C" int ServerFunctions::GetAvgPing(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, -1); GET_PLAYER(pid, player, -1);
return mwmp::Networking::get().getAvgPing(player->guid); return mwmp::Networking::get().getAvgPing(player->guid);
} }
const char *ServerFunctions::GetIP(unsigned short pid) noexcept extern "C" const char *ServerFunctions::GetIP(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -71,73 +71,73 @@ const char *ServerFunctions::GetIP(unsigned short pid) noexcept
return addr.ToString(false); return addr.ToString(false);
} }
unsigned short ServerFunctions::GetPort() noexcept extern "C" unsigned short ServerFunctions::GetPort() noexcept
{ {
return mwmp::Networking::get().getPort(); return mwmp::Networking::get().getPort();
} }
unsigned int ServerFunctions::GetMaxPlayers() noexcept extern "C" unsigned int ServerFunctions::GetMaxPlayers() noexcept
{ {
return mwmp::Networking::get().maxConnections(); return mwmp::Networking::get().maxConnections();
} }
bool ServerFunctions::HasPassword() noexcept extern "C" bool ServerFunctions::HasPassword() noexcept
{ {
return mwmp::Networking::get().isPassworded(); return mwmp::Networking::get().isPassworded();
} }
bool ServerFunctions::GetPluginEnforcementState() noexcept extern "C" bool ServerFunctions::GetPluginEnforcementState() noexcept
{ {
return mwmp::Networking::getPtr()->getPluginEnforcementState(); return mwmp::Networking::getPtr()->getPluginEnforcementState();
} }
bool ServerFunctions::GetScriptErrorIgnoringState() noexcept extern "C" bool ServerFunctions::GetScriptErrorIgnoringState() noexcept
{ {
return mwmp::Networking::getPtr()->getScriptErrorIgnoringState(); return mwmp::Networking::getPtr()->getScriptErrorIgnoringState();
} }
void ServerFunctions::SetGameMode(const char *gameMode) noexcept extern "C" void ServerFunctions::SetGameMode(const char *gameMode) noexcept
{ {
if (mwmp::Networking::getPtr()->getMasterClient()) if (mwmp::Networking::getPtr()->getMasterClient())
mwmp::Networking::getPtr()->getMasterClient()->SetModname(gameMode); mwmp::Networking::getPtr()->getMasterClient()->SetModname(gameMode);
} }
void ServerFunctions::SetHostname(const char *name) noexcept extern "C" void ServerFunctions::SetHostname(const char *name) noexcept
{ {
if (mwmp::Networking::getPtr()->getMasterClient()) if (mwmp::Networking::getPtr()->getMasterClient())
mwmp::Networking::getPtr()->getMasterClient()->SetHostname(name); mwmp::Networking::getPtr()->getMasterClient()->SetHostname(name);
} }
void ServerFunctions::SetServerPassword(const char *password) noexcept extern "C" void ServerFunctions::SetServerPassword(const char *password) noexcept
{ {
mwmp::Networking::getPtr()->setServerPassword(password); mwmp::Networking::getPtr()->setServerPassword(password);
} }
void ServerFunctions::SetPluginEnforcementState(bool state) noexcept extern "C" void ServerFunctions::SetPluginEnforcementState(bool state) noexcept
{ {
mwmp::Networking::getPtr()->setPluginEnforcementState(state); mwmp::Networking::getPtr()->setPluginEnforcementState(state);
} }
void ServerFunctions::SetScriptErrorIgnoringState(bool state) noexcept extern "C" void ServerFunctions::SetScriptErrorIgnoringState(bool state) noexcept
{ {
mwmp::Networking::getPtr()->setScriptErrorIgnoringState(state); mwmp::Networking::getPtr()->setScriptErrorIgnoringState(state);
} }
void ServerFunctions::SetRuleString(const char *key, const char *value) noexcept extern "C" void ServerFunctions::SetRuleString(const char *key, const char *value) noexcept
{ {
auto mc = mwmp::Networking::getPtr()->getMasterClient(); auto mc = mwmp::Networking::getPtr()->getMasterClient();
if (mc) if (mc)
mc->SetRuleString(key, value); mc->SetRuleString(key, value);
} }
void ServerFunctions::SetRuleValue(const char *key, double value) noexcept extern "C" void ServerFunctions::SetRuleValue(const char *key, double value) noexcept
{ {
auto mc = mwmp::Networking::getPtr()->getMasterClient(); auto mc = mwmp::Networking::getPtr()->getMasterClient();
if (mc) if (mc)
mc->SetRuleValue(key, value); mc->SetRuleValue(key, value);
} }
void ServerFunctions::AddPluginHash(const char *pluginName, const char *hashStr) noexcept extern "C" void ServerFunctions::AddPluginHash(const char *pluginName, const char *hashStr) noexcept
{ {
auto &samples = mwmp::Networking::getPtr()->getSamples(); auto &samples = mwmp::Networking::getPtr()->getSamples();
auto it = std::find_if(samples.begin(), samples.end(), [&pluginName](mwmp::PacketPreInit::PluginPair &item) { auto it = std::find_if(samples.begin(), samples.end(), [&pluginName](mwmp::PacketPreInit::PluginPair &item) {
@ -164,7 +164,7 @@ void ServerFunctions::AddPluginHash(const char *pluginName, const char *hashStr)
} }
} }
const char* ServerFunctions::GetModDir() noexcept extern "C" const char* ServerFunctions::GetModDir() noexcept
{ {
return Script::GetModDir(); return Script::GetModDir();
} }

@ -32,17 +32,15 @@
{"AddPluginHash", ServerFunctions::AddPluginHash},\ {"AddPluginHash", ServerFunctions::AddPluginHash},\
{"GetModDir", ServerFunctions::GetModDir} {"GetModDir", ServerFunctions::GetModDir}
class ServerFunctions namespace ServerFunctions
{ {
public:
/** /**
* \brief Shut down the server. * \brief Shut down the server.
* *
* \param code The shutdown code. * \param code The shutdown code.
* \return void * \return void
*/ */
static void StopServer(int code) noexcept; extern "C" void StopServer(int code) noexcept;
/** /**
* \brief Kick a certain player from the server. * \brief Kick a certain player from the server.
@ -50,7 +48,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void Kick(unsigned short pid) noexcept; extern "C" void Kick(unsigned short pid) noexcept;
/** /**
* \brief Ban a certain IP address from the server. * \brief Ban a certain IP address from the server.
@ -58,7 +56,7 @@ public:
* \param ipAddress The IP address. * \param ipAddress The IP address.
* \return void * \return void
*/ */
static void BanAddress(const char *ipAddress) noexcept; extern "C" void BanAddress(const char *ipAddress) noexcept;
/** /**
* \brief Unban a certain IP address from the server. * \brief Unban a certain IP address from the server.
@ -66,7 +64,7 @@ public:
* \param ipAddress The IP address. * \param ipAddress The IP address.
* \return void * \return void
*/ */
static void UnbanAddress(const char *ipAddress) noexcept; extern "C" void UnbanAddress(const char *ipAddress) noexcept;
/** /**
* \brief Get the type of the operating system used by the server. * \brief Get the type of the operating system used by the server.
@ -91,14 +89,14 @@ public:
* *
* \return The server version. * \return The server version.
*/ */
static const char *GetServerVersion() noexcept; extern "C" const char *GetServerVersion() noexcept;
/** /**
* \brief Get the protocol version of the server. * \brief Get the protocol version of the server.
* *
* \return The protocol version. * \return The protocol version.
*/ */
static const char *GetProtocolVersion() noexcept; extern "C" const char *GetProtocolVersion() noexcept;
/** /**
* \brief Get the average ping of a certain player. * \brief Get the average ping of a certain player.
@ -106,7 +104,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The average ping. * \return The average ping.
*/ */
static int GetAvgPing(unsigned short pid) noexcept; extern "C" int GetAvgPing(unsigned short pid) noexcept;
/** /**
* \brief Get the IP address of a certain player. * \brief Get the IP address of a certain player.
@ -114,28 +112,28 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The IP address. * \return The IP address.
*/ */
static const char* GetIP(unsigned short pid) noexcept; extern "C" const char* GetIP(unsigned short pid) noexcept;
/** /**
* \brief Get the port used by the server. * \brief Get the port used by the server.
* *
* \return Port * \return Port
*/ */
static unsigned short GetPort() noexcept; extern "C" unsigned short GetPort() noexcept;
/** /**
* \brief Get the maximum number of players. * \brief Get the maximum number of players.
* *
* \return Max players * \return Max players
*/ */
static unsigned int GetMaxPlayers() noexcept; extern "C" unsigned int GetMaxPlayers() noexcept;
/** /**
* \brief Checking if the server requires a password to connect. * \brief Checking if the server requires a password to connect.
* *
* @return * @return
*/ */
static bool HasPassword() noexcept; extern "C" bool HasPassword() noexcept;
/** /**
* \brief Get the plugin enforcement state of the server. * \brief Get the plugin enforcement state of the server.
@ -144,7 +142,7 @@ public:
* *
* \return The enforcement state. * \return The enforcement state.
*/ */
static bool GetPluginEnforcementState() noexcept; extern "C" bool GetPluginEnforcementState() noexcept;
/** /**
* \brief Get the script error ignoring state of the server. * \brief Get the script error ignoring state of the server.
@ -153,7 +151,7 @@ public:
* *
* \return The script error ignoring state. * \return The script error ignoring state.
*/ */
static bool GetScriptErrorIgnoringState() noexcept; extern "C" bool GetScriptErrorIgnoringState() noexcept;
/** /**
* \brief Set the game mode of the server, as displayed in the server browser. * \brief Set the game mode of the server, as displayed in the server browser.
@ -161,7 +159,7 @@ public:
* \param name The new game mode. * \param name The new game mode.
* \return void * \return void
*/ */
static void SetGameMode(const char* gameMode) noexcept; extern "C" void SetGameMode(const char* gameMode) noexcept;
/** /**
* \brief Set the name of the server, as displayed in the server browser. * \brief Set the name of the server, as displayed in the server browser.
@ -169,7 +167,7 @@ public:
* \param name The new name. * \param name The new name.
* \return void * \return void
*/ */
static void SetHostname(const char* name) noexcept; extern "C" void SetHostname(const char* name) noexcept;
/** /**
* \brief Set the password required to join the server. * \brief Set the password required to join the server.
@ -177,7 +175,7 @@ public:
* \param password The password. * \param password The password.
* \return void * \return void
*/ */
static void SetServerPassword(const char *password) noexcept; extern "C" void SetServerPassword(const char *password) noexcept;
/** /**
* \brief Set the plugin enforcement state of the server. * \brief Set the plugin enforcement state of the server.
@ -187,7 +185,7 @@ public:
* \param state The new enforcement state. * \param state The new enforcement state.
* \return void * \return void
*/ */
static void SetPluginEnforcementState(bool state) noexcept; extern "C" void SetPluginEnforcementState(bool state) noexcept;
/** /**
* \brief Set whether script errors should be ignored or not. * \brief Set whether script errors should be ignored or not.
@ -199,7 +197,7 @@ public:
* \param state The new script error ignoring state. * \param state The new script error ignoring state.
* \return void * \return void
*/ */
static void SetScriptErrorIgnoringState(bool state) noexcept; extern "C" void SetScriptErrorIgnoringState(bool state) noexcept;
/** /**
* \brief Set a rule string for the server details displayed in the server browser. * \brief Set a rule string for the server details displayed in the server browser.
@ -208,7 +206,7 @@ public:
* \param value The string value of the rule. * \param value The string value of the rule.
* \return void * \return void
*/ */
static void SetRuleString(const char *key, const char *value) noexcept; extern "C" void SetRuleString(const char *key, const char *value) noexcept;
/** /**
* \brief Set a rule value for the server details displayed in the server browser. * \brief Set a rule value for the server details displayed in the server browser.
@ -217,16 +215,16 @@ public:
* \param value The numerical value of the rule. * \param value The numerical value of the rule.
* \return void * \return void
*/ */
static void SetRuleValue(const char *key, double value) noexcept; extern "C" void SetRuleValue(const char *key, double value) noexcept;
/** /**
* \brief Adds plugins to the internal server structure to validate players. * \brief Adds plugins to the internal server structure to validate players.
* @param pluginName Name with extension of the plugin or master file. * @param pluginName Name with extension of the plugin or master file.
* @param hash Hash string * @param hash Hash string
*/ */
static void AddPluginHash(const char *pluginName, const char *hash) noexcept; extern "C" void AddPluginHash(const char *pluginName, const char *hash) noexcept;
static const char *GetModDir() noexcept; extern "C" const char *GetModDir() noexcept;
}; }
#endif //OPENMW_SERVERAPI_HPP #endif //OPENMW_SERVERAPI_HPP

@ -9,7 +9,7 @@
#include <iostream> #include <iostream>
using namespace std; using namespace std;
void SettingFunctions::SetDifficulty(unsigned short pid, int difficulty) extern "C" void SettingFunctions::SetDifficulty(unsigned short pid, int difficulty)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -17,7 +17,7 @@ void SettingFunctions::SetDifficulty(unsigned short pid, int difficulty)
player->difficulty = difficulty; player->difficulty = difficulty;
} }
void SettingFunctions::SetEnforcedLogLevel(unsigned short pid, int enforcedLogLevel) extern "C" void SettingFunctions::SetEnforcedLogLevel(unsigned short pid, int enforcedLogLevel)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -25,7 +25,7 @@ void SettingFunctions::SetEnforcedLogLevel(unsigned short pid, int enforcedLogLe
player->enforcedLogLevel = enforcedLogLevel; player->enforcedLogLevel = enforcedLogLevel;
} }
void SettingFunctions::SetPhysicsFramerate(unsigned short pid, double physicsFramerate) extern "C" void SettingFunctions::SetPhysicsFramerate(unsigned short pid, double physicsFramerate)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -33,7 +33,7 @@ void SettingFunctions::SetPhysicsFramerate(unsigned short pid, double physicsFra
player->physicsFramerate = physicsFramerate; player->physicsFramerate = physicsFramerate;
} }
void SettingFunctions::SetConsoleAllowed(unsigned short pid, bool state) extern "C" void SettingFunctions::SetConsoleAllowed(unsigned short pid, bool state)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -41,7 +41,7 @@ void SettingFunctions::SetConsoleAllowed(unsigned short pid, bool state)
player->consoleAllowed = state; player->consoleAllowed = state;
} }
void SettingFunctions::SetBedRestAllowed(unsigned short pid, bool state) extern "C" void SettingFunctions::SetBedRestAllowed(unsigned short pid, bool state)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -49,7 +49,7 @@ void SettingFunctions::SetBedRestAllowed(unsigned short pid, bool state)
player->bedRestAllowed = state; player->bedRestAllowed = state;
} }
void SettingFunctions::SetWildernessRestAllowed(unsigned short pid, bool state) extern "C" void SettingFunctions::SetWildernessRestAllowed(unsigned short pid, bool state)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -57,7 +57,7 @@ void SettingFunctions::SetWildernessRestAllowed(unsigned short pid, bool state)
player->wildernessRestAllowed = state; player->wildernessRestAllowed = state;
} }
void SettingFunctions::SetWaitAllowed(unsigned short pid, bool state) extern "C" void SettingFunctions::SetWaitAllowed(unsigned short pid, bool state)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -65,7 +65,7 @@ void SettingFunctions::SetWaitAllowed(unsigned short pid, bool state)
player->waitAllowed = state; player->waitAllowed = state;
} }
void SettingFunctions::SendSettings(unsigned short pid) noexcept extern "C" void SettingFunctions::SendSettings(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);

@ -15,10 +15,8 @@
\ \
{"SendSettings", SettingFunctions::SendSettings} {"SendSettings", SettingFunctions::SendSettings}
class SettingFunctions namespace SettingFunctions
{ {
public:
/** /**
* \brief Set the difficulty for a player. * \brief Set the difficulty for a player.
* *
@ -29,7 +27,7 @@ public:
* \param difficulty The difficulty. * \param difficulty The difficulty.
* \return void * \return void
*/ */
static void SetDifficulty(unsigned short pid, int difficulty); extern "C" void SetDifficulty(unsigned short pid, int difficulty);
/** /**
* \brief Set the client log level enforced for a player. * \brief Set the client log level enforced for a player.
@ -47,7 +45,7 @@ public:
* \param enforcedLogLevel The enforced log level. * \param enforcedLogLevel The enforced log level.
* \return void * \return void
*/ */
static void SetEnforcedLogLevel(unsigned short pid, int enforcedLogLevel); extern "C" void SetEnforcedLogLevel(unsigned short pid, int enforcedLogLevel);
/** /**
* \brief Set the physics framerate for a player. * \brief Set the physics framerate for a player.
@ -59,7 +57,7 @@ public:
* \param physicsFramerate The physics framerate. * \param physicsFramerate The physics framerate.
* \return void * \return void
*/ */
static void SetPhysicsFramerate(unsigned short pid, double physicsFramerate); extern "C" void SetPhysicsFramerate(unsigned short pid, double physicsFramerate);
/** /**
* \brief Set whether the console is allowed for a player. * \brief Set whether the console is allowed for a player.
@ -71,7 +69,7 @@ public:
* \param state The console permission state. * \param state The console permission state.
* \return void * \return void
*/ */
static void SetConsoleAllowed(unsigned short pid, bool state); extern "C" void SetConsoleAllowed(unsigned short pid, bool state);
/** /**
* \brief Set whether resting in beds is allowed for a player. * \brief Set whether resting in beds is allowed for a player.
@ -83,7 +81,7 @@ public:
* \param state The resting permission state. * \param state The resting permission state.
* \return void * \return void
*/ */
static void SetBedRestAllowed(unsigned short pid, bool state); extern "C" void SetBedRestAllowed(unsigned short pid, bool state);
/** /**
* \brief Set whether resting in the wilderness is allowed for a player. * \brief Set whether resting in the wilderness is allowed for a player.
@ -95,7 +93,7 @@ public:
* \param state The resting permission state. * \param state The resting permission state.
* \return void * \return void
*/ */
static void SetWildernessRestAllowed(unsigned short pid, bool state); extern "C" void SetWildernessRestAllowed(unsigned short pid, bool state);
/** /**
* \brief Set whether waiting is allowed for a player. * \brief Set whether waiting is allowed for a player.
@ -107,7 +105,7 @@ public:
* \param state The waiting permission state. * \param state The waiting permission state.
* \return void * \return void
*/ */
static void SetWaitAllowed(unsigned short pid, bool state); extern "C" void SetWaitAllowed(unsigned short pid, bool state);
/** /**
* \brief Send a PlayerSettings packet to the player affected by it. * \brief Send a PlayerSettings packet to the player affected by it.
@ -115,7 +113,7 @@ public:
* \param pid The player ID to send it to. * \param pid The player ID to send it to.
* \return void * \return void
*/ */
static void SendSettings(unsigned short pid) noexcept; extern "C" void SendSettings(unsigned short pid) noexcept;
}; }
#endif //OPENMW_SETTINGSAPI_HPP #endif //OPENMW_SETTINGSAPI_HPP

@ -9,7 +9,7 @@
#include <iostream> #include <iostream>
using namespace std; using namespace std;
double ShapeshiftFunctions::GetScale(unsigned short pid) noexcept extern "C" double ShapeshiftFunctions::GetScale(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -17,7 +17,7 @@ double ShapeshiftFunctions::GetScale(unsigned short pid) noexcept
return player->scale; return player->scale;
} }
bool ShapeshiftFunctions::IsWerewolf(unsigned short pid) noexcept extern "C" bool ShapeshiftFunctions::IsWerewolf(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -25,7 +25,7 @@ bool ShapeshiftFunctions::IsWerewolf(unsigned short pid) noexcept
return player->isWerewolf; return player->isWerewolf;
} }
const char *ShapeshiftFunctions::GetCreatureRefId(unsigned short pid) noexcept extern "C" const char *ShapeshiftFunctions::GetCreatureRefId(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -33,7 +33,7 @@ const char *ShapeshiftFunctions::GetCreatureRefId(unsigned short pid) noexcept
return player->creatureRefId.c_str(); return player->creatureRefId.c_str();
} }
bool ShapeshiftFunctions::GetCreatureNameDisplayState(unsigned short pid) noexcept extern "C" bool ShapeshiftFunctions::GetCreatureNameDisplayState(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -41,7 +41,7 @@ bool ShapeshiftFunctions::GetCreatureNameDisplayState(unsigned short pid) noexce
return player->displayCreatureName; return player->displayCreatureName;
} }
void ShapeshiftFunctions::SetScale(unsigned short pid, double scale) noexcept extern "C" void ShapeshiftFunctions::SetScale(unsigned short pid, double scale) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -49,7 +49,7 @@ void ShapeshiftFunctions::SetScale(unsigned short pid, double scale) noexcept
player->scale = scale; player->scale = scale;
} }
void ShapeshiftFunctions::SetWerewolfState(unsigned short pid, bool isWerewolf) noexcept extern "C" void ShapeshiftFunctions::SetWerewolfState(unsigned short pid, bool isWerewolf) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -57,7 +57,7 @@ void ShapeshiftFunctions::SetWerewolfState(unsigned short pid, bool isWerewolf)
player->isWerewolf = isWerewolf; player->isWerewolf = isWerewolf;
} }
void ShapeshiftFunctions::SetCreatureRefId(unsigned short pid, const char *refId) noexcept extern "C" void ShapeshiftFunctions::SetCreatureRefId(unsigned short pid, const char *refId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -65,7 +65,7 @@ void ShapeshiftFunctions::SetCreatureRefId(unsigned short pid, const char *refId
player->creatureRefId = refId; player->creatureRefId = refId;
} }
void ShapeshiftFunctions::SetCreatureNameDisplayState(unsigned short pid, bool displayState) noexcept extern "C" void ShapeshiftFunctions::SetCreatureNameDisplayState(unsigned short pid, bool displayState) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -73,7 +73,7 @@ void ShapeshiftFunctions::SetCreatureNameDisplayState(unsigned short pid, bool d
player->displayCreatureName = displayState; player->displayCreatureName = displayState;
} }
void ShapeshiftFunctions::SendShapeshift(unsigned short pid) extern "C" void ShapeshiftFunctions::SendShapeshift(unsigned short pid)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );

@ -16,17 +16,15 @@
\ \
{"SendShapeshift", ShapeshiftFunctions::SendShapeshift} {"SendShapeshift", ShapeshiftFunctions::SendShapeshift}
class ShapeshiftFunctions namespace ShapeshiftFunctions
{ {
public:
/** /**
* \brief Get the scale of a player. * \brief Get the scale of a player.
* *
* \param pid The player ID. * \param pid The player ID.
* \return The scale. * \return The scale.
*/ */
static double GetScale(unsigned short pid) noexcept; extern "C" double GetScale(unsigned short pid) noexcept;
/** /**
* \brief Check whether a player is a werewolf. * \brief Check whether a player is a werewolf.
@ -36,7 +34,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The werewolf state. * \return The werewolf state.
*/ */
static bool IsWerewolf(unsigned short pid) noexcept; extern "C" bool IsWerewolf(unsigned short pid) noexcept;
/** /**
* \brief Get the refId of the creature the player is disguised as. * \brief Get the refId of the creature the player is disguised as.
@ -44,7 +42,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The creature refId. * \return The creature refId.
*/ */
static const char *GetCreatureRefId(unsigned short pid) noexcept; extern "C" const char *GetCreatureRefId(unsigned short pid) noexcept;
/** /**
* \brief Check whether a player's name is replaced by that of the creature they are * \brief Check whether a player's name is replaced by that of the creature they are
@ -55,7 +53,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The creature name display state. * \return The creature name display state.
*/ */
static bool GetCreatureNameDisplayState(unsigned short pid) noexcept; extern "C" bool GetCreatureNameDisplayState(unsigned short pid) noexcept;
/** /**
* \brief Set the scale of a player. * \brief Set the scale of a player.
@ -67,7 +65,7 @@ public:
* \param scale The new scale. * \param scale The new scale.
* \return void * \return void
*/ */
static void SetScale(unsigned short pid, double scale) noexcept; extern "C" void SetScale(unsigned short pid, double scale) noexcept;
/** /**
* \brief Set the werewolf state of a player. * \brief Set the werewolf state of a player.
@ -79,7 +77,7 @@ public:
* \param isWerewolf The new werewolf state. * \param isWerewolf The new werewolf state.
* \return void * \return void
*/ */
static void SetWerewolfState(unsigned short pid, bool isWerewolf) noexcept; extern "C" void SetWerewolfState(unsigned short pid, bool isWerewolf) noexcept;
/** /**
* \brief Set the refId of the creature a player is disguised as. * \brief Set the refId of the creature a player is disguised as.
@ -93,7 +91,7 @@ public:
* when hovered over by others. * when hovered over by others.
* \return void * \return void
*/ */
static void SetCreatureRefId(unsigned short pid, const char *refId) noexcept; extern "C" void SetCreatureRefId(unsigned short pid, const char *refId) noexcept;
/** /**
* \brief Set whether a player's name is replaced by that of the creature they are * \brief Set whether a player's name is replaced by that of the creature they are
@ -103,7 +101,7 @@ public:
* \param displayState The creature name display state. * \param displayState The creature name display state.
* \return void * \return void
*/ */
static void SetCreatureNameDisplayState(unsigned short pid, bool displayState) noexcept; extern "C" void SetCreatureNameDisplayState(unsigned short pid, bool displayState) noexcept;
/** /**
* \brief Send a PlayerShapeshift packet about a player. * \brief Send a PlayerShapeshift packet about a player.
@ -114,7 +112,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendShapeshift(unsigned short pid); extern "C" void SendShapeshift(unsigned short pid);
}; }
#endif //OPENMW_SHAPESHIFTAPI_HPP #endif //OPENMW_SHAPESHIFTAPI_HPP

@ -8,7 +8,7 @@
using namespace mwmp; using namespace mwmp;
void SpellFunctions::ClearSpellbookChanges(unsigned short pid) noexcept extern "C" void SpellFunctions::ClearSpellbookChanges(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -16,7 +16,7 @@ void SpellFunctions::ClearSpellbookChanges(unsigned short pid) noexcept
player->spellbookChanges.spells.clear(); player->spellbookChanges.spells.clear();
} }
unsigned int SpellFunctions::GetSpellbookChangesSize(unsigned short pid) noexcept extern "C" unsigned int SpellFunctions::GetSpellbookChangesSize(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -24,7 +24,7 @@ unsigned int SpellFunctions::GetSpellbookChangesSize(unsigned short pid) noexcep
return player->spellbookChanges.count; return player->spellbookChanges.count;
} }
unsigned int SpellFunctions::GetSpellbookChangesAction(unsigned short pid) noexcept extern "C" unsigned int SpellFunctions::GetSpellbookChangesAction(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -32,7 +32,7 @@ unsigned int SpellFunctions::GetSpellbookChangesAction(unsigned short pid) noexc
return player->spellbookChanges.action; return player->spellbookChanges.action;
} }
void SpellFunctions::SetSpellbookChangesAction(unsigned short pid, unsigned char action) noexcept extern "C" void SpellFunctions::SetSpellbookChangesAction(unsigned short pid, unsigned char action) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -40,7 +40,7 @@ void SpellFunctions::SetSpellbookChangesAction(unsigned short pid, unsigned char
player->spellbookChanges.action = action; player->spellbookChanges.action = action;
} }
void SpellFunctions::AddSpell(unsigned short pid, const char* spellId) noexcept extern "C" void SpellFunctions::AddSpell(unsigned short pid, const char* spellId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -51,7 +51,7 @@ void SpellFunctions::AddSpell(unsigned short pid, const char* spellId) noexcept
player->spellbookChanges.spells.push_back(spell); player->spellbookChanges.spells.push_back(spell);
} }
const char *SpellFunctions::GetSpellId(unsigned short pid, unsigned int index) noexcept extern "C" const char *SpellFunctions::GetSpellId(unsigned short pid, unsigned int index) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ""); GET_PLAYER(pid, player, "");
@ -62,7 +62,7 @@ const char *SpellFunctions::GetSpellId(unsigned short pid, unsigned int index) n
return player->spellbookChanges.spells.at(index).mId.c_str(); return player->spellbookChanges.spells.at(index).mId.c_str();
} }
void SpellFunctions::SendSpellbookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void SpellFunctions::SendSpellbookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -76,7 +76,7 @@ void SpellFunctions::SendSpellbookChanges(unsigned short pid, bool sendToOtherPl
packet->Send(true); packet->Send(true);
} }
// All methods below are deprecated versions of methods from above extern "C" // All methods below are deprecated versions of methods from above
void SpellFunctions::InitializeSpellbookChanges(unsigned short pid) noexcept void SpellFunctions::InitializeSpellbookChanges(unsigned short pid) noexcept
{ {

@ -16,10 +16,8 @@
\ \
{"InitializeSpellbookChanges", SpellFunctions::InitializeSpellbookChanges} {"InitializeSpellbookChanges", SpellFunctions::InitializeSpellbookChanges}
class SpellFunctions namespace SpellFunctions
{ {
public:
/** /**
* \brief Clear the last recorded spellbook changes for a player. * \brief Clear the last recorded spellbook changes for a player.
* *
@ -28,7 +26,7 @@ public:
* \param pid The player ID whose spellbook changes should be used. * \param pid The player ID whose spellbook changes should be used.
* \return void * \return void
*/ */
static void ClearSpellbookChanges(unsigned short pid) noexcept; extern "C" void ClearSpellbookChanges(unsigned short pid) noexcept;
/** /**
* \brief Get the number of indexes in a player's latest spellbook changes. * \brief Get the number of indexes in a player's latest spellbook changes.
@ -36,7 +34,7 @@ public:
* \param pid The player ID whose spellbook changes should be used. * \param pid The player ID whose spellbook changes should be used.
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetSpellbookChangesSize(unsigned short pid) noexcept; extern "C" unsigned int GetSpellbookChangesSize(unsigned short pid) noexcept;
/** /**
* \brief Get the action type used in a player's latest spellbook changes. * \brief Get the action type used in a player's latest spellbook changes.
@ -44,7 +42,7 @@ public:
* \param pid The player ID whose spellbook changes should be used. * \param pid The player ID whose spellbook changes should be used.
* \return The action type (0 for SET, 1 for ADD, 2 for REMOVE). * \return The action type (0 for SET, 1 for ADD, 2 for REMOVE).
*/ */
static unsigned int GetSpellbookChangesAction(unsigned short pid) noexcept; extern "C" unsigned int GetSpellbookChangesAction(unsigned short pid) noexcept;
/** /**
* \brief Set the action type in a player's spellbook changes. * \brief Set the action type in a player's spellbook changes.
@ -53,7 +51,7 @@ public:
* \param action The action (0 for SET, 1 for ADD, 2 for REMOVE). * \param action The action (0 for SET, 1 for ADD, 2 for REMOVE).
* \return void * \return void
*/ */
static void SetSpellbookChangesAction(unsigned short pid, unsigned char action) noexcept; extern "C" void SetSpellbookChangesAction(unsigned short pid, unsigned char action) noexcept;
/** /**
* \brief Add a new spell to the spellbook changes for a player. * \brief Add a new spell to the spellbook changes for a player.
@ -62,7 +60,7 @@ public:
* \param spellId The spellId of the spell. * \param spellId The spellId of the spell.
* \return void * \return void
*/ */
static void AddSpell(unsigned short pid, const char* spellId) noexcept; extern "C" void AddSpell(unsigned short pid, const char* spellId) noexcept;
/** /**
* \brief Get the spellId at a certain index in a player's latest spellbook changes. * \brief Get the spellId at a certain index in a player's latest spellbook changes.
@ -71,7 +69,7 @@ public:
* \param index The index of the spell. * \param index The index of the spell.
* \return The spellId. * \return The spellId.
*/ */
static const char *GetSpellId(unsigned short pid, unsigned int index) noexcept; extern "C" const char *GetSpellId(unsigned short pid, unsigned int index) noexcept;
/** /**
* \brief Send a PlayerSpellbook packet with a player's recorded spellbook changes. * \brief Send a PlayerSpellbook packet with a player's recorded spellbook changes.
@ -83,14 +81,11 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendSpellbookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendSpellbookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void InitializeSpellbookChanges(unsigned short pid) noexcept; extern "C" void InitializeSpellbookChanges(unsigned short pid) noexcept;
}
private:
};
#endif //OPENMW_SPELLAPI_HPP #endif //OPENMW_SPELLAPI_HPP

@ -14,17 +14,17 @@
using namespace std; using namespace std;
using namespace ESM; using namespace ESM;
int StatsFunctions::GetAttributeCount() noexcept extern "C" int StatsFunctions::GetAttributeCount() noexcept
{ {
return Attribute::Length; return Attribute::Length;
} }
int StatsFunctions::GetSkillCount() noexcept extern "C" int StatsFunctions::GetSkillCount() noexcept
{ {
return Skill::Length; return Skill::Length;
} }
int StatsFunctions::GetAttributeId(const char *name) noexcept extern "C" int StatsFunctions::GetAttributeId(const char *name) noexcept
{ {
for (int x = 0; x < Attribute::Length; x++) for (int x = 0; x < Attribute::Length; x++)
{ {
@ -37,7 +37,7 @@ int StatsFunctions::GetAttributeId(const char *name) noexcept
return -1; return -1;
} }
int StatsFunctions::GetSkillId(const char *name) noexcept extern "C" int StatsFunctions::GetSkillId(const char *name) noexcept
{ {
for (int x = 0; x < Skill::Length; x++) for (int x = 0; x < Skill::Length; x++)
{ {
@ -50,7 +50,7 @@ int StatsFunctions::GetSkillId(const char *name) noexcept
return -1; return -1;
} }
const char *StatsFunctions::GetAttributeName(unsigned short attributeId) noexcept extern "C" const char *StatsFunctions::GetAttributeName(unsigned short attributeId) noexcept
{ {
if (attributeId >= Attribute::Length) if (attributeId >= Attribute::Length)
return "invalid"; return "invalid";
@ -58,7 +58,7 @@ const char *StatsFunctions::GetAttributeName(unsigned short attributeId) noexcep
return Attribute::sAttributeNames[attributeId].c_str(); return Attribute::sAttributeNames[attributeId].c_str();
} }
const char *StatsFunctions::GetSkillName(unsigned short skillId) noexcept extern "C" const char *StatsFunctions::GetSkillName(unsigned short skillId) noexcept
{ {
if (skillId >= Skill::Length) if (skillId >= Skill::Length)
return "invalid"; return "invalid";
@ -66,7 +66,7 @@ const char *StatsFunctions::GetSkillName(unsigned short skillId) noexcept
return Skill::sSkillNames[skillId].c_str(); return Skill::sSkillNames[skillId].c_str();
} }
const char *StatsFunctions::GetName(unsigned short pid) noexcept extern "C" const char *StatsFunctions::GetName(unsigned short pid) noexcept
{ {
Player *player; Player *player;
@ -75,7 +75,7 @@ const char *StatsFunctions::GetName(unsigned short pid) noexcept
return player->npc.mName.c_str(); return player->npc.mName.c_str();
} }
const char *StatsFunctions::GetRace(unsigned short pid) noexcept extern "C" const char *StatsFunctions::GetRace(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -83,7 +83,7 @@ const char *StatsFunctions::GetRace(unsigned short pid) noexcept
return player->npc.mRace.c_str(); return player->npc.mRace.c_str();
} }
const char *StatsFunctions::GetHead(unsigned short pid) noexcept extern "C" const char *StatsFunctions::GetHead(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -91,7 +91,7 @@ const char *StatsFunctions::GetHead(unsigned short pid) noexcept
return player->npc.mHead.c_str(); return player->npc.mHead.c_str();
} }
const char *StatsFunctions::GetHairstyle(unsigned short pid) noexcept extern "C" const char *StatsFunctions::GetHairstyle(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -99,7 +99,7 @@ const char *StatsFunctions::GetHairstyle(unsigned short pid) noexcept
return player->npc.mHair.c_str(); return player->npc.mHair.c_str();
} }
int StatsFunctions::GetIsMale(unsigned short pid) noexcept extern "C" int StatsFunctions::GetIsMale(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, false); GET_PLAYER(pid, player, false);
@ -107,7 +107,7 @@ int StatsFunctions::GetIsMale(unsigned short pid) noexcept
return player->npc.isMale(); return player->npc.isMale();
} }
const char *StatsFunctions::GetBirthsign(unsigned short pid) noexcept extern "C" const char *StatsFunctions::GetBirthsign(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -115,7 +115,7 @@ const char *StatsFunctions::GetBirthsign(unsigned short pid) noexcept
return player->birthsign.c_str(); return player->birthsign.c_str();
} }
int StatsFunctions::GetLevel(unsigned short pid) noexcept extern "C" int StatsFunctions::GetLevel(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -123,7 +123,7 @@ int StatsFunctions::GetLevel(unsigned short pid) noexcept
return player->creatureStats.mLevel; return player->creatureStats.mLevel;
} }
int StatsFunctions::GetLevelProgress(unsigned short pid) noexcept extern "C" int StatsFunctions::GetLevelProgress(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -131,7 +131,7 @@ int StatsFunctions::GetLevelProgress(unsigned short pid) noexcept
return player->npcStats.mLevelProgress; return player->npcStats.mLevelProgress;
} }
double StatsFunctions::GetHealthBase(unsigned short pid) noexcept extern "C" double StatsFunctions::GetHealthBase(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -139,7 +139,7 @@ double StatsFunctions::GetHealthBase(unsigned short pid) noexcept
return player->creatureStats.mDynamic[0].mBase; return player->creatureStats.mDynamic[0].mBase;
} }
double StatsFunctions::GetHealthCurrent(unsigned short pid) noexcept extern "C" double StatsFunctions::GetHealthCurrent(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -147,7 +147,7 @@ double StatsFunctions::GetHealthCurrent(unsigned short pid) noexcept
return player->creatureStats.mDynamic[0].mCurrent; return player->creatureStats.mDynamic[0].mCurrent;
} }
double StatsFunctions::GetMagickaBase(unsigned short pid) noexcept extern "C" double StatsFunctions::GetMagickaBase(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -155,7 +155,7 @@ double StatsFunctions::GetMagickaBase(unsigned short pid) noexcept
return player->creatureStats.mDynamic[1].mBase; return player->creatureStats.mDynamic[1].mBase;
} }
double StatsFunctions::GetMagickaCurrent(unsigned short pid) noexcept extern "C" double StatsFunctions::GetMagickaCurrent(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -163,7 +163,7 @@ double StatsFunctions::GetMagickaCurrent(unsigned short pid) noexcept
return player->creatureStats.mDynamic[1].mCurrent; return player->creatureStats.mDynamic[1].mCurrent;
} }
double StatsFunctions::GetFatigueBase(unsigned short pid) noexcept extern "C" double StatsFunctions::GetFatigueBase(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -171,7 +171,7 @@ double StatsFunctions::GetFatigueBase(unsigned short pid) noexcept
return player->creatureStats.mDynamic[2].mBase; return player->creatureStats.mDynamic[2].mBase;
} }
double StatsFunctions::GetFatigueCurrent(unsigned short pid) noexcept extern "C" double StatsFunctions::GetFatigueCurrent(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -179,7 +179,7 @@ double StatsFunctions::GetFatigueCurrent(unsigned short pid) noexcept
return player->creatureStats.mDynamic[2].mCurrent; return player->creatureStats.mDynamic[2].mCurrent;
} }
int StatsFunctions::GetAttributeBase(unsigned short pid, unsigned short attributeId) noexcept extern "C" int StatsFunctions::GetAttributeBase(unsigned short pid, unsigned short attributeId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -190,7 +190,7 @@ int StatsFunctions::GetAttributeBase(unsigned short pid, unsigned short attribut
return player->creatureStats.mAttributes[attributeId].mBase; return player->creatureStats.mAttributes[attributeId].mBase;
} }
int StatsFunctions::GetAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept extern "C" int StatsFunctions::GetAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -201,7 +201,7 @@ int StatsFunctions::GetAttributeModifier(unsigned short pid, unsigned short attr
return player->creatureStats.mAttributes[attributeId].mMod; return player->creatureStats.mAttributes[attributeId].mMod;
} }
int StatsFunctions::GetSkillBase(unsigned short pid, unsigned short skillId) noexcept extern "C" int StatsFunctions::GetSkillBase(unsigned short pid, unsigned short skillId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -212,7 +212,7 @@ int StatsFunctions::GetSkillBase(unsigned short pid, unsigned short skillId) noe
return player->npcStats.mSkills[skillId].mBase; return player->npcStats.mSkills[skillId].mBase;
} }
int StatsFunctions::GetSkillModifier(unsigned short pid, unsigned short skillId) noexcept extern "C" int StatsFunctions::GetSkillModifier(unsigned short pid, unsigned short skillId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -223,7 +223,7 @@ int StatsFunctions::GetSkillModifier(unsigned short pid, unsigned short skillId)
return player->npcStats.mSkills[skillId].mMod; return player->npcStats.mSkills[skillId].mMod;
} }
double StatsFunctions::GetSkillProgress(unsigned short pid, unsigned short skillId) noexcept extern "C" double StatsFunctions::GetSkillProgress(unsigned short pid, unsigned short skillId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0.0f); GET_PLAYER(pid, player, 0.0f);
@ -234,7 +234,7 @@ double StatsFunctions::GetSkillProgress(unsigned short pid, unsigned short skill
return player->npcStats.mSkills[skillId].mProgress; return player->npcStats.mSkills[skillId].mProgress;
} }
int StatsFunctions::GetSkillIncrease(unsigned short pid, unsigned int attributeId) noexcept extern "C" int StatsFunctions::GetSkillIncrease(unsigned short pid, unsigned int attributeId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -245,7 +245,7 @@ int StatsFunctions::GetSkillIncrease(unsigned short pid, unsigned int attributeI
return player->npcStats.mSkillIncrease[attributeId]; return player->npcStats.mSkillIncrease[attributeId];
} }
int StatsFunctions::GetBounty(unsigned short pid) noexcept extern "C" int StatsFunctions::GetBounty(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, 0); GET_PLAYER(pid, player, 0);
@ -253,7 +253,7 @@ int StatsFunctions::GetBounty(unsigned short pid) noexcept
return player->npcStats.mBounty; return player->npcStats.mBounty;
} }
void StatsFunctions::SetName(unsigned short pid, const char *name) noexcept extern "C" void StatsFunctions::SetName(unsigned short pid, const char *name) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -264,7 +264,7 @@ void StatsFunctions::SetName(unsigned short pid, const char *name) noexcept
player->npc.mName = name; player->npc.mName = name;
} }
void StatsFunctions::SetRace(unsigned short pid, const char *race) noexcept extern "C" void StatsFunctions::SetRace(unsigned short pid, const char *race) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -278,7 +278,7 @@ void StatsFunctions::SetRace(unsigned short pid, const char *race) noexcept
player->npc.mRace = race; player->npc.mRace = race;
} }
void StatsFunctions::SetHead(unsigned short pid, const char *head) noexcept extern "C" void StatsFunctions::SetHead(unsigned short pid, const char *head) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -289,7 +289,7 @@ void StatsFunctions::SetHead(unsigned short pid, const char *head) noexcept
player->npc.mHead = head; player->npc.mHead = head;
} }
void StatsFunctions::SetHairstyle(unsigned short pid, const char *hairstyle) noexcept extern "C" void StatsFunctions::SetHairstyle(unsigned short pid, const char *hairstyle) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -300,7 +300,7 @@ void StatsFunctions::SetHairstyle(unsigned short pid, const char *hairstyle) noe
player->npc.mHair = hairstyle; player->npc.mHair = hairstyle;
} }
void StatsFunctions::SetIsMale(unsigned short pid, int state) noexcept extern "C" void StatsFunctions::SetIsMale(unsigned short pid, int state) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -308,7 +308,7 @@ void StatsFunctions::SetIsMale(unsigned short pid, int state) noexcept
player->npc.setIsMale(state == true); player->npc.setIsMale(state == true);
} }
void StatsFunctions::SetBirthsign(unsigned short pid, const char *sign) noexcept extern "C" void StatsFunctions::SetBirthsign(unsigned short pid, const char *sign) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -319,7 +319,7 @@ void StatsFunctions::SetBirthsign(unsigned short pid, const char *sign) noexcept
player->birthsign = sign; player->birthsign = sign;
} }
void StatsFunctions::SetResetStats(unsigned short pid, bool resetStats) noexcept extern "C" void StatsFunctions::SetResetStats(unsigned short pid, bool resetStats) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -327,7 +327,7 @@ void StatsFunctions::SetResetStats(unsigned short pid, bool resetStats) noexcept
player->resetStats = resetStats; player->resetStats = resetStats;
} }
void StatsFunctions::SetLevel(unsigned short pid, int value) noexcept extern "C" void StatsFunctions::SetLevel(unsigned short pid, int value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -335,7 +335,7 @@ void StatsFunctions::SetLevel(unsigned short pid, int value) noexcept
player->creatureStats.mLevel = value; player->creatureStats.mLevel = value;
} }
void StatsFunctions::SetLevelProgress(unsigned short pid, int value) noexcept extern "C" void StatsFunctions::SetLevelProgress(unsigned short pid, int value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -343,7 +343,7 @@ void StatsFunctions::SetLevelProgress(unsigned short pid, int value) noexcept
player->npcStats.mLevelProgress = value; player->npcStats.mLevelProgress = value;
} }
void StatsFunctions::SetHealthBase(unsigned short pid, double value) noexcept extern "C" void StatsFunctions::SetHealthBase(unsigned short pid, double value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -354,7 +354,7 @@ void StatsFunctions::SetHealthBase(unsigned short pid, double value) noexcept
player->statsDynamicIndexChanges.push_back(0); player->statsDynamicIndexChanges.push_back(0);
} }
void StatsFunctions::SetHealthCurrent(unsigned short pid, double value) noexcept extern "C" void StatsFunctions::SetHealthCurrent(unsigned short pid, double value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -365,7 +365,7 @@ void StatsFunctions::SetHealthCurrent(unsigned short pid, double value) noexcept
player->statsDynamicIndexChanges.push_back(0); player->statsDynamicIndexChanges.push_back(0);
} }
void StatsFunctions::SetMagickaBase(unsigned short pid, double value) noexcept extern "C" void StatsFunctions::SetMagickaBase(unsigned short pid, double value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -376,7 +376,7 @@ void StatsFunctions::SetMagickaBase(unsigned short pid, double value) noexcept
player->statsDynamicIndexChanges.push_back(1); player->statsDynamicIndexChanges.push_back(1);
} }
void StatsFunctions::SetMagickaCurrent(unsigned short pid, double value) noexcept extern "C" void StatsFunctions::SetMagickaCurrent(unsigned short pid, double value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -387,7 +387,7 @@ void StatsFunctions::SetMagickaCurrent(unsigned short pid, double value) noexcep
player->statsDynamicIndexChanges.push_back(1); player->statsDynamicIndexChanges.push_back(1);
} }
void StatsFunctions::SetFatigueBase(unsigned short pid, double value) noexcept extern "C" void StatsFunctions::SetFatigueBase(unsigned short pid, double value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -398,7 +398,7 @@ void StatsFunctions::SetFatigueBase(unsigned short pid, double value) noexcept
player->statsDynamicIndexChanges.push_back(2); player->statsDynamicIndexChanges.push_back(2);
} }
void StatsFunctions::SetFatigueCurrent(unsigned short pid, double value) noexcept extern "C" void StatsFunctions::SetFatigueCurrent(unsigned short pid, double value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -409,7 +409,7 @@ void StatsFunctions::SetFatigueCurrent(unsigned short pid, double value) noexcep
player->statsDynamicIndexChanges.push_back(2); player->statsDynamicIndexChanges.push_back(2);
} }
void StatsFunctions::SetAttributeBase(unsigned short pid, unsigned short attributeId, int value) noexcept extern "C" void StatsFunctions::SetAttributeBase(unsigned short pid, unsigned short attributeId, int value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -423,7 +423,7 @@ void StatsFunctions::SetAttributeBase(unsigned short pid, unsigned short attribu
player->attributeIndexChanges.push_back(attributeId); player->attributeIndexChanges.push_back(attributeId);
} }
void StatsFunctions::ClearAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept extern "C" void StatsFunctions::ClearAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -437,7 +437,7 @@ void StatsFunctions::ClearAttributeModifier(unsigned short pid, unsigned short a
player->attributeIndexChanges.push_back(attributeId); player->attributeIndexChanges.push_back(attributeId);
} }
void StatsFunctions::SetSkillBase(unsigned short pid, unsigned short skillId, int value) noexcept extern "C" void StatsFunctions::SetSkillBase(unsigned short pid, unsigned short skillId, int value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -451,7 +451,7 @@ void StatsFunctions::SetSkillBase(unsigned short pid, unsigned short skillId, in
player->skillIndexChanges.push_back(skillId); player->skillIndexChanges.push_back(skillId);
} }
void StatsFunctions::ClearSkillModifier(unsigned short pid, unsigned short skillId) noexcept extern "C" void StatsFunctions::ClearSkillModifier(unsigned short pid, unsigned short skillId) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -465,7 +465,7 @@ void StatsFunctions::ClearSkillModifier(unsigned short pid, unsigned short skill
player->skillIndexChanges.push_back(skillId); player->skillIndexChanges.push_back(skillId);
} }
void StatsFunctions::SetSkillProgress(unsigned short pid, unsigned short skillId, double value) noexcept extern "C" void StatsFunctions::SetSkillProgress(unsigned short pid, unsigned short skillId, double value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -479,7 +479,7 @@ void StatsFunctions::SetSkillProgress(unsigned short pid, unsigned short skillId
player->skillIndexChanges.push_back(skillId); player->skillIndexChanges.push_back(skillId);
} }
void StatsFunctions::SetSkillIncrease(unsigned short pid, unsigned int attributeId, int value) noexcept extern "C" void StatsFunctions::SetSkillIncrease(unsigned short pid, unsigned int attributeId, int value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -493,7 +493,7 @@ void StatsFunctions::SetSkillIncrease(unsigned short pid, unsigned int attribute
player->attributeIndexChanges.push_back(attributeId); player->attributeIndexChanges.push_back(attributeId);
} }
void StatsFunctions::SetBounty(unsigned short pid, int value) noexcept extern "C" void StatsFunctions::SetBounty(unsigned short pid, int value) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -501,7 +501,7 @@ void StatsFunctions::SetBounty(unsigned short pid, int value) noexcept
player->npcStats.mBounty = value; player->npcStats.mBounty = value;
} }
void StatsFunctions::SetCharGenStage(unsigned short pid, int currentStage, int endStage) noexcept extern "C" void StatsFunctions::SetCharGenStage(unsigned short pid, int currentStage, int endStage) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -516,7 +516,7 @@ void StatsFunctions::SetCharGenStage(unsigned short pid, int currentStage, int e
packet->Send(false); packet->Send(false);
} }
void StatsFunctions::SendBaseInfo(unsigned short pid) noexcept extern "C" void StatsFunctions::SendBaseInfo(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -528,7 +528,7 @@ void StatsFunctions::SendBaseInfo(unsigned short pid) noexcept
packet->Send(true); packet->Send(true);
} }
void StatsFunctions::SendStatsDynamic(unsigned short pid) noexcept extern "C" void StatsFunctions::SendStatsDynamic(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -542,7 +542,7 @@ void StatsFunctions::SendStatsDynamic(unsigned short pid) noexcept
player->statsDynamicIndexChanges.clear(); player->statsDynamicIndexChanges.clear();
} }
void StatsFunctions::SendAttributes(unsigned short pid) noexcept extern "C" void StatsFunctions::SendAttributes(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -556,7 +556,7 @@ void StatsFunctions::SendAttributes(unsigned short pid) noexcept
player->attributeIndexChanges.clear(); player->attributeIndexChanges.clear();
} }
void StatsFunctions::SendSkills(unsigned short pid) noexcept extern "C" void StatsFunctions::SendSkills(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
@ -570,7 +570,7 @@ void StatsFunctions::SendSkills(unsigned short pid) noexcept
player->skillIndexChanges.clear(); player->skillIndexChanges.clear();
} }
void StatsFunctions::SendLevel(unsigned short pid) noexcept extern "C" void StatsFunctions::SendLevel(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -582,7 +582,7 @@ void StatsFunctions::SendLevel(unsigned short pid) noexcept
packet->Send(true); packet->Send(true);
} }
void StatsFunctions::SendBounty(unsigned short pid) noexcept extern "C" void StatsFunctions::SendBounty(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );

@ -75,10 +75,8 @@
{"SendLevel", StatsFunctions::SendLevel},\ {"SendLevel", StatsFunctions::SendLevel},\
{"SendBounty", StatsFunctions::SendBounty} {"SendBounty", StatsFunctions::SendBounty}
class StatsFunctions namespace StatsFunctions
{ {
public:
/** /**
* \brief Get the number of attributes. * \brief Get the number of attributes.
* *
@ -86,7 +84,7 @@ public:
* *
* \return The number of attributes. * \return The number of attributes.
*/ */
static int GetAttributeCount() noexcept; extern "C" int GetAttributeCount() noexcept;
/** /**
* \brief Get the number of skills. * \brief Get the number of skills.
@ -95,7 +93,7 @@ public:
* *
* \return The number of skills. * \return The number of skills.
*/ */
static int GetSkillCount() noexcept; extern "C" int GetSkillCount() noexcept;
/** /**
* \brief Get the numerical ID of an attribute with a certain name. * \brief Get the numerical ID of an attribute with a certain name.
@ -105,7 +103,7 @@ public:
* \param name The name of the attribute. * \param name The name of the attribute.
* \return The ID of the attribute. * \return The ID of the attribute.
*/ */
static int GetAttributeId(const char *name) noexcept; extern "C" int GetAttributeId(const char *name) noexcept;
/** /**
* \brief Get the numerical ID of a skill with a certain name. * \brief Get the numerical ID of a skill with a certain name.
@ -115,7 +113,7 @@ public:
* \param name The name of the skill. * \param name The name of the skill.
* \return The ID of the skill. * \return The ID of the skill.
*/ */
static int GetSkillId(const char *name) noexcept; extern "C" int GetSkillId(const char *name) noexcept;
/** /**
* \brief Get the name of the attribute with a certain numerical ID. * \brief Get the name of the attribute with a certain numerical ID.
@ -125,7 +123,7 @@ public:
* \param attributeId The ID of the attribute. * \param attributeId The ID of the attribute.
* \return The name of the attribute. * \return The name of the attribute.
*/ */
static const char *GetAttributeName(unsigned short attributeId) noexcept; extern "C" const char *GetAttributeName(unsigned short attributeId) noexcept;
/** /**
* \brief Get the name of the skill with a certain numerical ID. * \brief Get the name of the skill with a certain numerical ID.
@ -135,7 +133,7 @@ public:
* \param skillId The ID of the skill. * \param skillId The ID of the skill.
* \return The name of the skill. * \return The name of the skill.
*/ */
static const char *GetSkillName(unsigned short skillId) noexcept; extern "C" const char *GetSkillName(unsigned short skillId) noexcept;
/** /**
* \brief Get the name of a player. * \brief Get the name of a player.
@ -143,7 +141,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The name of the player. * \return The name of the player.
*/ */
static const char *GetName(unsigned short pid) noexcept; extern "C" const char *GetName(unsigned short pid) noexcept;
/** /**
* \brief Get the race of a player. * \brief Get the race of a player.
@ -151,7 +149,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The race of the player. * \return The race of the player.
*/ */
static const char *GetRace(unsigned short pid) noexcept; extern "C" const char *GetRace(unsigned short pid) noexcept;
/** /**
* \brief Get the head mesh used by a player. * \brief Get the head mesh used by a player.
@ -159,7 +157,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The head mesh of the player. * \return The head mesh of the player.
*/ */
static const char *GetHead(unsigned short pid) noexcept; extern "C" const char *GetHead(unsigned short pid) noexcept;
/** /**
* \brief Get the hairstyle mesh used by a player. * \brief Get the hairstyle mesh used by a player.
@ -167,7 +165,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The hairstyle mesh of the player. * \return The hairstyle mesh of the player.
*/ */
static const char *GetHairstyle(unsigned short pid) noexcept; extern "C" const char *GetHairstyle(unsigned short pid) noexcept;
/** /**
* \brief Check whether a player is male or not. * \brief Check whether a player is male or not.
@ -175,7 +173,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return Whether the player is male. * \return Whether the player is male.
*/ */
static int GetIsMale(unsigned short pid) noexcept; extern "C" int GetIsMale(unsigned short pid) noexcept;
/** /**
* \brief Get the birthsign of a player. * \brief Get the birthsign of a player.
@ -183,7 +181,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The birthsign of the player. * \return The birthsign of the player.
*/ */
static const char *GetBirthsign(unsigned short pid) noexcept; extern "C" const char *GetBirthsign(unsigned short pid) noexcept;
/** /**
* \brief Get the character level of a player. * \brief Get the character level of a player.
@ -191,7 +189,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The level of the player. * \return The level of the player.
*/ */
static int GetLevel(unsigned short pid) noexcept; extern "C" int GetLevel(unsigned short pid) noexcept;
/** /**
* \brief Get the player's progress to their next character level. * \brief Get the player's progress to their next character level.
@ -199,7 +197,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The level progress. * \return The level progress.
*/ */
static int GetLevelProgress(unsigned short pid) noexcept; extern "C" int GetLevelProgress(unsigned short pid) noexcept;
/** /**
* \brief Get the base health of the player. * \brief Get the base health of the player.
@ -207,7 +205,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The base health. * \return The base health.
*/ */
static double GetHealthBase(unsigned short pid) noexcept; extern "C" double GetHealthBase(unsigned short pid) noexcept;
/** /**
* \brief Get the current health of the player. * \brief Get the current health of the player.
@ -215,7 +213,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The current health. * \return The current health.
*/ */
static double GetHealthCurrent(unsigned short pid) noexcept; extern "C" double GetHealthCurrent(unsigned short pid) noexcept;
/** /**
* \brief Get the base magicka of the player. * \brief Get the base magicka of the player.
@ -223,7 +221,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The base magicka. * \return The base magicka.
*/ */
static double GetMagickaBase(unsigned short pid) noexcept; extern "C" double GetMagickaBase(unsigned short pid) noexcept;
/** /**
* \brief Get the current magicka of the player. * \brief Get the current magicka of the player.
@ -231,7 +229,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The current magicka. * \return The current magicka.
*/ */
static double GetMagickaCurrent(unsigned short pid) noexcept; extern "C" double GetMagickaCurrent(unsigned short pid) noexcept;
/** /**
* \brief Get the base fatigue of the player. * \brief Get the base fatigue of the player.
@ -239,7 +237,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The base fatigue. * \return The base fatigue.
*/ */
static double GetFatigueBase(unsigned short pid) noexcept; extern "C" double GetFatigueBase(unsigned short pid) noexcept;
/** /**
* \brief Get the current fatigue of the player. * \brief Get the current fatigue of the player.
@ -247,7 +245,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The current fatigue. * \return The current fatigue.
*/ */
static double GetFatigueCurrent(unsigned short pid) noexcept; extern "C" double GetFatigueCurrent(unsigned short pid) noexcept;
/** /**
* \brief Get the base value of a player's attribute. * \brief Get the base value of a player's attribute.
@ -256,7 +254,7 @@ public:
* \param attributeId The attribute ID. * \param attributeId The attribute ID.
* \return The base value of the attribute. * \return The base value of the attribute.
*/ */
static int GetAttributeBase(unsigned short pid, unsigned short attributeId) noexcept; extern "C" int GetAttributeBase(unsigned short pid, unsigned short attributeId) noexcept;
/** /**
* \brief Get the modifier value of a player's attribute. * \brief Get the modifier value of a player's attribute.
@ -265,7 +263,7 @@ public:
* \param attributeId The attribute ID. * \param attributeId The attribute ID.
* \return The modifier value of the attribute. * \return The modifier value of the attribute.
*/ */
static int GetAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept; extern "C" int GetAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept;
/** /**
* \brief Get the base value of a player's skill. * \brief Get the base value of a player's skill.
@ -274,7 +272,7 @@ public:
* \param skillId The skill ID. * \param skillId The skill ID.
* \return The base value of the skill. * \return The base value of the skill.
*/ */
static int GetSkillBase(unsigned short pid, unsigned short skillId) noexcept; extern "C" int GetSkillBase(unsigned short pid, unsigned short skillId) noexcept;
/** /**
* \brief Get the modifier value of a player's skill. * \brief Get the modifier value of a player's skill.
@ -283,7 +281,7 @@ public:
* \param skillId The skill ID. * \param skillId The skill ID.
* \return The modifier value of the skill. * \return The modifier value of the skill.
*/ */
static int GetSkillModifier(unsigned short pid, unsigned short skillId) noexcept; extern "C" int GetSkillModifier(unsigned short pid, unsigned short skillId) noexcept;
/** /**
* \brief Get the progress the player has made towards increasing a certain skill by 1. * \brief Get the progress the player has made towards increasing a certain skill by 1.
@ -292,7 +290,7 @@ public:
* \param skillId The skill ID. * \param skillId The skill ID.
* \return The skill progress. * \return The skill progress.
*/ */
static double GetSkillProgress(unsigned short pid, unsigned short skillId) noexcept; extern "C" double GetSkillProgress(unsigned short pid, unsigned short skillId) noexcept;
/** /**
* \brief Get the bonus applied to a certain attribute at the next level up as a result * \brief Get the bonus applied to a certain attribute at the next level up as a result
@ -304,7 +302,7 @@ public:
* \param skillId The attribute ID. * \param skillId The attribute ID.
* \return The increase in the attribute caused by skills. * \return The increase in the attribute caused by skills.
*/ */
static int GetSkillIncrease(unsigned short pid, unsigned int attributeId) noexcept; extern "C" int GetSkillIncrease(unsigned short pid, unsigned int attributeId) noexcept;
/** /**
* \brief Get the bounty of the player. * \brief Get the bounty of the player.
@ -312,7 +310,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return The bounty. * \return The bounty.
*/ */
static int GetBounty(unsigned short pid) noexcept; extern "C" int GetBounty(unsigned short pid) noexcept;
/** /**
* \brief Set the name of a player. * \brief Set the name of a player.
@ -321,7 +319,7 @@ public:
* \param name The new name of the player. * \param name The new name of the player.
* \return void * \return void
*/ */
static void SetName(unsigned short pid, const char *name) noexcept; extern "C" void SetName(unsigned short pid, const char *name) noexcept;
/** /**
* \brief Set the race of a player. * \brief Set the race of a player.
@ -330,7 +328,7 @@ public:
* \param race The new race of the player. * \param race The new race of the player.
* \return void * \return void
*/ */
static void SetRace(unsigned short pid, const char *race) noexcept; extern "C" void SetRace(unsigned short pid, const char *race) noexcept;
/** /**
* \brief Set the head mesh used by a player. * \brief Set the head mesh used by a player.
@ -339,7 +337,7 @@ public:
* \param head The new head mesh of the player. * \param head The new head mesh of the player.
* \return void * \return void
*/ */
static void SetHead(unsigned short pid, const char *head) noexcept; extern "C" void SetHead(unsigned short pid, const char *head) noexcept;
/** /**
* \brief Set the hairstyle mesh used by a player. * \brief Set the hairstyle mesh used by a player.
@ -348,7 +346,7 @@ public:
* \param hairstyle The new hairstyle mesh of the player. * \param hairstyle The new hairstyle mesh of the player.
* \return void * \return void
*/ */
static void SetHairstyle(unsigned short pid, const char *hairstyle) noexcept; extern "C" void SetHairstyle(unsigned short pid, const char *hairstyle) noexcept;
/** /**
* \brief Set whether a player is male or not. * \brief Set whether a player is male or not.
@ -357,7 +355,7 @@ public:
* \param state Whether the player is male. * \param state Whether the player is male.
* \return void * \return void
*/ */
static void SetIsMale(unsigned short pid, int state) noexcept; extern "C" void SetIsMale(unsigned short pid, int state) noexcept;
/** /**
* \brief Set the birthsign of a player. * \brief Set the birthsign of a player.
@ -366,7 +364,7 @@ public:
* \param name The new birthsign of the player. * \param name The new birthsign of the player.
* \return void * \return void
*/ */
static void SetBirthsign(unsigned short pid, const char *name) noexcept; extern "C" void SetBirthsign(unsigned short pid, const char *name) noexcept;
/** /**
* \brief Set whether the player's stats should be reset based on their * \brief Set whether the player's stats should be reset based on their
@ -379,7 +377,7 @@ public:
* \param resetStats The stat reset state. * \param resetStats The stat reset state.
* \return void * \return void
*/ */
static void SetResetStats(unsigned short pid, bool resetStats) noexcept; extern "C" void SetResetStats(unsigned short pid, bool resetStats) noexcept;
/** /**
* \brief Set the character level of a player. * \brief Set the character level of a player.
@ -388,7 +386,7 @@ public:
* \param value The new level of the player. * \param value The new level of the player.
* \return void * \return void
*/ */
static void SetLevel(unsigned short pid, int value) noexcept; extern "C" void SetLevel(unsigned short pid, int value) noexcept;
/** /**
* \brief Set the player's progress to their next character level. * \brief Set the player's progress to their next character level.
@ -397,7 +395,7 @@ public:
* \param value The new level progress of the player. * \param value The new level progress of the player.
* \return void * \return void
*/ */
static void SetLevelProgress(unsigned short pid, int value) noexcept; extern "C" void SetLevelProgress(unsigned short pid, int value) noexcept;
/** /**
* \brief Set the base health of a player. * \brief Set the base health of a player.
@ -406,7 +404,7 @@ public:
* \param name The new base health of the player. * \param name The new base health of the player.
* \return void * \return void
*/ */
static void SetHealthBase(unsigned short pid, double value) noexcept; extern "C" void SetHealthBase(unsigned short pid, double value) noexcept;
/** /**
* \brief Set the current health of a player. * \brief Set the current health of a player.
@ -415,7 +413,7 @@ public:
* \param name The new current health of the player. * \param name The new current health of the player.
* \return void * \return void
*/ */
static void SetHealthCurrent(unsigned short pid, double value) noexcept; extern "C" void SetHealthCurrent(unsigned short pid, double value) noexcept;
/** /**
* \brief Set the base magicka of a player. * \brief Set the base magicka of a player.
@ -424,7 +422,7 @@ public:
* \param name The new base magicka of the player. * \param name The new base magicka of the player.
* \return void * \return void
*/ */
static void SetMagickaBase(unsigned short pid, double value) noexcept; extern "C" void SetMagickaBase(unsigned short pid, double value) noexcept;
/** /**
* \brief Set the current magicka of a player. * \brief Set the current magicka of a player.
@ -433,7 +431,7 @@ public:
* \param name The new current magicka of the player. * \param name The new current magicka of the player.
* \return void * \return void
*/ */
static void SetMagickaCurrent(unsigned short pid, double value) noexcept; extern "C" void SetMagickaCurrent(unsigned short pid, double value) noexcept;
/** /**
* \brief Set the base fatigue of a player. * \brief Set the base fatigue of a player.
@ -442,7 +440,7 @@ public:
* \param name The new base fatigue of the player. * \param name The new base fatigue of the player.
* \return void * \return void
*/ */
static void SetFatigueBase(unsigned short pid, double value) noexcept; extern "C" void SetFatigueBase(unsigned short pid, double value) noexcept;
/** /**
* \brief Set the current fatigue of a player. * \brief Set the current fatigue of a player.
@ -451,7 +449,7 @@ public:
* \param name The new current fatigue of the player. * \param name The new current fatigue of the player.
* \return void * \return void
*/ */
static void SetFatigueCurrent(unsigned short pid, double value) noexcept; extern "C" void SetFatigueCurrent(unsigned short pid, double value) noexcept;
/** /**
* \brief Set the base value of a player's attribute. * \brief Set the base value of a player's attribute.
@ -461,7 +459,7 @@ public:
* \param value The new base value of the player's attribute. * \param value The new base value of the player's attribute.
* \return void * \return void
*/ */
static void SetAttributeBase(unsigned short pid, unsigned short attributeId, int value) noexcept; extern "C" void SetAttributeBase(unsigned short pid, unsigned short attributeId, int value) noexcept;
/** /**
* \brief Clear the modifier value of a player's attribute. * \brief Clear the modifier value of a player's attribute.
@ -475,7 +473,7 @@ public:
* \param attributeId The attribute ID. * \param attributeId The attribute ID.
* \return void * \return void
*/ */
static void ClearAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept; extern "C" void ClearAttributeModifier(unsigned short pid, unsigned short attributeId) noexcept;
/** /**
* \brief Set the base value of a player's skill. * \brief Set the base value of a player's skill.
@ -485,7 +483,7 @@ public:
* \param value The new base value of the player's skill. * \param value The new base value of the player's skill.
* \return void * \return void
*/ */
static void SetSkillBase(unsigned short pid, unsigned short skillId, int value) noexcept; extern "C" void SetSkillBase(unsigned short pid, unsigned short skillId, int value) noexcept;
/** /**
* \brief Clear the modifier value of a player's skill. * \brief Clear the modifier value of a player's skill.
@ -499,7 +497,7 @@ public:
* \param skillId The skill ID. * \param skillId The skill ID.
* \return void * \return void
*/ */
static void ClearSkillModifier(unsigned short pid, unsigned short skillId) noexcept; extern "C" void ClearSkillModifier(unsigned short pid, unsigned short skillId) noexcept;
/** /**
* \brief Set the progress the player has made towards increasing a certain skill by 1. * \brief Set the progress the player has made towards increasing a certain skill by 1.
@ -509,7 +507,7 @@ public:
* \param value The progress value. * \param value The progress value.
* \return void * \return void
*/ */
static void SetSkillProgress(unsigned short pid, unsigned short skillId, double value) noexcept; extern "C" void SetSkillProgress(unsigned short pid, unsigned short skillId, double value) noexcept;
/** /**
* \brief Set the bonus applied to a certain attribute at the next level up as a result * \brief Set the bonus applied to a certain attribute at the next level up as a result
@ -522,7 +520,7 @@ public:
* \param value The increase in the attribute caused by skills. * \param value The increase in the attribute caused by skills.
* \return void * \return void
*/ */
static void SetSkillIncrease(unsigned short pid, unsigned int attributeId, int value) noexcept; extern "C" void SetSkillIncrease(unsigned short pid, unsigned int attributeId, int value) noexcept;
/** /**
* \brief Set the bounty of a player. * \brief Set the bounty of a player.
@ -531,7 +529,7 @@ public:
* \param value The new bounty. * \param value The new bounty.
* \return void * \return void
*/ */
static void SetBounty(unsigned short pid, int value) noexcept; extern "C" void SetBounty(unsigned short pid, int value) noexcept;
/** /**
* \brief Set the current and ending stages of character generation for a player. * \brief Set the current and ending stages of character generation for a player.
@ -543,7 +541,7 @@ public:
* \param endStage The new ending stage. * \param endStage The new ending stage.
* \return void * \return void
*/ */
static void SetCharGenStage(unsigned short pid, int currentStage, int endStage) noexcept; extern "C" void SetCharGenStage(unsigned short pid, int currentStage, int endStage) noexcept;
/** /**
* \brief Send a PlayerBaseInfo packet with a player's name, race, head mesh, * \brief Send a PlayerBaseInfo packet with a player's name, race, head mesh,
@ -554,7 +552,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendBaseInfo(unsigned short pid) noexcept; extern "C" void SendBaseInfo(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerStatsDynamic packet with a player's dynamic stats (health, * \brief Send a PlayerStatsDynamic packet with a player's dynamic stats (health,
@ -565,7 +563,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendStatsDynamic(unsigned short pid) noexcept; extern "C" void SendStatsDynamic(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerAttribute packet with a player's attributes and bonuses * \brief Send a PlayerAttribute packet with a player's attributes and bonuses
@ -577,7 +575,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendAttributes(unsigned short pid) noexcept; extern "C" void SendAttributes(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerSkill packet with a player's skills. * \brief Send a PlayerSkill packet with a player's skills.
@ -587,7 +585,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendSkills(unsigned short pid) noexcept; extern "C" void SendSkills(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerLevel packet with a player's character level and * \brief Send a PlayerLevel packet with a player's character level and
@ -598,7 +596,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendLevel(unsigned short pid) noexcept; extern "C" void SendLevel(unsigned short pid) noexcept;
/** /**
* \brief Send a PlayerBounty packet with a player's bounty. * \brief Send a PlayerBounty packet with a player's bounty.
@ -608,7 +606,7 @@ public:
* \param pid The player ID. * \param pid The player ID.
* \return void * \return void
*/ */
static void SendBounty(unsigned short pid) noexcept; extern "C" void SendBounty(unsigned short pid) noexcept;
}; }
#endif //OPENMW_STATAPI_HPP #endif //OPENMW_STATAPI_HPP

@ -11,17 +11,17 @@
using namespace std; using namespace std;
using namespace mwmp; using namespace mwmp;
int ScriptFunctions::CreateTimer(ScriptFunc callback, int msec) noexcept extern "C" int TimerFunctions::CreateTimer(ScriptFunc callback, int msec) noexcept
{ {
return mwmp::TimerAPI::CreateTimer(callback, msec, "", vector<boost::any>()); return mwmp::TimerAPI::CreateTimer(callback, msec, "", vector<boost::any>());
} }
int ScriptFunctions::CreateTimerEx(ScriptFunc callback, int msec, const char *types, va_list args) noexcept extern "C" int TimerFunctions::CreateTimerEx(ScriptFunc callback, int msec, const char *types, va_list args) noexcept
{ {
try try
{ {
vector<boost::any> params; vector<boost::any> params;
GetArguments(params, args, types); ScriptFunctions::GetArguments(params, args, types);
return mwmp::TimerAPI::CreateTimer(callback, msec, types, params); return mwmp::TimerAPI::CreateTimer(callback, msec, types, params);
} }
@ -32,27 +32,27 @@ int ScriptFunctions::CreateTimerEx(ScriptFunc callback, int msec, const char *ty
} }
void ScriptFunctions::StartTimer(int timerId) noexcept extern "C" void TimerFunctions::StartTimer(int timerId) noexcept
{ {
TimerAPI::StartTimer(timerId); TimerAPI::StartTimer(timerId);
} }
void ScriptFunctions::StopTimer(int timerId) noexcept extern "C" void TimerFunctions::StopTimer(int timerId) noexcept
{ {
TimerAPI::StopTimer(timerId); TimerAPI::StopTimer(timerId);
} }
void ScriptFunctions::RestartTimer(int timerId, int msec) noexcept extern "C" void TimerFunctions::RestartTimer(int timerId, int msec) noexcept
{ {
TimerAPI::ResetTimer(timerId, msec); TimerAPI::ResetTimer(timerId, msec);
} }
void ScriptFunctions::FreeTimer(int timerId) noexcept extern "C" void TimerFunctions::FreeTimer(int timerId) noexcept
{ {
TimerAPI::FreeTimer(timerId); TimerAPI::FreeTimer(timerId);
} }
bool ScriptFunctions::IsTimerElapsed(int timerId) noexcept extern "C" bool TimerFunctions::IsTimerElapsed(int timerId) noexcept
{ {
return TimerAPI::IsTimerElapsed(timerId); return TimerAPI::IsTimerElapsed(timerId);
} }

@ -0,0 +1,79 @@
//
// Created by koncord on 09.12.18.
//
#ifndef OPENMW_TIMER_HPP
#define OPENMW_TIMER_HPP
#include <apps/openmw-mp/Script/ScriptFunction.hpp>
namespace TimerFunctions
{
/**
* \brief Create a timer that will run a script function after a certain interval.
*
* \param callback The Lua script function.
* \param msec The interval in miliseconds.
* \return The ID of the timer thus created.
*/
extern "C" int CreateTimer(ScriptFunc callback, int msec) noexcept;
/**
* \brief Create a timer that will run a script function after a certain interval and pass
* certain arguments to it.
*
* Example usage:
* - tes3mp.CreateTimerEx("OnTimerTest1", 250, "i", 90)
* - tes3mp.CreateTimerEx("OnTimerTest2", 500, "sif", "Test string", 60, 77.321)
*
* \param callback The Lua script function.
* \param msec The interval in miliseconds.
* \param types The argument types.
* \param args The arguments.
* \return The ID of the timer thus created.
*/
extern "C" int CreateTimerEx(ScriptFunc callback, int msec, const char *types, va_list args) noexcept;
/**
* \brief Start the timer with a certain ID.
*
* \param timerId The timer ID.
* \return void
*/
extern "C" void StartTimer(int timerId) noexcept;
/**
* \brief Stop the timer with a certain ID.
*
* \param timerId The timer ID.
* \return void
*/
extern "C" void StopTimer(int timerId) noexcept;
/**
* \brief Restart the timer with a certain ID for a certain interval.
*
* \param timerId The timer ID.
* \param msec The interval in miliseconds.
* \return void
*/
extern "C" void RestartTimer(int timerId, int msec) noexcept;
/**
* \brief Free the timer with a certain ID.
*
* \param timerId The timer ID.
* \return void
*/
extern "C" void FreeTimer(int timerId) noexcept;
/**
* \brief Check whether a timer is elapsed.
*
* \param timerId The timer ID.
* \return Whether the timer is elapsed.
*/
extern "C" bool IsTimerElapsed(int timerId) noexcept;
}
#endif //OPENMW_TIMER_HPP

@ -13,157 +13,157 @@ using namespace mwmp;
BaseWorldstate *WorldstateFunctions::readWorldstate; BaseWorldstate *WorldstateFunctions::readWorldstate;
BaseWorldstate WorldstateFunctions::writeWorldstate; BaseWorldstate WorldstateFunctions::writeWorldstate;
void WorldstateFunctions::ReadReceivedWorldstate() noexcept extern "C" void WorldstateFunctions::ReadReceivedWorldstate() noexcept
{ {
readWorldstate = mwmp::Networking::getPtr()->getReceivedWorldstate(); readWorldstate = mwmp::Networking::getPtr()->getReceivedWorldstate();
} }
void WorldstateFunctions::CopyReceivedWorldstateToStore() noexcept extern "C" void WorldstateFunctions::CopyReceivedWorldstateToStore() noexcept
{ {
writeWorldstate = *readWorldstate; writeWorldstate = *readWorldstate;
} }
void WorldstateFunctions::ClearMapChanges() noexcept extern "C" void WorldstateFunctions::ClearMapChanges() noexcept
{ {
writeWorldstate.mapTiles.clear(); writeWorldstate.mapTiles.clear();
} }
unsigned int WorldstateFunctions::GetMapChangesSize() noexcept extern "C" unsigned int WorldstateFunctions::GetMapChangesSize() noexcept
{ {
return readWorldstate->mapTiles.size(); return readWorldstate->mapTiles.size();
} }
const char *WorldstateFunctions::GetWeatherRegion() noexcept extern "C" const char *WorldstateFunctions::GetWeatherRegion() noexcept
{ {
return readWorldstate->weather.region.c_str(); return readWorldstate->weather.region.c_str();
} }
int WorldstateFunctions::GetWeatherCurrent() noexcept extern "C" int WorldstateFunctions::GetWeatherCurrent() noexcept
{ {
return readWorldstate->weather.currentWeather; return readWorldstate->weather.currentWeather;
} }
int WorldstateFunctions::GetWeatherNext() noexcept extern "C" int WorldstateFunctions::GetWeatherNext() noexcept
{ {
return readWorldstate->weather.nextWeather; return readWorldstate->weather.nextWeather;
} }
int WorldstateFunctions::GetWeatherQueued() noexcept extern "C" int WorldstateFunctions::GetWeatherQueued() noexcept
{ {
return readWorldstate->weather.queuedWeather; return readWorldstate->weather.queuedWeather;
} }
double WorldstateFunctions::GetWeatherTransitionFactor() noexcept extern "C" double WorldstateFunctions::GetWeatherTransitionFactor() noexcept
{ {
return readWorldstate->weather.transitionFactor; return readWorldstate->weather.transitionFactor;
} }
int WorldstateFunctions::GetMapTileCellX(unsigned int index) noexcept extern "C" int WorldstateFunctions::GetMapTileCellX(unsigned int index) noexcept
{ {
return readWorldstate->mapTiles.at(index).x; return readWorldstate->mapTiles.at(index).x;
} }
int WorldstateFunctions::GetMapTileCellY(unsigned int index) noexcept extern "C" int WorldstateFunctions::GetMapTileCellY(unsigned int index) noexcept
{ {
return readWorldstate->mapTiles.at(index).y; return readWorldstate->mapTiles.at(index).y;
} }
void WorldstateFunctions::SetAuthorityRegion(const char* authorityRegion) noexcept extern "C" void WorldstateFunctions::SetAuthorityRegion(const char* authorityRegion) noexcept
{ {
writeWorldstate.authorityRegion = authorityRegion; writeWorldstate.authorityRegion = authorityRegion;
} }
void WorldstateFunctions::SetWeatherRegion(const char* region) noexcept extern "C" void WorldstateFunctions::SetWeatherRegion(const char* region) noexcept
{ {
writeWorldstate.weather.region = region; writeWorldstate.weather.region = region;
} }
void WorldstateFunctions::SetWeatherForceState(bool forceState) noexcept extern "C" void WorldstateFunctions::SetWeatherForceState(bool forceState) noexcept
{ {
writeWorldstate.forceWeather = forceState; writeWorldstate.forceWeather = forceState;
} }
void WorldstateFunctions::SetWeatherCurrent(int currentWeather) noexcept extern "C" void WorldstateFunctions::SetWeatherCurrent(int currentWeather) noexcept
{ {
writeWorldstate.weather.currentWeather = currentWeather; writeWorldstate.weather.currentWeather = currentWeather;
} }
void WorldstateFunctions::SetWeatherNext(int nextWeather) noexcept extern "C" void WorldstateFunctions::SetWeatherNext(int nextWeather) noexcept
{ {
writeWorldstate.weather.nextWeather = nextWeather; writeWorldstate.weather.nextWeather = nextWeather;
} }
void WorldstateFunctions::SetWeatherQueued(int queuedWeather) noexcept extern "C" void WorldstateFunctions::SetWeatherQueued(int queuedWeather) noexcept
{ {
writeWorldstate.weather.queuedWeather = queuedWeather; writeWorldstate.weather.queuedWeather = queuedWeather;
} }
void WorldstateFunctions::SetWeatherTransitionFactor(double transitionFactor) noexcept extern "C" void WorldstateFunctions::SetWeatherTransitionFactor(double transitionFactor) noexcept
{ {
writeWorldstate.weather.transitionFactor = transitionFactor; writeWorldstate.weather.transitionFactor = transitionFactor;
} }
void WorldstateFunctions::SetHour(double hour) noexcept extern "C" void WorldstateFunctions::SetHour(double hour) noexcept
{ {
writeWorldstate.time.hour = hour; writeWorldstate.time.hour = hour;
} }
void WorldstateFunctions::SetDay(int day) noexcept extern "C" void WorldstateFunctions::SetDay(int day) noexcept
{ {
writeWorldstate.time.day = day; writeWorldstate.time.day = day;
} }
void WorldstateFunctions::SetMonth(int month) noexcept extern "C" void WorldstateFunctions::SetMonth(int month) noexcept
{ {
writeWorldstate.time.month = month; writeWorldstate.time.month = month;
} }
void WorldstateFunctions::SetYear(int year) noexcept extern "C" void WorldstateFunctions::SetYear(int year) noexcept
{ {
writeWorldstate.time.year = year; writeWorldstate.time.year = year;
} }
void WorldstateFunctions::SetDaysPassed(int daysPassed) noexcept extern "C" void WorldstateFunctions::SetDaysPassed(int daysPassed) noexcept
{ {
writeWorldstate.time.daysPassed = daysPassed; writeWorldstate.time.daysPassed = daysPassed;
} }
void WorldstateFunctions::SetTimeScale(double timeScale) noexcept extern "C" void WorldstateFunctions::SetTimeScale(double timeScale) noexcept
{ {
writeWorldstate.time.timeScale = timeScale; writeWorldstate.time.timeScale = timeScale;
} }
void WorldstateFunctions::SetPlayerCollisionState(bool state) noexcept extern "C" void WorldstateFunctions::SetPlayerCollisionState(bool state) noexcept
{ {
writeWorldstate.hasPlayerCollision = state; writeWorldstate.hasPlayerCollision = state;
} }
void WorldstateFunctions::SetActorCollisionState(bool state) noexcept extern "C" void WorldstateFunctions::SetActorCollisionState(bool state) noexcept
{ {
writeWorldstate.hasActorCollision = state; writeWorldstate.hasActorCollision = state;
} }
void WorldstateFunctions::SetPlacedObjectCollisionState(bool state) noexcept extern "C" void WorldstateFunctions::SetPlacedObjectCollisionState(bool state) noexcept
{ {
writeWorldstate.hasPlacedObjectCollision = state; writeWorldstate.hasPlacedObjectCollision = state;
} }
void WorldstateFunctions::UseActorCollisionForPlacedObjects(bool useActorCollision) noexcept extern "C" void WorldstateFunctions::UseActorCollisionForPlacedObjects(bool useActorCollision) noexcept
{ {
writeWorldstate.useActorCollisionForPlacedObjects = useActorCollision; writeWorldstate.useActorCollisionForPlacedObjects = useActorCollision;
} }
void WorldstateFunctions::AddEnforcedCollisionRefId(const char *refId) noexcept extern "C" void WorldstateFunctions::AddEnforcedCollisionRefId(const char *refId) noexcept
{ {
writeWorldstate.enforcedCollisionRefIds.push_back(refId); writeWorldstate.enforcedCollisionRefIds.push_back(refId);
} }
void WorldstateFunctions::ClearEnforcedCollisionRefIds() noexcept extern "C" void WorldstateFunctions::ClearEnforcedCollisionRefIds() noexcept
{ {
writeWorldstate.enforcedCollisionRefIds.clear(); writeWorldstate.enforcedCollisionRefIds.clear();
} }
void WorldstateFunctions::SaveMapTileImageFile(unsigned int index, const char *filePath) noexcept extern "C" void WorldstateFunctions::SaveMapTileImageFile(unsigned int index, const char *filePath) noexcept
{ {
if (index >= readWorldstate->mapTiles.size()) if (index >= readWorldstate->mapTiles.size())
return; return;
@ -175,7 +175,7 @@ void WorldstateFunctions::SaveMapTileImageFile(unsigned int index, const char *f
std::copy(imageData.begin(), imageData.end(), outputIterator); std::copy(imageData.begin(), imageData.end(), outputIterator);
} }
void WorldstateFunctions::LoadMapTileImageFile(int cellX, int cellY, const char* filePath) noexcept extern "C" void WorldstateFunctions::LoadMapTileImageFile(int cellX, int cellY, const char* filePath) noexcept
{ {
mwmp::MapTile mapTile; mwmp::MapTile mapTile;
mapTile.x = cellX; mapTile.x = cellX;
@ -196,7 +196,7 @@ void WorldstateFunctions::LoadMapTileImageFile(int cellX, int cellY, const char*
} }
} }
void WorldstateFunctions::SendWorldMap(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void WorldstateFunctions::SendWorldMap(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -212,7 +212,7 @@ void WorldstateFunctions::SendWorldMap(unsigned short pid, bool sendToOtherPlaye
packet->Send(true); packet->Send(true);
} }
void WorldstateFunctions::SendWorldTime(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void WorldstateFunctions::SendWorldTime(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -228,7 +228,7 @@ void WorldstateFunctions::SendWorldTime(unsigned short pid, bool sendToOtherPlay
packet->Send(true); packet->Send(true);
} }
void WorldstateFunctions::SendWorldWeather(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void WorldstateFunctions::SendWorldWeather(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -244,7 +244,7 @@ void WorldstateFunctions::SendWorldWeather(unsigned short pid, bool sendToOtherP
packet->Send(true); packet->Send(true);
} }
void WorldstateFunctions::SendWorldCollisionOverride(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept extern "C" void WorldstateFunctions::SendWorldCollisionOverride(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -260,7 +260,7 @@ void WorldstateFunctions::SendWorldCollisionOverride(unsigned short pid, bool se
packet->Send(true); packet->Send(true);
} }
void WorldstateFunctions::SendWorldRegionAuthority(unsigned short pid) noexcept extern "C" void WorldstateFunctions::SendWorldRegionAuthority(unsigned short pid) noexcept
{ {
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
@ -276,7 +276,7 @@ void WorldstateFunctions::SendWorldRegionAuthority(unsigned short pid) noexcept
packet->Send(true); packet->Send(true);
} }
extern "C"
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
void WorldstateFunctions::ReadLastWorldstate() noexcept void WorldstateFunctions::ReadLastWorldstate() noexcept
@ -284,7 +284,7 @@ void WorldstateFunctions::ReadLastWorldstate() noexcept
ReadReceivedWorldstate(); ReadReceivedWorldstate();
} }
void WorldstateFunctions::CopyLastWorldstateToStore() noexcept extern "C" void WorldstateFunctions::CopyLastWorldstateToStore() noexcept
{ {
CopyReceivedWorldstateToStore(); CopyReceivedWorldstateToStore();
} }

@ -58,19 +58,17 @@
{"ReadLastWorldstate", WorldstateFunctions::ReadLastWorldstate},\ {"ReadLastWorldstate", WorldstateFunctions::ReadLastWorldstate},\
{"CopyLastWorldstateToStore", WorldstateFunctions::CopyLastWorldstateToStore} {"CopyLastWorldstateToStore", WorldstateFunctions::CopyLastWorldstateToStore}
class WorldstateFunctions namespace WorldstateFunctions
{ {
public: extern "C" mwmp::BaseWorldstate *readWorldstate;
extern "C" mwmp::BaseWorldstate writeWorldstate;
static mwmp::BaseWorldstate *readWorldstate;
static mwmp::BaseWorldstate writeWorldstate;
/** /**
* \brief Use the last worldstate received by the server as the one being read. * \brief Use the last worldstate received by the server as the one being read.
* *
* \return void * \return void
*/ */
static void ReadReceivedWorldstate() noexcept; extern "C" void ReadReceivedWorldstate() noexcept;
/** /**
* \brief Take the contents of the read-only worldstate last received by the * \brief Take the contents of the read-only worldstate last received by the
@ -79,7 +77,7 @@ public:
* *
* \return void * \return void
*/ */
static void CopyReceivedWorldstateToStore() noexcept; extern "C" void CopyReceivedWorldstateToStore() noexcept;
/** /**
* \brief Clear the map changes for the write-only worldstate. * \brief Clear the map changes for the write-only worldstate.
@ -88,49 +86,49 @@ public:
* *
* \return void * \return void
*/ */
static void ClearMapChanges() noexcept; extern "C" void ClearMapChanges() noexcept;
/** /**
* \brief Get the number of indexes in the read worldstate's map changes. * \brief Get the number of indexes in the read worldstate's map changes.
* *
* \return The number of indexes. * \return The number of indexes.
*/ */
static unsigned int GetMapChangesSize() noexcept; extern "C" unsigned int GetMapChangesSize() noexcept;
/** /**
* \brief Get the weather region in the read worldstate. * \brief Get the weather region in the read worldstate.
* *
* \return The weather region. * \return The weather region.
*/ */
static const char *GetWeatherRegion() noexcept; extern "C" const char *GetWeatherRegion() noexcept;
/** /**
* \brief Get the current weather in the read worldstate. * \brief Get the current weather in the read worldstate.
* *
* \return The current weather. * \return The current weather.
*/ */
static int GetWeatherCurrent() noexcept; extern "C" int GetWeatherCurrent() noexcept;
/** /**
* \brief Get the next weather in the read worldstate. * \brief Get the next weather in the read worldstate.
* *
* \return The next weather. * \return The next weather.
*/ */
static int GetWeatherNext() noexcept; extern "C" int GetWeatherNext() noexcept;
/** /**
* \brief Get the queued weather in the read worldstate. * \brief Get the queued weather in the read worldstate.
* *
* \return The queued weather. * \return The queued weather.
*/ */
static int GetWeatherQueued() noexcept; extern "C" int GetWeatherQueued() noexcept;
/** /**
* \brief Get the transition factor of the weather in the read worldstate. * \brief Get the transition factor of the weather in the read worldstate.
* *
* \return The transition factor of the weather. * \return The transition factor of the weather.
*/ */
static double GetWeatherTransitionFactor() noexcept; extern "C" double GetWeatherTransitionFactor() noexcept;
/** /**
* \brief Get the X coordinate of the cell corresponding to the map tile at a certain index in * \brief Get the X coordinate of the cell corresponding to the map tile at a certain index in
@ -139,7 +137,7 @@ public:
* \param index The index of the map tile. * \param index The index of the map tile.
* \return The X coordinate of the cell. * \return The X coordinate of the cell.
*/ */
static int GetMapTileCellX(unsigned int index) noexcept; extern "C" int GetMapTileCellX(unsigned int index) noexcept;
/** /**
* \brief Get the Y coordinate of the cell corresponding to the map tile at a certain index in * \brief Get the Y coordinate of the cell corresponding to the map tile at a certain index in
@ -148,7 +146,7 @@ public:
* \param index The index of the map tile. * \param index The index of the map tile.
* \return The Y coordinate of the cell. * \return The Y coordinate of the cell.
*/ */
static int GetMapTileCellY(unsigned int index) noexcept; extern "C" int GetMapTileCellY(unsigned int index) noexcept;
/** /**
* \brief Set the region affected by the next WorldRegionAuthority packet sent. * \brief Set the region affected by the next WorldRegionAuthority packet sent.
@ -156,7 +154,7 @@ public:
* \param region The region. * \param region The region.
* \return void * \return void
*/ */
static void SetAuthorityRegion(const char* authorityRegion) noexcept; extern "C" void SetAuthorityRegion(const char* authorityRegion) noexcept;
/** /**
* \brief Set the weather region in the write-only worldstate stored on the server. * \brief Set the weather region in the write-only worldstate stored on the server.
@ -164,7 +162,7 @@ public:
* \param region The region. * \param region The region.
* \return void * \return void
*/ */
static void SetWeatherRegion(const char* region) noexcept; extern "C" void SetWeatherRegion(const char* region) noexcept;
/** /**
* \brief Set the weather forcing state in the write-only worldstate stored on the server. * \brief Set the weather forcing state in the write-only worldstate stored on the server.
@ -174,7 +172,7 @@ public:
* \param forceState The weather forcing state. * \param forceState The weather forcing state.
* \return void * \return void
*/ */
static void SetWeatherForceState(bool forceState) noexcept; extern "C" void SetWeatherForceState(bool forceState) noexcept;
/** /**
* \brief Set the current weather in the write-only worldstate stored on the server. * \brief Set the current weather in the write-only worldstate stored on the server.
@ -182,7 +180,7 @@ public:
* \param currentWeather The current weather. * \param currentWeather The current weather.
* \return void * \return void
*/ */
static void SetWeatherCurrent(int currentWeather) noexcept; extern "C" void SetWeatherCurrent(int currentWeather) noexcept;
/** /**
* \brief Set the next weather in the write-only worldstate stored on the server. * \brief Set the next weather in the write-only worldstate stored on the server.
@ -190,7 +188,7 @@ public:
* \param nextWeather The next weather. * \param nextWeather The next weather.
* \return void * \return void
*/ */
static void SetWeatherNext(int nextWeather) noexcept; extern "C" void SetWeatherNext(int nextWeather) noexcept;
/** /**
* \brief Set the queued weather in the write-only worldstate stored on the server. * \brief Set the queued weather in the write-only worldstate stored on the server.
@ -198,7 +196,7 @@ public:
* \param queuedWeather The queued weather. * \param queuedWeather The queued weather.
* \return void * \return void
*/ */
static void SetWeatherQueued(int queuedWeather) noexcept; extern "C" void SetWeatherQueued(int queuedWeather) noexcept;
/** /**
* \brief Set the transition factor for the weather in the write-only worldstate stored on the server. * \brief Set the transition factor for the weather in the write-only worldstate stored on the server.
@ -206,7 +204,7 @@ public:
* \param transitionFactor The transition factor. * \param transitionFactor The transition factor.
* \return void * \return void
*/ */
static void SetWeatherTransitionFactor(double transitionFactor) noexcept; extern "C" void SetWeatherTransitionFactor(double transitionFactor) noexcept;
/** /**
* \brief Set the world's hour in the write-only worldstate stored on the server. * \brief Set the world's hour in the write-only worldstate stored on the server.
@ -214,7 +212,7 @@ public:
* \param hour The hour. * \param hour The hour.
* \return void * \return void
*/ */
static void SetHour(double hour) noexcept; extern "C" void SetHour(double hour) noexcept;
/** /**
* \brief Set the world's day in the write-only worldstate stored on the server. * \brief Set the world's day in the write-only worldstate stored on the server.
@ -222,7 +220,7 @@ public:
* \param day The day. * \param day The day.
* \return void * \return void
*/ */
static void SetDay(int day) noexcept; extern "C" void SetDay(int day) noexcept;
/** /**
* \brief Set the world's month in the write-only worldstate stored on the server. * \brief Set the world's month in the write-only worldstate stored on the server.
@ -230,7 +228,7 @@ public:
* \param month The month. * \param month The month.
* \return void * \return void
*/ */
static void SetMonth(int month) noexcept; extern "C" void SetMonth(int month) noexcept;
/** /**
* \brief Set the world's year in the write-only worldstate stored on the server. * \brief Set the world's year in the write-only worldstate stored on the server.
@ -238,7 +236,7 @@ public:
* \param year The year. * \param year The year.
* \return void * \return void
*/ */
static void SetYear(int year) noexcept; extern "C" void SetYear(int year) noexcept;
/** /**
* \brief Set the world's days passed in the write-only worldstate stored on the server. * \brief Set the world's days passed in the write-only worldstate stored on the server.
@ -246,7 +244,7 @@ public:
* \param daysPassed The days passed. * \param daysPassed The days passed.
* \return void * \return void
*/ */
static void SetDaysPassed(int daysPassed) noexcept; extern "C" void SetDaysPassed(int daysPassed) noexcept;
/** /**
* \brief Set the world's time scale in the write-only worldstate stored on the server. * \brief Set the world's time scale in the write-only worldstate stored on the server.
@ -255,7 +253,7 @@ public:
* \param timeScale The time scale. * \param timeScale The time scale.
* \return void * \return void
*/ */
static void SetTimeScale(double timeScale) noexcept; extern "C" void SetTimeScale(double timeScale) noexcept;
/** /**
* \brief Set the collision state for other players in the write-only worldstate stored * \brief Set the collision state for other players in the write-only worldstate stored
@ -264,7 +262,7 @@ public:
* \param state The collision state. * \param state The collision state.
* \return void * \return void
*/ */
static void SetPlayerCollisionState(bool state) noexcept; extern "C" void SetPlayerCollisionState(bool state) noexcept;
/** /**
* \brief Set the collision state for actors in the write-only worldstate stored on the * \brief Set the collision state for actors in the write-only worldstate stored on the
@ -273,7 +271,7 @@ public:
* \param state The collision state. * \param state The collision state.
* \return void * \return void
*/ */
static void SetActorCollisionState(bool state) noexcept; extern "C" void SetActorCollisionState(bool state) noexcept;
/** /**
* \brief Set the collision state for placed objects in the write-only worldstate stored * \brief Set the collision state for placed objects in the write-only worldstate stored
@ -282,7 +280,7 @@ public:
* \param state The collision state. * \param state The collision state.
* \return void * \return void
*/ */
static void SetPlacedObjectCollisionState(bool state) noexcept; extern "C" void SetPlacedObjectCollisionState(bool state) noexcept;
/** /**
* \brief Whether placed objects with collision turned on should use actor collision, i.e. * \brief Whether placed objects with collision turned on should use actor collision, i.e.
@ -291,7 +289,7 @@ public:
* \param useActorCollision Whether to use actor collision. * \param useActorCollision Whether to use actor collision.
* \return void * \return void
*/ */
static void UseActorCollisionForPlacedObjects(bool useActorCollision) noexcept; extern "C" void UseActorCollisionForPlacedObjects(bool useActorCollision) noexcept;
/** /**
* \brief Add a refId to the list of refIds for which collision should be enforced * \brief Add a refId to the list of refIds for which collision should be enforced
@ -300,7 +298,7 @@ public:
* \param refId The refId. * \param refId The refId.
* \return void * \return void
*/ */
static void AddEnforcedCollisionRefId(const char* refId) noexcept; extern "C" void AddEnforcedCollisionRefId(const char* refId) noexcept;
/** /**
* \brief Clear the list of refIdsd for which collision should be enforced irrespective * \brief Clear the list of refIdsd for which collision should be enforced irrespective
@ -308,7 +306,7 @@ public:
* *
* \return void * \return void
*/ */
static void ClearEnforcedCollisionRefIds() noexcept; extern "C" void ClearEnforcedCollisionRefIds() noexcept;
/** /**
* \brief Save the .png image data of the map tile at a certain index in the read worldstate's * \brief Save the .png image data of the map tile at a certain index in the read worldstate's
@ -318,7 +316,7 @@ public:
* \param filePath The file path of the resulting file. * \param filePath The file path of the resulting file.
* \return void * \return void
*/ */
static void SaveMapTileImageFile(unsigned int index, const char *filePath) noexcept; extern "C" void SaveMapTileImageFile(unsigned int index, const char *filePath) noexcept;
/** /**
* \brief Load a .png file as the image data for a map tile and add it to the write-only worldstate * \brief Load a .png file as the image data for a map tile and add it to the write-only worldstate
@ -329,7 +327,7 @@ public:
* \param filePath The file path of the loaded file. * \param filePath The file path of the loaded file.
* \return void * \return void
*/ */
static void LoadMapTileImageFile(int cellX, int cellY, const char* filePath) noexcept; extern "C" void LoadMapTileImageFile(int cellX, int cellY, const char* filePath) noexcept;
/** /**
* \brief Send a WorldRegionAuthority packet establishing a certain player as the only one who * \brief Send a WorldRegionAuthority packet establishing a certain player as the only one who
@ -340,7 +338,7 @@ public:
* \param pid The player ID attached to the packet. * \param pid The player ID attached to the packet.
* \return void * \return void
*/ */
static void SendWorldRegionAuthority(unsigned short pid) noexcept; extern "C" void SendWorldRegionAuthority(unsigned short pid) noexcept;
/** /**
* \brief Send a WorldMap packet with the current set of map changes in the write-only * \brief Send a WorldMap packet with the current set of map changes in the write-only
@ -351,7 +349,7 @@ public:
* or to all players on the server. * or to all players on the server.
* \return void * \return void
*/ */
static void SendWorldMap(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendWorldMap(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a WorldTime packet with the current time and time scale in the write-only * \brief Send a WorldTime packet with the current time and time scale in the write-only
@ -364,7 +362,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendWorldTime(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendWorldTime(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a WorldWeather packet with the current weather in the write-only worldstate. * \brief Send a WorldWeather packet with the current weather in the write-only worldstate.
@ -376,7 +374,7 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendWorldWeather(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendWorldWeather(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
/** /**
* \brief Send a WorldCollisionOverride packet with the current collision overrides in * \brief Send a WorldCollisionOverride packet with the current collision overrides in
@ -389,14 +387,13 @@ public:
* to the packet (false by default). * to the packet (false by default).
* \return void * \return void
*/ */
static void SendWorldCollisionOverride(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept; extern "C" void SendWorldCollisionOverride(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
// All methods below are deprecated versions of methods from above // All methods below are deprecated versions of methods from above
static void ReadLastWorldstate() noexcept; extern "C" void ReadLastWorldstate() noexcept;
static void CopyLastWorldstateToStore() noexcept; extern "C" void CopyLastWorldstateToStore() noexcept;
}
};
#endif //OPENMW_WORLDSTATEAPI_HPP #endif //OPENMW_WORLDSTATEAPI_HPP

@ -68,24 +68,3 @@ void ScriptFunctions::GetArguments(std::vector<boost::any> &params, va_list args
} }
va_end(args); va_end(args);
} }
void ScriptFunctions::MakePublic(ScriptFunc _public, const char *name, char ret_type, const char *def) noexcept
{
Public::MakePublic(_public, name, ret_type, def);
}
boost::any ScriptFunctions::CallPublic(const char *name, va_list args) noexcept
{
vector<boost::any> params;
try
{
string def = Public::GetDefinition(name);
GetArguments(params, args, def);
return Public::Call(name, params);
}
catch (...) {}
return 0;
}

@ -14,6 +14,7 @@
#include <Script/Functions/Miscellaneous.hpp> #include <Script/Functions/Miscellaneous.hpp>
#include <Script/Functions/Objects.hpp> #include <Script/Functions/Objects.hpp>
#include <Script/Functions/Positions.hpp> #include <Script/Functions/Positions.hpp>
#include <Script/Functions/Public.hpp>
#include <Script/Functions/Quests.hpp> #include <Script/Functions/Quests.hpp>
#include <Script/Functions/RecordsDynamic.hpp> #include <Script/Functions/RecordsDynamic.hpp>
#include <Script/Functions/Shapeshift.hpp> #include <Script/Functions/Shapeshift.hpp>
@ -21,6 +22,7 @@
#include <Script/Functions/Settings.hpp> #include <Script/Functions/Settings.hpp>
#include <Script/Functions/Spells.hpp> #include <Script/Functions/Spells.hpp>
#include <Script/Functions/Stats.hpp> #include <Script/Functions/Stats.hpp>
#include <Script/Functions/Timer.hpp>
#include <Script/Functions/Worldstate.hpp> #include <Script/Functions/Worldstate.hpp>
#include <RakNetTypes.h> #include <RakNetTypes.h>
#include <tuple> #include <tuple>
@ -46,89 +48,19 @@
class ScriptFunctions class ScriptFunctions
{ {
public: public:
static void GetArguments(std::vector<boost::any> &params, va_list args, const std::string &def); static void GetArguments(std::vector<boost::any> &params, va_list args, const std::string &def);
static void MakePublic(ScriptFunc _public, const char *name, char ret_type, const char *def) noexcept;
static boost::any CallPublic(const char *name, va_list args) noexcept;
/**
* \brief Create a timer that will run a script function after a certain interval.
*
* \param callback The Lua script function.
* \param msec The interval in miliseconds.
* \return The ID of the timer thus created.
*/
static int CreateTimer(ScriptFunc callback, int msec) noexcept;
/**
* \brief Create a timer that will run a script function after a certain interval and pass
* certain arguments to it.
*
* Example usage:
* - tes3mp.CreateTimerEx("OnTimerTest1", 250, "i", 90)
* - tes3mp.CreateTimerEx("OnTimerTest2", 500, "sif", "Test string", 60, 77.321)
*
* \param callback The Lua script function.
* \param msec The interval in miliseconds.
* \param types The argument types.
* \param args The arguments.
* \return The ID of the timer thus created.
*/
static int CreateTimerEx(ScriptFunc callback, int msec, const char *types, va_list args) noexcept;
/**
* \brief Start the timer with a certain ID.
*
* \param timerId The timer ID.
* \return void
*/
static void StartTimer(int timerId) noexcept;
/**
* \brief Stop the timer with a certain ID.
*
* \param timerId The timer ID.
* \return void
*/
static void StopTimer(int timerId) noexcept;
/**
* \brief Restart the timer with a certain ID for a certain interval.
*
* \param timerId The timer ID.
* \param msec The interval in miliseconds.
* \return void
*/
static void RestartTimer(int timerId, int msec) noexcept;
/**
* \brief Free the timer with a certain ID.
*
* \param timerId The timer ID.
* \return void
*/
static void FreeTimer(int timerId) noexcept;
/**
* \brief Check whether a timer is elapsed.
*
* \param timerId The timer ID.
* \return Whether the timer is elapsed.
*/
static bool IsTimerElapsed(int timerId) noexcept;
static constexpr ScriptFunctionData functions[]{ static constexpr ScriptFunctionData functions[]{
{"CreateTimer", ScriptFunctions::CreateTimer}, {"CreateTimer", TimerFunctions::CreateTimer},
{"CreateTimerEx", ScriptFunctions::CreateTimerEx}, {"CreateTimerEx", TimerFunctions::CreateTimerEx},
{"MakePublic", ScriptFunctions::MakePublic}, {"MakePublic", PublicFunctions::MakePublic},
{"CallPublic", ScriptFunctions::CallPublic}, {"CallPublic", PublicFunctions::CallPublic},
{"StartTimer", ScriptFunctions::StartTimer}, {"StartTimer", TimerFunctions::StartTimer},
{"StopTimer", ScriptFunctions::StopTimer}, {"StopTimer", TimerFunctions::StopTimer},
{"RestartTimer", ScriptFunctions::RestartTimer}, {"RestartTimer", TimerFunctions::RestartTimer},
{"FreeTimer", ScriptFunctions::FreeTimer}, {"FreeTimer", TimerFunctions::FreeTimer},
{"IsTimerElapsed", ScriptFunctions::IsTimerElapsed}, {"IsTimerElapsed", TimerFunctions::IsTimerElapsed},
ACTORAPI, ACTORAPI,
BOOKAPI, BOOKAPI,

Loading…
Cancel
Save