From be24b766f63e2206568510d03dd5e259d3090ca5 Mon Sep 17 00:00:00 2001 From: rtw1x1 Date: Wed, 21 Jan 2026 00:22:30 +0000 Subject: [PATCH] ML-Server: NPC Names client sided --- src/game/packet.h | 1 + src/game/regen.cpp | 1 + src/game/sectree_manager.cpp | 5 +++-- src/game/sectree_manager.h | 7 ++++--- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/game/packet.h b/src/game/packet.h index 6b8b766..15fca99 100644 --- a/src/game/packet.h +++ b/src/game/packet.h @@ -1954,6 +1954,7 @@ typedef struct SPacketGCRefineInformaion struct TNPCPosition { uint8_t bType; + uint32_t dwVnum; char name[CHARACTER_NAME_MAX_LEN+1]; int32_t x; int32_t y; diff --git a/src/game/regen.cpp b/src/game/regen.cpp index 4106907..f3a05a6 100644 --- a/src/game/regen.cpp +++ b/src/game/regen.cpp @@ -676,6 +676,7 @@ bool regen_load(const char* filename, long lMapIndex, int base_x, int base_y) { SECTREE_MANAGER::instance().InsertNPCPosition(lMapIndex, p->m_table.bType, + p->m_table.dwVnum, p->m_table.szLocaleName, (regen->sx+regen->ex) / 2 - base_x, (regen->sy+regen->ey) / 2 - base_y); diff --git a/src/game/sectree_manager.cpp b/src/game/sectree_manager.cpp index 7cbe3f1..861b83b 100644 --- a/src/game/sectree_manager.cpp +++ b/src/game/sectree_manager.cpp @@ -1145,6 +1145,7 @@ void SECTREE_MANAGER::SendNPCPosition(LPCHARACTER ch) for (auto it = m_mapNPCPosition[lMapIndex].begin(); it != m_mapNPCPosition[lMapIndex].end(); ++it) { np.bType = it->bType; + np.dwVnum = it->dwVnum; strlcpy(np.name, it->name, sizeof(np.name)); np.x = it->x; np.y = it->y; @@ -1162,9 +1163,9 @@ void SECTREE_MANAGER::SendNPCPosition(LPCHARACTER ch) d->Packet(&p, sizeof(TPacketGCNPCPosition)); } -void SECTREE_MANAGER::InsertNPCPosition(long lMapIndex, BYTE bType, const char* szName, long x, long y) +void SECTREE_MANAGER::InsertNPCPosition(long lMapIndex, BYTE bType, DWORD dwVnum, const char* szName, long x, long y) { - m_mapNPCPosition[lMapIndex].push_back(npc_info(bType, szName, x, y)); + m_mapNPCPosition[lMapIndex].push_back(npc_info(bType, dwVnum, szName, x, y)); } BYTE SECTREE_MANAGER::GetEmpireFromMapIndex(long lMapIndex) diff --git a/src/game/sectree_manager.h b/src/game/sectree_manager.h index 119cd24..b604b44 100644 --- a/src/game/sectree_manager.h +++ b/src/game/sectree_manager.h @@ -27,10 +27,11 @@ struct TAreaInfo struct npc_info { BYTE bType; + DWORD dwVnum; const char* name; long x, y; - npc_info(BYTE bType, const char* name, long x, long y) - : bType(bType), name(name), x(x), y(y) + npc_info(BYTE bType, DWORD dwVnum, const char* name, long x, long y) + : bType(bType), dwVnum(dwVnum), name(name), x(x), y(y) {} }; @@ -155,7 +156,7 @@ class SECTREE_MANAGER : public singleton TAreaMap& GetDungeonArea(long lMapIndex); void SendNPCPosition(LPCHARACTER ch); - void InsertNPCPosition(long lMapIndex, BYTE bType, const char* szName, long x, long y); + void InsertNPCPosition(long lMapIndex, BYTE bType, DWORD dwVnum, const char* szName, long x, long y); BYTE GetEmpireFromMapIndex(long lMapIndex);