From 5fefdfcc170a9f42beee3381c7bb000e4e9f36a0 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Mon, 3 Feb 2020 12:50:05 -0500 Subject: [PATCH 1/3] Added new DefaultGuild rule to Character --- common/ruletypes.h | 1 + 1 file changed, 1 insertion(+) diff --git a/common/ruletypes.h b/common/ruletypes.h index dab1d02e1..a7b70bee6 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -159,6 +159,7 @@ RULE_BOOL(Character, PetsUseReagents, true, "Pets use reagent on spells") RULE_BOOL(Character, DismountWater, true, "Dismount horses when entering water") RULE_BOOL(Character, UseNoJunkFishing, false, "Disregards junk items when fishing") RULE_BOOL(Character, SoftDeletes, true, "When characters are deleted in character select, they are only soft deleted") +RULE_INT(Character, DefaultGuild, 0, "If not 0, new characters placed into the guild # indicated") RULE_CATEGORY_END() RULE_CATEGORY(Mercs) From f9b3b7aecf8c111cd7f87eb166075036c6973294 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Mon, 3 Feb 2020 12:54:26 -0500 Subject: [PATCH 2/3] Implement DefaultGuild rule --- common/database.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/common/database.cpp b/common/database.cpp index ac5ae16bf..581f4c082 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -338,6 +338,27 @@ bool Database::ReserveName(uint32 account_id, char* name) { query = StringFormat("INSERT INTO `character_data` SET `account_id` = %i, `name` = '%s'", account_id, name); results = QueryDatabase(query); if (!results.Success() || results.ErrorMessage() != ""){ return false; } + + // Put character into the default guild if rule is being used. + int guild_id = RuleI(Character, DefaultGuild); + + if (guild_id != 0) { + int char_id=-1; + query = StringFormat("select `id` FROM `character_data` WHERE `name` = '%s'", name); + results = QueryDatabase(query); + for (auto row = results.begin(); row != results.end(); ++row) { + char_id = atoi(row[0]); + } + + if (char_id > -1) { + query = StringFormat("INSERT INTO `guild_members` SET `char_id` = %i, `guild_id` = '%i'", char_id, guild_id); + results = QueryDatabase(query); + if (!results.Success() || results.ErrorMessage() != ""){ + LogInfo("Could not put character [{}] into default Guild", name); + } + } + } + return true; } From b4f42c150f2135c499fd7aaba741980e91a0f757 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Wed, 5 Feb 2020 12:31:29 -0500 Subject: [PATCH 3/3] Update database.cpp Change variable_name and use LastInsertedID() to remove unneeded call. --- common/database.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/common/database.cpp b/common/database.cpp index 581f4c082..2dca2ba20 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -343,15 +343,9 @@ bool Database::ReserveName(uint32 account_id, char* name) { int guild_id = RuleI(Character, DefaultGuild); if (guild_id != 0) { - int char_id=-1; - query = StringFormat("select `id` FROM `character_data` WHERE `name` = '%s'", name); - results = QueryDatabase(query); - for (auto row = results.begin(); row != results.end(); ++row) { - char_id = atoi(row[0]); - } - - if (char_id > -1) { - query = StringFormat("INSERT INTO `guild_members` SET `char_id` = %i, `guild_id` = '%i'", char_id, guild_id); + int character_id=results.LastInsertedID(); + if (character_id > -1) { + query = StringFormat("INSERT INTO `guild_members` SET `char_id` = %i, `guild_id` = '%i'", character_id, guild_id); results = QueryDatabase(query); if (!results.Success() || results.ErrorMessage() != ""){ LogInfo("Could not put character [{}] into default Guild", name);