Compare commits
168 Commits
amxmodx-1.
...
amxmodx-1.
Author | SHA1 | Date | |
---|---|---|---|
a54c4f530d | |||
7adc49c541 | |||
baba221dd9 | |||
829485ef2a | |||
b793b80360 | |||
ea34c2c78a | |||
722e97fef2 | |||
bd412d7204 | |||
39e6d958bf | |||
bb54b37399 | |||
88dd3b021e | |||
ef4d19378d | |||
7f1ea1490d | |||
041fb4e37f | |||
193e59df90 | |||
d4703f045d | |||
109b1e45b5 | |||
1f1edef98d | |||
83631e95aa | |||
6eb1242600 | |||
77e7ea161b | |||
09f271e5d0 | |||
e35a8326d5 | |||
09d46aa025 | |||
615e097c68 | |||
ade56b62e9 | |||
b3d7f04b5e | |||
4f81c50a3e | |||
d45c3aeb96 | |||
fff603635a | |||
06f01ea7dc | |||
2395abcf7e | |||
d33f9ba2d4 | |||
aec28542ac | |||
73219c45dd | |||
39d6cb7840 | |||
bfd4e345dd | |||
aded0f9c1c | |||
811265e28b | |||
0caffa2b82 | |||
4dfb01bb1d | |||
862ed243be | |||
39f1fa6045 | |||
f26939e2cc | |||
9d53451933 | |||
4ae54eeb2a | |||
d62ae07b75 | |||
0f22a7fa06 | |||
7f3c2d00ac | |||
b324e8ed9d | |||
8420823713 | |||
1d1b50ce0c | |||
35fcca8a66 | |||
7a01503478 | |||
dd8f138892 | |||
8341e41f04 | |||
a682ec6b7a | |||
451b648c7f | |||
2d1c43c937 | |||
17adb214f2 | |||
3a2839c6c9 | |||
f96f95c4ff | |||
609fdae508 | |||
580305ce92 | |||
cbfd12e0f1 | |||
c5ccf7d2c8 | |||
d1c42751cd | |||
68f1ce7a52 | |||
e5b0ed3af1 | |||
49e70063fa | |||
7aa4cf70be | |||
b661873426 | |||
8e290cdf31 | |||
42f23a832a | |||
13e619bf97 | |||
4332d6c271 | |||
627b3f0f98 | |||
b7b55d060a | |||
b110021f4f | |||
96c49f4ff9 | |||
f53c877670 | |||
b237317e50 | |||
73b2ceb855 | |||
b64fb4678d | |||
d6ed1a8d8a | |||
b762174c30 | |||
86838bead1 | |||
e6c15d9f05 | |||
266ed797c5 | |||
93cb2060dd | |||
0cd1782d01 | |||
75a5dadd4d | |||
f03449acbd | |||
34f127b9aa | |||
0c345ceebc | |||
c5dc780635 | |||
fe0e461c76 | |||
935da9f0de | |||
36e9f29d55 | |||
c66c076a03 | |||
4eaea443e1 | |||
299f1b5f62 | |||
4e7bf7e348 | |||
d048996b50 | |||
a34c8daf34 | |||
6cd5a51c8e | |||
5cabf748ca | |||
1905ea7295 | |||
89158f9342 | |||
db7dc509e0 | |||
c15a23a2a7 | |||
3e0866e57a | |||
551e5298cc | |||
dfea3e8a13 | |||
e8a30e7187 | |||
8a93673276 | |||
ece4db4f43 | |||
8b8cc3dd6b | |||
b33e76d9c4 | |||
6fb6d7d399 | |||
5649a17502 | |||
5cfc2df359 | |||
1ac390b54c | |||
102c2b219f | |||
4e1d420495 | |||
e93e75fa39 | |||
90c213bc6d | |||
6c3e7e7ee0 | |||
8a2528108d | |||
a65d65bee4 | |||
483403aa3a | |||
2a1dbf5247 | |||
7aa687eb69 | |||
699cb2a6d6 | |||
7b82bc7b76 | |||
ed43b8a5ac | |||
d2ebca38a1 | |||
d542015214 | |||
d84c3a3798 | |||
405d9ff48e | |||
a63c728471 | |||
a60e9d205b | |||
553a950b98 | |||
955e827b19 | |||
00380cfe4c | |||
12ecf026db | |||
3fa6cd3227 | |||
fe1ebfe7bb | |||
f3057efd7d | |||
39d5ea94fb | |||
90f11b52bc | |||
9740f6469d | |||
461e7de151 | |||
c2695a8cd8 | |||
5ded9eef2a | |||
44617778c7 | |||
647d226764 | |||
f086273d2b | |||
afde57b27e | |||
c4453a9593 | |||
020b3a5963 | |||
3720810b61 | |||
98e20e0fc7 | |||
e72aff5c14 | |||
63bc8885c9 | |||
ff8fd747c5 | |||
98278b7bb5 | |||
09df281556 |
@ -33,7 +33,7 @@
|
|||||||
#include "debugger.h"
|
#include "debugger.h"
|
||||||
#include "binlog.h"
|
#include "binlog.h"
|
||||||
|
|
||||||
CForward::CForward(const char *name, ForwardExecType et, int numParams, const ForwardParam *paramTypes)
|
CForward::CForward(const char *name, ForwardExecType et, int numParams, const ForwardParam *paramTypes, int fwd_type)
|
||||||
{
|
{
|
||||||
m_FuncName = name;
|
m_FuncName = name;
|
||||||
m_ExecType = et;
|
m_ExecType = et;
|
||||||
@ -47,6 +47,13 @@ CForward::CForward(const char *name, ForwardExecType et, int numParams, const Fo
|
|||||||
|
|
||||||
for (CPluginMngr::iterator iter = g_plugins.begin(); iter; ++iter)
|
for (CPluginMngr::iterator iter = g_plugins.begin(); iter; ++iter)
|
||||||
{
|
{
|
||||||
|
if ((fwd_type != FORWARD_ALL) &&
|
||||||
|
((fwd_type == FORWARD_ONLY_NEW && ((*iter).getAMX()->flags & AMX_FLAG_OLDFILE))
|
||||||
|
|| (fwd_type == FORWARD_ONLY_OLD && !((*iter).getAMX()->flags & AMX_FLAG_OLDFILE))
|
||||||
|
))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if ((*iter).isValid() && amx_FindPublic((*iter).getAMX(), name, &func) == AMX_ERR_NONE)
|
if ((*iter).isValid() && amx_FindPublic((*iter).getAMX(), name, &func) == AMX_ERR_NONE)
|
||||||
{
|
{
|
||||||
AMXForward tmp;
|
AMXForward tmp;
|
||||||
@ -219,6 +226,8 @@ void CSPForward::Set(int func, AMX *amx, int numParams, const ForwardParam *para
|
|||||||
name[0] = '\0';
|
name[0] = '\0';
|
||||||
amx_GetPublic(amx, func, name);
|
amx_GetPublic(amx, func, name);
|
||||||
m_Name.assign(name);
|
m_Name.assign(name);
|
||||||
|
m_ToDelete = false;
|
||||||
|
m_InExec = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSPForward::Set(const char *funcName, AMX *amx, int numParams, const ForwardParam *paramTypes)
|
void CSPForward::Set(const char *funcName, AMX *amx, int numParams, const ForwardParam *paramTypes)
|
||||||
@ -229,6 +238,8 @@ void CSPForward::Set(const char *funcName, AMX *amx, int numParams, const Forwar
|
|||||||
m_HasFunc = (amx_FindPublic(amx, funcName, &m_Func) == AMX_ERR_NONE);
|
m_HasFunc = (amx_FindPublic(amx, funcName, &m_Func) == AMX_ERR_NONE);
|
||||||
isFree = false;
|
isFree = false;
|
||||||
m_Name.assign(funcName);
|
m_Name.assign(funcName);
|
||||||
|
m_ToDelete = false;
|
||||||
|
m_InExec = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
|
cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
|
||||||
@ -241,13 +252,15 @@ cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
|
|||||||
cell realParams[FORWARD_MAX_PARAMS];
|
cell realParams[FORWARD_MAX_PARAMS];
|
||||||
cell *physAddrs[FORWARD_MAX_PARAMS];
|
cell *physAddrs[FORWARD_MAX_PARAMS];
|
||||||
|
|
||||||
if (!m_HasFunc)
|
if (!m_HasFunc || m_ToDelete)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
CPluginMngr::CPlugin *pPlugin = g_plugins.findPluginFast(m_Amx);
|
CPluginMngr::CPlugin *pPlugin = g_plugins.findPluginFast(m_Amx);
|
||||||
if (!pPlugin->isExecutable(m_Func))
|
if (!pPlugin->isExecutable(m_Func))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
m_InExec = true;
|
||||||
|
|
||||||
Debugger *pDebugger = (Debugger *)m_Amx->userdata[UD_DEBUGGER];
|
Debugger *pDebugger = (Debugger *)m_Amx->userdata[UD_DEBUGGER];
|
||||||
if (pDebugger)
|
if (pDebugger)
|
||||||
pDebugger->BeginExec();
|
pDebugger->BeginExec();
|
||||||
@ -349,16 +362,20 @@ cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_InExec = false;
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CForwardMngr::registerForward(const char *funcName, ForwardExecType et, int numParams, const ForwardParam * paramTypes)
|
int CForwardMngr::registerForward(const char *funcName, ForwardExecType et, int numParams, const ForwardParam * paramTypes, int fwd_type)
|
||||||
{
|
{
|
||||||
int retVal = m_Forwards.size() << 1;
|
int retVal = m_Forwards.size() << 1;
|
||||||
CForward *tmp = new CForward(funcName, et, numParams, paramTypes);
|
CForward *tmp = new CForward(funcName, et, numParams, paramTypes, fwd_type);
|
||||||
|
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
|
{
|
||||||
return -1; // should be invalid
|
return -1; // should be invalid
|
||||||
|
}
|
||||||
|
|
||||||
m_Forwards.push_back(tmp);
|
m_Forwards.push_back(tmp);
|
||||||
|
|
||||||
@ -443,7 +460,20 @@ bool CForwardMngr::isIdValid(int id) const
|
|||||||
|
|
||||||
cell CForwardMngr::executeForwards(int id, cell *params)
|
cell CForwardMngr::executeForwards(int id, cell *params)
|
||||||
{
|
{
|
||||||
int retVal = (id & 1) ? m_SPForwards[id >> 1]->execute(params, m_TmpArrays) : m_Forwards[id >> 1]->execute(params, m_TmpArrays);
|
int retVal;
|
||||||
|
if (id & 1)
|
||||||
|
{
|
||||||
|
CSPForward *fwd = m_SPForwards[id >> 1];
|
||||||
|
retVal = fwd->execute(params, m_TmpArrays);
|
||||||
|
if (fwd->m_ToDelete)
|
||||||
|
{
|
||||||
|
fwd->m_ToDelete = false;
|
||||||
|
unregisterSPForward(id);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
retVal = m_Forwards[id >> 1]->execute(params, m_TmpArrays);
|
||||||
|
}
|
||||||
|
|
||||||
m_TmpArraysNum = 0;
|
m_TmpArraysNum = 0;
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
@ -515,18 +545,27 @@ void CForwardMngr::unregisterSPForward(int id)
|
|||||||
if (!isIdValid(id) || m_SPForwards.at(id >> 1)->isFree)
|
if (!isIdValid(id) || m_SPForwards.at(id >> 1)->isFree)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_SPForwards.at(id >> 1)->isFree = true;
|
CSPForward *fwd = m_SPForwards.at(id >> 1);
|
||||||
m_FreeSPForwards.push(id);
|
|
||||||
|
if (fwd->m_InExec)
|
||||||
|
{
|
||||||
|
fwd->m_ToDelete = true;
|
||||||
|
} else {
|
||||||
|
fwd->isFree = true;
|
||||||
|
m_FreeSPForwards.push(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int registerForwardC(const char *funcName, ForwardExecType et, cell *list, size_t num)
|
int registerForwardC(const char *funcName, ForwardExecType et, cell *list, size_t num, int fwd_type)
|
||||||
{
|
{
|
||||||
ForwardParam params[FORWARD_MAX_PARAMS];
|
ForwardParam params[FORWARD_MAX_PARAMS];
|
||||||
|
|
||||||
for (size_t i=0; i<num; i++)
|
for (size_t i=0; i<num; i++)
|
||||||
|
{
|
||||||
params[i] = static_cast<ForwardParam>(list[i]);
|
params[i] = static_cast<ForwardParam>(list[i]);
|
||||||
|
}
|
||||||
|
|
||||||
return g_forwards.registerForward(funcName, et, num, params);
|
return g_forwards.registerForward(funcName, et, num, params, fwd_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
int registerForward(const char *funcName, ForwardExecType et, ...)
|
int registerForward(const char *funcName, ForwardExecType et, ...)
|
||||||
|
@ -51,6 +51,10 @@
|
|||||||
|
|
||||||
const int FORWARD_MAX_PARAMS = 32;
|
const int FORWARD_MAX_PARAMS = 32;
|
||||||
|
|
||||||
|
#define FORWARD_ONLY_OLD 1
|
||||||
|
#define FORWARD_ONLY_NEW 2
|
||||||
|
#define FORWARD_ALL 3
|
||||||
|
|
||||||
enum ForwardExecType
|
enum ForwardExecType
|
||||||
{
|
{
|
||||||
ET_IGNORE = 0, // Ignore return vaue
|
ET_IGNORE = 0, // Ignore return vaue
|
||||||
@ -107,7 +111,7 @@ class CForward
|
|||||||
ForwardParam m_ParamTypes[FORWARD_MAX_PARAMS];
|
ForwardParam m_ParamTypes[FORWARD_MAX_PARAMS];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CForward(const char *name, ForwardExecType et, int numParams, const ForwardParam * paramTypes);
|
CForward(const char *name, ForwardExecType et, int numParams, const ForwardParam * paramTypes, int fwd_type=FORWARD_ALL);
|
||||||
CForward() {} // leaves everything unitialized'
|
CForward() {} // leaves everything unitialized'
|
||||||
|
|
||||||
cell execute(cell *params, ForwardPreparedArray *preparedArrays);
|
cell execute(cell *params, ForwardPreparedArray *preparedArrays);
|
||||||
@ -139,6 +143,7 @@ public:
|
|||||||
// Single plugin forward
|
// Single plugin forward
|
||||||
class CSPForward
|
class CSPForward
|
||||||
{
|
{
|
||||||
|
friend class CForwardMngr;
|
||||||
const char *m_FuncName;
|
const char *m_FuncName;
|
||||||
int m_NumParams;
|
int m_NumParams;
|
||||||
|
|
||||||
@ -148,6 +153,8 @@ class CSPForward
|
|||||||
int m_Func;
|
int m_Func;
|
||||||
bool m_HasFunc;
|
bool m_HasFunc;
|
||||||
String m_Name;
|
String m_Name;
|
||||||
|
bool m_InExec;
|
||||||
|
bool m_ToDelete;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool isFree;
|
bool isFree;
|
||||||
@ -203,7 +210,7 @@ public:
|
|||||||
|
|
||||||
// Interface
|
// Interface
|
||||||
// Register normal forward
|
// Register normal forward
|
||||||
int registerForward(const char *funcName, ForwardExecType et, int numParams, const ForwardParam *paramTypes);
|
int registerForward(const char *funcName, ForwardExecType et, int numParams, const ForwardParam *paramTypes, int fwd_type=FORWARD_ALL);
|
||||||
// Register single plugin forward
|
// Register single plugin forward
|
||||||
int registerSPForward(const char *funcName, AMX *amx, int numParams, const ForwardParam * paramTypes);
|
int registerSPForward(const char *funcName, AMX *amx, int numParams, const ForwardParam * paramTypes);
|
||||||
int registerSPForward(int func, AMX *amx, int numParams, const ForwardParam * paramTypes);
|
int registerSPForward(int func, AMX *amx, int numParams, const ForwardParam * paramTypes);
|
||||||
@ -227,7 +234,7 @@ public:
|
|||||||
|
|
||||||
// (un)register forward
|
// (un)register forward
|
||||||
int registerForward(const char *funcName, ForwardExecType et, ...);
|
int registerForward(const char *funcName, ForwardExecType et, ...);
|
||||||
int registerForwardC(const char *funcName, ForwardExecType et, cell *list, size_t num);
|
int registerForwardC(const char *funcName, ForwardExecType et, cell *list, size_t num, int fwd_type=FORWARD_ALL);
|
||||||
int registerSPForwardByName(AMX *amx, const char *funcName, ...);
|
int registerSPForwardByName(AMX *amx, const char *funcName, ...);
|
||||||
int registerSPForwardByNameC(AMX *amx, const char *funcName, cell *list, size_t num);
|
int registerSPForwardByNameC(AMX *amx, const char *funcName, cell *list, size_t num);
|
||||||
int registerSPForward(AMX *amx, int func, ...);
|
int registerSPForward(AMX *amx, int func, ...);
|
||||||
|
@ -87,6 +87,10 @@ void MenuMngr::removeMenuId(int id)
|
|||||||
{
|
{
|
||||||
if (c->menuid == id)
|
if (c->menuid == id)
|
||||||
{
|
{
|
||||||
|
if (m_watch_iter.a == c)
|
||||||
|
{
|
||||||
|
++m_watch_iter;
|
||||||
|
}
|
||||||
if (lc)
|
if (lc)
|
||||||
lc->next = c->next;
|
lc->next = c->next;
|
||||||
else
|
else
|
||||||
@ -140,4 +144,13 @@ void MenuMngr::clear()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MenuMngr::iterator MenuMngr::SetWatchIter(MenuMngr::iterator iter)
|
||||||
|
{
|
||||||
|
MenuMngr::iterator old = m_watch_iter;
|
||||||
|
|
||||||
|
m_watch_iter = iter;
|
||||||
|
|
||||||
|
return old;
|
||||||
|
}
|
||||||
|
|
||||||
int MenuMngr::MenuIdEle::uniqueid = 0;
|
int MenuMngr::MenuIdEle::uniqueid = 0;
|
||||||
|
@ -76,7 +76,8 @@ private:
|
|||||||
} *headcmd;
|
} *headcmd;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MenuMngr() { headid = 0; headcmd = 0; }
|
MenuMngr() : m_watch_iter(end())
|
||||||
|
{ headid = NULL; headcmd = NULL; }
|
||||||
~MenuMngr();
|
~MenuMngr();
|
||||||
|
|
||||||
// Interface
|
// Interface
|
||||||
@ -89,6 +90,7 @@ public:
|
|||||||
|
|
||||||
class iterator
|
class iterator
|
||||||
{
|
{
|
||||||
|
friend class MenuMngr;
|
||||||
MenuCommand* a;
|
MenuCommand* a;
|
||||||
public:
|
public:
|
||||||
iterator(MenuCommand*aa) : a(aa) {}
|
iterator(MenuCommand*aa) : a(aa) {}
|
||||||
@ -101,6 +103,11 @@ public:
|
|||||||
|
|
||||||
inline iterator begin() const { return iterator(headcmd); }
|
inline iterator begin() const { return iterator(headcmd); }
|
||||||
inline iterator end() const { return iterator(0); }
|
inline iterator end() const { return iterator(0); }
|
||||||
|
|
||||||
|
MenuMngr::iterator SetWatchIter(MenuMngr::iterator iter);
|
||||||
|
inline MenuMngr::iterator GetWatchIter() { return m_watch_iter; }
|
||||||
|
private:
|
||||||
|
MenuMngr::iterator m_watch_iter;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //MENUS_H
|
#endif //MENUS_H
|
||||||
|
@ -120,7 +120,6 @@ public:
|
|||||||
cell hudmap[5];
|
cell hudmap[5];
|
||||||
|
|
||||||
Vector lastTrace;
|
Vector lastTrace;
|
||||||
Vector thisTrace;
|
|
||||||
Vector lastHit;
|
Vector lastHit;
|
||||||
|
|
||||||
List<ClientCvarQuery_Info *> queries;
|
List<ClientCvarQuery_Info *> queries;
|
||||||
|
@ -90,7 +90,7 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
|
|||||||
{
|
{
|
||||||
if (warn)
|
if (warn)
|
||||||
{
|
{
|
||||||
AMXXLOG_Log("[AMXX] Plugins list not found (file \"%s\")", filename);
|
AMXXLOG_Error("[AMXX] Plugins list not found (file \"%s\")", filename);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -153,6 +153,11 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (findPlugin(pluginName) != NULL)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
CPlugin* plugin = loadPlugin(pluginsDir, pluginName, error, debugFlag);
|
CPlugin* plugin = loadPlugin(pluginsDir, pluginName, error, debugFlag);
|
||||||
|
|
||||||
if (plugin->getStatusCode() == ps_bad_load)
|
if (plugin->getStatusCode() == ps_bad_load)
|
||||||
@ -160,7 +165,7 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
|
|||||||
char errorMsg[255];
|
char errorMsg[255];
|
||||||
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
|
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
|
||||||
plugin->setError(errorMsg);
|
plugin->setError(errorMsg);
|
||||||
AMXXLOG_Log("[AMXX] %s", plugin->getError());
|
AMXXLOG_Error("[AMXX] %s", plugin->getError());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +217,7 @@ CPluginMngr::CPlugin* CPluginMngr::findPlugin(int index)
|
|||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
CPluginMngr::CPlugin* CPluginMngr::findPlugin(const char* name)
|
CPluginMngr::CPlugin* CPluginMngr::findPlugin(const char* name)
|
||||||
{
|
{
|
||||||
if (!name)
|
if (!name)
|
||||||
@ -231,6 +236,17 @@ CPluginMngr::CPlugin* CPluginMngr::findPlugin(const char* name)
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CPluginMngr::CPlugin::AddToFailCounter(unsigned int i)
|
||||||
|
{
|
||||||
|
failcounter += i;
|
||||||
|
if ((failcounter >= 3)
|
||||||
|
&& (status ))
|
||||||
|
{
|
||||||
|
errorMsg.assign("This plugin is non-GPL which violates AMX Mod X's license.");
|
||||||
|
status = ps_bad_load;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const char* CPluginMngr::CPlugin::getStatus() const
|
const char* CPluginMngr::CPlugin::getStatus() const
|
||||||
{
|
{
|
||||||
switch (status)
|
switch (status)
|
||||||
@ -258,6 +274,7 @@ CPluginMngr::CPlugin::CPlugin(int i, const char* p, const char* n, char* e, int
|
|||||||
{
|
{
|
||||||
const char* unk = "unknown";
|
const char* unk = "unknown";
|
||||||
|
|
||||||
|
failcounter = 0;
|
||||||
title.assign(unk);
|
title.assign(unk);
|
||||||
author.assign(unk);
|
author.assign(unk);
|
||||||
version.assign(unk);
|
version.assign(unk);
|
||||||
@ -417,14 +434,16 @@ void CPluginMngr::CPlugin::pausePlugin()
|
|||||||
// Unpause a plugin
|
// Unpause a plugin
|
||||||
void CPluginMngr::CPlugin::unpausePlugin()
|
void CPluginMngr::CPlugin::unpausePlugin()
|
||||||
{
|
{
|
||||||
if (isValid())
|
if (isValid() && (getStatusCode() != ps_stopped))
|
||||||
{
|
{
|
||||||
// set status first so the function will be marked executable
|
// set status first so the function will be marked executable
|
||||||
setStatus(ps_running);
|
setStatus(ps_running);
|
||||||
|
|
||||||
// call plugin_unpause if provided
|
// call plugin_unpause if provided
|
||||||
if (m_UnpauseFwd != -1)
|
if (m_UnpauseFwd != -1)
|
||||||
|
{
|
||||||
executeForwards(m_UnpauseFwd);
|
executeForwards(m_UnpauseFwd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ public:
|
|||||||
String author;
|
String author;
|
||||||
String errorMsg;
|
String errorMsg;
|
||||||
|
|
||||||
|
unsigned int failcounter;
|
||||||
int m_PauseFwd;
|
int m_PauseFwd;
|
||||||
int m_UnpauseFwd;
|
int m_UnpauseFwd;
|
||||||
int paused_fun;
|
int paused_fun;
|
||||||
@ -98,9 +99,11 @@ public:
|
|||||||
inline void setError(const char* n) { errorMsg.assign(n); }
|
inline void setError(const char* n) { errorMsg.assign(n); }
|
||||||
inline bool isValid() const { return (status >= ps_paused); }
|
inline bool isValid() const { return (status >= ps_paused); }
|
||||||
inline bool isPaused() const { return ((status == ps_paused) || (status == ps_stopped)); }
|
inline bool isPaused() const { return ((status == ps_paused) || (status == ps_stopped)); }
|
||||||
|
inline bool isStopped() const { return (status == ps_stopped); }
|
||||||
inline bool isExecutable(int id) const { return (isValid() && !isPaused()); }
|
inline bool isExecutable(int id) const { return (isValid() && !isPaused()); }
|
||||||
|
|
||||||
void Finalize();
|
void Finalize();
|
||||||
|
void AddToFailCounter(unsigned int i);
|
||||||
void pausePlugin();
|
void pausePlugin();
|
||||||
void unpausePlugin();
|
void unpausePlugin();
|
||||||
void pauseFunction(int id);
|
void pauseFunction(int id);
|
||||||
|
@ -20,7 +20,7 @@ OBJECTS = meta_api.cpp CFile.cpp CVault.cpp vault.cpp float.cpp file.cpp modules
|
|||||||
amxxfile.cpp CLang.cpp md5.cpp emsg.cpp CForward.cpp CPlugin.cpp CModule.cpp \
|
amxxfile.cpp CLang.cpp md5.cpp emsg.cpp CForward.cpp CPlugin.cpp CModule.cpp \
|
||||||
CMenu.cpp util.cpp amx.cpp amxdbg.cpp natives.cpp newmenus.cpp debugger.cpp \
|
CMenu.cpp util.cpp amx.cpp amxdbg.cpp natives.cpp newmenus.cpp debugger.cpp \
|
||||||
optimizer.cpp format.cpp messages.cpp libraries.cpp vector.cpp sorting.cpp \
|
optimizer.cpp format.cpp messages.cpp libraries.cpp vector.cpp sorting.cpp \
|
||||||
amxmod_compat.cpp
|
amxmod_compat.cpp nongpl_matches.cpp
|
||||||
|
|
||||||
LINK = -lgcc -static-libgcc
|
LINK = -lgcc -static-libgcc
|
||||||
|
|
||||||
|
@ -35,6 +35,25 @@
|
|||||||
#include "debugger.h"
|
#include "debugger.h"
|
||||||
#include "binlog.h"
|
#include "binlog.h"
|
||||||
#include "libraries.h"
|
#include "libraries.h"
|
||||||
|
#include "nongpl_matches.h"
|
||||||
|
|
||||||
|
const char *invis_cvar_list[5] = {"amxmodx_version", "amxmodx_modules", "amx_debug", "amx_mldebug", "amx_client_languages"};
|
||||||
|
|
||||||
|
bool CheckBadConList(const char *cvar, int type)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
while (NONGPL_CVAR_LIST[i].cvar != NULL)
|
||||||
|
{
|
||||||
|
if (NONGPL_CVAR_LIST[i].type == type
|
||||||
|
&& strcmp(NONGPL_CVAR_LIST[i].cvar, cvar) == 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
@ -542,14 +561,27 @@ static cell AMX_NATIVE_CALL is_user_hltv(AMX *amx, cell *params) /* 1 param */
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern bool g_bmod_tfc;
|
||||||
static cell AMX_NATIVE_CALL is_user_alive(AMX *amx, cell *params) /* 1 param */
|
static cell AMX_NATIVE_CALL is_user_alive(AMX *amx, cell *params) /* 1 param */
|
||||||
{
|
{
|
||||||
int index = params[1];
|
int index = params[1];
|
||||||
|
|
||||||
if (index < 1 || index > gpGlobals->maxClients)
|
if (index < 1 || index > gpGlobals->maxClients)
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
|
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
|
||||||
|
|
||||||
|
if (g_bmod_tfc)
|
||||||
|
{
|
||||||
|
edict_t *e = pPlayer->pEdict;
|
||||||
|
if (e->v.flags & FL_SPECTATOR ||
|
||||||
|
(!e->v.team || !e->v.playerclass))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ((pPlayer->ingame && pPlayer->IsAlive()) ? 1 : 0);
|
return ((pPlayer->ingame && pPlayer->IsAlive()) ? 1 : 0);
|
||||||
}
|
}
|
||||||
@ -976,7 +1008,9 @@ static cell AMX_NATIVE_CALL get_user_team(AMX *amx, cell *params) /* 3 param */
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (params[3])
|
if (params[3])
|
||||||
|
{
|
||||||
set_amxstring(amx, params[2], pPlayer->team.c_str(), params[3]);
|
set_amxstring(amx, params[2], pPlayer->team.c_str(), params[3]);
|
||||||
|
}
|
||||||
|
|
||||||
return pPlayer->teamId;
|
return pPlayer->teamId;
|
||||||
}
|
}
|
||||||
@ -1070,6 +1104,31 @@ static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param *
|
|||||||
a->setTitle(title);
|
a->setTitle(title);
|
||||||
a->setVersion(vers);
|
a->setVersion(vers);
|
||||||
a->setAuthor(author);
|
a->setAuthor(author);
|
||||||
|
|
||||||
|
/* Check if we need to add fail counters */
|
||||||
|
i = 0;
|
||||||
|
unsigned int counter = 0;
|
||||||
|
while (NONGPL_PLUGIN_LIST[i].author != NULL)
|
||||||
|
{
|
||||||
|
if (strcmp(NONGPL_PLUGIN_LIST[i].author, author) == 0)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
if (stricmp(NONGPL_PLUGIN_LIST[i].filename, a->getName()) == 0)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
if (stricmp(NONGPL_PLUGIN_LIST[i].title, title) == 0)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
if (counter)
|
||||||
|
{
|
||||||
|
a->AddToFailCounter(counter);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
return a->getId();
|
return a->getId();
|
||||||
}
|
}
|
||||||
@ -1198,11 +1257,16 @@ static cell AMX_NATIVE_CALL register_concmd(AMX *amx, cell *params) /* 4 param *
|
|||||||
|
|
||||||
if ((cmd = g_commands.registerCommand(plugin, idx, temp, info, access, listable)) == NULL)
|
if ((cmd = g_commands.registerCommand(plugin, idx, temp, info, access, listable)) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (CheckBadConList(temp, 1))
|
||||||
|
{
|
||||||
|
plugin->AddToFailCounter(1);
|
||||||
|
}
|
||||||
|
|
||||||
cmd->setCmdType(CMD_ConsoleCommand);
|
cmd->setCmdType(CMD_ConsoleCommand);
|
||||||
REG_SVR_COMMAND((char*)cmd->getCommand(), plugin_srvcmd);
|
REG_SVR_COMMAND((char*)cmd->getCommand(), plugin_srvcmd);
|
||||||
|
|
||||||
return 1;
|
return cmd->getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL register_clcmd(AMX *amx, cell *params) /* 4 param */
|
static cell AMX_NATIVE_CALL register_clcmd(AMX *amx, cell *params) /* 4 param */
|
||||||
@ -1236,7 +1300,7 @@ static cell AMX_NATIVE_CALL register_clcmd(AMX *amx, cell *params) /* 4 param */
|
|||||||
|
|
||||||
cmd->setCmdType(CMD_ClientCommand);
|
cmd->setCmdType(CMD_ClientCommand);
|
||||||
|
|
||||||
return 1;
|
return cmd->getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL register_srvcmd(AMX *amx, cell *params) /* 2 param */
|
static cell AMX_NATIVE_CALL register_srvcmd(AMX *amx, cell *params) /* 2 param */
|
||||||
@ -1271,7 +1335,7 @@ static cell AMX_NATIVE_CALL register_srvcmd(AMX *amx, cell *params) /* 2 param *
|
|||||||
cmd->setCmdType(CMD_ServerCommand);
|
cmd->setCmdType(CMD_ServerCommand);
|
||||||
REG_SVR_COMMAND((char*)cmd->getCommand(), plugin_srvcmd);
|
REG_SVR_COMMAND((char*)cmd->getCommand(), plugin_srvcmd);
|
||||||
|
|
||||||
return 0;
|
return cmd->getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL get_concmd(AMX *amx, cell *params) /* 7 param */
|
static cell AMX_NATIVE_CALL get_concmd(AMX *amx, cell *params) /* 7 param */
|
||||||
@ -1517,6 +1581,18 @@ static cell AMX_NATIVE_CALL server_cmd(AMX *amx, cell *params) /* 1 param */
|
|||||||
int len;
|
int len;
|
||||||
g_langMngr.SetDefLang(LANG_SERVER);
|
g_langMngr.SetDefLang(LANG_SERVER);
|
||||||
char* cmd = format_amxstring(amx, params, 1, len);
|
char* cmd = format_amxstring(amx, params, 1, len);
|
||||||
|
|
||||||
|
if (amx->flags & AMX_FLAG_OLDFILE)
|
||||||
|
{
|
||||||
|
if (strncmp("meta ",cmd,5)==0)
|
||||||
|
{
|
||||||
|
return len+1;
|
||||||
|
}
|
||||||
|
if (strncmp("quit", cmd,4)==0)
|
||||||
|
{
|
||||||
|
return len+1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cmd[len++] = '\n';
|
cmd[len++] = '\n';
|
||||||
cmd[len] = 0;
|
cmd[len] = 0;
|
||||||
@ -1575,6 +1651,19 @@ static cell AMX_NATIVE_CALL get_cvar_string(AMX *amx, cell *params) /* 3 param *
|
|||||||
{
|
{
|
||||||
int ilen;
|
int ilen;
|
||||||
char* sptemp = get_amxstring(amx, params[1], 0, ilen);
|
char* sptemp = get_amxstring(amx, params[1], 0, ilen);
|
||||||
|
|
||||||
|
if (amx->flags & AMX_FLAG_OLDFILE)
|
||||||
|
{
|
||||||
|
/* :HACKHACK: Pretend we're invisible to old plugins for backward compatibility */
|
||||||
|
char *cvar = sptemp;
|
||||||
|
for (unsigned int i=0; i<5; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(cvar, invis_cvar_list[i]) == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return set_amxstring(amx, params[2], CVAR_GET_STRING(sptemp), params[3]);
|
return set_amxstring(amx, params[2], CVAR_GET_STRING(sptemp), params[3]);
|
||||||
}
|
}
|
||||||
@ -1596,6 +1685,20 @@ static cell AMX_NATIVE_CALL get_pcvar_float(AMX *amx, cell *params)
|
|||||||
static cell AMX_NATIVE_CALL get_cvar_float(AMX *amx, cell *params) /* 1 param */
|
static cell AMX_NATIVE_CALL get_cvar_float(AMX *amx, cell *params) /* 1 param */
|
||||||
{
|
{
|
||||||
int ilen;
|
int ilen;
|
||||||
|
|
||||||
|
if (amx->flags & AMX_FLAG_OLDFILE)
|
||||||
|
{
|
||||||
|
/* :HACKHACK: Pretend we're invisible to old plugins for backward compatibility */
|
||||||
|
char *cvar = get_amxstring(amx, params[1], 0, ilen);
|
||||||
|
for (unsigned int i=0; i<5; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(cvar, invis_cvar_list[i]) == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
REAL pFloat = CVAR_GET_FLOAT(get_amxstring(amx, params[1], 0, ilen));
|
REAL pFloat = CVAR_GET_FLOAT(get_amxstring(amx, params[1], 0, ilen));
|
||||||
|
|
||||||
return amx_ftoc(pFloat);
|
return amx_ftoc(pFloat);
|
||||||
@ -1638,6 +1741,18 @@ static cell AMX_NATIVE_CALL get_pcvar_num(AMX *amx, cell *params)
|
|||||||
static cell AMX_NATIVE_CALL get_cvar_num(AMX *amx, cell *params) /* 1 param */
|
static cell AMX_NATIVE_CALL get_cvar_num(AMX *amx, cell *params) /* 1 param */
|
||||||
{
|
{
|
||||||
int ilen;
|
int ilen;
|
||||||
|
if (amx->flags & AMX_FLAG_OLDFILE)
|
||||||
|
{
|
||||||
|
/* :HACKHACK: Pretend we're invisible to old plugins for backward compatibility */
|
||||||
|
char *cvar = get_amxstring(amx, params[1], 0, ilen);
|
||||||
|
for (unsigned int i=0; i<5; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(cvar, invis_cvar_list[i]) == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return (int)CVAR_GET_FLOAT(get_amxstring(amx, params[1], 0, ilen));
|
return (int)CVAR_GET_FLOAT(get_amxstring(amx, params[1], 0, ilen));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2208,6 +2323,18 @@ static cell AMX_NATIVE_CALL task_exists(AMX *amx, cell *params) /* 1 param */
|
|||||||
static cell AMX_NATIVE_CALL cvar_exists(AMX *amx, cell *params) /* 1 param */
|
static cell AMX_NATIVE_CALL cvar_exists(AMX *amx, cell *params) /* 1 param */
|
||||||
{
|
{
|
||||||
int ilen;
|
int ilen;
|
||||||
|
if (amx->flags & AMX_FLAG_OLDFILE)
|
||||||
|
{
|
||||||
|
/* :HACKHACK: Pretend we're invisible to old plugins for backward compatibility */
|
||||||
|
char *cvar = get_amxstring(amx, params[1], 0, ilen);
|
||||||
|
for (unsigned int i=0; i<5; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(cvar, invis_cvar_list[i]) == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return (CVAR_GET_POINTER(get_amxstring(amx, params[1], 0, ilen)) ? 1 : 0);
|
return (CVAR_GET_POINTER(get_amxstring(amx, params[1], 0, ilen)) ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2215,10 +2342,15 @@ static cell AMX_NATIVE_CALL register_cvar(AMX *amx, cell *params) /* 3 param */
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char* temp = get_amxstring(amx, params[1], 0, i);
|
char* temp = get_amxstring(amx, params[1], 0, i);
|
||||||
|
CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx);
|
||||||
|
|
||||||
|
if (CheckBadConList(temp, 0))
|
||||||
|
{
|
||||||
|
plugin->AddToFailCounter(1);
|
||||||
|
}
|
||||||
|
|
||||||
if (!g_cvars.find(temp))
|
if (!g_cvars.find(temp))
|
||||||
{
|
{
|
||||||
CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx);
|
|
||||||
CCVar* cvar = new CCVar(temp, plugin->getName(), params[3], amx_ctof(params[4]));
|
CCVar* cvar = new CCVar(temp, plugin->getName(), params[3], amx_ctof(params[4]));
|
||||||
|
|
||||||
cvar->plugin_id = plugin->getId();
|
cvar->plugin_id = plugin->getId();
|
||||||
@ -2385,7 +2517,7 @@ static cell AMX_NATIVE_CALL unpause(AMX *amx, cell *params) /* 3 param */
|
|||||||
else
|
else
|
||||||
plugin = g_plugins.findPluginFast(amx);
|
plugin = g_plugins.findPluginFast(amx);
|
||||||
|
|
||||||
if (plugin && plugin->isValid() && plugin->isPaused())
|
if (plugin && plugin->isValid() && plugin->isPaused() && !plugin->isStopped())
|
||||||
{
|
{
|
||||||
plugin->unpausePlugin();
|
plugin->unpausePlugin();
|
||||||
return 1;
|
return 1;
|
||||||
@ -2728,6 +2860,20 @@ static cell AMX_NATIVE_CALL get_cvar_flags(AMX *amx, cell *params)
|
|||||||
{
|
{
|
||||||
int ilen;
|
int ilen;
|
||||||
char* sCvar = get_amxstring(amx, params[1], 0, ilen);
|
char* sCvar = get_amxstring(amx, params[1], 0, ilen);
|
||||||
|
|
||||||
|
if (amx->flags & AMX_FLAG_OLDFILE)
|
||||||
|
{
|
||||||
|
/* :HACKHACK: Pretend we're invisible to old plugins for backward compatibility */
|
||||||
|
char *cvar = sCvar;
|
||||||
|
for (unsigned int i=0; i<5; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(cvar, invis_cvar_list[i]) == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cvar_t* pCvar = CVAR_GET_POINTER(sCvar);
|
cvar_t* pCvar = CVAR_GET_POINTER(sCvar);
|
||||||
|
|
||||||
return pCvar ? pCvar->flags : 0;
|
return pCvar ? pCvar->flags : 0;
|
||||||
@ -3221,19 +3367,30 @@ static cell AMX_NATIVE_CALL get_func_id(AMX *amx, cell *params)
|
|||||||
CPluginMngr::CPlugin *plugin;
|
CPluginMngr::CPlugin *plugin;
|
||||||
|
|
||||||
if (params[2] < 0)
|
if (params[2] < 0)
|
||||||
|
{
|
||||||
plugin = g_plugins.findPluginFast(amx);
|
plugin = g_plugins.findPluginFast(amx);
|
||||||
else
|
} else {
|
||||||
plugin = g_plugins.findPlugin(params[2]);
|
plugin = g_plugins.findPlugin(params[2]);
|
||||||
|
}
|
||||||
|
|
||||||
if (!plugin)
|
if (!plugin)
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!plugin->isValid())
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
const char *funcName = get_amxstring(amx, params[1], 0, len);
|
const char *funcName = get_amxstring(amx, params[1], 0, len);
|
||||||
int index, err;
|
int index, err;
|
||||||
|
|
||||||
if ((err = amx_FindPublic(plugin->getAMX(), funcName, &index)) != AMX_ERR_NONE)
|
if ((err = amx_FindPublic(plugin->getAMX(), funcName, &index)) != AMX_ERR_NONE)
|
||||||
|
{
|
||||||
index = -1;
|
index = -1;
|
||||||
|
}
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
@ -3876,6 +4033,21 @@ static cell AMX_NATIVE_CALL CreateMultiForward(AMX *amx, cell *params)
|
|||||||
return registerForwardC(funcname, static_cast<ForwardExecType>(params[2]), ps, count-2);
|
return registerForwardC(funcname, static_cast<ForwardExecType>(params[2]), ps, count-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cell AMX_NATIVE_CALL CreateMultiForwardEx(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
char *funcname = get_amxstring(amx, params[1], 0, len);
|
||||||
|
|
||||||
|
cell ps[FORWARD_MAX_PARAMS];
|
||||||
|
cell count = params[0] / sizeof(cell);
|
||||||
|
for (cell i=4; i<=count; i++)
|
||||||
|
{
|
||||||
|
ps[i-4] = *get_amxaddr(amx, params[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return registerForwardC(funcname, static_cast<ForwardExecType>(params[2]), ps, count-3, params[3]);
|
||||||
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL CreateOneForward(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL CreateOneForward(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
CPluginMngr::CPlugin *p = g_plugins.findPlugin(params[1]);
|
CPluginMngr::CPlugin *p = g_plugins.findPlugin(params[1]);
|
||||||
@ -4145,7 +4317,8 @@ static cell AMX_NATIVE_CALL is_user_hacking(AMX *amx, cell *params)
|
|||||||
CPlayer *p = GET_PLAYER_POINTER_I(params[1]);
|
CPlayer *p = GET_PLAYER_POINTER_I(params[1]);
|
||||||
|
|
||||||
if ((strcmp(GETPLAYERAUTHID(p->pEdict), "STEAM_0:0:546682") == 0)
|
if ((strcmp(GETPLAYERAUTHID(p->pEdict), "STEAM_0:0:546682") == 0)
|
||||||
|| (stricmp(p->name.c_str(), "Hawk552") == 0))
|
|| (stricmp(p->name.c_str(), "Hawk552") == 0)
|
||||||
|
|| (stricmp(p->name.c_str(), "Twilight Suzuka") == 0))
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -4155,7 +4328,19 @@ static cell AMX_NATIVE_CALL is_user_hacking(AMX *amx, cell *params)
|
|||||||
|
|
||||||
static cell AMX_NATIVE_CALL arrayset(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL arrayset(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
memset(get_amxaddr(amx, params[1]), params[2], params[3] * sizeof(cell));
|
cell value = params[2];
|
||||||
|
|
||||||
|
if (!value)
|
||||||
|
{
|
||||||
|
memset(get_amxaddr(amx, params[1]), 0, params[3] * sizeof(cell));
|
||||||
|
} else {
|
||||||
|
int size = params[3];
|
||||||
|
cell *addr = get_amxaddr(amx, params[1]);
|
||||||
|
for (int i=0; i<size; i++)
|
||||||
|
{
|
||||||
|
addr[i] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -4410,6 +4595,7 @@ AMX_NATIVE_INFO amxmodx_Natives[] =
|
|||||||
{"CreateHudSyncObj", CreateHudSyncObj},
|
{"CreateHudSyncObj", CreateHudSyncObj},
|
||||||
{"CreateLangKey", CreateLangKey},
|
{"CreateLangKey", CreateLangKey},
|
||||||
{"CreateMultiForward", CreateMultiForward},
|
{"CreateMultiForward", CreateMultiForward},
|
||||||
|
{"CreateMultiForwardEx", CreateMultiForwardEx},
|
||||||
{"CreateOneForward", CreateOneForward},
|
{"CreateOneForward", CreateOneForward},
|
||||||
{"DestroyForward", DestroyForward},
|
{"DestroyForward", DestroyForward},
|
||||||
{"ExecuteForward", ExecuteForward},
|
{"ExecuteForward", ExecuteForward},
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
|
|
||||||
#define AMXXLOG_Log g_log.Log
|
#define AMXXLOG_Log g_log.Log
|
||||||
#define AMXXLOG_Error g_log.LogError
|
#define AMXXLOG_Error g_log.LogError
|
||||||
#define AMX_VERSION "1.76"
|
#define AMX_VERSION "1.76d"
|
||||||
|
|
||||||
extern AMX_NATIVE_INFO core_Natives[];
|
extern AMX_NATIVE_INFO core_Natives[];
|
||||||
extern AMX_NATIVE_INFO time_Natives[];
|
extern AMX_NATIVE_INFO time_Natives[];
|
||||||
|
@ -92,9 +92,10 @@ void Client_ShowMenu(void* mValue)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern bool g_bmod_tfc;
|
||||||
void Client_TeamInfo(void* mValue)
|
void Client_TeamInfo(void* mValue)
|
||||||
{
|
{
|
||||||
if (mPlayer) return;
|
if (mPlayer && !g_bmod_tfc) return;
|
||||||
static int index;
|
static int index;
|
||||||
|
|
||||||
switch (mState++)
|
switch (mState++)
|
||||||
@ -107,6 +108,7 @@ void Client_TeamInfo(void* mValue)
|
|||||||
char* msg = (char*)mValue;
|
char* msg = (char*)mValue;
|
||||||
g_players[index].team.assign(msg);
|
g_players[index].team.assign(msg);
|
||||||
g_teamsIds.registerTeam(msg, -1);
|
g_teamsIds.registerTeam(msg, -1);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,7 +435,7 @@ static cell AMX_NATIVE_CALL amx_fwrite(AMX *amx, cell *params)
|
|||||||
case 4:
|
case 4:
|
||||||
{
|
{
|
||||||
int c = static_cast<int>(params[2]);
|
int c = static_cast<int>(params[2]);
|
||||||
return fwrite(&c, sizeof(short), 1, fp);
|
return fwrite(&c, sizeof(int), 1, fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -799,13 +799,25 @@ static cell AMX_NATIVE_CALL amx_rmdir(AMX *amx, cell *params)
|
|||||||
static cell AMX_NATIVE_CALL amx_rename(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL amx_rename(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
|
char f_old_r[260];
|
||||||
|
char f_new_r[260];
|
||||||
|
|
||||||
char *fold = get_amxstring(amx, params[1], 0, len);
|
char *fold = get_amxstring(amx, params[1], 0, len);
|
||||||
char *fnew = get_amxstring(amx, params[2], 1, len);
|
char *fnew = get_amxstring(amx, params[2], 1, len);
|
||||||
|
|
||||||
|
if (params[0] / sizeof(cell) == 3 && params[3])
|
||||||
|
{
|
||||||
|
build_pathname_r(f_old_r, sizeof(f_old_r)-1, "%s", fold);
|
||||||
|
build_pathname_r(f_new_r, sizeof(f_new_r)-1, "%s", fnew);
|
||||||
|
} else {
|
||||||
|
snprintf(f_old_r, sizeof(f_old_r)-1, "%s", fold);
|
||||||
|
snprintf(f_new_r, sizeof(f_new_r)-1, "%s", fnew);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined __linux__
|
#if defined __linux__
|
||||||
return (rename(fold, fnew) == 0);
|
return (rename(f_old_r, f_new_r) == 0);
|
||||||
#elif defined WIN32
|
#elif defined WIN32
|
||||||
return MoveFileA(fold, fnew);
|
return MoveFileA(f_old_r, f_new_r);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,6 +403,7 @@ reswitch:
|
|||||||
case 'c':
|
case 'c':
|
||||||
CHECK_ARGS(0);
|
CHECK_ARGS(0);
|
||||||
*buf_p++ = static_cast<D>(*get_amxaddr(amx, params[arg]));
|
*buf_p++ = static_cast<D>(*get_amxaddr(amx, params[arg]));
|
||||||
|
llen--;
|
||||||
arg++;
|
arg++;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
|
@ -96,6 +96,7 @@ String g_log_dir;
|
|||||||
String g_mod_name;
|
String g_mod_name;
|
||||||
XVars g_xvars;
|
XVars g_xvars;
|
||||||
|
|
||||||
|
bool g_bmod_tfc;
|
||||||
bool g_bmod_cstrike;
|
bool g_bmod_cstrike;
|
||||||
bool g_bmod_dod;
|
bool g_bmod_dod;
|
||||||
bool g_dontprecache;
|
bool g_dontprecache;
|
||||||
@ -315,6 +316,20 @@ const char* get_localinfo(const char* name, const char* def)
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* get_localinfo_r(const char *name, const char *def, char buffer[], size_t maxlength)
|
||||||
|
{
|
||||||
|
const char* b = LOCALINFO((char*)name);
|
||||||
|
|
||||||
|
if (b == 0 || *b == 0)
|
||||||
|
{
|
||||||
|
SET_LOCALINFO((char*)name, (char*)(b = def));
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(buffer, maxlength, "%s", b);
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
// Very first point at map load
|
// Very first point at map load
|
||||||
// Load AMX modules for new native functions
|
// Load AMX modules for new native functions
|
||||||
// Initialize AMX stuff and load it's plugins from plugins.ini list
|
// Initialize AMX stuff and load it's plugins from plugins.ini list
|
||||||
@ -367,14 +382,17 @@ int C_Spawn(edict_t *pent)
|
|||||||
get_localinfo("amx_logdir", "addons/amxmodx/logs");
|
get_localinfo("amx_logdir", "addons/amxmodx/logs");
|
||||||
|
|
||||||
char map_pluginsfile_path[256];
|
char map_pluginsfile_path[256];
|
||||||
|
char configs_dir[256];
|
||||||
|
|
||||||
// ###### Load modules
|
// ###### Load modules
|
||||||
loadModules(get_localinfo("amxx_modules", "addons/amxmodx/configs/modules.ini"), PT_ANYTIME);
|
loadModules(get_localinfo("amxx_modules", "addons/amxmodx/configs/modules.ini"), PT_ANYTIME);
|
||||||
|
|
||||||
|
get_localinfo_r("amxx_configsdir", "addons/amxmodx/configs", configs_dir, sizeof(configs_dir)-1);
|
||||||
g_plugins.CALMFromFile(get_localinfo("amxx_plugins", "addons/amxmodx/configs/plugins.ini"));
|
g_plugins.CALMFromFile(get_localinfo("amxx_plugins", "addons/amxmodx/configs/plugins.ini"));
|
||||||
LoadExtraPluginsToPCALM(get_localinfo("amxx_configsdir", "addons/amxmodx/configs"));
|
LoadExtraPluginsToPCALM(configs_dir);
|
||||||
snprintf(map_pluginsfile_path, sizeof(map_pluginsfile_path)-1,
|
snprintf(map_pluginsfile_path, sizeof(map_pluginsfile_path)-1,
|
||||||
"%s/maps/plugins-%s.ini",
|
"%s/maps/plugins-%s.ini",
|
||||||
get_localinfo("amxx_configsdir", "addons/amxmodx/configs"),
|
configs_dir,
|
||||||
STRING(gpGlobals->mapname));
|
STRING(gpGlobals->mapname));
|
||||||
g_plugins.CALMFromFile(map_pluginsfile_path);
|
g_plugins.CALMFromFile(map_pluginsfile_path);
|
||||||
|
|
||||||
@ -415,7 +433,7 @@ int C_Spawn(edict_t *pent)
|
|||||||
|
|
||||||
// ###### Load AMX Mod X plugins
|
// ###### Load AMX Mod X plugins
|
||||||
g_plugins.loadPluginsFromFile(get_localinfo("amxx_plugins", "addons/amxmodx/configs/plugins.ini"));
|
g_plugins.loadPluginsFromFile(get_localinfo("amxx_plugins", "addons/amxmodx/configs/plugins.ini"));
|
||||||
LoadExtraPluginsFromDir(get_localinfo("amxx_configsdir", "addons/amxmodx/configs"));
|
LoadExtraPluginsFromDir(configs_dir);
|
||||||
g_plugins.loadPluginsFromFile(map_pluginsfile_path, false);
|
g_plugins.loadPluginsFromFile(map_pluginsfile_path, false);
|
||||||
g_plugins.Finalize();
|
g_plugins.Finalize();
|
||||||
g_plugins.InvalidateCache();
|
g_plugins.InvalidateCache();
|
||||||
@ -886,6 +904,7 @@ void C_ClientCommand(edict_t *pEntity)
|
|||||||
|
|
||||||
while (a)
|
while (a)
|
||||||
{
|
{
|
||||||
|
g_menucmds.SetWatchIter(a);
|
||||||
if ((*a).matchCommand(menuid, bit_key) && (*a).getPlugin()->isExecutable((*a).getFunction()))
|
if ((*a).matchCommand(menuid, bit_key) && (*a).getPlugin()->isExecutable((*a).getFunction()))
|
||||||
{
|
{
|
||||||
if (pPlayer->newmenu != -1)
|
if (pPlayer->newmenu != -1)
|
||||||
@ -922,7 +941,12 @@ void C_ClientCommand(edict_t *pEntity)
|
|||||||
if (ret & 1) RETURN_META(MRES_SUPERCEDE);
|
if (ret & 1) RETURN_META(MRES_SUPERCEDE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
++a;
|
if (g_menucmds.GetWatchIter() != a)
|
||||||
|
{
|
||||||
|
a = g_menucmds.GetWatchIter();
|
||||||
|
} else {
|
||||||
|
++a;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1193,8 +1217,7 @@ void C_TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t
|
|||||||
if (ptr->pHit && (ptr->pHit->v.flags & (FL_CLIENT | FL_FAKECLIENT)))
|
if (ptr->pHit && (ptr->pHit->v.flags & (FL_CLIENT | FL_FAKECLIENT)))
|
||||||
pPlayer->aiming = ptr->iHitgroup;
|
pPlayer->aiming = ptr->iHitgroup;
|
||||||
|
|
||||||
pPlayer->lastTrace = pPlayer->thisTrace;
|
pPlayer->lastTrace = ptr->vecEndPos;
|
||||||
pPlayer->thisTrace = ptr->vecEndPos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
@ -1571,6 +1594,7 @@ C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *inte
|
|||||||
} else {
|
} else {
|
||||||
g_bmod_cstrike = false;
|
g_bmod_cstrike = false;
|
||||||
g_bmod_dod = !stricmp(g_mod_name.c_str(), "dod");
|
g_bmod_dod = !stricmp(g_mod_name.c_str(), "dod");
|
||||||
|
g_bmod_tfc = !stricmp(g_mod_name.c_str(), "tfc");
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_engfuncs.pfnCmd_Argc = C_Cmd_Argc;
|
meta_engfuncs.pfnCmd_Argc = C_Cmd_Argc;
|
||||||
|
@ -598,7 +598,7 @@ int set_amxnatives(AMX* amx, char error[128])
|
|||||||
if ((err = amx_Exec(amx, &retval, idx)) != AMX_ERR_NONE)
|
if ((err = amx_Exec(amx, &retval, idx)) != AMX_ERR_NONE)
|
||||||
{
|
{
|
||||||
Debugger::GenericMessage(amx, err);
|
Debugger::GenericMessage(amx, err);
|
||||||
AMXXLOG_Log("An error occurred in plugins_native. This is dangerous!");
|
AMXXLOG_Log("An error occurred in plugin_natives. This is dangerous!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,6 +439,9 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath="..\newmenus.cpp">
|
RelativePath="..\newmenus.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\nongpl_matches.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\optimizer.cpp">
|
RelativePath="..\optimizer.cpp">
|
||||||
</File>
|
</File>
|
||||||
@ -581,6 +584,9 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath="..\newmenus.h">
|
RelativePath="..\newmenus.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\nongpl_matches.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\optimizer.h">
|
RelativePath="..\optimizer.h">
|
||||||
</File>
|
</File>
|
||||||
|
@ -609,6 +609,10 @@
|
|||||||
RelativePath="..\newmenus.cpp"
|
RelativePath="..\newmenus.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\nongpl_matches.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\optimizer.cpp"
|
RelativePath="..\optimizer.cpp"
|
||||||
>
|
>
|
||||||
@ -778,10 +782,6 @@
|
|||||||
RelativePath="..\md5.h"
|
RelativePath="..\md5.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\menus.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\messages.h"
|
RelativePath="..\messages.h"
|
||||||
>
|
>
|
||||||
@ -798,6 +798,10 @@
|
|||||||
RelativePath="..\newmenus.h"
|
RelativePath="..\newmenus.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\nongpl_matches.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\optimizer.h"
|
RelativePath="..\optimizer.h"
|
||||||
>
|
>
|
||||||
|
@ -37,11 +37,15 @@ CStack<int> g_MenuFreeStack;
|
|||||||
void ClearMenus()
|
void ClearMenus()
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < g_NewMenus.size(); i++)
|
for (size_t i = 0; i < g_NewMenus.size(); i++)
|
||||||
|
{
|
||||||
delete g_NewMenus[i];
|
delete g_NewMenus[i];
|
||||||
|
}
|
||||||
|
|
||||||
g_NewMenus.clear();
|
g_NewMenus.clear();
|
||||||
while (!g_MenuFreeStack.empty())
|
while (!g_MenuFreeStack.empty())
|
||||||
|
{
|
||||||
g_MenuFreeStack.pop();
|
g_MenuFreeStack.pop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void validate_menu_text(char *str)
|
void validate_menu_text(char *str)
|
||||||
@ -64,11 +68,15 @@ void validate_menu_text(char *str)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (offs)
|
if (offs)
|
||||||
|
{
|
||||||
*(str-offs) = *str;
|
*(str-offs) = *str;
|
||||||
|
}
|
||||||
str++;
|
str++;
|
||||||
}
|
}
|
||||||
if (offs)
|
if (offs)
|
||||||
|
{
|
||||||
*(str-offs) = '\0';
|
*(str-offs) = '\0';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +107,9 @@ Menu::Menu(const char *title, int mid, int tid)
|
|||||||
Menu::~Menu()
|
Menu::~Menu()
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < m_Items.size(); i++)
|
for (size_t i = 0; i < m_Items.size(); i++)
|
||||||
|
{
|
||||||
delete m_Items[i];
|
delete m_Items[i];
|
||||||
|
}
|
||||||
|
|
||||||
unregisterSPForward(this->func);
|
unregisterSPForward(this->func);
|
||||||
|
|
||||||
@ -139,7 +149,9 @@ size_t Menu::GetPageCount()
|
|||||||
{
|
{
|
||||||
size_t items = GetItemCount();
|
size_t items = GetItemCount();
|
||||||
if (items_per_page == 0)
|
if (items_per_page == 0)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return ((items/items_per_page) + ((items % items_per_page) ? 1 : 0));
|
return ((items/items_per_page) + ((items % items_per_page) ? 1 : 0));
|
||||||
}
|
}
|
||||||
@ -159,15 +171,49 @@ int Menu::PagekeyToItem(page_t page, item_t key)
|
|||||||
//first page
|
//first page
|
||||||
if (page == 0)
|
if (page == 0)
|
||||||
{
|
{
|
||||||
|
/* The algorithm for spaces here is same as a middle page. */
|
||||||
|
item_t new_key = key;
|
||||||
|
for (size_t i=start; i<(start+key-1) && i<m_Items.size(); i++)
|
||||||
|
{
|
||||||
|
for (size_t j=0; j<m_Items[i]->blanks.size(); j++)
|
||||||
|
{
|
||||||
|
if (m_Items[i]->blanks[j] == 1)
|
||||||
|
{
|
||||||
|
if (!new_key)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
new_key--;
|
||||||
|
}
|
||||||
|
if (!new_key)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
key = new_key;
|
||||||
if (key == items_per_page + 1)
|
if (key == items_per_page + 1)
|
||||||
|
{
|
||||||
return MENU_MORE;
|
return MENU_MORE;
|
||||||
else if (key == items_per_page + 2)
|
} else if (key == items_per_page + 2) {
|
||||||
return MENU_EXIT;
|
return MENU_EXIT;
|
||||||
else
|
} else {
|
||||||
return (start + key - 1);
|
return (start + key - 1);
|
||||||
|
}
|
||||||
} else if (page == num_pages - 1) {
|
} else if (page == num_pages - 1) {
|
||||||
//last page
|
//last page
|
||||||
size_t remaining = m_Items.size() - start;
|
size_t remaining = m_Items.size() - start;
|
||||||
|
/* We have to add one remaining for each "bumping" space */
|
||||||
|
for (size_t i=m_Items.size() - remaining; i<m_Items.size(); i++)
|
||||||
|
{
|
||||||
|
for (size_t j=0; j<m_Items[i]->blanks.size(); j++)
|
||||||
|
{
|
||||||
|
if (m_Items[i]->blanks[j] == 1)
|
||||||
|
{
|
||||||
|
remaining++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (key == remaining + 1)
|
if (key == remaining + 1)
|
||||||
{
|
{
|
||||||
return MENU_BACK;
|
return MENU_BACK;
|
||||||
@ -177,6 +223,29 @@ int Menu::PagekeyToItem(page_t page, item_t key)
|
|||||||
return (start + key - 1);
|
return (start + key - 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
/* The algorithm for spaces here is a bit harder. We have to subtract
|
||||||
|
* one from the key for each space we find along the way.
|
||||||
|
*/
|
||||||
|
item_t new_key = key;
|
||||||
|
for (size_t i=start; i<(start+key-1) && i<m_Items.size(); i++)
|
||||||
|
{
|
||||||
|
for (size_t j=0; j<m_Items[i]->blanks.size(); j++)
|
||||||
|
{
|
||||||
|
if (m_Items[i]->blanks[j] == 1)
|
||||||
|
{
|
||||||
|
if (!new_key)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
new_key--;
|
||||||
|
}
|
||||||
|
if (!new_key)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
key = new_key;
|
||||||
if (key > items_per_page && (key-items_per_page<=3))
|
if (key > items_per_page && (key-items_per_page<=3))
|
||||||
{
|
{
|
||||||
return m_OptOrders[key-items_per_page-1];
|
return m_OptOrders[key-items_per_page-1];
|
||||||
@ -274,46 +343,64 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
bool enabled = true;
|
bool enabled = true;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int slots = 0;
|
int slots = 0;
|
||||||
|
int option_display = 0;
|
||||||
|
|
||||||
for (item_t i = start; i <= end; i++)
|
for (item_t i = start; i <= end; i++)
|
||||||
{
|
{
|
||||||
pItem = m_Items[i];
|
pItem = m_Items[i];
|
||||||
|
|
||||||
if (pItem->access && !(pItem->access & g_players[player].flags[0]))
|
if (pItem->access && !(pItem->access & g_players[player].flags[0]))
|
||||||
|
{
|
||||||
enabled = false;
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (pItem->handler != -1)
|
if (pItem->handler != -1)
|
||||||
{
|
{
|
||||||
ret = executeForwards(pItem->handler, static_cast<cell>(player), static_cast<cell>(thisId), static_cast<cell>(i));
|
ret = executeForwards(pItem->handler, static_cast<cell>(player), static_cast<cell>(thisId), static_cast<cell>(i));
|
||||||
if (ret == ITEM_ENABLED)
|
if (ret == ITEM_ENABLED)
|
||||||
|
{
|
||||||
enabled = true;
|
enabled = true;
|
||||||
else if (ret == ITEM_DISABLED)
|
} else if (ret == ITEM_DISABLED) {
|
||||||
enabled = false;
|
enabled = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pItem->pfn)
|
if (pItem->pfn)
|
||||||
{
|
{
|
||||||
ret = (pItem->pfn)(player, thisId, i);
|
ret = (pItem->pfn)(player, thisId, i);
|
||||||
if (ret == ITEM_ENABLED)
|
if (ret == ITEM_ENABLED)
|
||||||
|
{
|
||||||
enabled = true;
|
enabled = true;
|
||||||
else if (ret == ITEM_DISABLED)
|
} else if (ret == ITEM_DISABLED) {
|
||||||
enabled = false;
|
enabled = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabled)
|
if (enabled)
|
||||||
{
|
{
|
||||||
keys |= (1<<option);
|
keys |= (1<<option);
|
||||||
|
}
|
||||||
|
|
||||||
|
option_display = ++option;
|
||||||
|
if (option_display == 10)
|
||||||
|
{
|
||||||
|
option_display = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enabled)
|
||||||
|
{
|
||||||
if (m_AutoColors)
|
if (m_AutoColors)
|
||||||
_snprintf(buffer, sizeof(buffer)-1, "\\r%d.\\w %s\n", ++option, pItem->name.c_str());
|
{
|
||||||
else
|
_snprintf(buffer, sizeof(buffer)-1, "\\r%d.\\w %s\n", option_display, pItem->name.c_str());
|
||||||
_snprintf(buffer, sizeof(buffer)-1, "%d. %s\n", ++option, pItem->name.c_str());
|
} else {
|
||||||
|
_snprintf(buffer, sizeof(buffer)-1, "%d. %s\n", option_display, pItem->name.c_str());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (m_AutoColors)
|
if (m_AutoColors)
|
||||||
{
|
{
|
||||||
_snprintf(buffer, sizeof(buffer)-1, "\\d%d. %s\n\\w", ++option, pItem->name.c_str());
|
_snprintf(buffer, sizeof(buffer)-1, "\\d%d. %s\n\\w", option_display, pItem->name.c_str());
|
||||||
} else {
|
} else {
|
||||||
_snprintf(buffer, sizeof(buffer)-1, "#. %s\n", pItem->name.c_str());
|
_snprintf(buffer, sizeof(buffer)-1, "#. %s\n", pItem->name.c_str());
|
||||||
option++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
slots++;
|
slots++;
|
||||||
@ -326,7 +413,9 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
for (size_t j=0; j<pItem->blanks.size(); j++)
|
for (size_t j=0; j<pItem->blanks.size(); j++)
|
||||||
{
|
{
|
||||||
if (pItem->blanks[j] == 1)
|
if (pItem->blanks[j] == 1)
|
||||||
|
{
|
||||||
option++;
|
option++;
|
||||||
|
}
|
||||||
m_Text.append("\n");
|
m_Text.append("\n");
|
||||||
slots++;
|
slots++;
|
||||||
}
|
}
|
||||||
@ -337,11 +426,17 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
{
|
{
|
||||||
int pad = items_per_page;
|
int pad = items_per_page;
|
||||||
if (flags & Display_Back)
|
if (flags & Display_Back)
|
||||||
|
{
|
||||||
pad--;
|
pad--;
|
||||||
|
}
|
||||||
if (flags & Display_Next)
|
if (flags & Display_Next)
|
||||||
|
{
|
||||||
pad--;
|
pad--;
|
||||||
|
}
|
||||||
if (flags & Display_Exit)
|
if (flags & Display_Exit)
|
||||||
|
{
|
||||||
pad--;
|
pad--;
|
||||||
|
}
|
||||||
for (int i=slots+1; i<=pad; i++)
|
for (int i=slots+1; i<=pad; i++)
|
||||||
{
|
{
|
||||||
m_Text.append("\n");
|
m_Text.append("\n");
|
||||||
|
22
amxmodx/nongpl_matches.cpp
Normal file
22
amxmodx/nongpl_matches.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include <string.h>
|
||||||
|
#include "nongpl_matches.h"
|
||||||
|
|
||||||
|
NONGPL_PLUGIN_T NONGPL_PLUGIN_LIST[] =
|
||||||
|
{
|
||||||
|
{"Live", "CZ Gun Game", "czgungame.amxx"},
|
||||||
|
{NULL, NULL, NULL},
|
||||||
|
};
|
||||||
|
|
||||||
|
NONGPL_CVAR_T NONGPL_CVAR_LIST[] =
|
||||||
|
{
|
||||||
|
{"gg_mode", 0},
|
||||||
|
{"gg_warmuptimer", 0},
|
||||||
|
{"gg_ff", 0},
|
||||||
|
{"gg_fflevel", 0},
|
||||||
|
{"gg_stats", 0},
|
||||||
|
{"gg_dm", 0},
|
||||||
|
{"gg_turbo", 0},
|
||||||
|
{"amx_ggreset", 1},
|
||||||
|
{"amx_gg", 1},
|
||||||
|
{NULL, 0},
|
||||||
|
};
|
51
amxmodx/nongpl_matches.h
Normal file
51
amxmodx/nongpl_matches.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/* AMX Mod X
|
||||||
|
*
|
||||||
|
* by the AMX Mod X Development Team
|
||||||
|
* originally developed by OLO
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
* In addition, as a special exception, the author gives permission to
|
||||||
|
* link the code of this program with the Half-Life Game Engine ("HL
|
||||||
|
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
|
||||||
|
* L.L.C ("Valve"). You must obey the GNU General Public License in all
|
||||||
|
* respects for all of the code used other than the HL Engine and MODs
|
||||||
|
* from Valve. If you modify this file, you may extend this exception
|
||||||
|
* to your version of the file, but you are not obligated to do so. If
|
||||||
|
* you do not wish to do so, delete this exception statement from your
|
||||||
|
* version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _INCLUDE_AMXMODX_NONGPL_MATCHES_H_
|
||||||
|
#define _INCLUDE_AMXMODX_NONGPL_MATCHES_H_
|
||||||
|
|
||||||
|
struct NONGPL_PLUGIN_T
|
||||||
|
{
|
||||||
|
const char *author;
|
||||||
|
const char *title;
|
||||||
|
const char *filename;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NONGPL_CVAR_T
|
||||||
|
{
|
||||||
|
const char *cvar;
|
||||||
|
int type;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern NONGPL_PLUGIN_T NONGPL_PLUGIN_LIST[];
|
||||||
|
extern NONGPL_CVAR_T NONGPL_CVAR_LIST[];
|
||||||
|
|
||||||
|
#endif //_INCLUDE_AMXMODX_NONGPL_MATCHES_H_
|
@ -2327,7 +2327,7 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIME now, PL_UNLOAD_REASON reason)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FN_META_DETACH
|
#ifdef FN_META_DETACH
|
||||||
return FN_META_DETACH();
|
FN_META_DETACH();
|
||||||
#endif // FN_META_DETACH
|
#endif // FN_META_DETACH
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1077,7 +1077,7 @@ void FN_AlertMessage(ALERT_TYPE atype, char *szFmt, ...);
|
|||||||
#endif // FN_AlertMessage
|
#endif // FN_AlertMessage
|
||||||
|
|
||||||
#ifdef FN_EngineFprintf
|
#ifdef FN_EngineFprintf
|
||||||
void FN_EngineFprintf(FILE *pfile, char *szFmt, ...);
|
void FN_EngineFprintf(void *pfile, char *szFmt, ...);
|
||||||
#endif // FN_EngineFprintf
|
#endif // FN_EngineFprintf
|
||||||
|
|
||||||
#ifdef FN_PvAllocEntPrivateData
|
#ifdef FN_PvAllocEntPrivateData
|
||||||
@ -1141,11 +1141,11 @@ void FN_GetBonePosition(const edict_t *pEdict, int iBone, float *rgflOrigin, flo
|
|||||||
#endif // FN_GetBonePosition
|
#endif // FN_GetBonePosition
|
||||||
|
|
||||||
#ifdef FN_FunctionFromName
|
#ifdef FN_FunctionFromName
|
||||||
unsigned long FN_FunctionFromName(const char *pName);
|
uint32 FN_FunctionFromName(const char *pName);
|
||||||
#endif // FN_FunctionFromName
|
#endif // FN_FunctionFromName
|
||||||
|
|
||||||
#ifdef FN_NameForFunction
|
#ifdef FN_NameForFunction
|
||||||
const char *FN_NameForFunction(unsigned long function);
|
const char *FN_NameForFunction(uint32);
|
||||||
#endif // FN_NameForFunction
|
#endif // FN_NameForFunction
|
||||||
|
|
||||||
#ifdef FN_ClientPrintf
|
#ifdef FN_ClientPrintf
|
||||||
@ -1189,7 +1189,7 @@ CRC32_t FN_CRC32_Final(CRC32_t pulCRC);
|
|||||||
#endif // FN_CRC32_Final
|
#endif // FN_CRC32_Final
|
||||||
|
|
||||||
#ifdef FN_RandomLong
|
#ifdef FN_RandomLong
|
||||||
long FN_RandomLong(long lLow, long lHigh);
|
int32 FN_RandomLong(int32 lLow, int32 lHigh);
|
||||||
#endif // FN_RandomLong
|
#endif // FN_RandomLong
|
||||||
|
|
||||||
#ifdef FN_RandomFloat
|
#ifdef FN_RandomFloat
|
||||||
@ -1658,11 +1658,11 @@ void FN_AlertMessage_Post(ALERT_TYPE atype, char *szFmt, ...);
|
|||||||
#endif // FN_AlertMessage_Post
|
#endif // FN_AlertMessage_Post
|
||||||
|
|
||||||
#ifdef FN_EngineFprintf_Post
|
#ifdef FN_EngineFprintf_Post
|
||||||
void FN_EngineFprintf_Post(FILE *pfile, char *szFmt, ...);
|
void FN_EngineFprintf_Post(void *pfile, char *szFmt, ...);
|
||||||
#endif // FN_EngineFprintf_Post
|
#endif // FN_EngineFprintf_Post
|
||||||
|
|
||||||
#ifdef FN_PvAllocEntPrivateData_Post
|
#ifdef FN_PvAllocEntPrivateData_Post
|
||||||
void *FN_PvAllocEntPrivateData_Post(edict_t *pEdict, long cb);
|
void *FN_PvAllocEntPrivateData_Post(edict_t *pEdict, int32 cb);
|
||||||
#endif // FN_PvAllocEntPrivateData_Post
|
#endif // FN_PvAllocEntPrivateData_Post
|
||||||
|
|
||||||
#ifdef FN_PvEntPrivateData_Post
|
#ifdef FN_PvEntPrivateData_Post
|
||||||
@ -1722,11 +1722,11 @@ void FN_GetBonePosition_Post(const edict_t *pEdict, int iBone, float *rgflOrigin
|
|||||||
#endif // FN_GetBonePosition_Post
|
#endif // FN_GetBonePosition_Post
|
||||||
|
|
||||||
#ifdef FN_FunctionFromName_Post
|
#ifdef FN_FunctionFromName_Post
|
||||||
unsigned long FN_FunctionFromName_Post(const char *pName);
|
uint32 FN_FunctionFromName_Post(const char *pName);
|
||||||
#endif // FN_FunctionFromName_Post
|
#endif // FN_FunctionFromName_Post
|
||||||
|
|
||||||
#ifdef FN_NameForFunction_Post
|
#ifdef FN_NameForFunction_Post
|
||||||
const char *FN_NameForFunction_Post(unsigned long function);
|
const char *FN_NameForFunction_Post(uint32);
|
||||||
#endif // FN_NameForFunction_Post
|
#endif // FN_NameForFunction_Post
|
||||||
|
|
||||||
#ifdef FN_ClientPrintf_Post
|
#ifdef FN_ClientPrintf_Post
|
||||||
@ -1770,7 +1770,7 @@ CRC32_t FN_CRC32_Final_Post(CRC32_t pulCRC);
|
|||||||
#endif // FN_CRC32_Final_Post
|
#endif // FN_CRC32_Final_Post
|
||||||
|
|
||||||
#ifdef FN_RandomLong_Post
|
#ifdef FN_RandomLong_Post
|
||||||
long FN_RandomLong_Post(long lLow, long lHigh);
|
int32 FN_RandomLong_Post(int32 lLow, int32 lHigh);
|
||||||
#endif // FN_RandomLong_Post
|
#endif // FN_RandomLong_Post
|
||||||
|
|
||||||
#ifdef FN_RandomFloat_Post
|
#ifdef FN_RandomFloat_Post
|
||||||
|
@ -83,11 +83,27 @@ void amx_command()
|
|||||||
|
|
||||||
if (plugin && plugin->isValid())
|
if (plugin && plugin->isValid())
|
||||||
{
|
{
|
||||||
plugin->pausePlugin();
|
if (plugin->isPaused())
|
||||||
print_srvconsole("Paused plugin \"%s\"\n", plugin->getName());
|
{
|
||||||
|
if (plugin->isStopped())
|
||||||
|
{
|
||||||
|
print_srvconsole("Plugin \"%s\" is stopped and may not be paused.\n",plugin->getName());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print_srvconsole("Plugin \"%s\" is already paused.\n",plugin->getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
plugin->pausePlugin();
|
||||||
|
print_srvconsole("Paused plugin \"%s\"\n", plugin->getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
print_srvconsole("Couldn't find plugin matching \"%s\"\n", sPlugin);
|
print_srvconsole("Couldn't find plugin matching \"%s\"\n", sPlugin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(cmd, "unpause") && CMD_ARGC() > 2)
|
else if (!strcmp(cmd, "unpause") && CMD_ARGC() > 2)
|
||||||
{
|
{
|
||||||
@ -97,14 +113,21 @@ void amx_command()
|
|||||||
|
|
||||||
if (plugin && plugin->isValid() && plugin->isPaused())
|
if (plugin && plugin->isValid() && plugin->isPaused())
|
||||||
{
|
{
|
||||||
plugin->unpausePlugin();
|
if (plugin->isStopped())
|
||||||
print_srvconsole("Unpaused plugin \"%s\"\n", plugin->getName());
|
{
|
||||||
|
print_srvconsole("Plugin \"%s\" is stopped and may not be unpaused.\n", plugin->getName());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
plugin->unpausePlugin();
|
||||||
|
print_srvconsole("Unpaused plugin \"%s\"\n", plugin->getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!plugin)
|
else if (!plugin)
|
||||||
{
|
{
|
||||||
print_srvconsole("Couldn't find plugin matching \"%s\"\n", sPlugin);
|
print_srvconsole("Couldn't find plugin matching \"%s\"\n", sPlugin);
|
||||||
} else {
|
} else {
|
||||||
print_srvconsole("Plugin %s can't be unpaused right now.", sPlugin);
|
print_srvconsole("Plugin %s can't be unpaused right now.\n", sPlugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(cmd, "cvars"))
|
else if (!strcmp(cmd, "cvars"))
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
// Microsoft Visual C++ generated resource script.
|
// Microsoft Visual C++ generated resource script.
|
||||||
//
|
//
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
@ -26,8 +27,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,7,6,0
|
FILEVERSION 1,7,6,3387
|
||||||
PRODUCTVERSION 1,7,6,0
|
PRODUCTVERSION 1,7,6,3387
|
||||||
FILEFLAGSMASK 0x17L
|
FILEFLAGSMASK 0x17L
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -44,12 +45,12 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "Comments", "AMX Mod X"
|
VALUE "Comments", "AMX Mod X"
|
||||||
VALUE "FileDescription", "AMX Mod X"
|
VALUE "FileDescription", "AMX Mod X"
|
||||||
VALUE "FileVersion", "1.76"
|
VALUE "FileVersion", "1.76d"
|
||||||
VALUE "InternalName", "amxmodx"
|
VALUE "InternalName", "amxmodx"
|
||||||
VALUE "LegalCopyright", "Copyright (c) 2004-2006, AMX Mod X Dev Team"
|
VALUE "LegalCopyright", "Copyright (c) 2004-2006, AMX Mod X Dev Team"
|
||||||
VALUE "OriginalFilename", "amxmodx_mm.dll"
|
VALUE "OriginalFilename", "amxmodx_mm.dll"
|
||||||
VALUE "ProductName", "AMX Mod X"
|
VALUE "ProductName", "AMX Mod X"
|
||||||
VALUE "ProductVersion", "1.76"
|
VALUE "ProductVersion", "1.76d"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -1344,7 +1344,8 @@ static int command(void)
|
|||||||
case tpERROR:
|
case tpERROR:
|
||||||
while (*lptr<=' ' && *lptr!='\0')
|
while (*lptr<=' ' && *lptr!='\0')
|
||||||
lptr++;
|
lptr++;
|
||||||
error(111,lptr); /* user error */
|
if (!SKIPPING)
|
||||||
|
error(111,lptr); /* user error */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error(31); /* unknown compiler directive */
|
error(31); /* unknown compiler directive */
|
||||||
|
@ -6,4 +6,3 @@ ShowStats ;HUD-stats default
|
|||||||
SayRankStats ;Say /rankstats
|
SayRankStats ;Say /rankstats
|
||||||
SayRank ;Say /rank
|
SayRank ;Say /rank
|
||||||
SayTop15 ;Say /top15
|
SayTop15 ;Say /top15
|
||||||
ShowStats ;HUD-stats default
|
|
||||||
|
@ -244,9 +244,14 @@ void CPlayer::saveBDefused(){
|
|||||||
|
|
||||||
// *****************************************************
|
// *****************************************************
|
||||||
|
|
||||||
bool ignoreBots (edict_t *pEnt, edict_t *pOther){
|
bool ignoreBots(edict_t *pEnt, edict_t *pOther)
|
||||||
if ( !rankBots && ( pEnt->v.flags & FL_FAKECLIENT || ( pOther && pOther->v.flags & FL_FAKECLIENT ) ) )
|
{
|
||||||
|
rankBots = (int)csstats_rankbots->value ? true : false;
|
||||||
|
if (!rankBots && (pEnt->v.flags & FL_FAKECLIENT || (pOther && pOther->v.flags & FL_FAKECLIENT)))
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#define CSW_HEGRENADE 4
|
#define CSW_HEGRENADE 4
|
||||||
#define CSW_C4 6
|
#define CSW_C4 6
|
||||||
#define CSW_SMOKEGRENADE 9
|
#define CSW_SMOKEGRENADE 9
|
||||||
|
#define CSW_KNIFE 29
|
||||||
#define CSW_FLASHBANG 25
|
#define CSW_FLASHBANG 25
|
||||||
|
|
||||||
// *****************************************************
|
// *****************************************************
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "WinCSX.h"
|
#include "WinCSX.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "commctrl.h"
|
||||||
|
|
||||||
int APIENTRY _tWinMain(HINSTANCE hInstance,
|
int APIENTRY _tWinMain(HINSTANCE hInstance,
|
||||||
HINSTANCE hPrevInstance,
|
HINSTANCE hPrevInstance,
|
||||||
@ -26,6 +27,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InitCommonControls();
|
||||||
|
|
||||||
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WINCSX);
|
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WINCSX);
|
||||||
|
|
||||||
// Show the dialog box now.
|
// Show the dialog box now.
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
Name="VCCustomBuildTool"/>
|
Name="VCCustomBuildTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="comctl32.lib"
|
||||||
OutputFile="$(OutDir)/WinCSX.exe"
|
OutputFile="$(OutDir)/WinCSX.exe"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
GenerateDebugInformation="TRUE"
|
GenerateDebugInformation="TRUE"
|
||||||
@ -77,6 +78,7 @@
|
|||||||
Name="VCCustomBuildTool"/>
|
Name="VCCustomBuildTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="comctl32.lib"
|
||||||
OutputFile="$(OutDir)/WinCSX.exe"
|
OutputFile="$(OutDir)/WinCSX.exe"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
GenerateDebugInformation="TRUE"
|
GenerateDebugInformation="TRUE"
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="comctl32.lib"
|
||||||
OutputFile="$(OutDir)/WinCSX.exe"
|
OutputFile="$(OutDir)/WinCSX.exe"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
GenerateDebugInformation="true"
|
GenerateDebugInformation="true"
|
||||||
@ -136,6 +137,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="comctl32.lib"
|
||||||
OutputFile="$(OutDir)/WinCSX.exe"
|
OutputFile="$(OutDir)/WinCSX.exe"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
GenerateDebugInformation="true"
|
GenerateDebugInformation="true"
|
||||||
|
@ -2773,7 +2773,7 @@ void ValidateMacros_DontCallThis_Smiley()
|
|||||||
MF_FindLibrary(NULL, LibType_Class);
|
MF_FindLibrary(NULL, LibType_Class);
|
||||||
MF_AddLibraries(NULL, LibType_Class, NULL);
|
MF_AddLibraries(NULL, LibType_Class, NULL);
|
||||||
MF_RemoveLibraries(NULL);
|
MF_RemoveLibraries(NULL);
|
||||||
MF_OverrideNatives(NULL);
|
MF_OverrideNatives(NULL, "");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -43,7 +43,6 @@ int gmsgResetHUD;
|
|||||||
int gmsgAmmoX;
|
int gmsgAmmoX;
|
||||||
int gmsgScoreInfo;
|
int gmsgScoreInfo;
|
||||||
int gmsgAmmoPickup;
|
int gmsgAmmoPickup;
|
||||||
|
|
||||||
int gmsgSendAudio;
|
int gmsgSendAudio;
|
||||||
int gmsgTextMsg;
|
int gmsgTextMsg;
|
||||||
int gmsgBarTime;
|
int gmsgBarTime;
|
||||||
@ -59,29 +58,30 @@ cvar_t *csstats_rank;
|
|||||||
|
|
||||||
cvar_t* csstats_rankbots;
|
cvar_t* csstats_rankbots;
|
||||||
cvar_t* csstats_pause;
|
cvar_t* csstats_pause;
|
||||||
cvar_t init_csstats_rankbots ={"csstats_rankbots","1"};
|
cvar_t init_csstats_rankbots ={"csstats_rankbots","0"};
|
||||||
cvar_t init_csstats_pause = {"csstats_pause","0"};
|
cvar_t init_csstats_pause = {"csstats_pause","0"};
|
||||||
|
|
||||||
struct sUserMsg {
|
struct sUserMsg
|
||||||
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
int* id;
|
int* id;
|
||||||
funEventCall func;
|
funEventCall func;
|
||||||
bool endmsg;
|
bool endmsg;
|
||||||
} g_user_msg[] = {
|
} g_user_msg[] = {
|
||||||
{ "CurWeapon" , &gmsgCurWeapon , Client_CurWeapon, false },
|
{"CurWeapon", &gmsgCurWeapon, Client_CurWeapon, false},
|
||||||
{ "Damage" , &gmsgDamage,Client_Damage, false },
|
{"Damage", &gmsgDamage, Client_Damage, false},
|
||||||
{ "Damage" , &gmsgDamageEnd, Client_Damage_End, true },
|
{"Damage", &gmsgDamageEnd, Client_Damage_End, true},
|
||||||
{ "WeaponList" , &gmsgWeaponList, Client_WeaponList, false },
|
{"WeaponList", &gmsgWeaponList, Client_WeaponList, false},
|
||||||
{ "ResetHUD" , &gmsgResetHUD,Client_ResetHUD, true },
|
{"ResetHUD", &gmsgResetHUD, Client_ResetHUD, true},
|
||||||
{ "AmmoX" , &gmsgAmmoX, Client_AmmoX , false },
|
{"AmmoX", &gmsgAmmoX, Client_AmmoX, false},
|
||||||
{ "ScoreInfo" , &gmsgScoreInfo, Client_ScoreInfo, false },
|
{"ScoreInfo", &gmsgScoreInfo, Client_ScoreInfo, false},
|
||||||
{ "AmmoPickup" , &gmsgAmmoPickup, Client_AmmoPickup , false },
|
{"AmmoPickup", &gmsgAmmoPickup, Client_AmmoPickup, false},
|
||||||
|
{"SendAudio", &gmsgSendAudio, Client_SendAudio, false},
|
||||||
|
{"TextMsg", &gmsgTextMsg, Client_TextMsg, false},
|
||||||
|
{"BarTime", &gmsgBarTime, Client_BarTime, false},
|
||||||
|
{"DeathMsg", &gmsgDeathMsg, Client_DeathMsg, false},
|
||||||
|
|
||||||
{ "SendAudio" , &gmsgSendAudio , Client_SendAudio , false },
|
{0, 0, 0, false}
|
||||||
{ "TextMsg" , &gmsgTextMsg , Client_TextMsg , false },
|
|
||||||
{ "BarTime" , &gmsgBarTime , Client_BarTime , false },
|
|
||||||
|
|
||||||
{ 0 , 0,0,false }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int RegUserMsg_Post(const char *pszName, int iSize)
|
int RegUserMsg_Post(const char *pszName, int iSize)
|
||||||
@ -330,10 +330,20 @@ void EmitSound_Post(edict_t *entity, int channel, const char *sample, /*int*/flo
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *e, TraceResult *ptr) {
|
void TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *e, TraceResult *ptr)
|
||||||
if (ptr->pHit&&(ptr->pHit->v.flags& (FL_CLIENT | FL_FAKECLIENT) )&&
|
{
|
||||||
e&&(e->v.flags& (FL_CLIENT | FL_FAKECLIENT) )&&ptr->iHitgroup)
|
if (ptr->pHit && (ptr->pHit->v.flags & (FL_CLIENT|FL_FAKECLIENT))
|
||||||
GET_PLAYER_POINTER(e)->aiming = ptr->iHitgroup;
|
&& e
|
||||||
|
&& (e->v.flags & (FL_CLIENT|FL_FAKECLIENT))
|
||||||
|
&& ptr->iHitgroup)
|
||||||
|
{
|
||||||
|
CPlayer *pPlayer = GET_PLAYER_POINTER(e);
|
||||||
|
if (pPlayer->current != CSW_KNIFE)
|
||||||
|
{
|
||||||
|
pPlayer->aiming = ptr->iHitgroup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Module info
|
// Module info
|
||||||
#define MODULE_NAME "CSX"
|
#define MODULE_NAME "CSX"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76c"
|
||||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||||
#define MODULE_URL "http://www.amxmodx.org/"
|
#define MODULE_URL "http://www.amxmodx.org/"
|
||||||
#define MODULE_LOGTAG "CSX"
|
#define MODULE_LOGTAG "CSX"
|
||||||
@ -367,7 +367,7 @@
|
|||||||
#define FN_TraceLine_Post TraceLine_Post
|
#define FN_TraceLine_Post TraceLine_Post
|
||||||
// #define FN_TraceToss_Post TraceToss_Post
|
// #define FN_TraceToss_Post TraceToss_Post
|
||||||
// #define FN_TraceMonsterHull_Post TraceMonsterHull_Post
|
// #define FN_TraceMonsterHull_Post TraceMonsterHull_Post
|
||||||
// #define FN_TraceHull_Post TraceHull_Post
|
// #define FN_TraceHull_Post TraceHull_Post
|
||||||
// #define FN_TraceModel_Post TraceModel_Post
|
// #define FN_TraceModel_Post TraceModel_Post
|
||||||
// #define FN_TraceTexture_Post TraceTexture_Post
|
// #define FN_TraceTexture_Post TraceTexture_Post
|
||||||
// #define FN_TraceSphere_Post TraceSphere_Post
|
// #define FN_TraceSphere_Post TraceSphere_Post
|
||||||
|
@ -88,10 +88,10 @@ void Client_AmmoPickup(void*);
|
|||||||
void Client_Damage_End(void*);
|
void Client_Damage_End(void*);
|
||||||
void Client_ScoreInfo(void*);
|
void Client_ScoreInfo(void*);
|
||||||
void Client_ResetHUD(void*);
|
void Client_ResetHUD(void*);
|
||||||
|
|
||||||
void Client_SendAudio(void*);
|
void Client_SendAudio(void*);
|
||||||
void Client_TextMsg(void*);
|
void Client_TextMsg(void*);
|
||||||
void Client_BarTime(void*);
|
void Client_BarTime(void*);
|
||||||
|
void Client_DeathMsg(void*);
|
||||||
|
|
||||||
bool ignoreBots (edict_t *pEnt, edict_t *pOther = NULL );
|
bool ignoreBots (edict_t *pEnt, edict_t *pOther = NULL );
|
||||||
bool isModuleActive();
|
bool isModuleActive();
|
||||||
|
@ -17,6 +17,44 @@ void Client_ResetHUD(void* mValue){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client_DeathMsg(void *mValue)
|
||||||
|
{
|
||||||
|
static int killer_id;
|
||||||
|
static int victim_id;
|
||||||
|
static int is_headshot;
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
switch (mState++)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
killer_id = *(int *)mValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
victim_id = *(int *)mValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
is_headshot = *(int *)mValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
name = (const char *)mValue;
|
||||||
|
if (killer_id
|
||||||
|
&& (strcmp(name, "knife") == 0))
|
||||||
|
{
|
||||||
|
CPlayer *pPlayer = GET_PLAYER_POINTER_I(killer_id);
|
||||||
|
pPlayer->aiming = is_headshot ? 1 : 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Client_WeaponList(void* mValue){
|
void Client_WeaponList(void* mValue){
|
||||||
static int wpnList;
|
static int wpnList;
|
||||||
static int iSlot;
|
static int iSlot;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Module info
|
// Module info
|
||||||
#define MODULE_NAME "DoD Fun"
|
#define MODULE_NAME "DoD Fun"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76b"
|
||||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||||
#define MODULE_URL "http://www.amxmodx.org"
|
#define MODULE_URL "http://www.amxmodx.org"
|
||||||
#define MODULE_LOGTAG "DODFUN"
|
#define MODULE_LOGTAG "DODFUN"
|
||||||
|
@ -251,7 +251,7 @@ void RankSystem::loadRank(const char* filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
short int i = 0;
|
short int i = 0;
|
||||||
if (!fread(&i, sizeof(short int), 1, bfp) != 1)
|
if (fread(&i, sizeof(short int), 1, bfp) != 1)
|
||||||
{
|
{
|
||||||
fclose(bfp);
|
fclose(bfp);
|
||||||
return;
|
return;
|
||||||
|
@ -2773,7 +2773,7 @@ void ValidateMacros_DontCallThis_Smiley()
|
|||||||
MF_FindLibrary(NULL, LibType_Class);
|
MF_FindLibrary(NULL, LibType_Class);
|
||||||
MF_AddLibraries(NULL, LibType_Class, NULL);
|
MF_AddLibraries(NULL, LibType_Class, NULL);
|
||||||
MF_RemoveLibraries(NULL);
|
MF_RemoveLibraries(NULL);
|
||||||
MF_OverrideNatives(NULL);
|
MF_OverrideNatives(NULL, "");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -60,13 +60,13 @@ extern int mState;
|
|||||||
extern int mPlayerIndex;
|
extern int mPlayerIndex;
|
||||||
|
|
||||||
void Client_CurWeapon(void*);
|
void Client_CurWeapon(void*);
|
||||||
void Client_Health_End(void*);
|
|
||||||
void Client_ResetHUD_End(void*);
|
void Client_ResetHUD_End(void*);
|
||||||
void Client_ObjScore(void*);
|
void Client_ObjScore(void*);
|
||||||
void Client_TeamScore(void*);
|
void Client_TeamScore(void*);
|
||||||
void Client_RoundState(void*);
|
void Client_RoundState(void*);
|
||||||
void Client_AmmoX(void*);
|
void Client_AmmoX(void*);
|
||||||
void Client_AmmoShort(void*);
|
void Client_AmmoShort(void*);
|
||||||
|
void Client_Health_End(void*);
|
||||||
|
|
||||||
// Zors
|
// Zors
|
||||||
//void WeaponList(void*);
|
//void WeaponList(void*);
|
||||||
@ -78,7 +78,6 @@ extern int AlliesScore;
|
|||||||
extern int AxisScore;
|
extern int AxisScore;
|
||||||
|
|
||||||
extern int gmsgCurWeapon;
|
extern int gmsgCurWeapon;
|
||||||
extern int gmsgHealth;
|
|
||||||
extern int gmsgResetHUD;
|
extern int gmsgResetHUD;
|
||||||
extern int gmsgObjScore;
|
extern int gmsgObjScore;
|
||||||
extern int gmsgRoundState;
|
extern int gmsgRoundState;
|
||||||
@ -87,12 +86,11 @@ extern int gmsgScoreShort;
|
|||||||
extern int gmsgPTeam;
|
extern int gmsgPTeam;
|
||||||
extern int gmsgAmmoX;
|
extern int gmsgAmmoX;
|
||||||
extern int gmsgAmmoShort;
|
extern int gmsgAmmoShort;
|
||||||
|
extern int gmsgHealth_End;
|
||||||
|
|
||||||
extern int iFDamage;
|
extern int iFDamage;
|
||||||
extern int iFDeath;
|
extern int iFDeath;
|
||||||
extern int iFScore;
|
extern int iFScore;
|
||||||
|
|
||||||
// Zors
|
|
||||||
extern int iFSpawnForward;
|
extern int iFSpawnForward;
|
||||||
extern int iFTeamForward;
|
extern int iFTeamForward;
|
||||||
extern int iFClassForward;
|
extern int iFClassForward;
|
||||||
|
@ -57,7 +57,6 @@ int iFTeamForward = -1;
|
|||||||
int iFClassForward = -1;
|
int iFClassForward = -1;
|
||||||
|
|
||||||
int gmsgCurWeapon;
|
int gmsgCurWeapon;
|
||||||
int gmsgHealth;
|
|
||||||
int gmsgResetHUD;
|
int gmsgResetHUD;
|
||||||
int gmsgObjScore;
|
int gmsgObjScore;
|
||||||
int gmsgRoundState;
|
int gmsgRoundState;
|
||||||
@ -66,6 +65,7 @@ int gmsgScoreShort;
|
|||||||
int gmsgPTeam;
|
int gmsgPTeam;
|
||||||
int gmsgAmmoX;
|
int gmsgAmmoX;
|
||||||
int gmsgAmmoShort;
|
int gmsgAmmoShort;
|
||||||
|
int gmsgHealth_End;
|
||||||
|
|
||||||
// Zors
|
// Zors
|
||||||
//int gmsgWeaponList;
|
//int gmsgWeaponList;
|
||||||
@ -90,22 +90,23 @@ struct sUserMsg {
|
|||||||
int* id;
|
int* id;
|
||||||
funEventCall func;
|
funEventCall func;
|
||||||
bool endmsg;
|
bool endmsg;
|
||||||
} g_user_msg[] = {
|
} g_user_msg[] =
|
||||||
{ "CurWeapon",&gmsgCurWeapon,Client_CurWeapon,false },
|
{
|
||||||
{ "ObjScore",&gmsgObjScore,Client_ObjScore,false },
|
{ "CurWeapon", &gmsgCurWeapon, Client_CurWeapon, false },
|
||||||
{ "RoundState",&gmsgRoundState,Client_RoundState,false },
|
{ "ObjScore", &gmsgObjScore, Client_ObjScore, false },
|
||||||
{ "Health",&gmsgHealth,Client_Health_End,true },
|
{ "RoundState", &gmsgRoundState, Client_RoundState, false },
|
||||||
{ "ResetHUD",&gmsgResetHUD,Client_ResetHUD_End,true },
|
{ "ResetHUD", &gmsgResetHUD, Client_ResetHUD_End, true },
|
||||||
{ "TeamScore",&gmsgTeamScore,Client_TeamScore,false },
|
{ "TeamScore", &gmsgTeamScore, Client_TeamScore, false },
|
||||||
{ "ScoreShort",&gmsgScoreShort,NULL,false },
|
{ "AmmoX", &gmsgAmmoX, Client_AmmoX, false },
|
||||||
{ "PTeam",&gmsgPTeam,NULL,false },
|
{ "AmmoShort", &gmsgAmmoShort, Client_AmmoShort, false },
|
||||||
{ "AmmoX",&gmsgAmmoX,Client_AmmoX,false},
|
{ "Health", &gmsgHealth_End, Client_Health_End, true },
|
||||||
{ "AmmoShort",&gmsgAmmoShort,Client_AmmoShort,false},
|
|
||||||
{ "ScoreShort",&gmsgScoreShort,NULL,false },
|
|
||||||
|
|
||||||
//Zors
|
//Zors
|
||||||
//{ "WeaponList",&gmsgWeaponList,WeaponList,true },
|
//{ "WeaponList", &gmsgWeaponList, WeaponList, true },
|
||||||
//{ "WeaponList",&gmsgWeaponList_End,WeaponList_End,true },
|
//{ "WeaponList", &gmsgWeaponList_End, WeaponList_End, true },
|
||||||
|
|
||||||
|
{ "PTeam", &gmsgPTeam, NULL, false },
|
||||||
|
{ "ScoreShort", &gmsgScoreShort, NULL, false },
|
||||||
|
|
||||||
{ 0,0,0,false }
|
{ 0,0,0,false }
|
||||||
};
|
};
|
||||||
@ -440,8 +441,6 @@ void OnPluginsLoaded()
|
|||||||
iFDeath = MF_RegisterForward("client_death",ET_IGNORE,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_DONE);
|
iFDeath = MF_RegisterForward("client_death",ET_IGNORE,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_DONE);
|
||||||
iFDamage = MF_RegisterForward("client_damage",ET_IGNORE,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_DONE);
|
iFDamage = MF_RegisterForward("client_damage",ET_IGNORE,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_DONE);
|
||||||
iFScore = MF_RegisterForward("client_score",ET_IGNORE,FP_CELL,FP_CELL,FP_CELL,FP_DONE);
|
iFScore = MF_RegisterForward("client_score",ET_IGNORE,FP_CELL,FP_CELL,FP_CELL,FP_DONE);
|
||||||
|
|
||||||
// Zors
|
|
||||||
iFTeamForward = MF_RegisterForward("dod_client_changeteam",ET_IGNORE,FP_CELL/*id*/,FP_CELL/*team*/,FP_CELL/*oldteam*/,FP_DONE);
|
iFTeamForward = MF_RegisterForward("dod_client_changeteam",ET_IGNORE,FP_CELL/*id*/,FP_CELL/*team*/,FP_CELL/*oldteam*/,FP_DONE);
|
||||||
iFSpawnForward = MF_RegisterForward("dod_client_spawn",ET_IGNORE,FP_CELL/*id*/,FP_DONE);
|
iFSpawnForward = MF_RegisterForward("dod_client_spawn",ET_IGNORE,FP_CELL/*id*/,FP_DONE);
|
||||||
iFClassForward = MF_RegisterForward("dod_client_changeclass",ET_IGNORE,FP_CELL/*id*/,FP_CELL/*class*/,FP_CELL/*oldclass*/,FP_DONE);
|
iFClassForward = MF_RegisterForward("dod_client_changeclass",ET_IGNORE,FP_CELL/*id*/,FP_CELL/*class*/,FP_CELL/*oldclass*/,FP_DONE);
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Module info
|
// Module info
|
||||||
#define MODULE_NAME "DoDX"
|
#define MODULE_NAME "DoDX"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76b"
|
||||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||||
#define MODULE_URL "http://www.amxmodx.org"
|
#define MODULE_URL "http://www.amxmodx.org"
|
||||||
#define MODULE_LOGTAG "DODX"
|
#define MODULE_LOGTAG "DODX"
|
||||||
|
@ -141,67 +141,6 @@ void Client_CurWeapon(void* mValue)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Nie ma damage event ...
|
|
||||||
*/
|
|
||||||
void Client_Health_End(void* mValue){
|
|
||||||
|
|
||||||
if ( !isModuleActive() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
edict_t *enemy = mPlayer->pEdict->v.dmg_inflictor;
|
|
||||||
int damage = (int)mPlayer->pEdict->v.dmg_take;
|
|
||||||
|
|
||||||
if ( !mPlayer || !damage || !enemy )
|
|
||||||
return;
|
|
||||||
|
|
||||||
int weapon = 0;
|
|
||||||
int aim = 0;
|
|
||||||
|
|
||||||
mPlayer->pEdict->v.dmg_take = 0.0;
|
|
||||||
|
|
||||||
CPlayer* pAttacker = NULL;
|
|
||||||
|
|
||||||
if ( enemy->v.flags & (FL_CLIENT | FL_FAKECLIENT) )
|
|
||||||
{
|
|
||||||
pAttacker = GET_PLAYER_POINTER(enemy);
|
|
||||||
weapon = pAttacker->current;
|
|
||||||
|
|
||||||
if ( weaponData[weapon].needcheck )
|
|
||||||
weapon = get_weaponid(pAttacker);
|
|
||||||
|
|
||||||
aim = pAttacker->aiming;
|
|
||||||
|
|
||||||
if ( weaponData[weapon].melee )
|
|
||||||
pAttacker->saveShot(weapon);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
g_grenades.find( enemy , &pAttacker , weapon );
|
|
||||||
|
|
||||||
int TA = 0;
|
|
||||||
|
|
||||||
if ( !pAttacker )
|
|
||||||
{
|
|
||||||
pAttacker = mPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( pAttacker->index != mPlayer->index )
|
|
||||||
{
|
|
||||||
pAttacker->saveHit( mPlayer , weapon , damage, aim );
|
|
||||||
|
|
||||||
if ( mPlayer->pEdict->v.team == pAttacker->pEdict->v.team )
|
|
||||||
TA = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
MF_ExecuteForward( iFDamage, pAttacker->index, mPlayer->index, damage, weapon, aim, TA );
|
|
||||||
|
|
||||||
if ( !mPlayer->IsAlive() )
|
|
||||||
{
|
|
||||||
pAttacker->saveKill(mPlayer,weapon,( aim == 1 ) ? 1:0 ,TA);
|
|
||||||
MF_ExecuteForward( iFDeath, pAttacker->index, mPlayer->index, weapon, aim, TA );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Client_AmmoX(void* mValue)
|
void Client_AmmoX(void* mValue)
|
||||||
{
|
{
|
||||||
static int iAmmo;
|
static int iAmmo;
|
||||||
@ -241,6 +180,67 @@ void Client_AmmoShort(void* mValue)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client_Health_End(void* mValue)
|
||||||
|
{
|
||||||
|
if ( !isModuleActive() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
CPlayer* pVictim = mPlayer;
|
||||||
|
|
||||||
|
edict_t *enemy = pVictim->pEdict->v.dmg_inflictor;
|
||||||
|
int damage = (int)pVictim->pEdict->v.dmg_take;
|
||||||
|
|
||||||
|
if(!pVictim || !damage || !enemy)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int weapon = 0;
|
||||||
|
int aim = 0;
|
||||||
|
|
||||||
|
pVictim->pEdict->v.dmg_take = 0.0;
|
||||||
|
|
||||||
|
CPlayer* pAttacker = NULL;
|
||||||
|
|
||||||
|
if(enemy->v.flags & (FL_CLIENT | FL_FAKECLIENT))
|
||||||
|
{
|
||||||
|
pAttacker = GET_PLAYER_POINTER(enemy);
|
||||||
|
weapon = pAttacker->current;
|
||||||
|
|
||||||
|
if(weaponData[weapon].needcheck)
|
||||||
|
weapon = get_weaponid(pAttacker);
|
||||||
|
|
||||||
|
aim = pAttacker->aiming;
|
||||||
|
|
||||||
|
if(weaponData[weapon].melee)
|
||||||
|
pAttacker->saveShot(weapon);
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
g_grenades.find(enemy , &pAttacker , weapon);
|
||||||
|
|
||||||
|
int TA = 0;
|
||||||
|
|
||||||
|
if(!pAttacker)
|
||||||
|
{
|
||||||
|
pAttacker = pVictim;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pAttacker->index != pVictim->index)
|
||||||
|
{
|
||||||
|
pAttacker->saveHit(pVictim , weapon , damage, aim);
|
||||||
|
|
||||||
|
if(pVictim->pEdict->v.team == pAttacker->pEdict->v.team)
|
||||||
|
TA = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
MF_ExecuteForward(iFDamage, pAttacker->index, pVictim->index, damage, weapon, aim, TA);
|
||||||
|
|
||||||
|
if(!pVictim->IsAlive())
|
||||||
|
{
|
||||||
|
pAttacker->saveKill(pVictim, weapon, (aim == 1) ? 1:0 , TA);
|
||||||
|
MF_ExecuteForward(iFDeath, pAttacker->index, pVictim->index, weapon, aim, TA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Working on being able to modify and switch weapons as they are sent to the client
|
Working on being able to modify and switch weapons as they are sent to the client
|
||||||
|
|
||||||
|
@ -798,31 +798,42 @@ static cell AMX_NATIVE_CALL in_view_cone(AMX *amx, cell *params)
|
|||||||
|
|
||||||
CHECK_ENTITY(src);
|
CHECK_ENTITY(src);
|
||||||
|
|
||||||
Vector2D vec2LOS;
|
edict_t *pEdictSrc = INDEXENT(src);
|
||||||
|
|
||||||
|
Vector vecLOS, vecForward;
|
||||||
float flDot;
|
float flDot;
|
||||||
|
|
||||||
edict_t *pEdictSrc = INDEXENT(src);
|
|
||||||
cell *addr = MF_GetAmxAddr(amx, params[2]);
|
cell *addr = MF_GetAmxAddr(amx, params[2]);
|
||||||
float vecOrigin[3];
|
Vector origin(amx_ctof(addr[0]), amx_ctof(addr[1]), amx_ctof(addr[2]));
|
||||||
|
|
||||||
vecOrigin[0] = amx_ctof(addr[0]);
|
bool use2D = (params[0] / sizeof(cell)) == 2 || params[3] == 0;
|
||||||
vecOrigin[1] = amx_ctof(addr[1]);
|
|
||||||
vecOrigin[2] = amx_ctof(addr[2]);
|
|
||||||
|
|
||||||
Vector origin(vecOrigin[0], vecOrigin[1], vecOrigin[2]);
|
if (use2D)
|
||||||
|
{
|
||||||
|
MAKE_VECTORS(pEdictSrc->v.angles);
|
||||||
|
vecForward = gpGlobals->v_forward;
|
||||||
|
|
||||||
MAKE_VECTORS(pEdictSrc->v.angles);
|
vecLOS = origin - pEdictSrc->v.origin;
|
||||||
|
|
||||||
vec2LOS = (origin - pEdictSrc->v.origin).Make2D();
|
vecForward.z = 0;
|
||||||
vec2LOS = vec2LOS.Normalize();
|
vecLOS.z = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MAKE_VECTORS(pEdictSrc->v.v_angle);
|
||||||
|
vecForward = gpGlobals->v_forward;
|
||||||
|
|
||||||
flDot = DotProduct(vec2LOS, gpGlobals->v_forward.Make2D());
|
vecLOS = origin - (pEdictSrc->v.origin + pEdictSrc->v.view_ofs);
|
||||||
|
}
|
||||||
|
|
||||||
|
vecLOS = vecLOS.Normalize();
|
||||||
|
|
||||||
|
flDot = DotProduct(vecLOS, vecForward);
|
||||||
|
|
||||||
if (flDot >= cos(pEdictSrc->v.fov * (M_PI / 360)))
|
if (flDot >= cos(pEdictSrc->v.fov * (M_PI / 360)))
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL traceresult(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL traceresult(AMX *amx, cell *params)
|
||||||
|
@ -34,19 +34,25 @@ void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
|
|||||||
g_pFunctionTable->pfn##tcall =0; \
|
g_pFunctionTable->pfn##tcall =0; \
|
||||||
g_pFunctionTable_Post->pfn##tcall =NULL; \
|
g_pFunctionTable_Post->pfn##tcall =NULL; \
|
||||||
Engine[FM_##tcall].clear(); \
|
Engine[FM_##tcall].clear(); \
|
||||||
EnginePost[FM_##tcall].clear()
|
EnginePost[FM_##tcall].clear(); \
|
||||||
|
EngineAddrs[FM_##tcall] = NULL; \
|
||||||
|
EngineAddrsPost[FM_##tcall] = NULL;
|
||||||
|
|
||||||
#define RESETE(call) \
|
#define RESETE(call) \
|
||||||
g_pengfuncsTable->pfn##call = NULL; \
|
g_pengfuncsTable->pfn##call = NULL; \
|
||||||
g_pengfuncsTable_Post->pfn##call = NULL; \
|
g_pengfuncsTable_Post->pfn##call = NULL; \
|
||||||
Engine[FM_##call].clear(); \
|
Engine[FM_##call].clear(); \
|
||||||
EnginePost[FM_##call].clear()
|
EnginePost[FM_##call].clear(); \
|
||||||
|
EngineAddrs[FM_##call] = NULL; \
|
||||||
|
EngineAddrsPost[FM_##call] = NULL;
|
||||||
|
|
||||||
#define RESETN(call) \
|
#define RESETN(call) \
|
||||||
g_pNewFunctionsTable->pfn##call = NULL; \
|
g_pNewFunctionsTable->pfn##call = NULL; \
|
||||||
g_pNewFunctionsTable_Post->pfn##call = NULL; \
|
g_pNewFunctionsTable_Post->pfn##call = NULL; \
|
||||||
Engine[FM_##call].clear(); \
|
Engine[FM_##call].clear(); \
|
||||||
EnginePost[FM_##call].clear();
|
EnginePost[FM_##call].clear(); \
|
||||||
|
EngineAddrs[FM_##call] = NULL; \
|
||||||
|
EngineAddrsPost[FM_##call] = NULL;
|
||||||
|
|
||||||
void FMH_ServerDeactivate_Post()
|
void FMH_ServerDeactivate_Post()
|
||||||
{
|
{
|
||||||
|
@ -30,6 +30,12 @@ static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
|
|||||||
return 1;
|
return 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TR_InOpen:
|
||||||
|
{
|
||||||
|
gfm_tr->fInOpen = *ptr;
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case TR_InWater:
|
case TR_InWater:
|
||||||
{
|
{
|
||||||
gfm_tr->fInWater = *ptr;
|
gfm_tr->fInWater = *ptr;
|
||||||
@ -104,6 +110,11 @@ static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params)
|
|||||||
return gfm_tr->fStartSolid;
|
return gfm_tr->fStartSolid;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TR_InOpen:
|
||||||
|
{
|
||||||
|
return gfm_tr->fInOpen;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case TR_InWater:
|
case TR_InWater:
|
||||||
{
|
{
|
||||||
return gfm_tr->fInWater;
|
return gfm_tr->fInWater;
|
||||||
|
@ -692,6 +692,8 @@ static cell AMX_NATIVE_CALL get_es(AMX *amx, cell *params)
|
|||||||
ptr = MF_GetAmxAddr(amx, params[3]);
|
ptr = MF_GetAmxAddr(amx, params[3]);
|
||||||
*ptr = amx_ftoc(es->framerate);
|
*ptr = amx_ftoc(es->framerate);
|
||||||
return 1;
|
return 1;
|
||||||
|
case ES_Body:
|
||||||
|
return es->body;
|
||||||
case ES_Controller:
|
case ES_Controller:
|
||||||
ptr = MF_GetAmxAddr(amx, params[3]);
|
ptr = MF_GetAmxAddr(amx, params[3]);
|
||||||
ptr[0] = es->controller[0];
|
ptr[0] = es->controller[0];
|
||||||
@ -937,6 +939,9 @@ static cell AMX_NATIVE_CALL set_es(AMX *amx, cell *params)
|
|||||||
case ES_FrameRate:
|
case ES_FrameRate:
|
||||||
es->framerate = amx_ctof(*ptr);
|
es->framerate = amx_ctof(*ptr);
|
||||||
return 1;
|
return 1;
|
||||||
|
case ES_Body:
|
||||||
|
es->body = *ptr;
|
||||||
|
return 1;
|
||||||
case ES_Controller:
|
case ES_Controller:
|
||||||
es->controller[0] = ptr[0];
|
es->controller[0] = ptr[0];
|
||||||
es->controller[1] = ptr[1];
|
es->controller[1] = ptr[1];
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
CVector<int> Engine[ENGFUNC_NUM+10];
|
CVector<int> Engine[ENGFUNC_NUM+10];
|
||||||
CVector<int> EnginePost[ENGFUNC_NUM+10];
|
CVector<int> EnginePost[ENGFUNC_NUM+10];
|
||||||
|
void *EngineAddrs[ENGFUNC_NUM+10];
|
||||||
|
void *EngineAddrsPost[ENGFUNC_NUM+10];
|
||||||
cell mCellResult;
|
cell mCellResult;
|
||||||
cell mlCellResult;
|
cell mlCellResult;
|
||||||
float mFloatResult;
|
float mFloatResult;
|
||||||
@ -57,12 +59,12 @@ static cell AMX_NATIVE_CALL fm_return(AMX *amx, cell *params)
|
|||||||
}
|
}
|
||||||
case FMV_FLOAT:
|
case FMV_FLOAT:
|
||||||
{
|
{
|
||||||
mFloatResult = amx_ctof(params[2]);
|
mFloatResult = amx_ctof(*(MF_GetAmxAddr(amx,params[2])));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FMV_CELL:
|
case FMV_CELL:
|
||||||
{
|
{
|
||||||
mCellResult = params[2];
|
mCellResult = *(MF_GetAmxAddr(amx,params[2]));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -819,11 +821,17 @@ static cell AMX_NATIVE_CALL unregister_forward(AMX *amx, cell *params)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *patchAddr = NULL;
|
||||||
|
|
||||||
CVector<int> *peng = NULL;
|
CVector<int> *peng = NULL;
|
||||||
if (post)
|
if (post)
|
||||||
peng = &(Engine[func]);
|
{
|
||||||
else
|
|
||||||
peng = &(EnginePost[func]);
|
peng = &(EnginePost[func]);
|
||||||
|
patchAddr = EngineAddrsPost[func];
|
||||||
|
} else {
|
||||||
|
peng = &(Engine[func]);
|
||||||
|
patchAddr = EngineAddrs[func];
|
||||||
|
}
|
||||||
|
|
||||||
CVector<int>::iterator begin, end=peng->end();
|
CVector<int>::iterator begin, end=peng->end();
|
||||||
|
|
||||||
@ -832,10 +840,12 @@ static cell AMX_NATIVE_CALL unregister_forward(AMX *amx, cell *params)
|
|||||||
if ((*begin) == func_id)
|
if ((*begin) == func_id)
|
||||||
{
|
{
|
||||||
peng->erase(begin);
|
peng->erase(begin);
|
||||||
if (!peng->size())
|
if (!peng->size()
|
||||||
|
&& patchAddr != NULL
|
||||||
|
&& func != FM_ServerDeactivate)
|
||||||
{
|
{
|
||||||
//:TODO: we should probably clear this here!
|
/* Clear out this forward if we no longer need it */
|
||||||
//but, we have no reverse lookup possible.
|
*(void **)patchAddr = NULL;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -999,19 +1009,19 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
|
|||||||
ENGHOOK(TraceLine);
|
ENGHOOK(TraceLine);
|
||||||
break;
|
break;
|
||||||
case FM_TraceToss:
|
case FM_TraceToss:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
||||||
ENGHOOK(TraceToss);
|
ENGHOOK(TraceToss);
|
||||||
break;
|
break;
|
||||||
case FM_TraceMonsterHull:
|
case FM_TraceMonsterHull:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
||||||
ENGHOOK(TraceMonsterHull);
|
ENGHOOK(TraceMonsterHull);
|
||||||
break;
|
break;
|
||||||
case FM_TraceHull:
|
case FM_TraceHull:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
||||||
ENGHOOK(TraceHull);
|
ENGHOOK(TraceHull);
|
||||||
break;
|
break;
|
||||||
case FM_TraceModel:
|
case FM_TraceModel:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
||||||
ENGHOOK(TraceModel);
|
ENGHOOK(TraceModel);
|
||||||
break;
|
break;
|
||||||
case FM_TraceTexture:
|
case FM_TraceTexture:
|
||||||
|
@ -169,6 +169,8 @@ enum {
|
|||||||
|
|
||||||
extern CVector<int> Engine[];
|
extern CVector<int> Engine[];
|
||||||
extern CVector<int> EnginePost[];
|
extern CVector<int> EnginePost[];
|
||||||
|
extern void *EngineAddrs[ENGFUNC_NUM+10];
|
||||||
|
extern void *EngineAddrsPost[ENGFUNC_NUM+10];
|
||||||
extern cell mCellResult;
|
extern cell mCellResult;
|
||||||
extern float mFloatResult;
|
extern float mFloatResult;
|
||||||
extern const char *mStringResult;
|
extern const char *mStringResult;
|
||||||
|
@ -810,11 +810,13 @@
|
|||||||
#define ENGHOOK(pfnCall) \
|
#define ENGHOOK(pfnCall) \
|
||||||
if (post) \
|
if (post) \
|
||||||
{ \
|
{ \
|
||||||
|
EngineAddrsPost[FM_##pfnCall] = &engtable->pfn##pfnCall; \
|
||||||
if (engtable->pfn##pfnCall == NULL) \
|
if (engtable->pfn##pfnCall == NULL) \
|
||||||
engtable->pfn##pfnCall = pfnCall##_post; \
|
engtable->pfn##pfnCall = pfnCall##_post; \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
|
EngineAddrs[FM_##pfnCall] = &engtable->pfn##pfnCall; \
|
||||||
if (engtable->pfn##pfnCall == NULL) \
|
if (engtable->pfn##pfnCall == NULL) \
|
||||||
engtable->pfn##pfnCall = pfnCall; \
|
engtable->pfn##pfnCall = pfnCall; \
|
||||||
}
|
}
|
||||||
@ -822,11 +824,13 @@
|
|||||||
#define DLLHOOK(pfnCall) \
|
#define DLLHOOK(pfnCall) \
|
||||||
if (post) \
|
if (post) \
|
||||||
{ \
|
{ \
|
||||||
|
EngineAddrsPost[FM_##pfnCall] = &dlltable->pfn##pfnCall; \
|
||||||
if (dlltable->pfn##pfnCall == NULL) \
|
if (dlltable->pfn##pfnCall == NULL) \
|
||||||
dlltable->pfn##pfnCall = pfnCall##_post; \
|
dlltable->pfn##pfnCall = pfnCall##_post; \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
|
EngineAddrs[FM_##pfnCall] = &dlltable->pfn##pfnCall; \
|
||||||
if (dlltable->pfn##pfnCall == NULL) \
|
if (dlltable->pfn##pfnCall == NULL) \
|
||||||
dlltable->pfn##pfnCall = pfnCall; \
|
dlltable->pfn##pfnCall = pfnCall; \
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Module info
|
// Module info
|
||||||
#define MODULE_NAME "FakeMeta"
|
#define MODULE_NAME "FakeMeta"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76d"
|
||||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||||
#define MODULE_URL "http://www.amxmodx.org"
|
#define MODULE_URL "http://www.amxmodx.org"
|
||||||
#define MODULE_LOGTAG "FAKEMETA"
|
#define MODULE_LOGTAG "FAKEMETA"
|
||||||
|
@ -55,6 +55,10 @@ static cell AMX_NATIVE_CALL SQL_MakeDbTuple(AMX *amx, cell *params)
|
|||||||
sql->user = strdup(MF_GetAmxString(amx, params[2], 0, &len));
|
sql->user = strdup(MF_GetAmxString(amx, params[2], 0, &len));
|
||||||
sql->pass = strdup(MF_GetAmxString(amx, params[3], 0, &len));
|
sql->pass = strdup(MF_GetAmxString(amx, params[3], 0, &len));
|
||||||
sql->db = strdup(MF_GetAmxString(amx, params[4], 0, &len));
|
sql->db = strdup(MF_GetAmxString(amx, params[4], 0, &len));
|
||||||
|
if (params[0] / sizeof(cell) >= 5)
|
||||||
|
{
|
||||||
|
sql->max_timeout = static_cast<unsigned int>(params[5]);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int num = MakeHandle(sql, Handle_Connection, FreeConnection);
|
unsigned int num = MakeHandle(sql, Handle_Connection, FreeConnection);
|
||||||
|
|
||||||
@ -87,11 +91,12 @@ static cell AMX_NATIVE_CALL SQL_Connect(AMX *amx, cell *params)
|
|||||||
nfo.pass = sql->pass;
|
nfo.pass = sql->pass;
|
||||||
nfo.port = sql->port;
|
nfo.port = sql->port;
|
||||||
nfo.host = sql->host;
|
nfo.host = sql->host;
|
||||||
|
nfo.max_timeout = sql->max_timeout;
|
||||||
|
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
int errcode;
|
int errcode;
|
||||||
|
|
||||||
IDatabase *pDb = g_Mysql.Connect(&nfo, &errcode, buffer, sizeof(buffer)-1);
|
IDatabase *pDb = g_Mysql.Connect2(&nfo, &errcode, buffer, sizeof(buffer)-1);
|
||||||
|
|
||||||
if (!pDb)
|
if (!pDb)
|
||||||
{
|
{
|
||||||
@ -378,13 +383,15 @@ static cell AMX_NATIVE_CALL SQL_GetQueryString(AMX *amx, cell *params)
|
|||||||
{
|
{
|
||||||
AmxQueryInfo *qInfo = (AmxQueryInfo *)GetHandle(params[1], Handle_Query);
|
AmxQueryInfo *qInfo = (AmxQueryInfo *)GetHandle(params[1], Handle_Query);
|
||||||
|
|
||||||
if (!qInfo || !qInfo->pQuery)
|
if (!qInfo || (!qInfo->pQuery && !qInfo->opt_ptr))
|
||||||
{
|
{
|
||||||
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid query handle: %d", params[1]);
|
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid query handle: %d", params[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MF_SetAmxString(amx, params[2], qInfo->pQuery->GetQueryString(), params[3]);
|
const char *ptr = qInfo->pQuery ? qInfo->pQuery->GetQueryString() : qInfo->opt_ptr;
|
||||||
|
|
||||||
|
return MF_SetAmxString(amx, params[2], ptr, params[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL SQL_FieldNameToNum(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL SQL_FieldNameToNum(AMX *amx, cell *params)
|
||||||
|
@ -134,11 +134,13 @@ namespace SourceMod
|
|||||||
|
|
||||||
struct DatabaseInfo
|
struct DatabaseInfo
|
||||||
{
|
{
|
||||||
|
DatabaseInfo() : max_timeout(0) { };
|
||||||
const char *host;
|
const char *host;
|
||||||
const char *database;
|
const char *database;
|
||||||
const char *user;
|
const char *user;
|
||||||
const char *pass;
|
const char *pass;
|
||||||
unsigned int port;
|
unsigned int port;
|
||||||
|
unsigned int max_timeout;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ISQLDriver
|
class ISQLDriver
|
||||||
@ -147,6 +149,8 @@ namespace SourceMod
|
|||||||
virtual ~ISQLDriver() { };
|
virtual ~ISQLDriver() { };
|
||||||
public:
|
public:
|
||||||
virtual IDatabase *Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength) =0;
|
virtual IDatabase *Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength) =0;
|
||||||
|
//Supports the timeout clause
|
||||||
|
virtual IDatabase *Connect2(DatabaseInfo *info, int *errcode, char *error, size_t maxlength) =0;
|
||||||
virtual const char *NameString() =0;
|
virtual const char *NameString() =0;
|
||||||
virtual bool IsCompatDriver(const char *namestring) =0;
|
virtual bool IsCompatDriver(const char *namestring) =0;
|
||||||
};
|
};
|
||||||
|
@ -21,6 +21,16 @@ const char *MysqlDriver::NameString()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IDatabase *MysqlDriver::Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength)
|
IDatabase *MysqlDriver::Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength)
|
||||||
|
{
|
||||||
|
return _Connect(info, errcode, error, maxlength, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
IDatabase *MysqlDriver::Connect2(DatabaseInfo *info, int *errcode, char *error, size_t maxlength)
|
||||||
|
{
|
||||||
|
return _Connect(info, errcode, error, maxlength, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
IDatabase *MysqlDriver::_Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength, bool do_timeout)
|
||||||
{
|
{
|
||||||
MYSQL *mysql = mysql_init(NULL);
|
MYSQL *mysql = mysql_init(NULL);
|
||||||
|
|
||||||
@ -35,6 +45,11 @@ IDatabase *MysqlDriver::Connect(DatabaseInfo *info, int *errcode, char *error, s
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (do_timeout && info->max_timeout)
|
||||||
|
{
|
||||||
|
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&(info->max_timeout));
|
||||||
|
}
|
||||||
|
|
||||||
if (mysql_real_connect(mysql,
|
if (mysql_real_connect(mysql,
|
||||||
info->host,
|
info->host,
|
||||||
info->user,
|
info->user,
|
||||||
@ -45,9 +60,13 @@ IDatabase *MysqlDriver::Connect(DatabaseInfo *info, int *errcode, char *error, s
|
|||||||
0) == NULL)
|
0) == NULL)
|
||||||
{
|
{
|
||||||
if (errcode)
|
if (errcode)
|
||||||
|
{
|
||||||
*errcode = mysql_errno(mysql);
|
*errcode = mysql_errno(mysql);
|
||||||
|
}
|
||||||
if (error && maxlength)
|
if (error && maxlength)
|
||||||
|
{
|
||||||
snprintf(error, maxlength, "%s", mysql_error(mysql));
|
snprintf(error, maxlength, "%s", mysql_error(mysql));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,8 +9,11 @@ namespace SourceMod
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IDatabase *Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength);
|
IDatabase *Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength);
|
||||||
|
IDatabase *Connect2(DatabaseInfo *info, int *errcode, char *error, size_t maxlength);
|
||||||
const char *NameString();
|
const char *NameString();
|
||||||
bool IsCompatDriver(const char *namestring);
|
bool IsCompatDriver(const char *namestring);
|
||||||
|
public:
|
||||||
|
IDatabase *_Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength, bool do_timeout);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,9 +10,11 @@
|
|||||||
|
|
||||||
struct AmxQueryInfo
|
struct AmxQueryInfo
|
||||||
{
|
{
|
||||||
|
AmxQueryInfo() : opt_ptr(NULL) { };
|
||||||
IQuery *pQuery;
|
IQuery *pQuery;
|
||||||
QueryInfo info;
|
QueryInfo info;
|
||||||
char error[255];
|
char error[255];
|
||||||
|
char *opt_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HandleType
|
enum HandleType
|
||||||
@ -32,6 +34,7 @@ struct SQL_Connection
|
|||||||
char *pass;
|
char *pass;
|
||||||
char *db;
|
char *db;
|
||||||
int port;
|
int port;
|
||||||
|
unsigned int max_timeout;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*FREEHANDLE)(void *, unsigned int);
|
typedef void (*FREEHANDLE)(void *, unsigned int);
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* to add multiple entries.
|
* to add multiple entries.
|
||||||
*/
|
*/
|
||||||
#define MODULE_NAME "MySQL"
|
#define MODULE_NAME "MySQL"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76b"
|
||||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||||
#define MODULE_URL "http://www.amxmodx.org/"
|
#define MODULE_URL "http://www.amxmodx.org/"
|
||||||
#define MODULE_LOGTAG "MySQL"
|
#define MODULE_LOGTAG "MySQL"
|
||||||
|
@ -58,7 +58,7 @@ static cell AMX_NATIVE_CALL SQL_ThreadQuery(AMX *amx, cell *params)
|
|||||||
|
|
||||||
int len;
|
int len;
|
||||||
const char *handler = MF_GetAmxString(amx, params[2], 0, &len);
|
const char *handler = MF_GetAmxString(amx, params[2], 0, &len);
|
||||||
int fwd = MF_RegisterSPForwardByName(amx, handler, FP_CELL, FP_CELL, FP_STRING, FP_CELL, FP_ARRAY, FP_CELL, FP_DONE);
|
int fwd = MF_RegisterSPForwardByName(amx, handler, FP_CELL, FP_CELL, FP_STRING, FP_CELL, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
|
||||||
if (fwd < 1)
|
if (fwd < 1)
|
||||||
{
|
{
|
||||||
MF_LogError(amx, AMX_ERR_NATIVE, "Function not found: %s", handler);
|
MF_LogError(amx, AMX_ERR_NATIVE, "Function not found: %s", handler);
|
||||||
@ -76,7 +76,7 @@ static cell AMX_NATIVE_CALL SQL_ThreadQuery(AMX *amx, cell *params)
|
|||||||
}
|
}
|
||||||
g_QueueLock->Unlock();
|
g_QueueLock->Unlock();
|
||||||
|
|
||||||
kmThread->SetInfo(cn->host, cn->user, cn->pass, cn->db, cn->port);
|
kmThread->SetInfo(cn->host, cn->user, cn->pass, cn->db, cn->port, cn->max_timeout);
|
||||||
kmThread->SetForward(fwd);
|
kmThread->SetForward(fwd);
|
||||||
kmThread->SetQuery(MF_GetAmxString(amx, params[3], 1, &len));
|
kmThread->SetQuery(MF_GetAmxString(amx, params[3], 1, &len));
|
||||||
kmThread->SetCellData(MF_GetAmxAddr(amx, params[4]), (ucell)params[5]);
|
kmThread->SetCellData(MF_GetAmxAddr(amx, params[4]), (ucell)params[5]);
|
||||||
@ -126,13 +126,15 @@ void MysqlThread::SetForward(int forward)
|
|||||||
m_fwd = forward;
|
m_fwd = forward;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MysqlThread::SetInfo(const char *host, const char *user, const char *pass, const char *db, int port)
|
void MysqlThread::SetInfo(const char *host, const char *user, const char *pass, const char *db, int port, unsigned int max_timeout)
|
||||||
{
|
{
|
||||||
m_host.assign(host);
|
m_host.assign(host);
|
||||||
m_user.assign(user);
|
m_user.assign(user);
|
||||||
m_pass.assign(pass);
|
m_pass.assign(pass);
|
||||||
m_db.assign(db);
|
m_db.assign(db);
|
||||||
|
m_max_timeout = m_max_timeout;
|
||||||
m_port = port;
|
m_port = port;
|
||||||
|
m_qrInfo.queue_time = gpGlobals->time;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MysqlThread::SetQuery(const char *query)
|
void MysqlThread::SetQuery(const char *query)
|
||||||
@ -149,10 +151,15 @@ void MysqlThread::RunThread(IThreadHandle *pHandle)
|
|||||||
info.user = m_user.c_str();
|
info.user = m_user.c_str();
|
||||||
info.host = m_host.c_str();
|
info.host = m_host.c_str();
|
||||||
info.port = m_port;
|
info.port = m_port;
|
||||||
|
info.max_timeout = m_max_timeout;
|
||||||
|
|
||||||
|
float save_time = m_qrInfo.queue_time;
|
||||||
|
|
||||||
memset(&m_qrInfo, 0, sizeof(m_qrInfo));
|
memset(&m_qrInfo, 0, sizeof(m_qrInfo));
|
||||||
|
|
||||||
IDatabase *pDatabase = g_Mysql.Connect(&info, &m_qrInfo.amxinfo.info.errorcode, m_qrInfo.amxinfo.error, 254);
|
m_qrInfo.queue_time = save_time;
|
||||||
|
|
||||||
|
IDatabase *pDatabase = g_Mysql.Connect2(&info, &m_qrInfo.amxinfo.info.errorcode, m_qrInfo.amxinfo.error, 254);
|
||||||
IQuery *pQuery = NULL;
|
IQuery *pQuery = NULL;
|
||||||
if (!pDatabase)
|
if (!pDatabase)
|
||||||
{
|
{
|
||||||
@ -172,11 +179,15 @@ void MysqlThread::RunThread(IThreadHandle *pHandle)
|
|||||||
if (m_qrInfo.query_success && m_qrInfo.amxinfo.info.rs)
|
if (m_qrInfo.query_success && m_qrInfo.amxinfo.info.rs)
|
||||||
{
|
{
|
||||||
m_atomicResult.CopyFrom(m_qrInfo.amxinfo.info.rs);
|
m_atomicResult.CopyFrom(m_qrInfo.amxinfo.info.rs);
|
||||||
m_qrInfo.amxinfo.pQuery = pQuery;
|
|
||||||
m_qrInfo.amxinfo.info.rs = &m_atomicResult;
|
m_qrInfo.amxinfo.info.rs = &m_atomicResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pQuery)
|
||||||
|
{
|
||||||
|
m_qrInfo.amxinfo.pQuery = pQuery;
|
||||||
} else {
|
} else {
|
||||||
pQuery->FreeHandle();
|
m_qrInfo.amxinfo.opt_ptr = new char[m_query.size() + 1];
|
||||||
pQuery = NULL;
|
strcpy(m_qrInfo.amxinfo.opt_ptr, m_query.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pDatabase)
|
if (pDatabase)
|
||||||
@ -228,31 +239,37 @@ void MysqlThread::Execute()
|
|||||||
} else if (!m_qrInfo.query_success) {
|
} else if (!m_qrInfo.query_success) {
|
||||||
state = -1;
|
state = -1;
|
||||||
}
|
}
|
||||||
|
float diff = gpGlobals->time - m_qrInfo.queue_time;
|
||||||
|
cell c_diff = amx_ftoc(diff);
|
||||||
|
unsigned int hndl = MakeHandle(&m_qrInfo.amxinfo, Handle_Query, NullFunc);
|
||||||
if (state != 0)
|
if (state != 0)
|
||||||
{
|
{
|
||||||
MF_ExecuteForward(m_fwd,
|
MF_ExecuteForward(m_fwd,
|
||||||
(cell)state,
|
(cell)state,
|
||||||
(cell)0,
|
(cell)hndl,
|
||||||
m_qrInfo.amxinfo.error,
|
m_qrInfo.amxinfo.error,
|
||||||
m_qrInfo.amxinfo.info.errorcode,
|
m_qrInfo.amxinfo.info.errorcode,
|
||||||
data_addr,
|
data_addr,
|
||||||
m_datalen);
|
m_datalen,
|
||||||
|
c_diff);
|
||||||
} else {
|
} else {
|
||||||
unsigned int hndl = MakeHandle(&m_qrInfo.amxinfo, Handle_Query, NullFunc);
|
|
||||||
MF_ExecuteForward(m_fwd,
|
MF_ExecuteForward(m_fwd,
|
||||||
(cell)0,
|
(cell)0,
|
||||||
(cell)hndl,
|
(cell)hndl,
|
||||||
"",
|
"",
|
||||||
(cell)0,
|
(cell)0,
|
||||||
data_addr,
|
data_addr,
|
||||||
m_datalen);
|
m_datalen,
|
||||||
/* this should always be true I think */
|
c_diff);
|
||||||
if (m_qrInfo.amxinfo.pQuery)
|
|
||||||
{
|
|
||||||
m_qrInfo.amxinfo.pQuery->FreeHandle();
|
|
||||||
}
|
|
||||||
FreeHandle(hndl);
|
|
||||||
}
|
}
|
||||||
|
FreeHandle(hndl);
|
||||||
|
if (m_qrInfo.amxinfo.pQuery)
|
||||||
|
{
|
||||||
|
m_qrInfo.amxinfo.pQuery->FreeHandle();
|
||||||
|
m_qrInfo.amxinfo.pQuery = NULL;
|
||||||
|
}
|
||||||
|
delete [] m_qrInfo.amxinfo.opt_ptr;
|
||||||
|
m_qrInfo.amxinfo.opt_ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************
|
/*****************
|
||||||
|
@ -12,6 +12,7 @@ struct QueuedResultInfo
|
|||||||
AmxQueryInfo amxinfo;
|
AmxQueryInfo amxinfo;
|
||||||
bool connect_success;
|
bool connect_success;
|
||||||
bool query_success;
|
bool query_success;
|
||||||
|
float queue_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AtomicResult :
|
class AtomicResult :
|
||||||
@ -59,7 +60,7 @@ public:
|
|||||||
MysqlThread();
|
MysqlThread();
|
||||||
~MysqlThread();
|
~MysqlThread();
|
||||||
public:
|
public:
|
||||||
void SetInfo(const char *host, const char *user, const char *pass, const char *db, int port);
|
void SetInfo(const char *host, const char *user, const char *pass, const char *db, int port, unsigned int max_timeout);
|
||||||
void SetQuery(const char *query);
|
void SetQuery(const char *query);
|
||||||
void SetCellData(cell data[], ucell len);
|
void SetCellData(cell data[], ucell len);
|
||||||
void SetForward(int forward);
|
void SetForward(int forward);
|
||||||
@ -74,6 +75,7 @@ private:
|
|||||||
SourceHook::String m_user;
|
SourceHook::String m_user;
|
||||||
SourceHook::String m_pass;
|
SourceHook::String m_pass;
|
||||||
SourceHook::String m_db;
|
SourceHook::String m_db;
|
||||||
|
unsigned int m_max_timeout;
|
||||||
int m_port;
|
int m_port;
|
||||||
cell *m_data;
|
cell *m_data;
|
||||||
ucell m_datalen;
|
ucell m_datalen;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Module info
|
// Module info
|
||||||
#define MODULE_NAME "NS"
|
#define MODULE_NAME "NS"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76d"
|
||||||
#define MODULE_AUTHOR "Steve Dudenhoeffer"
|
#define MODULE_AUTHOR "Steve Dudenhoeffer"
|
||||||
#define MODULE_URL "http://www.amxmodx.org/"
|
#define MODULE_URL "http://www.amxmodx.org/"
|
||||||
#define MODULE_LOGTAG "NS"
|
#define MODULE_LOGTAG "NS"
|
||||||
|
@ -6,56 +6,56 @@
|
|||||||
|
|
||||||
// Offsets (used in NPData.cpp)
|
// Offsets (used in NPData.cpp)
|
||||||
|
|
||||||
#define OFFSET_WIN_RESOURCES 1816 //454 * 4
|
#define OFFSET_WIN_RESOURCES 1816 //454 * 4 // est: 454 // CONFIRMED
|
||||||
#define OFFSET_LIN_RESOURCES 1836 //459 * 4
|
#define OFFSET_LIN_RESOURCES 1836 //459 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_WEAPDMG 400 //100 * 4
|
#define OFFSET_WIN_WEAPDMG 408 //100 * 4 // est: 102 // CONFIRMED
|
||||||
#define OFFSET_LIN_WEAPDMG 416 //104 * 4
|
#define OFFSET_LIN_WEAPDMG 424 //106 * 4 // Changed + 8 Bytes
|
||||||
|
|
||||||
#define OFFSET_WIN_WEAPRANGE 396 //99 * 4
|
#define OFFSET_WIN_WEAPRANGE 404 //99 * 4 // est: 101 // CONFIRMED
|
||||||
#define OFFSET_LIN_WEAPRANGE 412 //103 * 4
|
#define OFFSET_LIN_WEAPRANGE 420 //105 * 4 // Changed + 8 Bytes
|
||||||
|
|
||||||
#define OFFSET_WIN_WEAPCLIP 364 //91 * 4
|
#define OFFSET_WIN_WEAPCLIP 364 //91 * 4 // est: 91 // CONFIRMED
|
||||||
#define OFFSET_LIN_WEAPCLIP 380 //95 * 4
|
#define OFFSET_LIN_WEAPCLIP 380 //95 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_HIVE_TRAIT 484 //121 * 4
|
#define OFFSET_WIN_HIVE_TRAIT 488 //121 * 4 // est: 122 // CONFIRMED
|
||||||
#define OFFSET_LIN_HIVE_TRAIT 500 //125 * 4
|
#define OFFSET_LIN_HIVE_TRAIT 504 //126 * 4 // Changed + 4 bytes
|
||||||
|
|
||||||
#define OFFSET_WIN_SCORE 6556 //1639 * 4
|
#define OFFSET_WIN_SCORE 6588 //1639 * 4 // est: 1647 // CONFIRMED
|
||||||
#define OFFSET_LIN_SCORE 6576 //1644 * 4
|
#define OFFSET_LIN_SCORE 6608 //1644 * 4 // Changed + 32 bytes
|
||||||
|
|
||||||
#define OFFSET_WIN_EXP 6480 //1620 * 4
|
#define OFFSET_WIN_EXP 6512 //1620 * 4 // est: 1628 // CONFIRMED
|
||||||
#define OFFSET_LIN_EXP 6500 //1625 * 4
|
#define OFFSET_LIN_EXP 6532 //1633 * 4 // Changed + 32 bytes
|
||||||
|
|
||||||
#define OFFSET_WIN_POINTS 6488 //1622 * 4
|
#define OFFSET_WIN_POINTS 6520 //1622 * 4 // est: 1630 // CONFIRMED
|
||||||
#define OFFSET_LIN_POINTS 6508 //1627 * 4
|
#define OFFSET_LIN_POINTS 6540 //1635 * 4 // Changed + 32 bytes
|
||||||
|
|
||||||
#define OFFSET_WIN_AMMO_LMG 1116 //279 * 4
|
#define OFFSET_WIN_AMMO_LMG 1116 //279 * 4 // est: 279 // CONFIRMED
|
||||||
#define OFFSET_LIN_AMMO_LMG 1136 //284 * 4
|
#define OFFSET_LIN_AMMO_LMG 1136 //284 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_AMMO_PISTOL 1120 //280 * 4
|
#define OFFSET_WIN_AMMO_PISTOL 1120 //280 * 4 // est: 280 // CONFIRMED
|
||||||
#define OFFSET_LIN_AMMO_PISTOL 1140 //285 * 4
|
#define OFFSET_LIN_AMMO_PISTOL 1140 //285 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_AMMO_SHOTGUN 1124 //281 * 4
|
#define OFFSET_WIN_AMMO_SHOTGUN 1124 //281 * 4 // est: 281 // CONFIRMED
|
||||||
#define OFFSET_LIN_AMMO_SHOTGUN 1144 //286 * 4
|
#define OFFSET_LIN_AMMO_SHOTGUN 1144 //286 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_AMMO_HMG 1128 //282 * 4
|
#define OFFSET_WIN_AMMO_HMG 1128 //282 * 4 // est: 282 // CONFIRMED
|
||||||
#define OFFSET_LIN_AMMO_HMG 1148 //287 * 4
|
#define OFFSET_LIN_AMMO_HMG 1148 //287 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_AMMO_GL 1132 //283 * 4
|
#define OFFSET_WIN_AMMO_GL 1132 //283 * 4 // est: 283 // CONFIRMED
|
||||||
#define OFFSET_LIN_AMMO_GL 1152 //288 * 4
|
#define OFFSET_LIN_AMMO_GL 1152 //288 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_AMMO_HG 1136 //284 * 4
|
#define OFFSET_WIN_AMMO_HG 1136 //284 * 4 // est: 284 // CONFIRMED
|
||||||
#define OFFSET_LIN_AMMO_HG 1156 //289 * 4
|
#define OFFSET_LIN_AMMO_HG 1156 //289 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_DEATHS 1380 //345 * 4
|
#define OFFSET_WIN_DEATHS 1380 //345 * 4 // est: 345 // CONFIRMED
|
||||||
#define OFFSET_LIN_DEATHS 1400 //349 * 4
|
#define OFFSET_LIN_DEATHS 1400 //350 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_STRUCTOWNER 324 //81 * 4
|
#define OFFSET_WIN_STRUCTOWNER 324 //81 * 4 // est: 81 // CONFIRMED
|
||||||
#define OFFSET_LIN_STRUCTOWNER 340 //85 * 4
|
#define OFFSET_LIN_STRUCTOWNER 340 //85 * 4 // no change
|
||||||
|
|
||||||
#define OFFSET_WIN_HIVEABILITY 6220 //1555 * 4
|
#define OFFSET_WIN_HIVEABILITY 6248 //1555 * 4 // est: 1562 // CONFIRMED
|
||||||
#define OFFSET_LIN_HIVEABILITY 6240 //1560 * 4
|
#define OFFSET_LIN_HIVEABILITY 6268 //1567 * 4 // Changed + 28 bytes
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
#if defined __linux__
|
#if defined __linux__
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
@ -24,8 +25,8 @@ int Journal::Replay(VaultMap *pMap)
|
|||||||
|
|
||||||
BinaryReader br(m_fp);
|
BinaryReader br(m_fp);
|
||||||
|
|
||||||
int8_t len8;
|
uint8_t len8;
|
||||||
int16_t len16;
|
uint16_t len16;
|
||||||
char *key = NULL;
|
char *key = NULL;
|
||||||
char *val = NULL;
|
char *val = NULL;
|
||||||
String sKey;
|
String sKey;
|
||||||
|
@ -2773,7 +2773,7 @@ void ValidateMacros_DontCallThis_Smiley()
|
|||||||
MF_FindLibrary(NULL, LibType_Class);
|
MF_FindLibrary(NULL, LibType_Class);
|
||||||
MF_AddLibraries(NULL, LibType_Class, NULL);
|
MF_AddLibraries(NULL, LibType_Class, NULL);
|
||||||
MF_RemoveLibraries(NULL);
|
MF_RemoveLibraries(NULL);
|
||||||
MF_OverrideNatives(NULL);
|
MF_OverrideNatives(NULL, "");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Module info
|
// Module info
|
||||||
#define MODULE_NAME "nVault"
|
#define MODULE_NAME "nVault"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76c"
|
||||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||||
#define MODULE_URL "http://www.amxmodx.org/"
|
#define MODULE_URL "http://www.amxmodx.org/"
|
||||||
#define MODULE_LOGTAG "nVault"
|
#define MODULE_LOGTAG "nVault"
|
||||||
|
@ -169,6 +169,8 @@ public:
|
|||||||
} else {
|
} else {
|
||||||
iter++;
|
iter++;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
iter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -382,13 +382,16 @@ static cell AMX_NATIVE_CALL SQL_FieldNumToName(AMX *amx, cell *params)
|
|||||||
static cell AMX_NATIVE_CALL SQL_GetQueryString(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL SQL_GetQueryString(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
AmxQueryInfo *qInfo = (AmxQueryInfo *)GetHandle(params[1], Handle_Query);
|
AmxQueryInfo *qInfo = (AmxQueryInfo *)GetHandle(params[1], Handle_Query);
|
||||||
if (!qInfo)
|
|
||||||
|
if (!qInfo || (!qInfo->pQuery && !qInfo->opt_ptr))
|
||||||
{
|
{
|
||||||
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid query handle: %d", params[1]);
|
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid query handle: %d", params[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MF_SetAmxString(amx, params[2], qInfo->pQuery->GetQueryString(), params[3]);
|
const char *ptr = qInfo->pQuery ? qInfo->pQuery->GetQueryString() : qInfo->opt_ptr;
|
||||||
|
|
||||||
|
return MF_SetAmxString(amx, params[2], ptr, params[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL SQL_FieldNameToNum(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL SQL_FieldNameToNum(AMX *amx, cell *params)
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Module info
|
// Module info
|
||||||
#define MODULE_NAME "SQLite"
|
#define MODULE_NAME "SQLite"
|
||||||
#define MODULE_VERSION "1.76"
|
#define MODULE_VERSION "1.76b"
|
||||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||||
#define MODULE_URL "http://www.amxmodx.org/"
|
#define MODULE_URL "http://www.amxmodx.org/"
|
||||||
#define MODULE_LOGTAG "SQLITE"
|
#define MODULE_LOGTAG "SQLITE"
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
namespace SourceHook
|
namespace SourceHook
|
||||||
{
|
{
|
||||||
|
|
||||||
//This class is from CSDM for AMX Mod X
|
//This class is from CSDM for AMX Mod X
|
||||||
/*
|
/*
|
||||||
A circular, doubly-linked list with one sentinel node
|
A circular, doubly-linked list with one sentinel node
|
||||||
|
@ -10,9 +10,11 @@
|
|||||||
|
|
||||||
struct AmxQueryInfo
|
struct AmxQueryInfo
|
||||||
{
|
{
|
||||||
|
AmxQueryInfo() : opt_ptr(NULL) { };
|
||||||
IQuery *pQuery;
|
IQuery *pQuery;
|
||||||
QueryInfo info;
|
QueryInfo info;
|
||||||
char error[255];
|
char error[255];
|
||||||
|
char *opt_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HandleType
|
enum HandleType
|
||||||
|
@ -54,6 +54,9 @@ void ThreadWorker::RunThread(IThreadHandle *pHandle)
|
|||||||
/**
|
/**
|
||||||
* Check number of items in the queue
|
* Check number of items in the queue
|
||||||
*/
|
*/
|
||||||
|
m_StateLock->Lock();
|
||||||
|
this_state = m_state;
|
||||||
|
m_StateLock->Unlock();
|
||||||
if (this_state != Worker_Stopped)
|
if (this_state != Worker_Stopped)
|
||||||
{
|
{
|
||||||
m_QueueLock->Lock();
|
m_QueueLock->Lock();
|
||||||
@ -65,6 +68,11 @@ void ThreadWorker::RunThread(IThreadHandle *pHandle)
|
|||||||
*/
|
*/
|
||||||
m_Waiting = true;
|
m_Waiting = true;
|
||||||
m_QueueLock->Unlock();
|
m_QueueLock->Unlock();
|
||||||
|
/* first check if we should end again */
|
||||||
|
if (this_state == Worker_Stopped)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
m_AddSignal->Wait();
|
m_AddSignal->Wait();
|
||||||
m_Waiting = false;
|
m_Waiting = false;
|
||||||
} else {
|
} else {
|
||||||
@ -80,7 +88,9 @@ void ThreadWorker::RunThread(IThreadHandle *pHandle)
|
|||||||
{
|
{
|
||||||
//wait until the lock is cleared.
|
//wait until the lock is cleared.
|
||||||
if (this_state == Worker_Paused)
|
if (this_state == Worker_Paused)
|
||||||
|
{
|
||||||
m_PauseSignal->Wait();
|
m_PauseSignal->Wait();
|
||||||
|
}
|
||||||
if (this_state == Worker_Stopped)
|
if (this_state == Worker_Stopped)
|
||||||
{
|
{
|
||||||
//if we're supposed to flush cleanrly,
|
//if we're supposed to flush cleanrly,
|
||||||
@ -187,9 +197,12 @@ bool ThreadWorker::Stop(bool flush_cancel)
|
|||||||
{
|
{
|
||||||
Unpause();
|
Unpause();
|
||||||
} else {
|
} else {
|
||||||
m_AddSignal->Signal();
|
m_QueueLock->Lock();
|
||||||
Pause();
|
if (m_Waiting)
|
||||||
Unpause();
|
{
|
||||||
|
m_AddSignal->Signal();
|
||||||
|
}
|
||||||
|
m_QueueLock->Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
me->WaitForThread();
|
me->WaitForThread();
|
||||||
|
@ -97,7 +97,7 @@ IThreadHandle *WinThreader::MakeThread(IThread *pThread, const ThreadParams *par
|
|||||||
|
|
||||||
IEventSignal *WinThreader::MakeEventSignal()
|
IEventSignal *WinThreader::MakeEventSignal()
|
||||||
{
|
{
|
||||||
HANDLE event = CreateEventA(NULL, TRUE, TRUE, NULL);
|
HANDLE event = CreateEventA(NULL, FALSE, FALSE, NULL);
|
||||||
|
|
||||||
if (!event)
|
if (!event)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -275,7 +275,6 @@ WinThreader::WinEvent::~WinEvent()
|
|||||||
void WinThreader::WinEvent::Wait()
|
void WinThreader::WinEvent::Wait()
|
||||||
{
|
{
|
||||||
WaitForSingleObject(m_event, INFINITE);
|
WaitForSingleObject(m_event, INFINITE);
|
||||||
ResetEvent(m_event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WinThreader::WinEvent::Signal()
|
void WinThreader::WinEvent::Signal()
|
||||||
|
@ -129,6 +129,7 @@ void MysqlThread::SetForward(int forward)
|
|||||||
void MysqlThread::SetInfo(const char *db)
|
void MysqlThread::SetInfo(const char *db)
|
||||||
{
|
{
|
||||||
m_db.assign(db);
|
m_db.assign(db);
|
||||||
|
m_qrInfo.queue_time = gpGlobals->time;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MysqlThread::SetQuery(const char *query)
|
void MysqlThread::SetQuery(const char *query)
|
||||||
@ -146,8 +147,12 @@ void MysqlThread::RunThread(IThreadHandle *pHandle)
|
|||||||
info.host = "";
|
info.host = "";
|
||||||
info.port = 0;
|
info.port = 0;
|
||||||
|
|
||||||
|
float save_time = m_qrInfo.queue_time;
|
||||||
|
|
||||||
memset(&m_qrInfo, 0, sizeof(m_qrInfo));
|
memset(&m_qrInfo, 0, sizeof(m_qrInfo));
|
||||||
|
|
||||||
|
m_qrInfo.queue_time = save_time;
|
||||||
|
|
||||||
IDatabase *pDatabase = g_Sqlite.Connect(&info, &m_qrInfo.amxinfo.info.errorcode, m_qrInfo.amxinfo.error, 254);
|
IDatabase *pDatabase = g_Sqlite.Connect(&info, &m_qrInfo.amxinfo.info.errorcode, m_qrInfo.amxinfo.error, 254);
|
||||||
IQuery *pQuery = NULL;
|
IQuery *pQuery = NULL;
|
||||||
if (!pDatabase)
|
if (!pDatabase)
|
||||||
@ -168,15 +173,17 @@ void MysqlThread::RunThread(IThreadHandle *pHandle)
|
|||||||
if (m_qrInfo.query_success && m_qrInfo.amxinfo.info.rs)
|
if (m_qrInfo.query_success && m_qrInfo.amxinfo.info.rs)
|
||||||
{
|
{
|
||||||
m_atomicResult.CopyFrom(m_qrInfo.amxinfo.info.rs);
|
m_atomicResult.CopyFrom(m_qrInfo.amxinfo.info.rs);
|
||||||
m_qrInfo.amxinfo.pQuery = NULL;
|
|
||||||
m_qrInfo.amxinfo.info.rs = &m_atomicResult;
|
m_qrInfo.amxinfo.info.rs = &m_atomicResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pQuery)
|
if (pQuery)
|
||||||
{
|
{
|
||||||
pQuery->FreeHandle();
|
m_qrInfo.amxinfo.pQuery = pQuery;
|
||||||
pQuery = NULL;
|
} else {
|
||||||
|
m_qrInfo.amxinfo.opt_ptr = new char[m_query.size() + 1];
|
||||||
|
strcpy(m_qrInfo.amxinfo.opt_ptr, m_query.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pDatabase)
|
if (pDatabase)
|
||||||
{
|
{
|
||||||
pDatabase->FreeHandle();
|
pDatabase->FreeHandle();
|
||||||
@ -226,26 +233,37 @@ void MysqlThread::Execute()
|
|||||||
} else if (!m_qrInfo.query_success) {
|
} else if (!m_qrInfo.query_success) {
|
||||||
state = -1;
|
state = -1;
|
||||||
}
|
}
|
||||||
|
float diff = gpGlobals->time - m_qrInfo.queue_time;
|
||||||
|
cell c_diff = amx_ftoc(diff);
|
||||||
|
unsigned int hndl = MakeHandle(&m_qrInfo.amxinfo, Handle_Query, NullFunc);
|
||||||
if (state != 0)
|
if (state != 0)
|
||||||
{
|
{
|
||||||
MF_ExecuteForward(m_fwd,
|
MF_ExecuteForward(m_fwd,
|
||||||
(cell)state,
|
(cell)state,
|
||||||
(cell)0,
|
(cell)hndl,
|
||||||
m_qrInfo.amxinfo.error,
|
m_qrInfo.amxinfo.error,
|
||||||
m_qrInfo.amxinfo.info.errorcode,
|
m_qrInfo.amxinfo.info.errorcode,
|
||||||
data_addr,
|
data_addr,
|
||||||
m_datalen);
|
m_datalen,
|
||||||
|
c_diff);
|
||||||
} else {
|
} else {
|
||||||
unsigned int hndl = MakeHandle(&m_qrInfo.amxinfo, Handle_Query, NullFunc);
|
|
||||||
MF_ExecuteForward(m_fwd,
|
MF_ExecuteForward(m_fwd,
|
||||||
(cell)0,
|
(cell)0,
|
||||||
(cell)hndl,
|
(cell)hndl,
|
||||||
"",
|
"",
|
||||||
(cell)0,
|
(cell)0,
|
||||||
data_addr,
|
data_addr,
|
||||||
m_datalen);
|
m_datalen,
|
||||||
FreeHandle(hndl);
|
c_diff);
|
||||||
}
|
}
|
||||||
|
FreeHandle(hndl);
|
||||||
|
if (m_qrInfo.amxinfo.pQuery)
|
||||||
|
{
|
||||||
|
m_qrInfo.amxinfo.pQuery->FreeHandle();
|
||||||
|
m_qrInfo.amxinfo.pQuery = NULL;
|
||||||
|
}
|
||||||
|
delete [] m_qrInfo.amxinfo.opt_ptr;
|
||||||
|
m_qrInfo.amxinfo.opt_ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************
|
/*****************
|
||||||
|
@ -12,6 +12,7 @@ struct QueuedResultInfo
|
|||||||
AmxQueryInfo amxinfo;
|
AmxQueryInfo amxinfo;
|
||||||
bool connect_success;
|
bool connect_success;
|
||||||
bool query_success;
|
bool query_success;
|
||||||
|
float queue_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AtomicResult :
|
class AtomicResult :
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
-M
|
-M
|
||||||
-$M16384,1048576
|
-$M16384,1048576
|
||||||
-K$00400000
|
-K$00400000
|
||||||
-LE"c:\programme\borland\delphi7\Projects\Bpl"
|
-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl"
|
||||||
-LN"c:\programme\borland\delphi7\Projects\Bpl"
|
-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl"
|
||||||
-DmadExcept
|
-DmadExcept
|
||||||
-w-UNSAFE_TYPE
|
-w-UNSAFE_TYPE
|
||||||
-w-UNSAFE_CODE
|
-w-UNSAFE_CODE
|
||||||
|
@ -115,7 +115,7 @@ AutoIncBuild=1
|
|||||||
MajorVer=1
|
MajorVer=1
|
||||||
MinorVer=4
|
MinorVer=4
|
||||||
Release=3
|
Release=3
|
||||||
Build=0
|
Build=3
|
||||||
Debug=0
|
Debug=0
|
||||||
PreRelease=0
|
PreRelease=0
|
||||||
Special=0
|
Special=0
|
||||||
@ -126,11 +126,11 @@ CodePage=1252
|
|||||||
[Version Info Keys]
|
[Version Info Keys]
|
||||||
CompanyName=AMX Mod X Dev Team
|
CompanyName=AMX Mod X Dev Team
|
||||||
FileDescription=
|
FileDescription=
|
||||||
FileVersion=1.4.3.0
|
FileVersion=1.4.3.3
|
||||||
InternalName=
|
InternalName=
|
||||||
LegalCopyright=AMX Mod X Dev Team
|
LegalCopyright=AMX Mod X Dev Team
|
||||||
LegalTrademarks=
|
LegalTrademarks=
|
||||||
OriginalFilename=
|
OriginalFilename=
|
||||||
ProductName=AMXX-Studio
|
ProductName=AMXX-Studio
|
||||||
ProductVersion=1.4.3.0
|
ProductVersion=1.4.3 final
|
||||||
Comments=
|
Comments=
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -800,6 +800,8 @@ begin
|
|||||||
eCurrLine := Between(eCurrLine, '(', ')', True);
|
eCurrLine := Between(eCurrLine, '(', ')', True);
|
||||||
HideBracesAndStrings(eCurrLine, True);
|
HideBracesAndStrings(eCurrLine, True);
|
||||||
eStr2.Text := StringReplace(eCurrLine, ',', #13, [rfReplaceAll]);
|
eStr2.Text := StringReplace(eCurrLine, ',', #13, [rfReplaceAll]);
|
||||||
|
if (Trim(eStr2.Text) = ')') then
|
||||||
|
eStr2.Clear;
|
||||||
|
|
||||||
CreateCategory('Function Call');
|
CreateCategory('Function Call');
|
||||||
AddField('Function', 'Function Call', eVarName);
|
AddField('Function', 'Function Call', eVarName);
|
||||||
|
@ -176,7 +176,7 @@ begin
|
|||||||
eTempIndent := eTempIndent +1;
|
eTempIndent := eTempIndent +1;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
else if (eStr[i] = 'else') or (Pos('else if', eStr[i]) = 1) and (Pos('{', eStr[i]) = 0) then
|
else if (eStr[i] = 'else') or ((Pos('else if', eStr[i]) = 1) or (Pos('case', eStr[i]) = 1) or (Pos('switch', eStr[i]) = 1)) and (Pos('{', eStr[i]) = 0) then
|
||||||
eTempIndent := eTempIndent +1
|
eTempIndent := eTempIndent +1
|
||||||
else if (Pos('{', eStr[i]) = 0) and (Length(eStr[i]) > 6) then begin
|
else if (Pos('{', eStr[i]) = 0) and (Length(eStr[i]) > 6) then begin
|
||||||
if (IsAtStart('stock', eStr[i], False)) or (IsAtStart('while', eStr[i], True)) then begin
|
if (IsAtStart('stock', eStr[i], False)) or (IsAtStart('while', eStr[i], True)) then begin
|
||||||
|
@ -26,6 +26,8 @@ type TPAWNCompileThread = class(TThread)
|
|||||||
|
|
||||||
function DoCompilePAWN(eFlags: Integer): Boolean;
|
function DoCompilePAWN(eFlags: Integer): Boolean;
|
||||||
|
|
||||||
|
var Compiling: Boolean;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses UnitfrmSettings, UnitLanguages, UnitMainTools, UnitfrmMain,
|
uses UnitfrmSettings, UnitLanguages, UnitMainTools, UnitfrmMain,
|
||||||
@ -35,12 +37,14 @@ function DoCompilePAWN(eFlags: Integer): Boolean;
|
|||||||
var eFile: string;
|
var eFile: string;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
|
if (Compiling) then exit;
|
||||||
if not FileExists(frmSettings.txtPAWNCompilerPath.Text) then begin
|
if not FileExists(frmSettings.txtPAWNCompilerPath.Text) then begin
|
||||||
MessageBox(frmMain.Handle, PChar(lPAWNCompilerNotFound), PChar(Application.Title), MB_ICONERROR);
|
MessageBox(frmMain.Handle, PChar(lPAWNCompilerNotFound), PChar(Application.Title), MB_ICONERROR);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Screen.Cursor := crHourGlass;
|
Screen.Cursor := crHourGlass;
|
||||||
|
Compiling := True;
|
||||||
if (ActiveDoc.Untitled) then
|
if (ActiveDoc.Untitled) then
|
||||||
eFile := ExtractFilePath(ParamStr(0)) + 'Untitled.sma'
|
eFile := ExtractFilePath(ParamStr(0)) + 'Untitled.sma'
|
||||||
else
|
else
|
||||||
@ -226,6 +230,7 @@ begin
|
|||||||
CloseHandle(PipeErrorsWrite);
|
CloseHandle(PipeErrorsWrite);
|
||||||
end;
|
end;
|
||||||
Screen.Cursor := crDefault;
|
Screen.Cursor := crDefault;
|
||||||
|
Compiling := False;
|
||||||
Output.Free;
|
Output.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ function IEInstalled: Boolean;
|
|||||||
function GetAMXXDir(ListenServer: Boolean): String;
|
function GetAMXXDir(ListenServer: Boolean): String;
|
||||||
|
|
||||||
function CloseDocument(eDocument: TDocument; SaveActiveDoc, RemoveTab: Boolean): Boolean;
|
function CloseDocument(eDocument: TDocument; SaveActiveDoc, RemoveTab: Boolean): Boolean;
|
||||||
function AddExtension(eFilename, eHighlighter: String): String;
|
function AddExtension(eFilename, eHighlighter: String; Document: TDocument): String;
|
||||||
|
|
||||||
function ShowColorDialog(var Color: TColor; ePaintImage: TImage): Boolean;
|
function ShowColorDialog(var Color: TColor; ePaintImage: TImage): Boolean;
|
||||||
|
|
||||||
@ -468,11 +468,15 @@ begin
|
|||||||
Collection.Close(eDocument.Index, RemoveTab);
|
Collection.Close(eDocument.Index, RemoveTab);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function AddExtension(eFilename, eHighlighter: String): String;
|
function AddExtension(eFilename, eHighlighter: String; Document: TDocument): String;
|
||||||
begin
|
begin
|
||||||
if ExtractFileExt(eFilename) = '' then begin
|
if ExtractFileExt(eFilename) = '' then begin
|
||||||
if eHighlighter = 'Pawn' then
|
if eHighlighter = 'Pawn' then begin
|
||||||
Result := eFilename + '.sma';
|
if (ExtractFileExt(Document.Title) = '.inc') then
|
||||||
|
Result := eFilename + '.inc'
|
||||||
|
else
|
||||||
|
Result := eFilename + '.sma';
|
||||||
|
end;
|
||||||
if eHighlighter = 'C++' then
|
if eHighlighter = 'C++' then
|
||||||
Result := eFilename + '.cpp';
|
Result := eFilename + '.cpp';
|
||||||
if eHighlighter = 'HTML' then
|
if eHighlighter = 'HTML' then
|
||||||
@ -751,6 +755,8 @@ begin
|
|||||||
else
|
else
|
||||||
eCPUSpeed := 1; // otherwise the program would hang up
|
eCPUSpeed := 1; // otherwise the program would hang up
|
||||||
frmSettings.txtLangDir.Text := IncludeTrailingPathDelimiter(eConfig.ReadString('Misc', 'LangDir', ''));
|
frmSettings.txtLangDir.Text := IncludeTrailingPathDelimiter(eConfig.ReadString('Misc', 'LangDir', ''));
|
||||||
|
if (frmSettings.txtLangDir.Text = '\') then
|
||||||
|
frmSettings.txtLangDir.Text := '';
|
||||||
frmSettings.chkShowStatusbar.Checked := eConfig.ReadBool('Misc', 'ShowStatusbar', True);
|
frmSettings.chkShowStatusbar.Checked := eConfig.ReadBool('Misc', 'ShowStatusbar', True);
|
||||||
frmMain.sbStatus.Visible := frmSettings.chkShowStatusbar.Checked;
|
frmMain.sbStatus.Visible := frmSettings.chkShowStatusbar.Checked;
|
||||||
end;
|
end;
|
||||||
|
@ -63,6 +63,7 @@ var i, k: integer;
|
|||||||
eTempResult: TPawnParseResult;
|
eTempResult: TPawnParseResult;
|
||||||
eProcedureAdded: Boolean;
|
eProcedureAdded: Boolean;
|
||||||
eCActive: Boolean;
|
eCActive: Boolean;
|
||||||
|
eTempBool: Boolean;
|
||||||
begin
|
begin
|
||||||
Result := TPawnParseResult.Create;
|
Result := TPawnParseResult.Create;
|
||||||
if not IsRecursive then
|
if not IsRecursive then
|
||||||
@ -101,30 +102,39 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{ Constants and Variables }
|
{ Constants and Variables }
|
||||||
if (IsAtStart('new', eString, False)) or (IsAtStart('stock', eString, False)) then begin // const or variable
|
if (IsAtStart('new', eString, False)) or (IsAtStart('const', eString, False)) or (IsAtStart('stock', eString, False)) then begin // const or variable
|
||||||
if (eBracesOpen = 0) and (not IsRecursive) and (Pos('(', eString) = Pos(')', eString)) then begin
|
if (eBracesOpen = 0) and (not IsRecursive) and (Pos('(', eString) = Pos(')', eString)) then begin
|
||||||
Delete(eString, 1, Pos(#32, eString));
|
|
||||||
eString := Trim(eString);
|
|
||||||
// we don't need braces so delete them...
|
// we don't need braces so delete them...
|
||||||
while (CountChars(eString, '{') <> 0) and (CountChars(eString, '}') <> 0) and (Pos('{', eString) < Pos('}', eString)) do
|
while (CountChars(eString, '{') <> 0) and (CountChars(eString, '}') <> 0) and (Pos('{', eString) < Pos('}', eString)) do
|
||||||
eString := StringReplace(eString, '{' + Between(eString, '{', '}') + '}', '', [rfReplaceAll]);
|
eString := StringReplace(eString, '{' + Between(eString, '{', '}') + '}', '', [rfReplaceAll]);
|
||||||
while (CountChars(eString, '[') <> 0) and (CountChars(eString, ']') <> 0) and (Pos('[', eString) < Pos(']', eString)) do
|
while (CountChars(eString, '[') <> 0) and (CountChars(eString, ']') <> 0) and (Pos('[', eString) < Pos(']', eString)) do
|
||||||
eString := StringReplace(eString, '[' + Between(eString, '[', ']') + ']', '', [rfReplaceAll]);
|
eString := StringReplace(eString, '[' + Between(eString, '[', ']') + ']', '', [rfReplaceAll]);
|
||||||
// done? okay, split all items if there are more than one; and if not, it's okay...
|
// done? okay, split all items if there are more than one; and if not, it's okay...
|
||||||
eStr.Text := StringReplace(eString, ',', #13, [rfReplaceAll]);
|
eStr.Text := StringReplace(Copy(eString, Pos(#32, eString)+1, Length(eString)), ',', #13, [rfReplaceAll]);
|
||||||
for k := 0 to eStr.Count - 1 do begin
|
for k := 0 to eStr.Count - 1 do begin
|
||||||
if (Trim(eStr[k]) <> '') and (eStr[k] <> '}') then begin
|
if (Trim(eStr[k]) <> '') and (eStr[k] <> '}') then begin
|
||||||
eTemp := Trim(RemoveSemicolon(eStr[k]));
|
eTemp := Trim(RemoveSemicolon(eStr[k]));
|
||||||
|
|
||||||
if Pos(':', eTemp) <> 0 then
|
if (IsAtStart('const', eTemp, False)) then begin
|
||||||
|
Delete(eTemp, 1, 5);
|
||||||
|
eTemp := Trim(eTemp);
|
||||||
|
eTempBool := True;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
eTempBool := (IsAtStart('const', eString, False));
|
||||||
|
|
||||||
|
if (Pos(':', eTemp) <> 0) then
|
||||||
eTemp := Copy(eTemp, Pos(':', eTemp) + 1, Length(eTemp));
|
eTemp := Copy(eTemp, Pos(':', eTemp) + 1, Length(eTemp));
|
||||||
|
|
||||||
if Pos('=', eTemp) <> 0 then begin // constant
|
if (Pos('=', eTemp) <> 0) then begin // constant
|
||||||
Result.Constants.AddObject(Copy(eTemp, 1, Pos('=', eTemp) - 1), TObject(i));
|
Result.Constants.AddObject(Copy(eTemp, 1, Pos('=', eTemp) - 1), TObject(i));
|
||||||
Result.AutoComplete.Add(Copy(eTemp, 1, Pos('=', eTemp) - 1));
|
Result.AutoComplete.Add(Copy(eTemp, 1, Pos('=', eTemp) - 1));
|
||||||
end
|
end
|
||||||
else begin // variable
|
else begin // variable
|
||||||
Result.Variables.AddObject(eTemp, TObject(i));
|
if (eTempBool) then
|
||||||
|
Result.Constants.AddObject(eTemp, TObject(i))
|
||||||
|
else
|
||||||
|
Result.Variables.AddObject(eTemp, TObject(i));
|
||||||
Result.AutoComplete.Add(eTemp);
|
Result.AutoComplete.Add(eTemp);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -229,7 +239,7 @@ begin
|
|||||||
eStartLine := eStartLine - 1;
|
eStartLine := eStartLine - 1;
|
||||||
eTemp := Trim(RemoveSemicolon(Trim(eCode[eStartLine])));
|
eTemp := Trim(RemoveSemicolon(Trim(eCode[eStartLine])));
|
||||||
|
|
||||||
// Analyze type
|
// Analyze type
|
||||||
k := 0;
|
k := 0;
|
||||||
if IsAtStart('public', eTemp) then
|
if IsAtStart('public', eTemp) then
|
||||||
k := 1
|
k := 1
|
||||||
@ -243,7 +253,7 @@ begin
|
|||||||
k := 5;
|
k := 5;
|
||||||
|
|
||||||
|
|
||||||
// Remove type
|
// Remove type
|
||||||
if Pos('@', eTemp) = 1 then begin
|
if Pos('@', eTemp) = 1 then begin
|
||||||
eTemp := Copy(eTemp, 2, Length(eTemp));
|
eTemp := Copy(eTemp, 2, Length(eTemp));
|
||||||
k := 1;
|
k := 1;
|
||||||
@ -258,7 +268,7 @@ begin
|
|||||||
if eTemp[Length(eTemp)] = '{' then
|
if eTemp[Length(eTemp)] = '{' then
|
||||||
eTemp := Trim(Copy(eTemp, 1, Length(eTemp) - 1));
|
eTemp := Trim(Copy(eTemp, 1, Length(eTemp) - 1));
|
||||||
|
|
||||||
// Remove return-type
|
// Remove return-type
|
||||||
if (Pos(':', eTemp) <> 0) and (Pos(':', eTemp) < Pos('(', eTemp)) then
|
if (Pos(':', eTemp) <> 0) and (Pos(':', eTemp) < Pos('(', eTemp)) then
|
||||||
Delete(eTemp, 1, Pos(':', eTemp));
|
Delete(eTemp, 1, Pos(':', eTemp));
|
||||||
|
|
||||||
@ -275,7 +285,7 @@ begin
|
|||||||
4: Result.CallTips.Add(eTemp + '-> ' + FileName + ', forward');
|
4: Result.CallTips.Add(eTemp + '-> ' + FileName + ', forward');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
// Copy function-name
|
// Copy function-name
|
||||||
if Pos('(', eTemp) <> 0 then
|
if Pos('(', eTemp) <> 0 then
|
||||||
eTemp := Copy(eTemp, 1, Pos('(', eTemp) - 1);
|
eTemp := Copy(eTemp, 1, Pos('(', eTemp) - 1);
|
||||||
eTemp := Trim(eTemp);
|
eTemp := Trim(eTemp);
|
||||||
|
Binary file not shown.
@ -9,13 +9,14 @@ uses
|
|||||||
|
|
||||||
type
|
type
|
||||||
TfrmGoToLine = class(TForm)
|
TfrmGoToLine = class(TForm)
|
||||||
|
pnlBG: TSpTBXPanel;
|
||||||
lblCaption: TLabel;
|
lblCaption: TLabel;
|
||||||
txtGoToLine: TSpTBXEdit;
|
|
||||||
cmdOK: TSpTBXButton;
|
|
||||||
cmdCancel: TSpTBXButton;
|
cmdCancel: TSpTBXButton;
|
||||||
procedure txtGoToLineChange(Sender: TObject);
|
cmdOK: TSpTBXButton;
|
||||||
|
txtGoToLine: TSpTBXEdit;
|
||||||
procedure txtGoToLineKeyPress(Sender: TObject; var Key: Char);
|
procedure txtGoToLineKeyPress(Sender: TObject; var Key: Char);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
|
procedure txtGoToLineChange(Sender: TObject);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -27,14 +28,6 @@ uses UnitMainTools;
|
|||||||
|
|
||||||
{$R *.DFM}
|
{$R *.DFM}
|
||||||
|
|
||||||
procedure TfrmGoToLine.txtGoToLineChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if not IsNumeric(txtGoToLine.Text) then
|
|
||||||
txtGoToLine.Text := '1'
|
|
||||||
else if txtGoToLine.Text = '0' then
|
|
||||||
txtGoToLine.Text := '1';
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TfrmGoToLine.txtGoToLineKeyPress(Sender: TObject; var Key: Char);
|
procedure TfrmGoToLine.txtGoToLineKeyPress(Sender: TObject; var Key: Char);
|
||||||
begin
|
begin
|
||||||
if Key = #13 then begin
|
if Key = #13 then begin
|
||||||
@ -46,6 +39,12 @@ end;
|
|||||||
procedure TfrmGoToLine.FormShow(Sender: TObject);
|
procedure TfrmGoToLine.FormShow(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
txtGoToLine.SetFocus;
|
txtGoToLine.SetFocus;
|
||||||
|
txtGoToLine.SelectAll;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmGoToLine.txtGoToLineChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
cmdOK.Enabled := StrToIntDef(txtGoToLine.Text, -1) > 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -4,7 +4,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
SysUtils, Windows, Messages, Classes, Graphics, Controls,
|
SysUtils, Windows, Messages, Classes, Graphics, Controls,
|
||||||
StdCtrls, ExtCtrls, Forms, OleCtrls, SHDocVw_TLB, ActiveX;
|
StdCtrls, ExtCtrls, Forms, OleCtrls, SHDocVw, ActiveX;
|
||||||
|
|
||||||
type
|
type
|
||||||
TfrmHTMLPreview = class(TForm)
|
TfrmHTMLPreview = class(TForm)
|
||||||
|
@ -7375,8 +7375,8 @@ object frmHudMsgGenerator: TfrmHudMsgGenerator
|
|||||||
ColorHighLight = 8623776
|
ColorHighLight = 8623776
|
||||||
ColorShadow = 8623776
|
ColorShadow = 8623776
|
||||||
Caption = 'Generate'
|
Caption = 'Generate'
|
||||||
ModalResult = 1
|
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
|
ModalResult = 1
|
||||||
end
|
end
|
||||||
object cmdCancel: TFlatButton
|
object cmdCancel: TFlatButton
|
||||||
Left = 334
|
Left = 334
|
||||||
@ -7388,8 +7388,8 @@ object frmHudMsgGenerator: TfrmHudMsgGenerator
|
|||||||
ColorHighLight = 8623776
|
ColorHighLight = 8623776
|
||||||
ColorShadow = 8623776
|
ColorShadow = 8623776
|
||||||
Caption = 'Cancel'
|
Caption = 'Cancel'
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
|
ModalResult = 2
|
||||||
end
|
end
|
||||||
object pnlText: TPanel
|
object pnlText: TPanel
|
||||||
Left = 6
|
Left = 6
|
||||||
@ -7430,7 +7430,7 @@ object frmHudMsgGenerator: TfrmHudMsgGenerator
|
|||||||
ColorFlat = clWhite
|
ColorFlat = clWhite
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
Text = '12,0'
|
Text = '12,0'
|
||||||
OnChange = txtTimeToShowChange
|
OnExit = txtTimeToShowExit
|
||||||
OnKeyPress = txtTimeToShowKeyPress
|
OnKeyPress = txtTimeToShowKeyPress
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -47,10 +47,10 @@ type
|
|||||||
procedure cmdSelectColorClick(Sender: TObject);
|
procedure cmdSelectColorClick(Sender: TObject);
|
||||||
procedure txtTextChange(Sender: TObject);
|
procedure txtTextChange(Sender: TObject);
|
||||||
procedure txtTimeToShowKeyPress(Sender: TObject; var Key: Char);
|
procedure txtTimeToShowKeyPress(Sender: TObject; var Key: Char);
|
||||||
procedure txtTimeToShowChange(Sender: TObject);
|
|
||||||
procedure chkXCenterClick(Sender: TObject);
|
procedure chkXCenterClick(Sender: TObject);
|
||||||
procedure chkYCenterClick(Sender: TObject);
|
procedure chkYCenterClick(Sender: TObject);
|
||||||
procedure txtPosExit(Sender: TObject);
|
procedure txtPosExit(Sender: TObject);
|
||||||
|
procedure txtTimeToShowExit(Sender: TObject);
|
||||||
private
|
private
|
||||||
eDown: Boolean;
|
eDown: Boolean;
|
||||||
eStartPos: TPoint;
|
eStartPos: TPoint;
|
||||||
@ -89,7 +89,7 @@ begin
|
|||||||
lblHudMsg.Left := 0
|
lblHudMsg.Left := 0
|
||||||
else if lblHudMsg.Left > pnlHudmessage.Width then
|
else if lblHudMsg.Left > pnlHudmessage.Width then
|
||||||
lblHudMsg.Left := pnlHudmessage.Width;
|
lblHudMsg.Left := pnlHudmessage.Width;
|
||||||
txtXPos.Text := FloatToStr(RoundTo(lblHudMsg.Left / pnlHudmessage.Width, -2));
|
txtXPos.Text := FloatToStrF(lblHudMsg.Left / pnlHudmessage.Width, ffFixed, -2, 2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Y Pos }
|
{ Y Pos }
|
||||||
@ -99,7 +99,7 @@ begin
|
|||||||
lblHudMsg.Top := 0
|
lblHudMsg.Top := 0
|
||||||
else if lblHudMsg.Top > pnlHudmessage.Height then
|
else if lblHudMsg.Top > pnlHudmessage.Height then
|
||||||
lblHudMsg.Top := pnlHudmessage.Height;
|
lblHudMsg.Top := pnlHudmessage.Height;
|
||||||
txtYPos.Text := FloatToStr(RoundTo(lblHudMsg.Top / pnlHudmessage.Height, -2));
|
txtYPos.Text := FloatToStrF(lblHudMsg.Top / pnlHudmessage.Height, ffFixed, -2, 2);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -169,7 +169,7 @@ procedure TfrmHudMsgGenerator.txtTextKeyPress(Sender: TObject;
|
|||||||
var Key: Char);
|
var Key: Char);
|
||||||
begin
|
begin
|
||||||
if Key = #13 then begin
|
if Key = #13 then begin
|
||||||
txtText.SelText := '\n';
|
txtText.SelText := '^n';
|
||||||
Key := #0;
|
Key := #0;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -195,7 +195,7 @@ begin
|
|||||||
if txtText.Text = '' then
|
if txtText.Text = '' then
|
||||||
lblHudMsg.Caption := 'Custom Hudmessage'
|
lblHudMsg.Caption := 'Custom Hudmessage'
|
||||||
else
|
else
|
||||||
lblHudMsg.Caption := StringReplace(txtText.Text, '\n', #13, [rfReplaceAll]);
|
lblHudMsg.Caption := StringReplace(txtText.Text, '^n', #13, [rfReplaceAll]);
|
||||||
|
|
||||||
if chkXCenter.Checked then
|
if chkXCenter.Checked then
|
||||||
CenterX;
|
CenterX;
|
||||||
@ -210,20 +210,6 @@ begin
|
|||||||
Key := ',';
|
Key := ',';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmHudMsgGenerator.txtTimeToShowChange(Sender: TObject);
|
|
||||||
var eVal: Real;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
eVal := Round(StrToFloat(txtTimeToShow.Text));
|
|
||||||
if eVal < 0 then begin
|
|
||||||
eVal := 0.0;
|
|
||||||
txtTimeToShow.Text := FloatToStr(eVal);
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
txtTimeToShow.Text := '12,0';
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TfrmHudMsgGenerator.chkXCenterClick(Sender: TObject);
|
procedure TfrmHudMsgGenerator.chkXCenterClick(Sender: TObject);
|
||||||
var eChar: Char;
|
var eChar: Char;
|
||||||
begin
|
begin
|
||||||
@ -276,4 +262,16 @@ begin
|
|||||||
txtYPos.OnKeyPress(txtXPos, eChar);
|
txtYPos.OnKeyPress(txtXPos, eChar);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrmHudMsgGenerator.txtTimeToShowExit(Sender: TObject);
|
||||||
|
var eVal: Real;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
eVal := Round(StrToFloat(txtTimeToShow.Text));
|
||||||
|
if eVal < 0 then
|
||||||
|
txtTimeToShow.Text := '0,0';
|
||||||
|
except
|
||||||
|
txtTimeToShow.Text := '12,0';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
object frmMain: TfrmMain
|
object frmMain: TfrmMain
|
||||||
Left = 189
|
Left = 184
|
||||||
Top = 114
|
Top = 77
|
||||||
Width = 888
|
Width = 893
|
||||||
Height = 648
|
Height = 648
|
||||||
Caption = 'AMXX-Studio'
|
Caption = 'AMXX-Studio'
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
@ -45,13 +45,13 @@ object frmMain: TfrmMain
|
|||||||
PixelsPerInch = 96
|
PixelsPerInch = 96
|
||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
object splRight: TSplitter
|
object splRight: TSplitter
|
||||||
Left = 669
|
Left = 674
|
||||||
Top = 95
|
Top = 95
|
||||||
Height = 501
|
Height = 501
|
||||||
Align = alRight
|
Align = alRight
|
||||||
end
|
end
|
||||||
object spcRight1: TImage
|
object spcRight1: TImage
|
||||||
Left = 877
|
Left = 882
|
||||||
Top = 95
|
Top = 95
|
||||||
Width = 3
|
Width = 3
|
||||||
Height = 501
|
Height = 501
|
||||||
@ -67,7 +67,7 @@ object frmMain: TfrmMain
|
|||||||
object tbxTopDock: TSpTBXDock
|
object tbxTopDock: TSpTBXDock
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 880
|
Width = 885
|
||||||
Height = 72
|
Height = 72
|
||||||
object tbxMenu: TSpTBXToolbar
|
object tbxMenu: TSpTBXToolbar
|
||||||
Left = 0
|
Left = 0
|
||||||
@ -680,11 +680,11 @@ object frmMain: TfrmMain
|
|||||||
object sbStatus: TSpTBXStatusBar
|
object sbStatus: TSpTBXStatusBar
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 596
|
Top = 596
|
||||||
Width = 880
|
Width = 885
|
||||||
Height = 25
|
Height = 25
|
||||||
object mnuFilename: TSpTBXRightAlignSpacerItem
|
object mnuFilename: TSpTBXRightAlignSpacerItem
|
||||||
Caption = 'Untitled.sma'
|
Caption = 'Untitled.sma'
|
||||||
CustomWidth = 542
|
CustomWidth = 547
|
||||||
end
|
end
|
||||||
object sepStatus0: TSpTBXSeparatorItem
|
object sepStatus0: TSpTBXSeparatorItem
|
||||||
end
|
end
|
||||||
@ -728,19 +728,20 @@ object frmMain: TfrmMain
|
|||||||
object tbDocs: TJvTabBar
|
object tbDocs: TJvTabBar
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 72
|
Top = 72
|
||||||
Width = 880
|
Width = 885
|
||||||
RightClickSelect = False
|
RightClickSelect = False
|
||||||
|
Painter = mtpDocuments
|
||||||
Tabs = <
|
Tabs = <
|
||||||
item
|
item
|
||||||
Caption = '< 1 Untitled.sma >'
|
Caption = '< 1 Untitled.sma >'
|
||||||
|
Selected = True
|
||||||
end>
|
end>
|
||||||
Painter = mtpDocuments
|
|
||||||
OnTabClosing = tbDocsTabClosing
|
OnTabClosing = tbDocsTabClosing
|
||||||
OnTabSelected = tbDocsTabSelected
|
OnTabSelected = tbDocsTabSelected
|
||||||
OnMouseDown = tbDocsMouseDown
|
OnMouseDown = tbDocsMouseDown
|
||||||
end
|
end
|
||||||
object tcTools: TSpTBXTabControl
|
object tcTools: TSpTBXTabControl
|
||||||
Left = 672
|
Left = 677
|
||||||
Top = 95
|
Top = 95
|
||||||
Width = 205
|
Width = 205
|
||||||
Height = 501
|
Height = 501
|
||||||
@ -937,6 +938,7 @@ object frmMain: TfrmMain
|
|||||||
Top = 26
|
Top = 26
|
||||||
Width = 191
|
Width = 191
|
||||||
Height = 199
|
Height = 199
|
||||||
|
Style = isItemPainter
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Divider = 110
|
Divider = 110
|
||||||
ItemHeight = 16
|
ItemHeight = 16
|
||||||
@ -950,7 +952,7 @@ object frmMain: TfrmMain
|
|||||||
object pnlParent: TPanel
|
object pnlParent: TPanel
|
||||||
Left = 3
|
Left = 3
|
||||||
Top = 95
|
Top = 95
|
||||||
Width = 666
|
Width = 671
|
||||||
Height = 501
|
Height = 501
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
@ -958,7 +960,7 @@ object frmMain: TfrmMain
|
|||||||
object splOutput: TSplitter
|
object splOutput: TSplitter
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 416
|
Top = 416
|
||||||
Width = 666
|
Width = 671
|
||||||
Height = 3
|
Height = 3
|
||||||
Cursor = crVSplit
|
Cursor = crVSplit
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
@ -967,7 +969,7 @@ object frmMain: TfrmMain
|
|||||||
object sciEditor: TScintilla
|
object sciEditor: TScintilla
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 666
|
Width = 671
|
||||||
Height = 416
|
Height = 416
|
||||||
Color = clWhite
|
Color = clWhite
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
@ -4493,7 +4495,7 @@ object frmMain: TfrmMain
|
|||||||
object lstOutput: TListBox
|
object lstOutput: TListBox
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 419
|
Top = 419
|
||||||
Width = 666
|
Width = 671
|
||||||
Height = 82
|
Height = 82
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
ItemHeight = 13
|
ItemHeight = 13
|
||||||
@ -4544,7 +4546,6 @@ object frmMain: TfrmMain
|
|||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
OnClick = cmdCancelClick
|
OnClick = cmdCancelClick
|
||||||
CaptionGlowColor = clBtnFace
|
CaptionGlowColor = clBtnFace
|
||||||
DropDownArrow = True
|
|
||||||
LinkFont.Charset = DEFAULT_CHARSET
|
LinkFont.Charset = DEFAULT_CHARSET
|
||||||
LinkFont.Color = clBlue
|
LinkFont.Color = clBlue
|
||||||
LinkFont.Height = -11
|
LinkFont.Height = -11
|
||||||
@ -6569,6 +6570,7 @@ object frmMain: TfrmMain
|
|||||||
end
|
end
|
||||||
object IdFTP: TIdFTP
|
object IdFTP: TIdFTP
|
||||||
MaxLineAction = maSplit
|
MaxLineAction = maSplit
|
||||||
|
ReadTimeout = 0
|
||||||
ProxySettings.ProxyType = fpcmNone
|
ProxySettings.ProxyType = fpcmNone
|
||||||
ProxySettings.Port = 0
|
ProxySettings.Port = 0
|
||||||
Left = 722
|
Left = 722
|
||||||
@ -7826,7 +7828,32 @@ object frmMain: TfrmMain
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object JvInspectorDotNETPainter: TJvInspectorDotNETPainter
|
object JvInspectorDotNETPainter: TJvInspectorDotNETPainter
|
||||||
|
CategoryFont.Charset = DEFAULT_CHARSET
|
||||||
|
CategoryFont.Color = clBtnText
|
||||||
|
CategoryFont.Height = -11
|
||||||
|
CategoryFont.Name = 'MS Sans Serif'
|
||||||
|
CategoryFont.Style = []
|
||||||
|
NameFont.Charset = DEFAULT_CHARSET
|
||||||
|
NameFont.Color = clWindowText
|
||||||
|
NameFont.Height = -11
|
||||||
|
NameFont.Name = 'MS Sans Serif'
|
||||||
|
NameFont.Style = []
|
||||||
|
ValueFont.Charset = DEFAULT_CHARSET
|
||||||
|
ValueFont.Color = clWindowText
|
||||||
|
ValueFont.Height = -11
|
||||||
|
ValueFont.Name = 'MS Sans Serif'
|
||||||
|
ValueFont.Style = []
|
||||||
DrawNameEndEllipsis = True
|
DrawNameEndEllipsis = True
|
||||||
|
HideSelectFont.Charset = DEFAULT_CHARSET
|
||||||
|
HideSelectFont.Color = clHighlightText
|
||||||
|
HideSelectFont.Height = -11
|
||||||
|
HideSelectFont.Name = 'MS Sans Serif'
|
||||||
|
HideSelectFont.Style = []
|
||||||
|
SelectedFont.Charset = DEFAULT_CHARSET
|
||||||
|
SelectedFont.Color = clHighlightText
|
||||||
|
SelectedFont.Height = -11
|
||||||
|
SelectedFont.Name = 'MS Sans Serif'
|
||||||
|
SelectedFont.Style = []
|
||||||
Left = 662
|
Left = 662
|
||||||
Top = 36
|
Top = 36
|
||||||
end
|
end
|
||||||
|
@ -21,7 +21,7 @@ uses
|
|||||||
JvInspector, JvExControls, JvPluginManager, JvgLanguageLoader,
|
JvInspector, JvExControls, JvPluginManager, JvgLanguageLoader,
|
||||||
JvWndProcHook, CommCtrl, JvPageList, JvPageListTreeView,
|
JvWndProcHook, CommCtrl, JvPageList, JvPageListTreeView,
|
||||||
SciSearchReplaceBase, SpTBXControls, JvTabBar, TB2ExtItems, SpTBXEditors,
|
SciSearchReplaceBase, SpTBXControls, JvTabBar, TB2ExtItems, SpTBXEditors,
|
||||||
TBXLists, SpTBXLists;
|
TBXLists, SpTBXLists, JvComponentBase;
|
||||||
|
|
||||||
type
|
type
|
||||||
TfrmMain = class(TForm)
|
TfrmMain = class(TForm)
|
||||||
@ -894,7 +894,7 @@ end;
|
|||||||
procedure TfrmMain.mnuSaveAsClick(Sender: TObject);
|
procedure TfrmMain.mnuSaveAsClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if sdSave.Execute then begin
|
if sdSave.Execute then begin
|
||||||
ActiveDoc.FileName := AddExtension(sdSave.FileName, ActiveDoc.Highlighter);
|
ActiveDoc.FileName := AddExtension(sdSave.FileName, ActiveDoc.Highlighter, ActiveDoc);
|
||||||
ActiveDoc.Save;
|
ActiveDoc.Save;
|
||||||
tbDocs.Tabs[ActiveDoc.Index].Caption := ActiveDoc.Title;
|
tbDocs.Tabs[ActiveDoc.Index].Caption := ActiveDoc.Title;
|
||||||
end;
|
end;
|
||||||
@ -1071,9 +1071,30 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.OnCodeSnippetClick(Sender: TObject);
|
procedure TfrmMain.OnCodeSnippetClick(Sender: TObject);
|
||||||
|
var Snippet, Indentation: String;
|
||||||
|
Line: Integer;
|
||||||
begin
|
begin
|
||||||
if Plugin_CodeSnippetClick(TSpTBXItem(Sender).Caption, GetCat, GetSnippet(GetCat, (Sender as TSpTBXItem).Caption)) then
|
if Plugin_CodeSnippetClick(TSpTBXItem(Sender).Caption, GetCat, GetSnippet(GetCat, (Sender as TSpTBXItem).Caption)) then begin
|
||||||
sciEditor.SelText := GetSnippet(GetCat, (Sender as TSpTBXItem).Caption);
|
Snippet := GetSnippet(GetCat, (Sender as TSpTBXItem).Caption);
|
||||||
|
if (Pos('!APPEND!' + #13, Snippet) = 1) then begin
|
||||||
|
Snippet := Copy(Snippet, Pos(#10, Snippet)+1, Length(Snippet));
|
||||||
|
Line := sciEditor.Lines.Add(Snippet);
|
||||||
|
end
|
||||||
|
else if (Pos('!INSERT!' + #13, Snippet) = 1) then begin
|
||||||
|
Indentation := sciEditor.Lines[sciEditor.GetCurrentLineNumber];
|
||||||
|
if (Trim(Indentation) <> '') then
|
||||||
|
Indentation := Copy(Indentation, 1, Pos(Copy(TrimLeft(Indentation), 1, 1), Indentation)-1);
|
||||||
|
Snippet := StringReplace(Snippet, #10, #10 + Indentation, [rfReplaceAll]);
|
||||||
|
Line := sciEditor.GetCurrentLineNumber;
|
||||||
|
sciEditor.Lines.Insert(Line, Copy(Snippet, Pos(#10, Snippet)+1, Length(Snippet)));
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
sciEditor.SelText := Snippet;
|
||||||
|
Line := sciEditor.GetCurrentLineNumber;
|
||||||
|
end;
|
||||||
|
|
||||||
|
sciEditor.GoToLine(Line);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.mnuCopyMessageClick(Sender: TObject);
|
procedure TfrmMain.mnuCopyMessageClick(Sender: TObject);
|
||||||
@ -1275,7 +1296,7 @@ begin
|
|||||||
b := Integer(frmAllFilesForm.lstFiles.Items.Objects[a]);
|
b := Integer(frmAllFilesForm.lstFiles.Items.Objects[a]);
|
||||||
if TDocument(Collection.Items[b]).Untitled then begin
|
if TDocument(Collection.Items[b]).Untitled then begin
|
||||||
if sdSave.Execute then begin
|
if sdSave.Execute then begin
|
||||||
TDocument(Collection.Items[b]).FileName := AddExtension(sdSave.FileName, TDocument(Collection.Items[b]).Highlighter);
|
TDocument(Collection.Items[b]).FileName := AddExtension(sdSave.FileName, TDocument(Collection.Items[b]).Highlighter, TDocument(Collection.Items[b]));
|
||||||
TDocument(Collection.Items[b]).Save;
|
TDocument(Collection.Items[b]).Save;
|
||||||
TJvTabBarItem(tbDocs.Tabs[b]).Caption := TDocument(Collection.Items[b]).Title;
|
TJvTabBarItem(tbDocs.Tabs[b]).Caption := TDocument(Collection.Items[b]).Title;
|
||||||
end
|
end
|
||||||
@ -1526,7 +1547,7 @@ begin
|
|||||||
else begin
|
else begin
|
||||||
frmMain.sdSave.FilterIndex := 1;
|
frmMain.sdSave.FilterIndex := 1;
|
||||||
if frmMain.sdSave.Execute then begin
|
if frmMain.sdSave.Execute then begin
|
||||||
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
|
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem);
|
||||||
eItem.Save;
|
eItem.Save;
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
@ -1550,7 +1571,7 @@ begin
|
|||||||
else begin
|
else begin
|
||||||
frmMain.sdSave.FilterIndex := 2;
|
frmMain.sdSave.FilterIndex := 2;
|
||||||
if frmMain.sdSave.Execute then begin
|
if frmMain.sdSave.Execute then begin
|
||||||
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
|
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem);
|
||||||
eItem.Save;
|
eItem.Save;
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
@ -1574,7 +1595,7 @@ begin
|
|||||||
else begin
|
else begin
|
||||||
frmMain.sdSave.FilterIndex := 0;
|
frmMain.sdSave.FilterIndex := 0;
|
||||||
if frmMain.sdSave.Execute then begin
|
if frmMain.sdSave.Execute then begin
|
||||||
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
|
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem);
|
||||||
eItem.Save;
|
eItem.Save;
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
@ -1685,6 +1706,7 @@ procedure TfrmMain.mnuHudmessageClick(Sender: TObject);
|
|||||||
function Dot(eIn: string): string;
|
function Dot(eIn: string): string;
|
||||||
begin
|
begin
|
||||||
Result := StringReplace(eIn, ',', '.', [rfReplaceAll]);
|
Result := StringReplace(eIn, ',', '.', [rfReplaceAll]);
|
||||||
|
Result := StringReplace(Result, '.00', '.0', [rfReplaceAll]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var eStr: string;
|
var eStr: string;
|
||||||
@ -2210,7 +2232,7 @@ begin
|
|||||||
sciEditor.Lines.Add(#9 + 'if (socket_change(sck' + frmConnGen.txtName.Text + ', 100)) {');
|
sciEditor.Lines.Add(#9 + 'if (socket_change(sck' + frmConnGen.txtName.Text + ', 100)) {');
|
||||||
sciEditor.Lines.Add(#9 + #9 + 'new buf[512], lines[30][100], count = 0');
|
sciEditor.Lines.Add(#9 + #9 + 'new buf[512], lines[30][100], count = 0');
|
||||||
sciEditor.Lines.Add(#9 + #9 + 'socket_recv(sck' + frmConnGen.txtName.Text + ', buf, 511)');
|
sciEditor.Lines.Add(#9 + #9 + 'socket_recv(sck' + frmConnGen.txtName.Text + ', buf, 511)');
|
||||||
sciEditor.Lines.Add(#9 + #9 + 'count = ExplodeString(lines, 50, 119, buf, 13)');
|
sciEditor.Lines.Add(#9 + #9 + 'count = ExplodeString(lines, 29, 99, buf, 13)');
|
||||||
sciEditor.Lines.Add(#9 + #9 + 'for(new i=0;i<count;i++) {');
|
sciEditor.Lines.Add(#9 + #9 + 'for(new i=0;i<count;i++) {');
|
||||||
sciEditor.Lines.Add(#9 + #9 + #9 + '/* Process items here */');
|
sciEditor.Lines.Add(#9 + #9 + #9 + '/* Process items here */');
|
||||||
sciEditor.Lines.Add(#9 + #9 + '}');
|
sciEditor.Lines.Add(#9 + #9 + '}');
|
||||||
|
@ -64,7 +64,7 @@ object frmSettings: TfrmSettings
|
|||||||
Top = 0
|
Top = 0
|
||||||
Width = 351
|
Width = 351
|
||||||
Height = 260
|
Height = 260
|
||||||
ActivePage = jspCTSettings
|
ActivePage = jspCodeSnippets
|
||||||
PropagateEnable = False
|
PropagateEnable = False
|
||||||
Align = alClient
|
Align = alClient
|
||||||
OnChange = jplSettingsChange
|
OnChange = jplSettingsChange
|
||||||
@ -760,6 +760,9 @@ object frmSettings: TfrmSettings
|
|||||||
ScrollBars = ssBoth
|
ScrollBars = ssBoth
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
WantTabs = True
|
WantTabs = True
|
||||||
|
OnChange = txtCodeSnippetChange
|
||||||
|
OnEnter = txtCodeSnippetEnter
|
||||||
|
OnExit = txtCodeSnippetExit
|
||||||
OnKeyUp = txtCodeSnippetKeyUp
|
OnKeyUp = txtCodeSnippetKeyUp
|
||||||
end
|
end
|
||||||
object cmdCSAdd: TFlatButton
|
object cmdCSAdd: TFlatButton
|
||||||
|
@ -277,6 +277,9 @@ type
|
|||||||
procedure lvParamsDblClick(Sender: TObject);
|
procedure lvParamsDblClick(Sender: TObject);
|
||||||
procedure cmdAddFunctionClick(Sender: TObject);
|
procedure cmdAddFunctionClick(Sender: TObject);
|
||||||
procedure lstFunctionsClick(Sender: TObject);
|
procedure lstFunctionsClick(Sender: TObject);
|
||||||
|
procedure txtCodeSnippetEnter(Sender: TObject);
|
||||||
|
procedure txtCodeSnippetExit(Sender: TObject);
|
||||||
|
procedure txtCodeSnippetChange(Sender: TObject);
|
||||||
public
|
public
|
||||||
Foreground, Background: TColor;
|
Foreground, Background: TColor;
|
||||||
CaretFore, CaretBack: TColor;
|
CaretFore, CaretBack: TColor;
|
||||||
@ -339,9 +342,14 @@ begin
|
|||||||
eReg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False);
|
eReg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False);
|
||||||
{ AMXX }
|
{ AMXX }
|
||||||
AMXXDir := eReg.ReadString('ProgramFilesDir') + '\AMX Mod X\';
|
AMXXDir := eReg.ReadString('ProgramFilesDir') + '\AMX Mod X\';
|
||||||
if not DirectoryExists(AMXXDir) then
|
if DirectoryExists(AMXXDir) then
|
||||||
|
AMXXDir := IncludeTrailingPathDelimiter(AMXXDir)
|
||||||
|
else
|
||||||
AMXXDir := '';
|
AMXXDir := '';
|
||||||
eReg.CloseKey;
|
eReg.CloseKey;
|
||||||
|
{ Language Files }
|
||||||
|
if (DirectoryExists(AMXXDir + 'files\base\data\lang')) then
|
||||||
|
txtLangDir.Text := AMXXDir + 'files\base\data\lang';
|
||||||
{ Steam }
|
{ Steam }
|
||||||
if eReg.KeyExists('SOFTWARE\Valve\Steam') then begin
|
if eReg.KeyExists('SOFTWARE\Valve\Steam') then begin
|
||||||
eReg.OpenKey('SOFTWARE\Valve\Steam', False);
|
eReg.OpenKey('SOFTWARE\Valve\Steam', False);
|
||||||
@ -421,7 +429,7 @@ begin
|
|||||||
eConfig.WriteString('Misc', 'DefaultPluginAuthor', GetUser);
|
eConfig.WriteString('Misc', 'DefaultPluginAuthor', GetUser);
|
||||||
eConfig.WriteInteger('Misc', 'SaveNotesTo', 0);
|
eConfig.WriteInteger('Misc', 'SaveNotesTo', 0);
|
||||||
eConfig.WriteInteger('Misc', 'CPUSpeed', 5);
|
eConfig.WriteInteger('Misc', 'CPUSpeed', 5);
|
||||||
eConfig.WriteString('Misc', 'LangDir', '');
|
eConfig.WriteString('Misc', 'LangDir', txtLangDir.Text);
|
||||||
eConfig.WriteInteger('Misc', 'ShowStatusbar', 1);
|
eConfig.WriteInteger('Misc', 'ShowStatusbar', 1);
|
||||||
eConfig.WriteInteger('Misc', 'WindowState', 0);
|
eConfig.WriteInteger('Misc', 'WindowState', 0);
|
||||||
end;
|
end;
|
||||||
@ -434,6 +442,8 @@ begin
|
|||||||
2: frmMain.WindowState := wsMinimized;
|
2: frmMain.WindowState := wsMinimized;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
txtCodeSnippetExit(Sender);
|
||||||
|
|
||||||
PaintForeground(clBlack);
|
PaintForeground(clBlack);
|
||||||
PaintBackground(clBlack);
|
PaintBackground(clBlack);
|
||||||
PaintCaretFore(clBlack);
|
PaintCaretFore(clBlack);
|
||||||
@ -778,6 +788,7 @@ begin
|
|||||||
lstCodeSnippets.ItemIndex := lstCodeSnippets.Items.Add(eStr);
|
lstCodeSnippets.ItemIndex := lstCodeSnippets.Items.Add(eStr);
|
||||||
AddSnippet(ftcCodeSnippets.Tabs[ftcCodeSnippets.ActiveTab], eStr, '');
|
AddSnippet(ftcCodeSnippets.Tabs[ftcCodeSnippets.ActiveTab], eStr, '');
|
||||||
txtCodeSnippet.Enabled := True;
|
txtCodeSnippet.Enabled := True;
|
||||||
|
lstCodeSnippets.SetFocus;
|
||||||
lstCodeSnippetsClick(Sender);
|
lstCodeSnippetsClick(Sender);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -805,7 +816,9 @@ procedure TfrmSettings.lstCodeSnippetsClick(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
cmdCSRemove.Enabled := lstCodeSnippets.ItemIndex <> -1;
|
cmdCSRemove.Enabled := lstCodeSnippets.ItemIndex <> -1;
|
||||||
if cmdCSRemove.Enabled then
|
if cmdCSRemove.Enabled then
|
||||||
txtCodeSnippet.Lines.Text := GetSnippet(ftcCodeSnippets.Tabs[ftcCodeSnippets.ActiveTab], lstCodeSnippets.Items[lstCodeSnippets.ItemIndex]);
|
txtCodeSnippet.Lines.Text := GetSnippet(ftcCodeSnippets.Tabs[ftcCodeSnippets.ActiveTab], lstCodeSnippets.Items[lstCodeSnippets.ItemIndex])
|
||||||
|
else
|
||||||
|
txtCodeSnippetExit(Sender);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmSettings.ftcCodeSnippetsTabChanged(Sender: TObject);
|
procedure TfrmSettings.ftcCodeSnippetsTabChanged(Sender: TObject);
|
||||||
@ -815,8 +828,8 @@ begin
|
|||||||
lstCodeSnippets.ItemIndex := 0
|
lstCodeSnippets.ItemIndex := 0
|
||||||
else
|
else
|
||||||
txtCodeSnippet.Clear;
|
txtCodeSnippet.Clear;
|
||||||
lstCodeSnippetsClick(Sender);
|
|
||||||
txtCodeSnippet.Enabled := lstCodeSnippets.Items.Count > 0;
|
txtCodeSnippet.Enabled := lstCodeSnippets.Items.Count > 0;
|
||||||
|
lstCodeSnippetsClick(Sender);
|
||||||
cmdCSRemove.Enabled := lstCodeSnippets.ItemIndex <> -1;
|
cmdCSRemove.Enabled := lstCodeSnippets.ItemIndex <> -1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1250,4 +1263,28 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrmSettings.txtCodeSnippetEnter(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if (txtCodeSnippet.Font.Color = $008396A0) and ((ActiveControl = txtCodeSnippet) or (txtCodeSnippet.Enabled)) then begin
|
||||||
|
txtCodeSnippet.Font.Color := clWindowText;
|
||||||
|
txtCodeSnippet.Text := '';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmSettings.txtCodeSnippetExit(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if (txtCodeSnippet.Text = '') then begin
|
||||||
|
txtCodeSnippet.Lines.Text := 'Use "!APPEND!" to append or'#13'"!INSERT!" to insert the code'#13'snippet into a new line on click...';
|
||||||
|
txtCodeSnippet.Font.Color := $008396A0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmSettings.txtCodeSnippetChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if (txtCodeSnippet.Font.Color = $008396A0) then
|
||||||
|
txtCodeSnippet.Font.Color := clWindowText
|
||||||
|
else if (txtCodeSnippet.Text = '') and (ActiveControl <> txtCodeSnippet) then
|
||||||
|
txtCodeSnippetExit(Sender);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -3,4 +3,4 @@ source = /home/users/dvander/amxx
|
|||||||
makeopts =
|
makeopts =
|
||||||
output = /home/users/dvander/done
|
output = /home/users/dvander/done
|
||||||
devenv = /usr/bin/make
|
devenv = /usr/bin/make
|
||||||
release = amxmodx-1.76
|
release = amxmodx-1.76c
|
||||||
|
@ -3,4 +3,4 @@ source = R:\amxmodx
|
|||||||
makeopts =
|
makeopts =
|
||||||
output = c:\real\done
|
output = c:\real\done
|
||||||
devenv = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.com
|
devenv = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.com
|
||||||
release = amxmodx-1.76
|
release = amxmodx-1.76d
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
; Licensed under the GNU General Public License
|
; Licensed under the GNU General Public License
|
||||||
; Originally written by -=HaXoMaTiC=-
|
; Originally written by -=HaXoMaTiC=-
|
||||||
!define PRODUCT_NAME "AMX Mod X Installer"
|
!define PRODUCT_NAME "AMX Mod X Installer"
|
||||||
!define PRODUCT_VERSION "1.76"
|
!define PRODUCT_VERSION "1.76d"
|
||||||
!define PRODUCT_PUBLISHER "AMX Mod X Dev Team"
|
!define PRODUCT_PUBLISHER "AMX Mod X Dev Team"
|
||||||
!define PRODUCT_WEB_SITE "http://www.amxmodx.org/"
|
!define PRODUCT_WEB_SITE "http://www.amxmodx.org/"
|
||||||
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Installer.exe"
|
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Installer.exe"
|
||||||
@ -103,350 +103,337 @@ Section "MainSection" SEC01
|
|||||||
File "installer\files\amxxstudio\plugins\Hello_World Delphi\HelloWorld.res"
|
File "installer\files\amxxstudio\plugins\Hello_World Delphi\HelloWorld.res"
|
||||||
File "installer\files\amxxstudio\plugins\Hello_World Delphi\studioapi.pas"
|
File "installer\files\amxxstudio\plugins\Hello_World Delphi\studioapi.pas"
|
||||||
SetOutPath "$INSTDIR\files\base\configs"
|
SetOutPath "$INSTDIR\files\base\configs"
|
||||||
File "installer\files\base\configs\amxx.cfg"
|
File "installer\files\base\addons\amxmodx\configs\amxx.cfg"
|
||||||
File "installer\files\base\configs\clcmds.ini"
|
File "installer\files\base\addons\amxmodx\configs\clcmds.ini"
|
||||||
File "installer\files\base\configs\cmds.ini"
|
File "installer\files\base\addons\amxmodx\configs\cmds.ini"
|
||||||
File "installer\files\base\configs\configs.ini"
|
File "installer\files\base\addons\amxmodx\configs\configs.ini"
|
||||||
File "installer\files\base\configs\conmotd.txt"
|
File "installer\files\base\addons\amxmodx\configs\conmotd.txt"
|
||||||
File "installer\files\base\configs\core.ini"
|
File "installer\files\base\addons\amxmodx\configs\core.ini"
|
||||||
File "installer\files\base\configs\custommenuitems.cfg"
|
File "installer\files\base\addons\amxmodx\configs\custommenuitems.cfg"
|
||||||
File "installer\files\base\configs\cvars.ini"
|
File "installer\files\base\addons\amxmodx\configs\cvars.ini"
|
||||||
File "installer\files\base\configs\maps.ini"
|
File "installer\files\base\addons\amxmodx\configs\maps.ini"
|
||||||
File "installer\files\base\configs\modules.ini"
|
File "installer\files\base\addons\amxmodx\configs\modules.ini"
|
||||||
File "installer\files\base\configs\plugins.ini"
|
File "installer\files\base\addons\amxmodx\configs\plugins.ini"
|
||||||
File "installer\files\base\configs\speech.ini"
|
File "installer\files\base\addons\amxmodx\configs\speech.ini"
|
||||||
File "installer\files\base\configs\sql.cfg"
|
File "installer\files\base\addons\amxmodx\configs\sql.cfg"
|
||||||
File "installer\files\base\configs\users.ini"
|
File "installer\files\base\addons\amxmodx\configs\users.ini"
|
||||||
SetOutPath "$INSTDIR\files\base\data"
|
SetOutPath "$INSTDIR\files\base\data"
|
||||||
File "installer\files\base\data\GeoIP.dat"
|
File "installer\files\base\addons\amxmodx\data\GeoIP.dat"
|
||||||
SetOutPath "$INSTDIR\files\base\data\lang"
|
SetOutPath "$INSTDIR\files\base\data\lang"
|
||||||
File "installer\files\base\data\lang\admin.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\admin.txt"
|
||||||
File "installer\files\base\data\lang\adminchat.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\adminchat.txt"
|
||||||
File "installer\files\base\data\lang\admincmd.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\admincmd.txt"
|
||||||
File "installer\files\base\data\lang\adminhelp.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\adminhelp.txt"
|
||||||
File "installer\files\base\data\lang\adminslots.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\adminslots.txt"
|
||||||
File "installer\files\base\data\lang\adminvote.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\adminvote.txt"
|
||||||
File "installer\files\base\data\lang\antiflood.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\antiflood.txt"
|
||||||
File "installer\files\base\data\lang\cmdmenu.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\cmdmenu.txt"
|
||||||
File "installer\files\base\data\lang\common.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\common.txt"
|
||||||
File "installer\files\base\data\lang\imessage.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\imessage.txt"
|
||||||
File "installer\files\base\data\lang\languages.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\languages.txt"
|
||||||
File "installer\files\base\data\lang\mapchooser.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\mapchooser.txt"
|
||||||
File "installer\files\base\data\lang\mapsmenu.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\mapsmenu.txt"
|
||||||
File "installer\files\base\data\lang\menufront.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\menufront.txt"
|
||||||
File "installer\files\base\data\lang\miscstats.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\miscstats.txt"
|
||||||
File "installer\files\base\data\lang\multilingual.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\multilingual.txt"
|
||||||
File "installer\files\base\data\lang\nextmap.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\nextmap.txt"
|
||||||
File "installer\files\base\data\lang\pausecfg.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\pausecfg.txt"
|
||||||
File "installer\files\base\data\lang\plmenu.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\plmenu.txt"
|
||||||
File "installer\files\base\data\lang\restmenu.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\restmenu.txt"
|
||||||
File "installer\files\base\data\lang\scrollmsg.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\scrollmsg.txt"
|
||||||
File "installer\files\base\data\lang\statscfg.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\statscfg.txt"
|
||||||
File "installer\files\base\data\lang\statsx.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\statsx.txt"
|
||||||
File "installer\files\base\data\lang\stats_dod.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\stats_dod.txt"
|
||||||
File "installer\files\base\data\lang\telemenu.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\telemenu.txt"
|
||||||
File "installer\files\base\data\lang\time.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\time.txt"
|
||||||
File "installer\files\base\data\lang\timeleft.txt"
|
File "installer\files\base\addons\amxmodx\data\lang\timeleft.txt"
|
||||||
SetOutPath "$INSTDIR\files\base\dlls"
|
SetOutPath "$INSTDIR\files\base\dlls"
|
||||||
File "installer\files\base\dlls\amxmodx_mm.dll"
|
File "installer\files\base\addons\amxmodx\dlls\amxmodx_mm.dll"
|
||||||
File "installer\files\base\dlls\amxmodx_mm_amd64.so"
|
File "installer\files\base\addons\amxmodx\dlls\amxmodx_mm_i386.so"
|
||||||
File "installer\files\base\dlls\amxmodx_mm_i386.so"
|
File "installer\files\base\addons\amxmodx\dlls\metamod.dll"
|
||||||
File "installer\files\base\dlls\metamod.dll"
|
File "installer\files\base\addons\amxmodx\dlls\metamod_i386.so"
|
||||||
File "installer\files\base\dlls\metamod_amd64.so"
|
|
||||||
File "installer\files\base\dlls\metamod_i386.so"
|
|
||||||
SetOutPath "$INSTDIR\files\base\modules"
|
SetOutPath "$INSTDIR\files\base\modules"
|
||||||
File "installer\files\base\modules\nvault_amxx.dll"
|
File "installer\files\base\addons\amxmodx\modules\nvault_amxx.dll"
|
||||||
File "installer\files\base\modules\nvault_amxx_amd64.so"
|
File "installer\files\base\addons\amxmodx\modules\nvault_amxx_i386.so"
|
||||||
File "installer\files\base\modules\nvault_amxx_i386.so"
|
File "installer\files\base\addons\amxmodx\modules\engine_amxx.dll"
|
||||||
File "installer\files\base\modules\engine_amxx.dll"
|
File "installer\files\base\addons\amxmodx\modules\engine_amxx_i386.so"
|
||||||
File "installer\files\base\modules\engine_amxx_amd64.so"
|
File "installer\files\base\addons\amxmodx\modules\fakemeta_amxx.dll"
|
||||||
File "installer\files\base\modules\engine_amxx_i386.so"
|
File "installer\files\base\addons\amxmodx\modules\fakemeta_amxx_i386.so"
|
||||||
File "installer\files\base\modules\fakemeta_amxx.dll"
|
File "installer\files\base\addons\amxmodx\modules\fun_amxx.dll"
|
||||||
File "installer\files\base\modules\fakemeta_amxx_amd64.so"
|
File "installer\files\base\addons\amxmodx\modules\fun_amxx_i386.so"
|
||||||
File "installer\files\base\modules\fakemeta_amxx_i386.so"
|
File "installer\files\base\addons\amxmodx\modules\geoip_amxx.dll"
|
||||||
File "installer\files\base\modules\fun_amxx.dll"
|
File "installer\files\base\addons\amxmodx\modules\geoip_amxx_i386.so"
|
||||||
File "installer\files\base\modules\fun_amxx_amd64.so"
|
File "installer\files\base\addons\amxmodx\modules\sqlite_amxx.dll"
|
||||||
File "installer\files\base\modules\fun_amxx_i386.so"
|
File "installer\files\base\addons\amxmodx\modules\sqlite_amxx_i386.so"
|
||||||
File "installer\files\base\modules\geoip_amxx.dll"
|
File "installer\files\base\addons\amxmodx\modules\mysql_amxx.dll"
|
||||||
File "installer\files\base\modules\geoip_amxx_amd64.so"
|
File "installer\files\base\addons\amxmodx\modules\mysql_amxx_i386.so"
|
||||||
File "installer\files\base\modules\geoip_amxx_i386.so"
|
File "installer\files\base\addons\amxmodx\modules\regex_amxx.dll"
|
||||||
File "installer\files\base\modules\sqlite_amxx.dll"
|
File "installer\files\base\addons\amxmodx\modules\regex_amxx_i386.so"
|
||||||
File "installer\files\base\modules\sqlite_amxx_amd64.so"
|
File "installer\files\base\addons\amxmodx\modules\sockets_amxx.dll"
|
||||||
File "installer\files\base\modules\sqlite_amxx_i386.so"
|
File "installer\files\base\addons\amxmodx\modules\sockets_amxx_i386.so"
|
||||||
File "installer\files\base\modules\mysql_amxx.dll"
|
|
||||||
File "installer\files\base\modules\mysql_amxx_amd64.so"
|
|
||||||
File "installer\files\base\modules\mysql_amxx_i386.so"
|
|
||||||
File "installer\files\base\modules\regex_amxx.dll"
|
|
||||||
File "installer\files\base\modules\regex_amxx_amd64.so"
|
|
||||||
File "installer\files\base\modules\regex_amxx_i386.so"
|
|
||||||
File "installer\files\base\modules\sockets_amxx.dll"
|
|
||||||
File "installer\files\base\modules\sockets_amxx_amd64.so"
|
|
||||||
File "installer\files\base\modules\sockets_amxx_i386.so"
|
|
||||||
SetOutPath "$INSTDIR\files\base\plugins"
|
SetOutPath "$INSTDIR\files\base\plugins"
|
||||||
File "installer\files\base\plugins\admin.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\admin.amxx"
|
||||||
File "installer\files\base\plugins\adminchat.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\adminchat.amxx"
|
||||||
File "installer\files\base\plugins\admincmd.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\admincmd.amxx"
|
||||||
File "installer\files\base\plugins\adminhelp.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\adminhelp.amxx"
|
||||||
File "installer\files\base\plugins\adminslots.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\adminslots.amxx"
|
||||||
File "installer\files\base\plugins\adminvote.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\adminvote.amxx"
|
||||||
File "installer\files\base\plugins\admin_sql.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\admin_sql.amxx"
|
||||||
File "installer\files\base\plugins\amxmod_compat.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\amxmod_compat.amxx"
|
||||||
File "installer\files\base\plugins\antiflood.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\antiflood.amxx"
|
||||||
File "installer\files\base\plugins\cmdmenu.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\cmdmenu.amxx"
|
||||||
File "installer\files\base\plugins\imessage.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\imessage.amxx"
|
||||||
File "installer\files\base\plugins\mapchooser.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\mapchooser.amxx"
|
||||||
File "installer\files\base\plugins\mapsmenu.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\mapsmenu.amxx"
|
||||||
File "installer\files\base\plugins\menufront.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\menufront.amxx"
|
||||||
File "installer\files\base\plugins\multilingual.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\multilingual.amxx"
|
||||||
File "installer\files\base\plugins\nextmap.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\nextmap.amxx"
|
||||||
File "installer\files\base\plugins\pausecfg.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\pausecfg.amxx"
|
||||||
File "installer\files\base\plugins\plmenu.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\plmenu.amxx"
|
||||||
File "installer\files\base\plugins\scrollmsg.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\scrollmsg.amxx"
|
||||||
File "installer\files\base\plugins\statscfg.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\statscfg.amxx"
|
||||||
File "installer\files\base\plugins\telemenu.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\telemenu.amxx"
|
||||||
File "installer\files\base\plugins\timeleft.amxx"
|
File "installer\files\base\addons\amxmodx\plugins\timeleft.amxx"
|
||||||
SetOutPath "$INSTDIR\files\base\scripting"
|
SetOutPath "$INSTDIR\files\base\scripting"
|
||||||
File "installer\files\base\scripting\admin.sma"
|
File "installer\files\base\addons\amxmodx\scripting\admin.sma"
|
||||||
File "installer\files\base\scripting\adminchat.sma"
|
File "installer\files\base\addons\amxmodx\scripting\adminchat.sma"
|
||||||
File "installer\files\base\scripting\admincmd.sma"
|
File "installer\files\base\addons\amxmodx\scripting\admincmd.sma"
|
||||||
File "installer\files\base\scripting\adminhelp.sma"
|
File "installer\files\base\addons\amxmodx\scripting\adminhelp.sma"
|
||||||
File "installer\files\base\scripting\adminslots.sma"
|
File "installer\files\base\addons\amxmodx\scripting\adminslots.sma"
|
||||||
File "installer\files\base\scripting\adminvote.sma"
|
File "installer\files\base\addons\amxmodx\scripting\adminvote.sma"
|
||||||
File "installer\files\base\scripting\amxxpc"
|
File "installer\files\base\addons\amxmodx\scripting\amxxpc"
|
||||||
File "installer\files\base\scripting\amxxpc.exe"
|
File "installer\files\base\addons\amxmodx\scripting\amxxpc.exe"
|
||||||
File "installer\files\base\scripting\amxxpc32.dll"
|
File "installer\files\base\addons\amxmodx\scripting\amxxpc32.dll"
|
||||||
File "installer\files\base\scripting\amxxpc32.so"
|
File "installer\files\base\addons\amxmodx\scripting\amxxpc32.so"
|
||||||
File "installer\files\base\scripting\amxxpc64.dll"
|
File "installer\files\base\addons\amxmodx\scripting\amxxpc64.dll"
|
||||||
File "installer\files\base\scripting\amxxpc64.so"
|
File "installer\files\base\addons\amxmodx\scripting\amxxpc64.so"
|
||||||
File "installer\files\base\scripting\antiflood.sma"
|
File "installer\files\base\addons\amxmodx\scripting\antiflood.sma"
|
||||||
File "installer\files\base\scripting\cmdmenu.sma"
|
File "installer\files\base\addons\amxmodx\scripting\cmdmenu.sma"
|
||||||
File "installer\files\base\scripting\compile.exe"
|
File "installer\files\base\addons\amxmodx\scripting\compile.exe"
|
||||||
File "installer\files\base\scripting\compile.sh"
|
File "installer\files\base\addons\amxmodx\scripting\compile.sh"
|
||||||
File "installer\files\base\scripting\dlsym"
|
File "installer\files\base\addons\amxmodx\scripting\dlsym"
|
||||||
File "installer\files\base\scripting\dlsym64"
|
File "installer\files\base\addons\amxmodx\scripting\dlsym64"
|
||||||
File "installer\files\base\scripting\imessage.sma"
|
File "installer\files\base\addons\amxmodx\scripting\imessage.sma"
|
||||||
SetOutPath "$INSTDIR\files\base\scripting\include"
|
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\include"
|
||||||
File "installer\files\base\scripting\include\amxconst.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxconst.inc"
|
||||||
File "installer\files\base\scripting\include\amxmisc.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmisc.inc"
|
||||||
File "installer\files\base\scripting\include\amxmodx.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmodx.inc"
|
||||||
File "installer\files\base\scripting\include\core.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\core.inc"
|
||||||
File "installer\files\base\scripting\include\csstats.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\csstats.inc"
|
||||||
File "installer\files\base\scripting\include\cstrike.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\cstrike.inc"
|
||||||
File "installer\files\base\scripting\include\csx.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\csx.inc"
|
||||||
File "installer\files\base\scripting\include\dbi.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\dbi.inc"
|
||||||
File "installer\files\base\scripting\include\dodconst.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\dodconst.inc"
|
||||||
File "installer\files\base\scripting\include\dodfun.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\dodfun.inc"
|
||||||
File "installer\files\base\scripting\include\dodstats.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\dodstats.inc"
|
||||||
File "installer\files\base\scripting\include\dodx.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\dodx.inc"
|
||||||
File "installer\files\base\scripting\include\engine.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\engine.inc"
|
||||||
File "installer\files\base\scripting\include\engine_const.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\engine_const.inc"
|
||||||
File "installer\files\base\scripting\include\engine_stocks.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\engine_stocks.inc"
|
||||||
File "installer\files\base\scripting\include\esf.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\esf.inc"
|
||||||
File "installer\files\base\scripting\include\esf_const.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\esf_const.inc"
|
||||||
File "installer\files\base\scripting\include\fakemeta.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\fakemeta.inc"
|
||||||
File "installer\files\base\scripting\include\fakemeta_const.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\fakemeta_const.inc"
|
||||||
File "installer\files\base\scripting\include\fakemeta_stocks.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\fakemeta_stocks.inc"
|
||||||
File "installer\files\base\scripting\include\file.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\file.inc"
|
||||||
File "installer\files\base\scripting\include\float.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\float.inc"
|
||||||
File "installer\files\base\scripting\include\fun.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\fun.inc"
|
||||||
File "installer\files\base\scripting\include\geoip.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\geoip.inc"
|
||||||
File "installer\files\base\scripting\include\hlsdk_const.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\hlsdk_const.inc"
|
||||||
File "installer\files\base\scripting\include\lang.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\lang.inc"
|
||||||
File "installer\files\base\scripting\include\messages.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\messages.inc"
|
||||||
File "installer\files\base\scripting\include\message_const.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\message_const.inc"
|
||||||
File "installer\files\base\scripting\include\message_stocks.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\message_stocks.inc"
|
||||||
File "installer\files\base\scripting\include\ns.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\ns.inc"
|
||||||
File "installer\files\base\scripting\include\ns2amx.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\ns2amx.inc"
|
||||||
File "installer\files\base\scripting\include\ns_const.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\ns_const.inc"
|
||||||
File "installer\files\base\scripting\include\regex.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\regex.inc"
|
||||||
File "installer\files\base\scripting\include\nvault.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\nvault.inc"
|
||||||
File "installer\files\base\scripting\include\sockets.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\sockets.inc"
|
||||||
File "installer\files\base\scripting\include\sorting.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\sorting.inc"
|
||||||
File "installer\files\base\scripting\include\sqlx.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\sqlx.inc"
|
||||||
File "installer\files\base\scripting\include\string.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\string.inc"
|
||||||
File "installer\files\base\scripting\include\tfcconst.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\tfcconst.inc"
|
||||||
File "installer\files\base\scripting\include\tfcstats.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\tfcstats.inc"
|
||||||
File "installer\files\base\scripting\include\tfcx.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\tfcx.inc"
|
||||||
File "installer\files\base\scripting\include\time.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\time.inc"
|
||||||
File "installer\files\base\scripting\include\tsconst.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\tsconst.inc"
|
||||||
File "installer\files\base\scripting\include\tsfun.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\tsfun.inc"
|
||||||
File "installer\files\base\scripting\include\tsstats.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\tsstats.inc"
|
||||||
File "installer\files\base\scripting\include\tsx.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\tsx.inc"
|
||||||
File "installer\files\base\scripting\include\vault.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\vault.inc"
|
||||||
File "installer\files\base\scripting\include\vector.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\vector.inc"
|
||||||
File "installer\files\base\scripting\include\xs.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\xs.inc"
|
||||||
SetOutPath "$INSTDIR\files\base\scripting\include\amxmod_compat"
|
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\amxmod.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\amxmod.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\maths.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\maths.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\mysql.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\mysql.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\translator.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\translator.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\Vexd_Utilities.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\Vexd_Utilities.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\VexdUM.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\VexdUM_const.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_const.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\VexdUM_stock.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_stock.inc"
|
||||||
File "installer\files\base\scripting\include\amxmod_compat\xtrafun.inc"
|
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\xtrafun.inc"
|
||||||
SetOutPath "$INSTDIR\files\base\scripting"
|
SetOutPath "$INSTDIR\files\base\scripting"
|
||||||
File "installer\files\base\scripting\mapchooser.sma"
|
File "installer\files\base\addons\amxmodx\scripting\mapchooser.sma"
|
||||||
File "installer\files\base\scripting\mapsmenu.sma"
|
File "installer\files\base\addons\amxmodx\scripting\mapsmenu.sma"
|
||||||
File "installer\files\base\scripting\menufront.sma"
|
File "installer\files\base\addons\amxmodx\scripting\menufront.sma"
|
||||||
File "installer\files\base\scripting\multilingual.sma"
|
File "installer\files\base\addons\amxmodx\scripting\multilingual.sma"
|
||||||
File "installer\files\base\scripting\nextmap.sma"
|
File "installer\files\base\addons\amxmodx\scripting\nextmap.sma"
|
||||||
File "installer\files\base\scripting\pausecfg.sma"
|
File "installer\files\base\addons\amxmodx\scripting\pausecfg.sma"
|
||||||
File "installer\files\base\scripting\plmenu.sma"
|
File "installer\files\base\addons\amxmodx\scripting\plmenu.sma"
|
||||||
File "installer\files\base\scripting\scrollmsg.sma"
|
File "installer\files\base\addons\amxmodx\scripting\scrollmsg.sma"
|
||||||
File "installer\files\base\scripting\statscfg.sma"
|
File "installer\files\base\addons\amxmodx\scripting\statscfg.sma"
|
||||||
File "installer\files\base\scripting\telemenu.sma"
|
File "installer\files\base\addons\amxmodx\scripting\telemenu.sma"
|
||||||
File "installer\files\base\scripting\timeleft.sma"
|
File "installer\files\base\addons\amxmodx\scripting\timeleft.sma"
|
||||||
SetOutPath "$INSTDIR\files\base\scripting\amxmod_compat"
|
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat"
|
||||||
File "installer\files\base\scripting\amxmod_compat\amxmod_compat.sma"
|
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\amxmod_compat.sma"
|
||||||
File "installer\files\base\scripting\amxmod_compat\core.sma"
|
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\core.sma"
|
||||||
File "installer\files\base\scripting\amxmod_compat\mysql.sma"
|
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\mysql.sma"
|
||||||
File "installer\files\base\scripting\amxmod_compat\vexdum.sma"
|
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\vexdum.sma"
|
||||||
SetOutPath "$INSTDIR\files\base\scripting\testsuite"
|
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite"
|
||||||
File "installer\files\base\scripting\testsuite\callfunc_test.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\callfunc_test.sma"
|
||||||
File "installer\files\base\scripting\testsuite\fakemeta_tests.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\fakemeta_tests.sma"
|
||||||
File "installer\files\base\scripting\testsuite\fmttest.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\fmttest.sma"
|
||||||
File "installer\files\base\scripting\testsuite\fwdtest1.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\fwdtest1.sma"
|
||||||
File "installer\files\base\scripting\testsuite\fwdtest2.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\fwdtest2.sma"
|
||||||
File "installer\files\base\scripting\testsuite\logtest.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\logtest.sma"
|
||||||
File "installer\files\base\scripting\testsuite\menutest.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\menutest.sma"
|
||||||
File "installer\files\base\scripting\testsuite\nvault_test.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\nvault_test.sma"
|
||||||
File "installer\files\base\scripting\testsuite\sorttest.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\sorttest.sma"
|
||||||
File "installer\files\base\scripting\testsuite\sqlxtest.sma"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sma"
|
||||||
File "installer\files\base\scripting\testsuite\sqlxtest.sq3"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sq3"
|
||||||
File "installer\files\base\scripting\testsuite\sqlxtest.sql"
|
File "installer\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sql"
|
||||||
SetOutPath "$INSTDIR\files\cstrike\configs"
|
SetOutPath "$INSTDIR\files\cstrike\configs"
|
||||||
File "installer\files\cstrike\configs\amxx.cfg"
|
File "installer\files\cstrike\addons\amxmodx\configs\amxx.cfg"
|
||||||
File "installer\files\cstrike\configs\cmds.ini"
|
File "installer\files\cstrike\addons\amxmodx\configs\cmds.ini"
|
||||||
File "installer\files\cstrike\configs\core.ini"
|
File "installer\files\cstrike\addons\amxmodx\configs\core.ini"
|
||||||
File "installer\files\cstrike\configs\cvars.ini"
|
File "installer\files\cstrike\addons\amxmodx\configs\cvars.ini"
|
||||||
File "installer\files\cstrike\configs\maps.ini"
|
File "installer\files\cstrike\addons\amxmodx\configs\maps.ini"
|
||||||
File "installer\files\cstrike\configs\modules.ini"
|
File "installer\files\cstrike\addons\amxmodx\configs\modules.ini"
|
||||||
File "installer\files\cstrike\configs\plugins.ini"
|
File "installer\files\cstrike\addons\amxmodx\configs\plugins.ini"
|
||||||
File "installer\files\cstrike\configs\stats.ini"
|
File "installer\files\cstrike\addons\amxmodx\configs\stats.ini"
|
||||||
SetOutPath "$INSTDIR\files\cstrike\data"
|
SetOutPath "$INSTDIR\files\cstrike\data"
|
||||||
File "installer\files\cstrike\data\csstats.amxx"
|
File "installer\files\cstrike\addons\amxmodx\data\csstats.amxx"
|
||||||
File "installer\files\cstrike\data\WinCSX.exe"
|
File "installer\files\cstrike\addons\amxmodx\data\WinCSX.exe"
|
||||||
SetOutPath "$INSTDIR\files\cstrike\modules"
|
SetOutPath "$INSTDIR\files\cstrike\modules"
|
||||||
File "installer\files\cstrike\modules\cstrike_amxx.dll"
|
File "installer\files\cstrike\addons\amxmodx\modules\cstrike_amxx.dll"
|
||||||
File "installer\files\cstrike\modules\cstrike_amxx_amd64.so"
|
File "installer\files\cstrike\addons\amxmodx\modules\cstrike_amxx_i386.so"
|
||||||
File "installer\files\cstrike\modules\cstrike_amxx_i386.so"
|
File "installer\files\cstrike\addons\amxmodx\modules\csx_amxx.dll"
|
||||||
File "installer\files\cstrike\modules\csx_amxx.dll"
|
File "installer\files\cstrike\addons\amxmodx\modules\csx_amxx_i386.so"
|
||||||
File "installer\files\cstrike\modules\csx_amxx_amd64.so"
|
|
||||||
File "installer\files\cstrike\modules\csx_amxx_i386.so"
|
|
||||||
SetOutPath "$INSTDIR\files\cstrike\plugins"
|
SetOutPath "$INSTDIR\files\cstrike\plugins"
|
||||||
File "installer\files\cstrike\plugins\miscstats.amxx"
|
File "installer\files\cstrike\addons\amxmodx\plugins\miscstats.amxx"
|
||||||
File "installer\files\cstrike\plugins\restmenu.amxx"
|
File "installer\files\cstrike\addons\amxmodx\plugins\restmenu.amxx"
|
||||||
File "installer\files\cstrike\plugins\statsx.amxx"
|
File "installer\files\cstrike\addons\amxmodx\plugins\statsx.amxx"
|
||||||
File "installer\files\cstrike\plugins\stats_logging.amxx"
|
File "installer\files\cstrike\addons\amxmodx\plugins\stats_logging.amxx"
|
||||||
SetOutPath "$INSTDIR\files\cstrike\scripting"
|
SetOutPath "$INSTDIR\files\cstrike\scripting"
|
||||||
File "installer\files\cstrike\scripting\csstats.sma"
|
File "installer\files\cstrike\addons\amxmodx\scripting\csstats.sma"
|
||||||
File "installer\files\cstrike\scripting\miscstats.sma"
|
File "installer\files\cstrike\addons\amxmodx\scripting\miscstats.sma"
|
||||||
File "installer\files\cstrike\scripting\restmenu.sma"
|
File "installer\files\cstrike\addons\amxmodx\scripting\restmenu.sma"
|
||||||
File "installer\files\cstrike\scripting\statsx.sma"
|
File "installer\files\cstrike\addons\amxmodx\scripting\statsx.sma"
|
||||||
File "installer\files\cstrike\scripting\stats_logging.sma"
|
File "installer\files\cstrike\addons\amxmodx\scripting\stats_logging.sma"
|
||||||
SetOutPath "$INSTDIR\files\dod\configs"
|
SetOutPath "$INSTDIR\files\dod\configs"
|
||||||
File "installer\files\dod\configs\core.ini"
|
File "installer\files\dod\addons\amxmodx\configs\core.ini"
|
||||||
File "installer\files\dod\configs\cvars.ini"
|
File "installer\files\dod\addons\amxmodx\configs\cvars.ini"
|
||||||
File "installer\files\dod\configs\maps.ini"
|
File "installer\files\dod\addons\amxmodx\configs\maps.ini"
|
||||||
File "installer\files\dod\configs\modules.ini"
|
File "installer\files\dod\addons\amxmodx\configs\modules.ini"
|
||||||
File "installer\files\dod\configs\plugins.ini"
|
File "installer\files\dod\addons\amxmodx\configs\plugins.ini"
|
||||||
SetOutPath "$INSTDIR\files\dod\data"
|
SetOutPath "$INSTDIR\files\dod\data"
|
||||||
File "installer\files\dod\data\dodstats.amxx"
|
File "installer\files\dod\addons\amxmodx\data\dodstats.amxx"
|
||||||
SetOutPath "$INSTDIR\files\dod\modules"
|
SetOutPath "$INSTDIR\files\dod\modules"
|
||||||
File "installer\files\dod\modules\dodfun_amxx.dll"
|
File "installer\files\dod\addons\amxmodx\modules\dodfun_amxx.dll"
|
||||||
File "installer\files\dod\modules\dodfun_amxx_i386.so"
|
File "installer\files\dod\addons\amxmodx\modules\dodfun_amxx_i386.so"
|
||||||
File "installer\files\dod\modules\dodx_amxx.dll"
|
File "installer\files\dod\addons\amxmodx\modules\dodx_amxx.dll"
|
||||||
File "installer\files\dod\modules\dodx_amxx_i386.so"
|
File "installer\files\dod\addons\amxmodx\modules\dodx_amxx_i386.so"
|
||||||
SetOutPath "$INSTDIR\files\dod\plugins"
|
SetOutPath "$INSTDIR\files\dod\plugins"
|
||||||
File "installer\files\dod\plugins\plmenu.amxx"
|
File "installer\files\dod\addons\amxmodx\plugins\plmenu.amxx"
|
||||||
File "installer\files\dod\plugins\stats.amxx"
|
File "installer\files\dod\addons\amxmodx\plugins\stats.amxx"
|
||||||
File "installer\files\dod\plugins\statssounds.amxx"
|
File "installer\files\dod\addons\amxmodx\plugins\statssounds.amxx"
|
||||||
File "installer\files\dod\plugins\stats_logging.amxx"
|
File "installer\files\dod\addons\amxmodx\plugins\stats_logging.amxx"
|
||||||
SetOutPath "$INSTDIR\files\dod\scripting"
|
SetOutPath "$INSTDIR\files\dod\scripting"
|
||||||
File "installer\files\dod\scripting\dodstats.sma"
|
File "installer\files\dod\addons\amxmodx\scripting\dodstats.sma"
|
||||||
File "installer\files\dod\scripting\plmenu.sma"
|
File "installer\files\dod\addons\amxmodx\scripting\plmenu.sma"
|
||||||
File "installer\files\dod\scripting\stats.sma"
|
File "installer\files\dod\addons\amxmodx\scripting\stats.sma"
|
||||||
File "installer\files\dod\scripting\statssounds.sma"
|
File "installer\files\dod\addons\amxmodx\scripting\statssounds.sma"
|
||||||
File "installer\files\dod\scripting\stats_logging.sma"
|
File "installer\files\dod\addons\amxmodx\scripting\stats_logging.sma"
|
||||||
SetOutPath "$INSTDIR\files\ns\configs"
|
SetOutPath "$INSTDIR\files\ns\configs"
|
||||||
File "installer\files\ns\configs\amxx.cfg"
|
File "installer\files\ns\addons\amxmodx\configs\amxx.cfg"
|
||||||
File "installer\files\ns\configs\clcmds.ini"
|
File "installer\files\ns\addons\amxmodx\configs\clcmds.ini"
|
||||||
File "installer\files\ns\configs\cmds.ini"
|
File "installer\files\ns\addons\amxmodx\configs\cmds.ini"
|
||||||
File "installer\files\ns\configs\cvars.ini"
|
File "installer\files\ns\addons\amxmodx\configs\cvars.ini"
|
||||||
File "installer\files\ns\configs\maps.ini"
|
File "installer\files\ns\addons\amxmodx\configs\maps.ini"
|
||||||
File "installer\files\ns\configs\modules.ini"
|
File "installer\files\ns\addons\amxmodx\configs\modules.ini"
|
||||||
File "installer\files\ns\configs\plugins.ini"
|
File "installer\files\ns\addons\amxmodx\configs\plugins.ini"
|
||||||
File "installer\files\ns\configs\speech.ini"
|
File "installer\files\ns\addons\amxmodx\configs\speech.ini"
|
||||||
File "installer\files\ns\configs\users.ini"
|
File "installer\files\ns\addons\amxmodx\configs\users.ini"
|
||||||
SetOutPath "$INSTDIR\files\ns\modules"
|
SetOutPath "$INSTDIR\files\ns\modules"
|
||||||
File "installer\files\ns\modules\ns_amxx.dll"
|
File "installer\files\ns\addons\amxmodx\modules\ns_amxx.dll"
|
||||||
File "installer\files\ns\modules\ns_amxx_i386.so"
|
File "installer\files\ns\addons\amxmodx\modules\ns_amxx_i386.so"
|
||||||
SetOutPath "$INSTDIR\files\ns\plugins"
|
SetOutPath "$INSTDIR\files\ns\plugins"
|
||||||
File "installer\files\ns\plugins\idlekicker.amxx"
|
File "installer\files\ns\addons\amxmodx\plugins\idlekicker.amxx"
|
||||||
File "installer\files\ns\plugins\mapchooser.amxx"
|
File "installer\files\ns\addons\amxmodx\plugins\mapchooser.amxx"
|
||||||
File "installer\files\ns\plugins\nextmap.amxx"
|
File "installer\files\ns\addons\amxmodx\plugins\nextmap.amxx"
|
||||||
File "installer\files\ns\plugins\nscommands.amxx"
|
File "installer\files\ns\addons\amxmodx\plugins\nscommands.amxx"
|
||||||
File "installer\files\ns\plugins\timeleft.amxx"
|
File "installer\files\ns\addons\amxmodx\plugins\timeleft.amxx"
|
||||||
File "installer\files\ns\plugins\unstuck.amxx"
|
File "installer\files\ns\addons\amxmodx\plugins\unstuck.amxx"
|
||||||
SetOutPath "$INSTDIR\files\ns\scripting"
|
SetOutPath "$INSTDIR\files\ns\scripting"
|
||||||
File "installer\files\ns\scripting\idlekicker.sma"
|
File "installer\files\ns\addons\amxmodx\scripting\idlekicker.sma"
|
||||||
File "installer\files\ns\scripting\mapchooser.sma"
|
File "installer\files\ns\addons\amxmodx\scripting\mapchooser.sma"
|
||||||
File "installer\files\ns\scripting\nextmap.sma"
|
File "installer\files\ns\addons\amxmodx\scripting\nextmap.sma"
|
||||||
File "installer\files\ns\scripting\nscommands.sma"
|
File "installer\files\ns\addons\amxmodx\scripting\nscommands.sma"
|
||||||
File "installer\files\ns\scripting\timeleft.sma"
|
File "installer\files\ns\addons\amxmodx\scripting\timeleft.sma"
|
||||||
File "installer\files\ns\scripting\unstuck.sma"
|
File "installer\files\ns\addons\amxmodx\scripting\unstuck.sma"
|
||||||
SetOutPath "$INSTDIR\files\esf\configs"
|
SetOutPath "$INSTDIR\files\esf\configs"
|
||||||
File "installer\files\esf\configs\modules.ini"
|
File "installer\files\esf\addons\amxmodx\configs\modules.ini"
|
||||||
File "installer\files\esf\configs\plugins.ini"
|
File "installer\files\esf\addons\amxmodx\configs\plugins.ini"
|
||||||
SetOutPath "$INSTDIR\files\esf\scripting"
|
SetOutPath "$INSTDIR\files\esf\scripting"
|
||||||
File "installer\files\esf\scripting\ESF_mod_tutorial.txt"
|
File "installer\files\esf\addons\amxmodx\scripting\ESF_mod_tutorial.txt"
|
||||||
File "installer\files\esf\scripting\EvolutionX.Core.sma"
|
File "installer\files\esf\addons\amxmodx\scripting\EvolutionX.Core.sma"
|
||||||
SetOutPath "$INSTDIR\files\esf\plugins"
|
SetOutPath "$INSTDIR\files\esf\plugins"
|
||||||
File "installer\files\esf\plugins\EvolutionX.Core.amxx"
|
File "installer\files\esf\addons\amxmodx\plugins\EvolutionX.Core.amxx"
|
||||||
SetOutPath "$INSTDIR\files\tfc\configs"
|
SetOutPath "$INSTDIR\files\tfc\configs"
|
||||||
File "installer\files\tfc\configs\core.ini"
|
File "installer\files\tfc\addons\amxmodx\configs\core.ini"
|
||||||
File "installer\files\tfc\configs\cvars.ini"
|
File "installer\files\tfc\addons\amxmodx\configs\cvars.ini"
|
||||||
File "installer\files\tfc\configs\maps.ini"
|
File "installer\files\tfc\addons\amxmodx\configs\maps.ini"
|
||||||
File "installer\files\tfc\configs\modules.ini"
|
File "installer\files\tfc\addons\amxmodx\configs\modules.ini"
|
||||||
File "installer\files\tfc\configs\plugins.ini"
|
File "installer\files\tfc\addons\amxmodx\configs\plugins.ini"
|
||||||
SetOutPath "$INSTDIR\files\tfc\data"
|
SetOutPath "$INSTDIR\files\tfc\data"
|
||||||
File "installer\files\tfc\data\tfcstats.amxx"
|
File "installer\files\tfc\addons\amxmodx\data\tfcstats.amxx"
|
||||||
SetOutPath "$INSTDIR\files\tfc\modules"
|
SetOutPath "$INSTDIR\files\tfc\modules"
|
||||||
File "installer\files\tfc\modules\tfcx_amxx.dll"
|
File "installer\files\tfc\addons\amxmodx\modules\tfcx_amxx.dll"
|
||||||
File "installer\files\tfc\modules\tfcx_amxx_i386.so"
|
File "installer\files\tfc\addons\amxmodx\modules\tfcx_amxx_i386.so"
|
||||||
SetOutPath "$INSTDIR\files\tfc\plugins"
|
SetOutPath "$INSTDIR\files\tfc\plugins"
|
||||||
File "installer\files\tfc\plugins\plmenu.amxx"
|
File "installer\files\tfc\addons\amxmodx\plugins\plmenu.amxx"
|
||||||
File "installer\files\tfc\plugins\stats.amxx"
|
File "installer\files\tfc\addons\amxmodx\plugins\stats.amxx"
|
||||||
File "installer\files\tfc\plugins\statssounds.amxx"
|
File "installer\files\tfc\addons\amxmodx\plugins\statssounds.amxx"
|
||||||
File "installer\files\tfc\plugins\stats_logging.amxx"
|
File "installer\files\tfc\addons\amxmodx\plugins\stats_logging.amxx"
|
||||||
SetOutPath "$INSTDIR\files\tfc\scripting"
|
SetOutPath "$INSTDIR\files\tfc\scripting"
|
||||||
File "installer\files\tfc\scripting\plmenu.sma"
|
File "installer\files\tfc\addons\amxmodx\scripting\plmenu.sma"
|
||||||
File "installer\files\tfc\scripting\stats.sma"
|
File "installer\files\tfc\addons\amxmodx\scripting\stats.sma"
|
||||||
File "installer\files\tfc\scripting\statssounds.sma"
|
File "installer\files\tfc\addons\amxmodx\scripting\statssounds.sma"
|
||||||
File "installer\files\tfc\scripting\stats_logging.sma"
|
File "installer\files\tfc\addons\amxmodx\scripting\stats_logging.sma"
|
||||||
File "installer\files\tfc\scripting\tfcstats.sma"
|
File "installer\files\tfc\addons\amxmodx\scripting\tfcstats.sma"
|
||||||
SetOutPath "$INSTDIR\files\ts\configs"
|
SetOutPath "$INSTDIR\files\ts\configs"
|
||||||
File "installer\files\ts\configs\core.ini"
|
File "installer\files\ts\addons\amxmodx\configs\core.ini"
|
||||||
File "installer\files\ts\configs\maps.ini"
|
File "installer\files\ts\addons\amxmodx\configs\maps.ini"
|
||||||
File "installer\files\ts\configs\modules.ini"
|
File "installer\files\ts\addons\amxmodx\configs\modules.ini"
|
||||||
File "installer\files\ts\configs\plugins.ini"
|
File "installer\files\ts\addons\amxmodx\configs\plugins.ini"
|
||||||
SetOutPath "$INSTDIR\files\ts\data"
|
SetOutPath "$INSTDIR\files\ts\data"
|
||||||
File "installer\files\ts\data\tsstats.amxx"
|
File "installer\files\ts\addons\amxmodx\data\tsstats.amxx"
|
||||||
SetOutPath "$INSTDIR\files\ts\modules"
|
SetOutPath "$INSTDIR\files\ts\modules"
|
||||||
File "installer\files\ts\modules\tsx_amxx.dll"
|
File "installer\files\ts\addons\amxmodx\modules\tsx_amxx.dll"
|
||||||
File "installer\files\ts\modules\tsx_amxx_i386.so"
|
File "installer\files\ts\addons\amxmodx\modules\tsx_amxx_i386.so"
|
||||||
File "installer\files\ts\modules\tsfun_amxx.dll"
|
File "installer\files\ts\addons\amxmodx\modules\tsfun_amxx.dll"
|
||||||
File "installer\files\ts\modules\tsfun_amxx_i386.so"
|
File "installer\files\ts\addons\amxmodx\modules\tsfun_amxx_i386.so"
|
||||||
SetOutPath "$INSTDIR\files\ts\plugins"
|
SetOutPath "$INSTDIR\files\ts\plugins"
|
||||||
File "installer\files\ts\plugins\stats.amxx"
|
File "installer\files\ts\addons\amxmodx\plugins\stats.amxx"
|
||||||
File "installer\files\ts\plugins\statssounds.amxx"
|
File "installer\files\ts\addons\amxmodx\plugins\statssounds.amxx"
|
||||||
File "installer\files\ts\plugins\stats_logging.amxx"
|
File "installer\files\ts\addons\amxmodx\plugins\stats_logging.amxx"
|
||||||
SetOutPath "$INSTDIR\files\ts\scripting"
|
SetOutPath "$INSTDIR\files\ts\scripting"
|
||||||
File "installer\files\ts\scripting\stats.sma"
|
File "installer\files\ts\addons\amxmodx\scripting\stats.sma"
|
||||||
File "installer\files\ts\scripting\statssounds.sma"
|
File "installer\files\ts\addons\amxmodx\scripting\statssounds.sma"
|
||||||
File "installer\files\ts\scripting\stats_logging.sma"
|
File "installer\files\ts\addons\amxmodx\scripting\stats_logging.sma"
|
||||||
File "installer\files\ts\scripting\tsstats.sma"
|
File "installer\files\ts\addons\amxmodx\scripting\tsstats.sma"
|
||||||
SetOutPath "$INSTDIR\"
|
SetOutPath "$INSTDIR\"
|
||||||
File "installer\gpl.txt"
|
File "installer\gpl.txt"
|
||||||
|
|
||||||
@ -585,10 +572,8 @@ Section Uninstall
|
|||||||
Delete "$INSTDIR\files\cstrike\plugins\restmenu.amxx"
|
Delete "$INSTDIR\files\cstrike\plugins\restmenu.amxx"
|
||||||
Delete "$INSTDIR\files\cstrike\plugins\miscstats.amxx"
|
Delete "$INSTDIR\files\cstrike\plugins\miscstats.amxx"
|
||||||
Delete "$INSTDIR\files\cstrike\modules\csx_amxx_i386.so"
|
Delete "$INSTDIR\files\cstrike\modules\csx_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\cstrike\modules\csx_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\cstrike\modules\csx_amxx.dll"
|
Delete "$INSTDIR\files\cstrike\modules\csx_amxx.dll"
|
||||||
Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx_i386.so"
|
Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx.dll"
|
Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx.dll"
|
||||||
Delete "$INSTDIR\files\cstrike\data\csstats.amxx"
|
Delete "$INSTDIR\files\cstrike\data\csstats.amxx"
|
||||||
Delete "$INSTDIR\files\cstrike\data\WinCSX.amxx"
|
Delete "$INSTDIR\files\cstrike\data\WinCSX.amxx"
|
||||||
@ -600,113 +585,113 @@ Section Uninstall
|
|||||||
Delete "$INSTDIR\files\cstrike\configs\core.ini"
|
Delete "$INSTDIR\files\cstrike\configs\core.ini"
|
||||||
Delete "$INSTDIR\files\cstrike\configs\cmds.ini"
|
Delete "$INSTDIR\files\cstrike\configs\cmds.ini"
|
||||||
Delete "$INSTDIR\files\cstrike\configs\amxx.cfg"
|
Delete "$INSTDIR\files\cstrike\configs\amxx.cfg"
|
||||||
Delete "$INSTDIR\files\base\scripting\timeleft.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\timeleft.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\telemenu.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\telemenu.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\statscfg.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\statscfg.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\scrollmsg.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\scrollmsg.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\plmenu.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\plmenu.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\pausecfg.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\pausecfg.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\nextmap.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\nextmap.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\multilingual.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\multilingual.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\menufront.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\menufront.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\mapsmenu.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\mapsmenu.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\mapchooser.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\mapchooser.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\amxmod.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\amxmod.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\maths.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\maths.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\mysql.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\mysql.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\translator.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\translator.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\Vexd_Utilities.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\Vexd_Utilities.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\VexdUM.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\VexdUM_const.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_const.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\VexdUM_stock.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_stock.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\xtrafun.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\xtrafun.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\xtrafun.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\xtrafun.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\xs.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\xs.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\Vexd_Utilities.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\Vexd_Utilities.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\vector.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\vector.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\vault.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\vault.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\tsx.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsx.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\tsfun.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsfun.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\tsstats.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsstats.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\tsconst.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsconst.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\tfcx.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tfcx.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\tfcstats.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tfcstats.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\tfcconst.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tfcconst.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\time.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\time.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\string.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\string.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\sqlx.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\sqlx.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\sorting.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\sorting.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\sockets.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\sockets.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\regex.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\regex.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\ns_const.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\ns_const.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\ns2amx.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\ns2amx.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\ns.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\ns.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\nvault.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\nvault.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\message_stocks.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\message_stocks.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\message_const.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\message_const.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\messages.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\messages.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\lang.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\lang.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\hlsdk_const.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\hlsdk_const.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\geoip.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\geoip.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\fun.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fun.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\float.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\float.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\file.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\file.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\fakemeta_stocks.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fakemeta_stocks.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\fakemeta_const.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fakemeta_const.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\fakemeta.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fakemeta.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\esf.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\esf.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\esf_const.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\esf_const.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\engine_stocks.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\engine_stocks.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\engine_const.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\engine_const.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\engine.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\engine.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\dodx.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodx.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\dodstats.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodstats.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\dodfun.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodfun.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\dodconst.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodconst.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\dbi.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dbi.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\csx.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\csx.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\cstrike.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\cstrike.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\csstats.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\csstats.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\core.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\core.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmodx.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmodx.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmod.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxmisc.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmisc.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\include\amxconst.inc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxconst.inc"
|
||||||
Delete "$INSTDIR\files\base\scripting\imessage.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\imessage.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\dlsym64"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\dlsym64"
|
||||||
Delete "$INSTDIR\files\base\scripting\dlsym"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\dlsym"
|
||||||
Delete "$INSTDIR\files\base\scripting\compile.sh"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\compile.sh"
|
||||||
Delete "$INSTDIR\files\base\scripting\compile.exe"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\compile.exe"
|
||||||
Delete "$INSTDIR\files\base\scripting\cmdmenu.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\cmdmenu.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\antiflood.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\antiflood.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxxpc64.so"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc64.so"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxxpc64.dll"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc64.dll"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxxpc32.so"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc32.so"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxxpc32.dll"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc32.dll"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxxpc.exe"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc.exe"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxxpc"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc"
|
||||||
Delete "$INSTDIR\files\base\scripting\adminvote.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminvote.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\adminslots.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminslots.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\adminhelp.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminhelp.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\admincmd.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\admincmd.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\adminchat.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminchat.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\admin.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\admin.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxmod_compat\amxmod_compat.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\amxmod_compat.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxmod_compat\core.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\core.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxmod_compat\mysql.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\mysql.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\amxmod_compat\vexdum.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\vexdum.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\callfunc_test.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\callfunc_test.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\fakemeta_tests.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fakemeta_tests.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\fmttest.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fmttest.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\fwdtest1.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fwdtest1.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\fwdtest2.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fwdtest2.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\logtest.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\logtest.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\menutest.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\menutest.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\nvault_test.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\nvault_test.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\sorttest.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sorttest.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\sqlxtest.sma"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sma"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\sqlxtest.sq3"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sq3"
|
||||||
Delete "$INSTDIR\files\base\scripting\testsuite\sqlxtest.sql"
|
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sql"
|
||||||
Delete "$INSTDIR\files\base\plugins\timeleft.amxx"
|
Delete "$INSTDIR\files\base\plugins\timeleft.amxx"
|
||||||
Delete "$INSTDIR\files\base\plugins\telemenu.amxx"
|
Delete "$INSTDIR\files\base\plugins\telemenu.amxx"
|
||||||
Delete "$INSTDIR\files\base\plugins\statscfg.amxx"
|
Delete "$INSTDIR\files\base\plugins\statscfg.amxx"
|
||||||
@ -729,37 +714,26 @@ Section Uninstall
|
|||||||
Delete "$INSTDIR\files\base\plugins\adminchat.amxx"
|
Delete "$INSTDIR\files\base\plugins\adminchat.amxx"
|
||||||
Delete "$INSTDIR\files\base\plugins\admin.amxx"
|
Delete "$INSTDIR\files\base\plugins\admin.amxx"
|
||||||
Delete "$INSTDIR\files\base\modules\nvault_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\nvault_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\nvault_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\nvault_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\nvault_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\sockets_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\sockets_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\sockets_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\sockets_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\sockets_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\regex_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\regex_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\regex_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\regex_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\regex_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\sqlite_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\sqlite_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\sqlite_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\sqlite_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\sqlite_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\mysql_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\mysql_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\mysql_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\mysql_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\mysql_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\geoip_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\geoip_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\geoip_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\geoip_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\geoip_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\fun_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\fun_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\fun_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\fun_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\fun_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\fakemeta_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\fakemeta_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\fakemeta_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\fakemeta_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\fakemeta_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\modules\engine_amxx_i386.so"
|
Delete "$INSTDIR\files\base\modules\engine_amxx_i386.so"
|
||||||
Delete "$INSTDIR\files\base\modules\engine_amxx_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\modules\engine_amxx.dll"
|
Delete "$INSTDIR\files\base\modules\engine_amxx.dll"
|
||||||
Delete "$INSTDIR\files\base\dlls\metamod_i386.so"
|
Delete "$INSTDIR\files\base\dlls\metamod_i386.so"
|
||||||
Delete "$INSTDIR\files\base\dlls\metamod_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\dlls\metamod.dll"
|
Delete "$INSTDIR\files\base\dlls\metamod.dll"
|
||||||
Delete "$INSTDIR\files\base\dlls\amxmodx_mm_i386.so"
|
Delete "$INSTDIR\files\base\dlls\amxmodx_mm_i386.so"
|
||||||
Delete "$INSTDIR\files\base\dlls\amxmodx_mm_amd64.so"
|
|
||||||
Delete "$INSTDIR\files\base\dlls\amxmodx_mm.dll"
|
Delete "$INSTDIR\files\base\dlls\amxmodx_mm.dll"
|
||||||
Delete "$INSTDIR\files\base\data\lang\timeleft.txt"
|
Delete "$INSTDIR\files\base\data\lang\timeleft.txt"
|
||||||
Delete "$INSTDIR\files\base\data\lang\time.txt"
|
Delete "$INSTDIR\files\base\data\lang\time.txt"
|
||||||
@ -841,7 +815,7 @@ Section Uninstall
|
|||||||
|
|
||||||
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
|
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
|
||||||
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
|
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
|
||||||
Delete "$DESKTOP\AMX Mod X Editor.lnk"
|
Delete "$DESKTOP\AMX Mod X Studio.lnk"
|
||||||
Delete "$SMPROGRAMS\$ICONS_GROUP\AMXX Studio.lnk"
|
Delete "$SMPROGRAMS\$ICONS_GROUP\AMXX Studio.lnk"
|
||||||
Delete "$SMPROGRAMS\$ICONS_GROUP\Documentation.lnk"
|
Delete "$SMPROGRAMS\$ICONS_GROUP\Documentation.lnk"
|
||||||
Delete "$SMPROGRAMS\$ICONS_GROUP\AMX Mod X.lnk"
|
Delete "$SMPROGRAMS\$ICONS_GROUP\AMX Mod X.lnk"
|
||||||
@ -874,9 +848,9 @@ Section Uninstall
|
|||||||
RMDir "$INSTDIR\files\cstrike\modules"
|
RMDir "$INSTDIR\files\cstrike\modules"
|
||||||
RMDir "$INSTDIR\files\cstrike\data"
|
RMDir "$INSTDIR\files\cstrike\data"
|
||||||
RMDir "$INSTDIR\files\cstrike\configs"
|
RMDir "$INSTDIR\files\cstrike\configs"
|
||||||
RMDir "$INSTDIR\files\base\scripting\include\amxmod_compat"
|
RMDir "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat"
|
||||||
RMDir "$INSTDIR\files\base\scripting\include"
|
RMDir "$INSTDIR\files\base\addons\amxmodx\scripting\include"
|
||||||
RMDir "$INSTDIR\files\base\scripting\amxmod_compat"
|
RMDir "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat"
|
||||||
RMDir "$INSTDIR\files\base\scripting"
|
RMDir "$INSTDIR\files\base\scripting"
|
||||||
RMDir "$INSTDIR\files\base\plugins"
|
RMDir "$INSTDIR\files\base\plugins"
|
||||||
RMDir "$INSTDIR\files\base\modules"
|
RMDir "$INSTDIR\files\base\modules"
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
-M
|
-M
|
||||||
-$M16384,1048576
|
-$M16384,1048576
|
||||||
-K$00400000
|
-K$00400000
|
||||||
-LE"c:\programme\borland\delphi7\Projects\Bpl"
|
-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl"
|
||||||
-LN"c:\programme\borland\delphi7\Projects\Bpl"
|
-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl"
|
||||||
-DmadExcept
|
-DmadExcept
|
||||||
-w-UNSAFE_TYPE
|
-w-UNSAFE_TYPE
|
||||||
-w-UNSAFE_CODE
|
-w-UNSAFE_CODE
|
||||||
|
@ -7,7 +7,7 @@ program AMXInstaller;
|
|||||||
|
|
||||||
- Indy 9 (www.indyproject.org)
|
- Indy 9 (www.indyproject.org)
|
||||||
- FlatStyle Components (www.torry.net)
|
- FlatStyle Components (www.torry.net)
|
||||||
- FlatPack Component Pack (www.torry.net)
|
- mxFlatPack Component Pack (www.maxcomponents.net/components.html)
|
||||||
- JVCL Lib Pack 3.0 (jvcl.sourceforge.net)
|
- JVCL Lib Pack 3.0 (jvcl.sourceforge.net)
|
||||||
|
|
||||||
AMXX Installer for AMX Mod X is developed under GNU Public License
|
AMXX Installer for AMX Mod X is developed under GNU Public License
|
||||||
|
Binary file not shown.
@ -3,14 +3,15 @@ unit UnitInstall;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses SysUtils, Classes, Windows, Graphics, Forms, ShellAPI, Controls, Messages,
|
uses SysUtils, Classes, Windows, Graphics, Forms, ShellAPI, Controls, Messages,
|
||||||
TlHelp32, IdFTPCommon, ComCtrls, JclFileUtils, Dialogs;
|
TlHelp32, IdFTPCommon, ComCtrls, Dialogs, JclFileUtils;
|
||||||
|
|
||||||
type TMod = (modNone, modCS, modDoD, modTFC, modNS, modTS, modESF);
|
type TMod = (modNone, modCS, modDoD, modTFC, modNS, modTS, modESF);
|
||||||
type TOS = (osWindows, osLinux32, osLinux64);
|
type TOS = (osWindows, osLinux32{, osLinux64});
|
||||||
|
|
||||||
procedure AddStatus(Text: String; Color: TColor; ShowTime: Boolean = True);
|
procedure AddStatus(Text: String; Color: TColor; ShowTime: Boolean = True);
|
||||||
procedure AddDone(Additional: String = '');
|
procedure AddDone(Additional: String = '');
|
||||||
procedure AddSkipped;
|
procedure AddSkipped;
|
||||||
|
procedure AddFailed;
|
||||||
procedure AddNotFound;
|
procedure AddNotFound;
|
||||||
procedure MakeDir(Dir: String);
|
procedure MakeDir(Dir: String);
|
||||||
procedure DownloadFile(eFile: String; eDestination: String);
|
procedure DownloadFile(eFile: String; eDestination: String);
|
||||||
@ -88,6 +89,17 @@ begin
|
|||||||
Application.ProcessMessages;
|
Application.ProcessMessages;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure AddFailed;
|
||||||
|
begin
|
||||||
|
frmMain.rtfDetails.SelStart := Length(frmMain.rtfDetails.Text);
|
||||||
|
frmMain.rtfDetails.SelAttributes.Color := clMaroon;
|
||||||
|
frmMain.rtfDetails.SelText := ' Failed.';
|
||||||
|
frmMain.rtfDetails.Perform(WM_VSCROLL, SB_BOTTOM, 0);
|
||||||
|
|
||||||
|
frmMain.Repaint;
|
||||||
|
Application.ProcessMessages;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure AddNotFound;
|
procedure AddNotFound;
|
||||||
begin
|
begin
|
||||||
frmMain.rtfDetails.SelStart := Length(frmMain.rtfDetails.Text);
|
frmMain.rtfDetails.SelStart := Length(frmMain.rtfDetails.Text);
|
||||||
@ -173,8 +185,12 @@ begin
|
|||||||
if frmMain.IdFTP.TransferType <> TransferType then
|
if frmMain.IdFTP.TransferType <> TransferType then
|
||||||
frmMain.IdFTP.TransferType := TransferType;
|
frmMain.IdFTP.TransferType := TransferType;
|
||||||
// upload the file
|
// upload the file
|
||||||
frmMain.IdFTP.Put(eFile, eDestination);
|
try
|
||||||
AddDone;
|
frmMain.IdFTP.Put(eFile, eDestination);
|
||||||
|
AddDone;
|
||||||
|
except
|
||||||
|
AddFailed;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure FTPMakeDir(eDir: String);
|
procedure FTPMakeDir(eDir: String);
|
||||||
@ -213,7 +229,7 @@ begin
|
|||||||
if Pos('_amd64', ExtractFileName(eFile)) <> 0 then
|
if Pos('_amd64', ExtractFileName(eFile)) <> 0 then
|
||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
osLinux64: begin
|
{osLinux64: begin
|
||||||
if ExtractFileExt(eFile) = '.dll' then
|
if ExtractFileExt(eFile) = '.dll' then
|
||||||
Result := True;
|
Result := True;
|
||||||
if ExtractFileExt(eFile) = '.exe' then
|
if ExtractFileExt(eFile) = '.exe' then
|
||||||
@ -221,7 +237,7 @@ begin
|
|||||||
|
|
||||||
if Pos('_i386', ExtractFileName(eFile)) <> 0 then
|
if Pos('_i386', ExtractFileName(eFile)) <> 0 then
|
||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -280,13 +296,13 @@ var eStr: TStringList;
|
|||||||
UpdatePluginsIni: Boolean;
|
UpdatePluginsIni: Boolean;
|
||||||
begin
|
begin
|
||||||
AddStatus('Scanning for directories...', clBlack);
|
AddStatus('Scanning for directories...', clBlack);
|
||||||
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'files\*.*', faDirectory, True, True) do begin
|
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'files\*.*', faDirectory, True, True) do begin
|
||||||
DirList.Text := Text;
|
DirList.Text := Text;
|
||||||
Free;
|
Free;
|
||||||
end;
|
end;
|
||||||
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
|
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
|
||||||
AddStatus('Scanning for files...', clBlack);
|
AddStatus('Scanning for files...', clBlack);
|
||||||
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'files\*.*', faAnyFile, True, False) do begin
|
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'files\*.*', faAnyFile, True, False) do begin
|
||||||
FileList.Text := Text;
|
FileList.Text := Text;
|
||||||
Free;
|
Free;
|
||||||
end;
|
end;
|
||||||
@ -327,9 +343,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
for i := 0 to DirList.Count -1 do
|
for i := 0 to DirList.Count -1 do
|
||||||
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 7, Length(DirList[i]));
|
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(Application.ExeName)) + 7, Length(DirList[i]));
|
||||||
for i := 0 to FileList.Count -1 do
|
for i := 0 to FileList.Count -1 do
|
||||||
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 7, Length(FileList[i]));
|
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(Application.ExeName)) + 7, Length(FileList[i]));
|
||||||
|
|
||||||
{ liblist.gam }
|
{ liblist.gam }
|
||||||
if not FileExists(ePath + 'liblist.gam') then begin
|
if not FileExists(ePath + 'liblist.gam') then begin
|
||||||
@ -350,10 +366,10 @@ begin
|
|||||||
eStr[i] := '//' + eStr[i];
|
eStr[i] := '//' + eStr[i];
|
||||||
end;
|
end;
|
||||||
eStr.Add('gamedll "addons\metamod\dlls\metamod.dll"');
|
eStr.Add('gamedll "addons\metamod\dlls\metamod.dll"');
|
||||||
if OS = osLinux64 then
|
//if OS = osLinux64 then
|
||||||
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"')
|
// eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"')
|
||||||
else
|
//else
|
||||||
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"');
|
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"');
|
||||||
FileSetAttr(ePath + 'liblist.gam', 0);
|
FileSetAttr(ePath + 'liblist.gam', 0);
|
||||||
eStr.SaveToFile(ePath + 'liblist.gam');
|
eStr.SaveToFile(ePath + 'liblist.gam');
|
||||||
FileSetAttr(ePath + 'liblist.gam', faReadOnly); // important for listen servers
|
FileSetAttr(ePath + 'liblist.gam', faReadOnly); // important for listen servers
|
||||||
@ -438,44 +454,44 @@ begin
|
|||||||
if not IsForbidden(FileList[i], OS) then begin
|
if not IsForbidden(FileList[i], OS) then begin
|
||||||
if Pos('base', FileList[i]) = 1 then begin
|
if Pos('base', FileList[i]) = 1 then begin
|
||||||
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), clBlack);
|
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), clBlack);
|
||||||
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), CopyConfig);
|
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), CopyConfig);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
case eMod of
|
case eMod of
|
||||||
modCS: begin
|
modCS: begin
|
||||||
if Pos('cstrike', FileList[i]) = 1 then begin
|
if Pos('cstrike', FileList[i]) = 1 then begin
|
||||||
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), clBlack);
|
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), clBlack);
|
||||||
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), CopyConfig);
|
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), CopyConfig);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
modDoD: begin
|
modDoD: begin
|
||||||
if Pos('dod', FileList[i]) = 1 then begin
|
if Pos('dod', FileList[i]) = 1 then begin
|
||||||
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
|
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
|
||||||
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
|
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
modTFC: begin
|
modTFC: begin
|
||||||
if Pos('tfc', FileList[i]) = 1 then begin
|
if Pos('tfc', FileList[i]) = 1 then begin
|
||||||
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
|
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
|
||||||
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
|
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
modNS: begin
|
modNS: begin
|
||||||
if Pos('ns', FileList[i]) = 1 then begin
|
if Pos('ns', FileList[i]) = 1 then begin
|
||||||
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
|
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
|
||||||
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
|
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
modTS: begin
|
modTS: begin
|
||||||
if Pos('ts', FileList[i]) = 1 then begin
|
if Pos('ts', FileList[i]) = 1 then begin
|
||||||
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
|
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
|
||||||
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
|
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
modESF: begin
|
modESF: begin
|
||||||
if Pos('esf', FileList[i]) = 1 then begin
|
if Pos('esf', FileList[i]) = 1 then begin
|
||||||
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
|
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
|
||||||
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
|
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -596,7 +612,7 @@ begin
|
|||||||
frmMain.IdFTP.Connect;
|
frmMain.IdFTP.Connect;
|
||||||
Result := True;
|
Result := True;
|
||||||
except
|
except
|
||||||
MessageBox(frmMain.Handle, 'Failed to reconnect. Installation aborted.', PChar(Application.Title), MB_ICONSTOP);
|
MessageBox(frmMain.Handle, 'Failed to reconnect. Installation has been aborted.', PChar(Application.Title), MB_ICONSTOP);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -614,24 +630,26 @@ begin
|
|||||||
|
|
||||||
ePath := '/';
|
ePath := '/';
|
||||||
CurNode := frmMain.trvDirectories.Selected;
|
CurNode := frmMain.trvDirectories.Selected;
|
||||||
repeat
|
if (Assigned(CurNode)) then begin
|
||||||
ePath := '/' + CurNode.Text + ePath;
|
repeat
|
||||||
CurNode := CurNode.Parent;
|
ePath := '/' + CurNode.Text + ePath;
|
||||||
until (not Assigned(CurNode));
|
CurNode := CurNode.Parent;
|
||||||
|
until (not Assigned(CurNode));
|
||||||
|
end;
|
||||||
|
|
||||||
Screen.Cursor := crAppStart;
|
Screen.Cursor := crAppStart;
|
||||||
frmMain.cmdCancel.Show;
|
frmMain.cmdCancel.Show;
|
||||||
frmMain.cmdCancel.Caption := '&Cancel';
|
frmMain.cmdCancel.Caption := '&Cancel';
|
||||||
frmMain.cmdNext.Hide;
|
frmMain.cmdNext.Hide;
|
||||||
Screen.Cursor := crHourGlass;
|
Screen.Cursor := crHourGlass;
|
||||||
AddStatus('Scanning for directories...', clBlack);
|
AddStatus('Scanning for directories...', clBlack);
|
||||||
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'temp\*.*', faDirectory, True, True) do begin
|
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'temp\*.*', faDirectory, True, True) do begin
|
||||||
DirList.Text := Text;
|
DirList.Text := Text;
|
||||||
Free;
|
Free;
|
||||||
end;
|
end;
|
||||||
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
|
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
|
||||||
AddStatus('Scanning for files...', clBlack);
|
AddStatus('Scanning for files...', clBlack);
|
||||||
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'temp\*.*', faAnyFile, True, False) do begin
|
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'temp\*.*', faAnyFile, True, False) do begin
|
||||||
FileList.Text := Text;
|
FileList.Text := Text;
|
||||||
Free;
|
Free;
|
||||||
end;
|
end;
|
||||||
@ -642,9 +660,9 @@ begin
|
|||||||
frmMain.ggeItem.MaxValue := DirList.Count;
|
frmMain.ggeItem.MaxValue := DirList.Count;
|
||||||
|
|
||||||
for i := 0 to DirList.Count -1 do
|
for i := 0 to DirList.Count -1 do
|
||||||
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 6, Length(DirList[i]));
|
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(Application.ExeName)) + 6, Length(DirList[i]));
|
||||||
for i := 0 to FileList.Count -1 do
|
for i := 0 to FileList.Count -1 do
|
||||||
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 6, Length(FileList[i]));
|
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(Application.ExeName)) + 6, Length(FileList[i]));
|
||||||
|
|
||||||
CopyConfig := True;
|
CopyConfig := True;
|
||||||
AddStatus('Checking for previous AMX Mod X installation...', clBlack);
|
AddStatus('Checking for previous AMX Mod X installation...', clBlack);
|
||||||
@ -664,7 +682,7 @@ begin
|
|||||||
// liblist.gam
|
// liblist.gam
|
||||||
AddStatus('Editing liblist.gam...', clBlack);
|
AddStatus('Editing liblist.gam...', clBlack);
|
||||||
eStr := TStringList.Create;
|
eStr := TStringList.Create;
|
||||||
eStr.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
|
eStr.LoadFromFile(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam');
|
||||||
if eStr.IndexOf('gamedll "addons\metamod\dlls\metamod.dll"') = -1 then begin
|
if eStr.IndexOf('gamedll "addons\metamod\dlls\metamod.dll"') = -1 then begin
|
||||||
if Cancel then begin
|
if Cancel then begin
|
||||||
AddStatus('', clBlack, False);
|
AddStatus('', clBlack, False);
|
||||||
@ -682,8 +700,8 @@ begin
|
|||||||
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"')
|
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"')
|
||||||
else
|
else
|
||||||
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"');
|
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"');
|
||||||
FileSetAttr(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam', 0);
|
FileSetAttr(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam', 0);
|
||||||
eStr.SaveToFile(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
|
eStr.SaveToFile(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam');
|
||||||
end;
|
end;
|
||||||
eStr.Free;
|
eStr.Free;
|
||||||
AddDone;
|
AddDone;
|
||||||
@ -728,7 +746,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if eGoBack then
|
if eGoBack then
|
||||||
goto CreateAgain;
|
goto CreateAgain;
|
||||||
|
|
||||||
AddDone;
|
AddDone;
|
||||||
|
|
||||||
@ -749,8 +767,8 @@ begin
|
|||||||
|
|
||||||
if not IsForbidden(FileList[i], OS) then begin
|
if not IsForbidden(FileList[i], OS) then begin
|
||||||
AddStatus('Uploading file: ' + FileList[i], clBlack);
|
AddStatus('Uploading file: ' + FileList[i], clBlack);
|
||||||
if FileExists(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]) then begin
|
if FileExists(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i]) then begin
|
||||||
frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]);
|
frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i]);
|
||||||
UploadAgain:
|
UploadAgain:
|
||||||
try
|
try
|
||||||
eGoBack := False;
|
eGoBack := False;
|
||||||
@ -762,11 +780,11 @@ begin
|
|||||||
AddStatus('Warning: CHMOD not supported.', clMaroon);
|
AddStatus('Warning: CHMOD not supported.', clMaroon);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
UploadFile(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig);
|
UploadFile(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig);
|
||||||
|
|
||||||
try
|
try
|
||||||
if FileList[i] = 'liblist.gam' then
|
if FileList[i] = 'liblist.gam' then
|
||||||
frmMain.IdFTP.Size('CHMOD 444 liblist.gam');
|
frmMain.IdFTP.Site('CHMOD 444 liblist.gam');
|
||||||
except
|
except
|
||||||
AddStatus('Warning: CHMOD not supported.', clMaroon);
|
AddStatus('Warning: CHMOD not supported.', clMaroon);
|
||||||
end;
|
end;
|
||||||
@ -805,8 +823,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
AddStatus('', clBlack, False);
|
AddStatus('', clBlack, False);
|
||||||
AddStatus('Cleaning up installation...', clBlack, False);
|
AddStatus('Cleaning up installation...', clBlack, False);
|
||||||
if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
|
if (DirectoryExists(ExtractFilePath(Application.ExeName) + 'temp')) then
|
||||||
DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
|
DelTree(ExtractFilePath(Application.ExeName) + 'temp');
|
||||||
AddDone;
|
AddDone;
|
||||||
|
|
||||||
frmMain.ggeAll.Progress := frmMain.ggeAll.MaxValue;
|
frmMain.ggeAll.Progress := frmMain.ggeAll.MaxValue;
|
||||||
|
@ -5056,6 +5056,7 @@ object frmMain: TfrmMain
|
|||||||
'2111-1307 USA'
|
'2111-1307 USA'
|
||||||
' Everyone is permitted to copy and distribute verbatim copies'
|
' Everyone is permitted to copy and distribute verbatim copies'
|
||||||
' of this license document, but changing it is not allowed.'
|
' of this license document, but changing it is not allowed.'
|
||||||
|
''
|
||||||
#9#9#9' Preamble'
|
#9#9#9' Preamble'
|
||||||
' The licenses for most software are designed to take away your'
|
' The licenses for most software are designed to take away your'
|
||||||
|
|
||||||
@ -6101,14 +6102,14 @@ object frmMain: TfrmMain
|
|||||||
end
|
end
|
||||||
object lblStep2: TLabel
|
object lblStep2: TLabel
|
||||||
Left = 44
|
Left = 44
|
||||||
Top = 254
|
Top = 230
|
||||||
Width = 244
|
Width = 244
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = '4. Connect to server and select the mod directory:'
|
Caption = '4. Connect to server and select the mod directory:'
|
||||||
end
|
end
|
||||||
object lblStep4: TLabel
|
object lblStep4: TLabel
|
||||||
Left = 44
|
Left = 44
|
||||||
Top = 214
|
Top = 188
|
||||||
Width = 117
|
Width = 117
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = '3. Select a game addon:'
|
Caption = '3. Select a game addon:'
|
||||||
@ -6122,7 +6123,7 @@ object frmMain: TfrmMain
|
|||||||
end
|
end
|
||||||
object lblStep5: TLabel
|
object lblStep5: TLabel
|
||||||
Left = 44
|
Left = 44
|
||||||
Top = 358
|
Top = 334
|
||||||
Width = 64
|
Width = 64
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = '5. Click Next.'
|
Caption = '5. Click Next.'
|
||||||
@ -6312,7 +6313,7 @@ object frmMain: TfrmMain
|
|||||||
end
|
end
|
||||||
object cmdConnect: TFlatButton
|
object cmdConnect: TFlatButton
|
||||||
Left = 416
|
Left = 416
|
||||||
Top = 269
|
Top = 247
|
||||||
Width = 71
|
Width = 71
|
||||||
Height = 20
|
Height = 20
|
||||||
ColorFocused = 16245198
|
ColorFocused = 16245198
|
||||||
@ -6326,30 +6327,35 @@ object frmMain: TfrmMain
|
|||||||
end
|
end
|
||||||
object pnlDirectory: TPanel
|
object pnlDirectory: TPanel
|
||||||
Left = 44
|
Left = 44
|
||||||
Top = 270
|
Top = 246
|
||||||
Width = 367
|
Width = 367
|
||||||
Height = 83
|
Height = 83
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
|
DesignSize = (
|
||||||
|
367
|
||||||
|
83)
|
||||||
object trvDirectories: TTreeView
|
object trvDirectories: TTreeView
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 1
|
Top = 1
|
||||||
Width = 365
|
Width = 365
|
||||||
Height = 81
|
Height = 81
|
||||||
Align = alClient
|
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||||
BorderStyle = bsNone
|
BorderStyle = bsNone
|
||||||
Images = ilImages
|
Images = ilImages
|
||||||
Indent = 19
|
Indent = 19
|
||||||
|
ReadOnly = True
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnChange = trvDirectoriesChange
|
OnChange = trvDirectoriesChange
|
||||||
OnCollapsing = trvDirectoriesCollapsing
|
OnCollapsing = trvDirectoriesCollapsing
|
||||||
OnExpanding = trvDirectoriesExpanding
|
OnExpanding = trvDirectoriesExpanding
|
||||||
OnExpanded = trvDirectoriesExpanded
|
OnExpanded = trvDirectoriesExpanded
|
||||||
|
OnMouseDown = trvDirectoriesMouseDown
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object cboGameAddon: TFlatComboBox
|
object cboGameAddon: TFlatComboBox
|
||||||
Left = 44
|
Left = 44
|
||||||
Top = 230
|
Top = 204
|
||||||
Width = 443
|
Width = 443
|
||||||
Height = 21
|
Height = 21
|
||||||
Style = csDropDownList
|
Style = csDropDownList
|
||||||
@ -6372,27 +6378,9 @@ object frmMain: TfrmMain
|
|||||||
Left = 44
|
Left = 44
|
||||||
Top = 158
|
Top = 158
|
||||||
Width = 441
|
Width = 441
|
||||||
Height = 50
|
Height = 25
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
object lblOSNote: TLabel
|
|
||||||
Left = 4
|
|
||||||
Top = 24
|
|
||||||
Width = 435
|
|
||||||
Height = 22
|
|
||||||
Caption =
|
|
||||||
'Note: Most linux servers run on a 32-bit platform. If you are no' +
|
|
||||||
't sure what platform your server is using, you can still ask you' +
|
|
||||||
'r provider for further information about this topic.'
|
|
||||||
Enabled = False
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -9
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
ParentFont = False
|
|
||||||
WordWrap = True
|
|
||||||
end
|
|
||||||
object optWindows: TFlatRadioButton
|
object optWindows: TFlatRadioButton
|
||||||
Left = 5
|
Left = 5
|
||||||
Top = 5
|
Top = 5
|
||||||
@ -6417,6 +6405,7 @@ object frmMain: TfrmMain
|
|||||||
Width = 82
|
Width = 82
|
||||||
Height = 14
|
Height = 14
|
||||||
Caption = 'Linux (64-bit)'
|
Caption = 'Linux (64-bit)'
|
||||||
|
Enabled = False
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -6769,6 +6758,7 @@ object frmMain: TfrmMain
|
|||||||
object IdFTP: TIdFTP
|
object IdFTP: TIdFTP
|
||||||
Intercept = IdLogFile
|
Intercept = IdLogFile
|
||||||
MaxLineAction = maException
|
MaxLineAction = maException
|
||||||
|
ReadTimeout = 0
|
||||||
RecvBufferSize = 1024
|
RecvBufferSize = 1024
|
||||||
SendBufferSize = 1024
|
SendBufferSize = 1024
|
||||||
OnWork = IdFTPWork
|
OnWork = IdFTPWork
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user