From aaa116d97c2a8b928632148210cb880c2709a143 Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Sat, 27 Aug 2016 22:24:08 -0400 Subject: [PATCH] Add support for object display names Ex. Kejek Forge in Stonebrunt Mountains --- common/version.h | 2 +- utils/sql/db_update_manifest.txt | 1 + utils/sql/git/required/2016_08_27_object_display_name.sql | 1 + zone/object.cpp | 6 ++++++ zone/object.h | 3 +++ zone/zone.cpp | 3 ++- 6 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 utils/sql/git/required/2016_08_27_object_display_name.sql diff --git a/common/version.h b/common/version.h index 0fa1f2090..0073d5415 100644 --- a/common/version.h +++ b/common/version.h @@ -30,7 +30,7 @@ Manifest: https://github.com/EQEmu/Server/blob/master/utils/sql/db_update_manifest.txt */ -#define CURRENT_BINARY_DATABASE_VERSION 9099 +#define CURRENT_BINARY_DATABASE_VERSION 9100 #ifdef BOTS #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9008 #else diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index 1f5beec28..5674271ae 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -353,6 +353,7 @@ 9097|2016_07_03_npc_class_as_last_name.sql|SELECT `rule_name` FROM `rule_values` WHERE `rule_name` LIKE 'NPC:UseClassAsLastName'|empty| 9098|2016_08_26_object_size_tilt.sql|SHOW COLUMNS FROM `object` LIKE 'size'|empty| 9099|2016_08_27_ip_exemptions.sql|SHOW TABLES LIKE 'ip_exemptions'|empty| +9100|2016_08_27_object_display_name.sql|SHOW COLUMNS FROM `object` LIKE 'display_name'|empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not diff --git a/utils/sql/git/required/2016_08_27_object_display_name.sql b/utils/sql/git/required/2016_08_27_object_display_name.sql new file mode 100644 index 000000000..fbc3e90cd --- /dev/null +++ b/utils/sql/git/required/2016_08_27_object_display_name.sql @@ -0,0 +1 @@ +ALTER TABLE `object` ADD COLUMN `display_name` VARCHAR(64); diff --git a/zone/object.cpp b/zone/object.cpp index a9672ee4f..c00f718b3 100644 --- a/zone/object.cpp +++ b/zone/object.cpp @@ -543,6 +543,7 @@ bool Object::HandleClick(Client* sender, const ClickObject_Struct* click_object) coa->drop_id = click_object->drop_id; coa->player_id = click_object->player_id; coa->icon = m_icon; + strn0cpy(coa->object_name, m_display_name, 64); //if this is not the main user, send them a close and a message if (user == nullptr || user == sender) { @@ -821,6 +822,11 @@ void Object::SetTiltY(float pos) safe_delete(app2); } +void Object::SetDisplayName(const char *in_name) +{ + strn0cpy(m_display_name, in_name, 64); +} + void Object::Depop() { auto app = new EQApplicationPacket(); diff --git a/zone/object.h b/zone/object.h index 896fc4276..23c152cea 100644 --- a/zone/object.h +++ b/zone/object.h @@ -164,6 +164,8 @@ public: void SetSize(float size); uint16 GetSolidType(); void SetSolidType(uint16 size); + void SetDisplayName(const char *in_name); + const char *GetDisplayName() const { return m_display_name; } const char* GetEntityVariable(const char *id); void SetEntityVariable(const char *id, const char *m_var); @@ -186,6 +188,7 @@ protected: float m_z; float m_heading; bool m_ground_spawn; + char m_display_name[64]; std::map o_EntityVariables; diff --git a/zone/zone.cpp b/zone/zone.cpp index 3dd8e55d8..6aa5c9369 100644 --- a/zone/zone.cpp +++ b/zone/zone.cpp @@ -162,7 +162,7 @@ bool Zone::LoadZoneObjects() { std::string query = StringFormat("SELECT id, zoneid, xpos, ypos, zpos, heading, " "itemid, charges, objectname, type, icon, unknown08, " "unknown10, unknown20, unknown24, unknown76, size, tilt_x, " - "tilt_y FROM object " + "tilt_y, display_name FROM object " "WHERE zoneid = %i AND (version = %u OR version = -1)", zoneid, instanceversion); auto results = database.QueryDatabase(query); @@ -275,6 +275,7 @@ bool Zone::LoadZoneObjects() { } auto object = new Object(id, type, icon, data, inst); + object->SetDisplayName(row[19]); entity_list.AddObject(object, false); if (type == OT_DROPPEDITEM && itemid != 0) entity_list.RemoveObject(object->GetID());