mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-04 09:44:10 +00:00
Organize dScripts (#814)
* Organize dScripts whitespace Remove parent scope Remove parent scope from initial setter Remove debug Remove helper programs * Fix NtImagimeterVisibility script Co-authored-by: aronwk-aaron <aronwk.aaron@gmail.com>
This commit is contained in:
5
dScripts/02_server/Map/VE/CMakeLists.txt
Normal file
5
dScripts/02_server/Map/VE/CMakeLists.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
set(DSCRIPTS_SOURCES_02_SERVER_MAP_VE
|
||||
"VeMissionConsole.cpp"
|
||||
"VeEpsilonServer.cpp"
|
||||
"VeBricksampleServer.cpp"
|
||||
PARENT_SCOPE)
|
21
dScripts/02_server/Map/VE/VeBricksampleServer.cpp
Normal file
21
dScripts/02_server/Map/VE/VeBricksampleServer.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
#include "VeBricksampleServer.h"
|
||||
#include "InventoryComponent.h"
|
||||
#include "EntityManager.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "GameMessages.h"
|
||||
|
||||
void VeBricksampleServer::OnUse(Entity* self, Entity* user) {
|
||||
auto* missionComponent = user->GetComponent<MissionComponent>();
|
||||
if (missionComponent != nullptr && missionComponent->GetMissionState(1183) == MissionState::MISSION_STATE_ACTIVE) {
|
||||
const auto loot = self->GetVar<int32_t>(m_LootVariable);
|
||||
auto* inventoryComponent = user->GetComponent<InventoryComponent>();
|
||||
|
||||
if (loot && inventoryComponent != nullptr && inventoryComponent->GetLotCount(loot) == 0) {
|
||||
inventoryComponent->AddItem(loot, 1, eLootSourceType::LOOT_SOURCE_ACTIVITY);
|
||||
|
||||
for (auto* brickEntity : EntityManager::Instance()->GetEntitiesInGroup("Bricks")) {
|
||||
GameMessages::SendNotifyClientObject(brickEntity->GetObjectID(), u"Pickedup");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
dScripts/02_server/Map/VE/VeBricksampleServer.h
Normal file
7
dScripts/02_server/Map/VE/VeBricksampleServer.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
#include "CppScripts.h"
|
||||
|
||||
class VeBricksampleServer : public CppScripts::Script {
|
||||
void OnUse(Entity* self, Entity* user) override;
|
||||
const std::u16string m_LootVariable = u"Loot";
|
||||
};
|
26
dScripts/02_server/Map/VE/VeEpsilonServer.cpp
Normal file
26
dScripts/02_server/Map/VE/VeEpsilonServer.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#include "VeEpsilonServer.h"
|
||||
#include "Character.h"
|
||||
#include "EntityManager.h"
|
||||
#include "GameMessages.h"
|
||||
|
||||
void VeEpsilonServer::OnMissionDialogueOK(Entity* self, Entity* target, int missionID, MissionState missionState) {
|
||||
auto* character = target->GetCharacter();
|
||||
if (character == nullptr)
|
||||
return;
|
||||
|
||||
// Resets the player flags that track which consoles they've used
|
||||
if ((missionID == m_ConsoleMissionID || missionID == m_ConsoleRepeatMissionID)
|
||||
&& (missionState == MissionState::MISSION_STATE_AVAILABLE || missionState == MissionState::MISSION_STATE_COMPLETE_AVAILABLE)) {
|
||||
|
||||
for (auto i = 0; i < 10; i++) {
|
||||
character->SetPlayerFlag(m_ConsoleBaseFlag + i, false);
|
||||
}
|
||||
}
|
||||
|
||||
// Notify the client that all objects have updated
|
||||
self->AddCallbackTimer(3.0f, [this]() {
|
||||
for (const auto* console : EntityManager::Instance()->GetEntitiesInGroup(m_ConsoleGroup)) {
|
||||
GameMessages::SendNotifyClientObject(console->GetObjectID(), u"");
|
||||
}
|
||||
});
|
||||
}
|
10
dScripts/02_server/Map/VE/VeEpsilonServer.h
Normal file
10
dScripts/02_server/Map/VE/VeEpsilonServer.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
#include "CppScripts.h"
|
||||
|
||||
class VeEpsilonServer : public CppScripts::Script {
|
||||
void OnMissionDialogueOK(Entity* self, Entity* target, int missionID, MissionState missionState) override;
|
||||
const uint32_t m_ConsoleMissionID = 1220;
|
||||
const uint32_t m_ConsoleRepeatMissionID = 1225;
|
||||
const uint32_t m_ConsoleBaseFlag = 1010;
|
||||
const std::string m_ConsoleGroup = "Consoles";
|
||||
};
|
25
dScripts/02_server/Map/VE/VeMissionConsole.cpp
Normal file
25
dScripts/02_server/Map/VE/VeMissionConsole.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
#include "VeMissionConsole.h"
|
||||
#include "InventoryComponent.h"
|
||||
#include "Character.h"
|
||||
#include "GameMessages.h"
|
||||
|
||||
void VeMissionConsole::OnUse(Entity* self, Entity* user) {
|
||||
LootGenerator::Instance().DropActivityLoot(user, self, 12551);
|
||||
|
||||
auto* inventoryComponent = user->GetComponent<InventoryComponent>();
|
||||
if (inventoryComponent != nullptr) {
|
||||
inventoryComponent->AddItem(12547, 1, eLootSourceType::LOOT_SOURCE_ACTIVITY); // Add the panel required for pickup
|
||||
}
|
||||
|
||||
// The flag to set is 101<number>
|
||||
const auto flagNumber = self->GetVar<std::u16string>(m_NumberVariable);
|
||||
const auto flag = std::stoi("101" + GeneralUtils::UTF16ToWTF8(flagNumber));
|
||||
|
||||
auto* character = user->GetCharacter();
|
||||
if (character != nullptr) {
|
||||
character->SetPlayerFlag(flag, true);
|
||||
}
|
||||
|
||||
GameMessages::SendNotifyClientObject(self->GetObjectID(), u"");
|
||||
GameMessages::SendTerminateInteraction(user->GetObjectID(), FROM_INTERACTION, self->GetObjectID());
|
||||
}
|
9
dScripts/02_server/Map/VE/VeMissionConsole.h
Normal file
9
dScripts/02_server/Map/VE/VeMissionConsole.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
#include "CppScripts.h"
|
||||
|
||||
class VeMissionConsole : public CppScripts::Script {
|
||||
public:
|
||||
void OnUse(Entity* self, Entity* user) override;
|
||||
private:
|
||||
const std::u16string m_NumberVariable = u"num";
|
||||
};
|
Reference in New Issue
Block a user