Compare commits

...

22 Commits

Author SHA1 Message Date
David Markowitz
05dc5d6fcd Add lots of logs 2023-01-07 20:30:36 -08:00
David Markowitz
c24c756f73 Merge branch 'pr/946' into MM12-Testing-branch 2023-01-07 19:59:21 -08:00
David Markowitz
bdb380aed2 Fix missing template 2023-01-07 19:57:47 -08:00
David Markowitz
2baef3f198 Merge remote-tracking branch 'upstream/main' 2023-01-07 19:50:42 -08:00
EmosewaMC
fbf7833b7b Removed build speedups 2023-01-07 12:53:48 -08:00
David Markowitz
05c67fd712 Add try catch around packet handling for sql error 2023-01-06 22:51:19 -08:00
David Markowitz
9d4d618e63 Merge remote-tracking branch 'upstream/main' 2023-01-06 21:13:30 -08:00
David Markowitz
6aa7c592a2 Merge remote-tracking branch 'upstream/main' 2023-01-01 02:10:36 -08:00
David Markowitz
68187d9f96 Merge remote-tracking branch 'upstream/main' 2022-12-30 02:34:19 -08:00
David Markowitz
716e8c646c Fix small issues 2022-12-28 18:21:26 -08:00
David Markowitz
d2cecd0073 Merge remote-tracking branch 'upstream/main' 2022-12-28 16:43:19 -08:00
EmosewaMC
d97f374a90 Merge remote-tracking branch 'upstream/main' 2022-12-27 19:26:24 -08:00
EmosewaMC
a6c6474e67 Merge remote-tracking branch 'upstream/main' 2022-12-23 04:12:38 -08:00
EmosewaMC
dbdf4ac46a Update shutdown time to be accurate 2022-12-21 14:06:42 -08:00
David Markowitz
6ed504c88e Merge remote-tracking branch 'upstream/main' 2022-12-21 02:26:45 -08:00
David Markowitz
9be2ab03b6 Address movement type issues 2022-12-21 02:00:46 -08:00
David Markowitz
e53e31021f Fix projectile behavior 2022-12-20 19:05:30 -08:00
David Markowitz
41b8762c8f Merge remote-tracking branch 'upstream/main' 2022-12-20 14:45:15 -08:00
EmosewaMC
da07a70d4d Merge remote-tracking branch 'upstream/main' 2022-12-19 17:59:56 -08:00
David Markowitz
d78b2958d3 Correctly read in bitStream 2022-12-19 00:24:39 -08:00
David Markowitz
9cfc126842 Fix stuns 2022-12-18 20:44:30 -08:00
David Markowitz
56e3d07669 Fix overread in projectile behavior 2022-12-18 15:57:40 -08:00
3 changed files with 33 additions and 17 deletions

View File

@@ -42,7 +42,7 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
Entity* entity = EntityManager::Instance()->GetEntity(objectID);
User* usr = UserManager::Instance()->GetUser(sysAddr);
Game::logger->Log("GameMessageHandler", "handling message %i", messageID);
if (!entity) {
Game::logger->Log("GameMessageHandler", "Failed to find associated entity (%llu), aborting GM (%X)!", objectID, messageID);

View File

@@ -77,6 +77,7 @@
#include "AMFDeserialize.h"
#include "eBlueprintSaveResponseType.h"
#include "eAninmationFlags.h"
#include "AMFFormat_BitStream.h"
void GameMessages::SendFireEventClientSide(const LWOOBJID& objectID, const SystemAddress& sysAddr, std::u16string args, const LWOOBJID& object, int64_t param1, int param2, const LWOOBJID& sender) {
CBITSTREAM;
@@ -2554,6 +2555,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
//We runs this in async because the http library here is blocking, meaning it'll halt the thread.
//But we don't want the server to go unresponsive, because then the client would disconnect.
Game::logger->Log("GameMessages", "launching async");
std::async(std::launch::async, [&]() {
//We need to get a new ID for our model first:
@@ -2573,7 +2575,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
const auto zoneId = worldId.GetMapID();
const auto cloneId = worldId.GetCloneID();
Game::logger->Log("GameMessages", "doing cdc lookup");
auto query = CDClientDatabase::CreatePreppedStmt(
"SELECT id FROM PropertyTemplate WHERE mapID = ?;");
query.bind(1, (int)zoneId);
@@ -2585,7 +2587,8 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
int templateId = result.getIntField(0);
result.finalize();
try {
Game::logger->Log("GameMessages", "preparing stmt for properties");
auto* propertyLookup = Database::CreatePreppedStmt("SELECT * FROM properties WHERE template_id = ? AND clone_id = ?;");
propertyLookup->setInt(1, templateId);
@@ -2600,7 +2603,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
delete propertyEntry;
delete propertyLookup;
Game::logger->Log("GameMessages", "preparing ugc lookup");
//Insert into ugc:
auto ugcs = Database::CreatePreppedStmt("INSERT INTO `ugc`(`id`, `account_id`, `character_id`, `is_optimized`, `lxfml`, `bake_ao`, `filename`) VALUES (?,?,?,?,?,?,?)");
ugcs->setUInt(1, blueprintIDSmall);
@@ -2616,7 +2619,9 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
ugcs->setBlob(5, &iss);
ugcs->setBoolean(6, false);
ugcs->setString(7, "weedeater.lxfml");
Game::logger->Log("GameMessages", "prepared ugc lookup");
ugcs->execute();
Game::logger->Log("GameMessages", "preparing properties_contents lookup");
delete ugcs;
//Insert into the db as a BBB model:
@@ -2639,9 +2644,14 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
stmt->setDouble(16, 0); // behavior 3. TODO implement this.
stmt->setDouble(17, 0); // behavior 4. TODO implement this.
stmt->setDouble(18, 0); // behavior 5. TODO implement this.
Game::logger->Log("GameMessages", "Executing insertion");
stmt->execute();
delete stmt;
} catch (sql::SQLException& e) {
Game::logger->Log("GameMessages", "error is %s", e.what());
} catch (std::exception& e) {
Game::logger->Log("GameMessages", "caught error %s", e.what());
}
/*
Commented out until UGC server would be updated to use a sd0 file instead of lxfml stream.
(or you uncomment the lxfml decomp stuff above)

View File

@@ -413,6 +413,7 @@ int main(int argc, char** argv) {
UserManager::Instance()->DeletePendingRemovals();
try {
auto t1 = std::chrono::high_resolution_clock::now();
for (uint32_t curPacket = 0; curPacket < maxPacketsToProcess && timeSpent < maxPacketProcessingTime; curPacket++) {
packet = Game::server->Receive();
@@ -428,6 +429,11 @@ int main(int argc, char** argv) {
break;
}
}
} catch (sql::SQLException& e) {
Game::logger->Log("WorldServer", "Caught an error (%s)", e.what());
std::raise(SIGTERM);
}
Metrics::EndMeasurement(MetricVariable::PacketHandling);