Skip to content

Commit 4e436d9

Browse files
committed
Fix FCNPC_OnInit order call
1 parent 5665123 commit 4e436d9

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/CCallbackManager.cpp

+14-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
std::vector<AMX *> CCallbackManager::m_vAmx;
1515
std::map<AMX *, std::vector<int>> CCallbackManager::m_mapCallbacks;
1616
std::queue<AMX *> CCallbackManager::m_vAmxLoadQueue;
17+
std::queue<AMX *> CCallbackManager::m_vAmxInitQueue;
1718
std::array<char *, CCallbackManager::Callbacks::CallbacksCount> CCallbackManager::m_aCallbackNames = {
1819
(char *)"FCNPC_OnInit",
1920
(char *)"FCNPC_OnCreate",
@@ -57,13 +58,21 @@ void CCallbackManager::Init()
5758

5859
if (vIndexes.size() > 0) {
5960
m_mapCallbacks[pAmx] = vIndexes;
60-
61-
int iIndex = vIndexes.at(FCNPC_OnInit);
62-
if (iIndex != 0) {
63-
amx_Exec(pAmx, NULL, iIndex);
64-
}
6561
}
62+
6663
m_vAmxLoadQueue.pop();
64+
m_vAmxInitQueue.push(pAmx);
65+
}
66+
67+
while (!m_vAmxInitQueue.empty()) {
68+
AMX *pAmx = m_vAmxInitQueue.front();
69+
70+
int iIndex = m_mapCallbacks[pAmx].at(FCNPC_OnInit);
71+
if (iIndex != 0) {
72+
amx_Exec(pAmx, NULL, iIndex);
73+
}
74+
75+
m_vAmxInitQueue.pop();
6776
}
6877
}
6978

src/CCallbackManager.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class CCallbackManager
4646

4747
static std::vector<AMX *> m_vAmx;
4848
static std::queue<AMX *> m_vAmxLoadQueue;
49+
static std::queue<AMX *> m_vAmxInitQueue;
4950

5051
enum Callbacks {
5152
FCNPC_OnInit,

0 commit comments

Comments
 (0)