Add support for object display names

Ex. Kejek Forge in Stonebrunt Mountains
This commit is contained in:
Michael Cook (mackal) 2016-08-27 22:24:08 -04:00
parent 4360021fc9
commit aaa116d97c
6 changed files with 14 additions and 2 deletions

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
ALTER TABLE `object` ADD COLUMN `display_name` VARCHAR(64);

View File

@ -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();

View File

@ -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<std::string, std::string> o_EntityVariables;

View File

@ -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());