1 Commits

Author SHA1 Message Date
7e6cc572cf Tagged 1.76 2006-09-20 02:47:04 +00:00
161 changed files with 1661 additions and 3200 deletions

View File

@ -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, int fwd_type) CForward::CForward(const char *name, ForwardExecType et, int numParams, const ForwardParam *paramTypes)
{ {
m_FuncName = name; m_FuncName = name;
m_ExecType = et; m_ExecType = et;
@ -47,13 +47,6 @@ 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;
@ -226,8 +219,6 @@ 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)
@ -238,8 +229,6 @@ 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)
@ -252,15 +241,13 @@ 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 || m_ToDelete) if (!m_HasFunc)
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();
@ -362,20 +349,16 @@ 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 fwd_type) int CForwardMngr::registerForward(const char *funcName, ForwardExecType et, int numParams, const ForwardParam * paramTypes)
{ {
int retVal = m_Forwards.size() << 1; int retVal = m_Forwards.size() << 1;
CForward *tmp = new CForward(funcName, et, numParams, paramTypes, fwd_type); CForward *tmp = new CForward(funcName, et, numParams, paramTypes);
if (!tmp) if (!tmp)
{
return -1; // should be invalid return -1; // should be invalid
}
m_Forwards.push_back(tmp); m_Forwards.push_back(tmp);
@ -460,20 +443,7 @@ bool CForwardMngr::isIdValid(int id) const
cell CForwardMngr::executeForwards(int id, cell *params) cell CForwardMngr::executeForwards(int id, cell *params)
{ {
int retVal; int retVal = (id & 1) ? m_SPForwards[id >> 1]->execute(params, m_TmpArrays) : m_Forwards[id >> 1]->execute(params, m_TmpArrays);
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;
@ -545,27 +515,18 @@ 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;
CSPForward *fwd = m_SPForwards.at(id >> 1); m_SPForwards.at(id >> 1)->isFree = true;
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 fwd_type) int registerForwardC(const char *funcName, ForwardExecType et, cell *list, size_t num)
{ {
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, fwd_type); return g_forwards.registerForward(funcName, et, num, params);
} }
int registerForward(const char *funcName, ForwardExecType et, ...) int registerForward(const char *funcName, ForwardExecType et, ...)

View File

@ -51,10 +51,6 @@
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
@ -111,7 +107,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, int fwd_type=FORWARD_ALL); CForward(const char *name, ForwardExecType et, int numParams, const ForwardParam * paramTypes);
CForward() {} // leaves everything unitialized' CForward() {} // leaves everything unitialized'
cell execute(cell *params, ForwardPreparedArray *preparedArrays); cell execute(cell *params, ForwardPreparedArray *preparedArrays);
@ -143,7 +139,6 @@ 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;
@ -153,8 +148,6 @@ 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;
@ -210,7 +203,7 @@ public:
// Interface // Interface
// Register normal forward // Register normal forward
int registerForward(const char *funcName, ForwardExecType et, int numParams, const ForwardParam *paramTypes, int fwd_type=FORWARD_ALL); int registerForward(const char *funcName, ForwardExecType et, int numParams, const ForwardParam *paramTypes);
// 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);
@ -234,7 +227,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 fwd_type=FORWARD_ALL); int registerForwardC(const char *funcName, ForwardExecType et, cell *list, size_t num);
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, ...);

View File

@ -87,10 +87,6 @@ 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
@ -144,13 +140,4 @@ 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;

View File

@ -76,8 +76,7 @@ private:
} *headcmd; } *headcmd;
public: public:
MenuMngr() : m_watch_iter(end()) MenuMngr() { headid = 0; headcmd = 0; }
{ headid = NULL; headcmd = NULL; }
~MenuMngr(); ~MenuMngr();
// Interface // Interface
@ -90,7 +89,6 @@ public:
class iterator class iterator
{ {
friend class MenuMngr;
MenuCommand* a; MenuCommand* a;
public: public:
iterator(MenuCommand*aa) : a(aa) {} iterator(MenuCommand*aa) : a(aa) {}
@ -103,11 +101,6 @@ 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

View File

@ -120,6 +120,7 @@ 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;

View File

@ -90,7 +90,7 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
{ {
if (warn) if (warn)
{ {
AMXXLOG_Error("[AMXX] Plugins list not found (file \"%s\")", filename); AMXXLOG_Log("[AMXX] Plugins list not found (file \"%s\")", filename);
} }
return 1; return 1;
} }
@ -153,11 +153,6 @@ 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)
@ -165,7 +160,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_Error("[AMXX] %s", plugin->getError()); AMXXLOG_Log("[AMXX] %s", plugin->getError());
} }
} }
@ -236,17 +231,6 @@ 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)
@ -274,7 +258,6 @@ 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);
@ -434,16 +417,14 @@ void CPluginMngr::CPlugin::pausePlugin()
// Unpause a plugin // Unpause a plugin
void CPluginMngr::CPlugin::unpausePlugin() void CPluginMngr::CPlugin::unpausePlugin()
{ {
if (isValid() && (getStatusCode() != ps_stopped)) if (isValid())
{ {
// 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);
}
} }
} }

View File

@ -71,7 +71,6 @@ 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;
@ -99,11 +98,9 @@ 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);

View File

@ -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 nongpl_matches.cpp amxmod_compat.cpp
LINK = -lgcc -static-libgcc LINK = -lgcc -static-libgcc

View File

@ -35,25 +35,6 @@
#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)
{ {
@ -561,28 +542,15 @@ 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);
} }
@ -1008,9 +976,7 @@ 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;
} }
@ -1105,31 +1071,6 @@ static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param *
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();
} }
@ -1258,15 +1199,10 @@ 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 cmd->getId(); return 1;
} }
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 */
@ -1300,7 +1236,7 @@ static cell AMX_NATIVE_CALL register_clcmd(AMX *amx, cell *params) /* 4 param */
cmd->setCmdType(CMD_ClientCommand); cmd->setCmdType(CMD_ClientCommand);
return cmd->getId(); return 1;
} }
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 */
@ -1335,7 +1271,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 cmd->getId(); return 0;
} }
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 */
@ -1582,18 +1518,6 @@ static cell AMX_NATIVE_CALL server_cmd(AMX *amx, cell *params) /* 1 param */
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;
@ -1652,19 +1576,6 @@ 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]);
} }
@ -1685,20 +1596,6 @@ 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);
@ -1741,18 +1638,6 @@ 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));
} }
@ -2323,18 +2208,6 @@ 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);
} }
@ -2342,15 +2215,10 @@ 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();
@ -2517,7 +2385,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() && !plugin->isStopped()) if (plugin && plugin->isValid() && plugin->isPaused())
{ {
plugin->unpausePlugin(); plugin->unpausePlugin();
return 1; return 1;
@ -2860,20 +2728,6 @@ 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;
@ -3367,30 +3221,19 @@ 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;
} }
@ -4033,21 +3876,6 @@ 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]);
@ -4317,8 +4145,7 @@ 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;
} }
@ -4328,19 +4155,7 @@ 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)
{ {
cell value = params[2]; memset(get_amxaddr(amx, params[1]), params[2], params[3] * sizeof(cell));
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;
} }
@ -4595,7 +4410,6 @@ 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},

View File

@ -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.76d" #define AMX_VERSION "1.76"
extern AMX_NATIVE_INFO core_Natives[]; extern AMX_NATIVE_INFO core_Natives[];
extern AMX_NATIVE_INFO time_Natives[]; extern AMX_NATIVE_INFO time_Natives[];

View File

@ -92,10 +92,9 @@ void Client_ShowMenu(void* mValue)
} }
} }
extern bool g_bmod_tfc;
void Client_TeamInfo(void* mValue) void Client_TeamInfo(void* mValue)
{ {
if (mPlayer && !g_bmod_tfc) return; if (mPlayer) return;
static int index; static int index;
switch (mState++) switch (mState++)
@ -108,7 +107,6 @@ 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;
} }
} }

View File

@ -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(int), 1, fp); return fwrite(&c, sizeof(short), 1, fp);
} }
} }
@ -799,25 +799,13 @@ 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(f_old_r, f_new_r) == 0); return (rename(fold, fnew) == 0);
#elif defined WIN32 #elif defined WIN32
return MoveFileA(f_old_r, f_new_r); return MoveFileA(fold, fnew);
#endif #endif
} }

View File

@ -403,7 +403,6 @@ 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':

View File

@ -96,7 +96,6 @@ 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;
@ -316,20 +315,6 @@ 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
@ -382,17 +367,14 @@ 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(configs_dir); LoadExtraPluginsToPCALM(get_localinfo("amxx_configsdir", "addons/amxmodx/configs"));
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",
configs_dir, get_localinfo("amxx_configsdir", "addons/amxmodx/configs"),
STRING(gpGlobals->mapname)); STRING(gpGlobals->mapname));
g_plugins.CALMFromFile(map_pluginsfile_path); g_plugins.CALMFromFile(map_pluginsfile_path);
@ -433,7 +415,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(configs_dir); LoadExtraPluginsFromDir(get_localinfo("amxx_configsdir", "addons/amxmodx/configs"));
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();
@ -904,7 +886,6 @@ 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)
@ -941,12 +922,7 @@ void C_ClientCommand(edict_t *pEntity)
if (ret & 1) RETURN_META(MRES_SUPERCEDE); if (ret & 1) RETURN_META(MRES_SUPERCEDE);
} }
} }
if (g_menucmds.GetWatchIter() != a) ++a;
{
a = g_menucmds.GetWatchIter();
} else {
++a;
}
} }
} }
} }
@ -1217,7 +1193,8 @@ 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 = ptr->vecEndPos; pPlayer->lastTrace = pPlayer->thisTrace;
pPlayer->thisTrace = ptr->vecEndPos;
} }
RETURN_META(MRES_IGNORED); RETURN_META(MRES_IGNORED);
@ -1594,7 +1571,6 @@ 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;

View File

@ -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 plugin_natives. This is dangerous!"); AMXXLOG_Log("An error occurred in plugins_native. This is dangerous!");
} }
} }

View File

@ -439,9 +439,6 @@
<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>
@ -584,9 +581,6 @@
<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>

View File

@ -609,10 +609,6 @@
RelativePath="..\newmenus.cpp" RelativePath="..\newmenus.cpp"
> >
</File> </File>
<File
RelativePath="..\nongpl_matches.cpp"
>
</File>
<File <File
RelativePath="..\optimizer.cpp" RelativePath="..\optimizer.cpp"
> >
@ -782,6 +778,10 @@
RelativePath="..\md5.h" RelativePath="..\md5.h"
> >
</File> </File>
<File
RelativePath="..\menus.h"
>
</File>
<File <File
RelativePath="..\messages.h" RelativePath="..\messages.h"
> >
@ -798,10 +798,6 @@
RelativePath="..\newmenus.h" RelativePath="..\newmenus.h"
> >
</File> </File>
<File
RelativePath="..\nongpl_matches.h"
>
</File>
<File <File
RelativePath="..\optimizer.h" RelativePath="..\optimizer.h"
> >

View File

@ -37,15 +37,11 @@ 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)
@ -68,15 +64,11 @@ 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';
}
} }
} }
@ -107,9 +99,7 @@ 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);
@ -149,9 +139,7 @@ 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));
} }
@ -171,49 +159,15 @@ 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;
@ -223,29 +177,6 @@ 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];
@ -343,64 +274,46 @@ 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());
_snprintf(buffer, sizeof(buffer)-1, "\\r%d.\\w %s\n", option_display, pItem->name.c_str()); else
} else { _snprintf(buffer, sizeof(buffer)-1, "%d. %s\n", ++option, pItem->name.c_str());
_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_display, pItem->name.c_str()); _snprintf(buffer, sizeof(buffer)-1, "\\d%d. %s\n\\w", ++option, 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++;
@ -413,9 +326,7 @@ 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++;
} }
@ -426,17 +337,11 @@ 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");

View File

@ -1,22 +0,0 @@
#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},
};

View File

@ -1,51 +0,0 @@
/* 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_

View File

@ -2327,7 +2327,7 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIME now, PL_UNLOAD_REASON reason)
} }
#ifdef FN_META_DETACH #ifdef FN_META_DETACH
FN_META_DETACH(); return FN_META_DETACH();
#endif // FN_META_DETACH #endif // FN_META_DETACH
return TRUE; return TRUE;
} }

View File

@ -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(void *pfile, char *szFmt, ...); void FN_EngineFprintf(FILE *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
uint32 FN_FunctionFromName(const char *pName); unsigned long FN_FunctionFromName(const char *pName);
#endif // FN_FunctionFromName #endif // FN_FunctionFromName
#ifdef FN_NameForFunction #ifdef FN_NameForFunction
const char *FN_NameForFunction(uint32); const char *FN_NameForFunction(unsigned long function);
#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
int32 FN_RandomLong(int32 lLow, int32 lHigh); long FN_RandomLong(long lLow, long 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(void *pfile, char *szFmt, ...); void FN_EngineFprintf_Post(FILE *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, int32 cb); void *FN_PvAllocEntPrivateData_Post(edict_t *pEdict, long 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
uint32 FN_FunctionFromName_Post(const char *pName); unsigned long 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(uint32); const char *FN_NameForFunction_Post(unsigned long function);
#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
int32 FN_RandomLong_Post(int32 lLow, int32 lHigh); long FN_RandomLong_Post(long lLow, long lHigh);
#endif // FN_RandomLong_Post #endif // FN_RandomLong_Post
#ifdef FN_RandomFloat_Post #ifdef FN_RandomFloat_Post

View File

@ -83,27 +83,11 @@ void amx_command()
if (plugin && plugin->isValid()) if (plugin && plugin->isValid())
{ {
if (plugin->isPaused()) plugin->pausePlugin();
{ 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)
{ {
@ -113,21 +97,14 @@ void amx_command()
if (plugin && plugin->isValid() && plugin->isPaused()) if (plugin && plugin->isValid() && plugin->isPaused())
{ {
if (plugin->isStopped()) plugin->unpausePlugin();
{ 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.\n", sPlugin); print_srvconsole("Plugin %s can't be unpaused right now.", sPlugin);
} }
} }
else if (!strcmp(cmd, "cvars")) else if (!strcmp(cmd, "cvars"))

View File

@ -1,6 +1,5 @@
// Microsoft Visual C++ generated resource script. // Microsoft Visual C++ generated resource script.
// //
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS #define APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@ -27,8 +26,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,7,6,3387 FILEVERSION 1,7,6,0
PRODUCTVERSION 1,7,6,3387 PRODUCTVERSION 1,7,6,0
FILEFLAGSMASK 0x17L FILEFLAGSMASK 0x17L
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -45,12 +44,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.76d" VALUE "FileVersion", "1.76"
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.76d" VALUE "ProductVersion", "1.76"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@ -1344,8 +1344,7 @@ static int command(void)
case tpERROR: case tpERROR:
while (*lptr<=' ' && *lptr!='\0') while (*lptr<=' ' && *lptr!='\0')
lptr++; lptr++;
if (!SKIPPING) error(111,lptr); /* user error */
error(111,lptr); /* user error */
break; break;
default: default:
error(31); /* unknown compiler directive */ error(31); /* unknown compiler directive */

View File

@ -6,3 +6,4 @@ 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

View File

@ -244,14 +244,9 @@ 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;
} }

View File

@ -11,7 +11,6 @@
#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
// ***************************************************** // *****************************************************

View File

@ -4,7 +4,6 @@
#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,
@ -27,8 +26,6 @@ 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.

View File

@ -32,7 +32,6 @@
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"
@ -78,7 +77,6 @@
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"

View File

@ -61,7 +61,6 @@
/> />
<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"
@ -137,7 +136,6 @@
/> />
<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"

View File

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

View File

@ -43,6 +43,7 @@ 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;
@ -58,30 +59,29 @@ 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","0"}; cvar_t init_csstats_rankbots ={"csstats_rankbots","1"};
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},
{0, 0, 0, false} { "SendAudio" , &gmsgSendAudio , Client_SendAudio , 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,20 +330,10 @@ 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) )&&
if (ptr->pHit && (ptr->pHit->v.flags & (FL_CLIENT|FL_FAKECLIENT)) e&&(e->v.flags& (FL_CLIENT | FL_FAKECLIENT) )&&ptr->iHitgroup)
&& e GET_PLAYER_POINTER(e)->aiming = ptr->iHitgroup;
&& (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);
} }

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "CSX" #define MODULE_NAME "CSX"
#define MODULE_VERSION "1.76c" #define MODULE_VERSION "1.76"
#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

View File

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

View File

@ -17,44 +17,6 @@ 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;

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "DoD Fun" #define MODULE_NAME "DoD Fun"
#define MODULE_VERSION "1.76b" #define MODULE_VERSION "1.76"
#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"

View File

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

View File

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

View File

@ -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,6 +78,7 @@ 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;
@ -86,11 +87,12 @@ 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;

View File

@ -57,6 +57,7 @@ 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;
@ -65,7 +66,6 @@ int gmsgScoreShort;
int gmsgPTeam; int gmsgPTeam;
int gmsgAmmoX; int gmsgAmmoX;
int gmsgAmmoShort; int gmsgAmmoShort;
int gmsgHealth_End;
// Zors // Zors
//int gmsgWeaponList; //int gmsgWeaponList;
@ -90,23 +90,22 @@ 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 },
{ "CurWeapon", &gmsgCurWeapon, Client_CurWeapon, false }, { "ObjScore",&gmsgObjScore,Client_ObjScore,false },
{ "ObjScore", &gmsgObjScore, Client_ObjScore, false }, { "RoundState",&gmsgRoundState,Client_RoundState,false },
{ "RoundState", &gmsgRoundState, Client_RoundState, false }, { "Health",&gmsgHealth,Client_Health_End,true },
{ "ResetHUD", &gmsgResetHUD, Client_ResetHUD_End, true }, { "ResetHUD",&gmsgResetHUD,Client_ResetHUD_End,true },
{ "TeamScore", &gmsgTeamScore, Client_TeamScore, false }, { "TeamScore",&gmsgTeamScore,Client_TeamScore,false },
{ "AmmoX", &gmsgAmmoX, Client_AmmoX, false }, { "ScoreShort",&gmsgScoreShort,NULL,false },
{ "AmmoShort", &gmsgAmmoShort, Client_AmmoShort, false }, { "PTeam",&gmsgPTeam,NULL,false },
{ "Health", &gmsgHealth_End, Client_Health_End, true }, { "AmmoX",&gmsgAmmoX,Client_AmmoX,false},
{ "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 }
}; };
@ -441,6 +440,8 @@ 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);

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "DoDX" #define MODULE_NAME "DoDX"
#define MODULE_VERSION "1.76b" #define MODULE_VERSION "1.76"
#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"

View File

@ -141,6 +141,67 @@ 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;
@ -180,67 +241,6 @@ 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

View File

@ -798,42 +798,31 @@ static cell AMX_NATIVE_CALL in_view_cone(AMX *amx, cell *params)
CHECK_ENTITY(src); CHECK_ENTITY(src);
edict_t *pEdictSrc = INDEXENT(src); Vector2D vec2LOS;
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]);
Vector origin(amx_ctof(addr[0]), amx_ctof(addr[1]), amx_ctof(addr[2])); float vecOrigin[3];
bool use2D = (params[0] / sizeof(cell)) == 2 || params[3] == 0; vecOrigin[0] = amx_ctof(addr[0]);
vecOrigin[1] = amx_ctof(addr[1]);
vecOrigin[2] = amx_ctof(addr[2]);
if (use2D) Vector origin(vecOrigin[0], vecOrigin[1], vecOrigin[2]);
{
MAKE_VECTORS(pEdictSrc->v.angles);
vecForward = gpGlobals->v_forward;
vecLOS = origin - pEdictSrc->v.origin; MAKE_VECTORS(pEdictSrc->v.angles);
vecForward.z = 0; vec2LOS = (origin - pEdictSrc->v.origin).Make2D();
vecLOS.z = 0; vec2LOS = vec2LOS.Normalize();
}
else
{
MAKE_VECTORS(pEdictSrc->v.v_angle);
vecForward = gpGlobals->v_forward;
vecLOS = origin - (pEdictSrc->v.origin + pEdictSrc->v.view_ofs); flDot = DotProduct(vec2LOS, gpGlobals->v_forward.Make2D());
}
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)

View File

@ -34,25 +34,19 @@ 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()
{ {

View File

@ -30,12 +30,6 @@ 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;
@ -110,11 +104,6 @@ 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;

View File

@ -692,8 +692,6 @@ 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];
@ -939,9 +937,6 @@ 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];

View File

@ -2,8 +2,6 @@
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;
@ -59,12 +57,12 @@ static cell AMX_NATIVE_CALL fm_return(AMX *amx, cell *params)
} }
case FMV_FLOAT: case FMV_FLOAT:
{ {
mFloatResult = amx_ctof(*(MF_GetAmxAddr(amx,params[2]))); mFloatResult = amx_ctof(params[2]);
break; break;
} }
case FMV_CELL: case FMV_CELL:
{ {
mCellResult = *(MF_GetAmxAddr(amx,params[2])); mCellResult = params[2];
break; break;
} }
default: default:
@ -821,17 +819,11 @@ 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 = &(EnginePost[func]);
patchAddr = EngineAddrsPost[func];
} else {
peng = &(Engine[func]); peng = &(Engine[func]);
patchAddr = EngineAddrs[func]; else
} peng = &(EnginePost[func]);
CVector<int>::iterator begin, end=peng->end(); CVector<int>::iterator begin, end=peng->end();
@ -840,12 +832,10 @@ 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)
{ {
/* Clear out this forward if we no longer need it */ //:TODO: we should probably clear this here!
*(void **)patchAddr = NULL; //but, we have no reverse lookup possible.
} }
return 1; return 1;
} }
@ -1009,19 +999,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_CELL, FP_DONE); fId = MF_RegisterSPForwardByName(amx, funcname, 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_CELL, FP_DONE); fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, 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_CELL, FP_DONE); fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, 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_CELL, FP_DONE); fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
ENGHOOK(TraceModel); ENGHOOK(TraceModel);
break; break;
case FM_TraceTexture: case FM_TraceTexture:

View File

@ -169,8 +169,6 @@ 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;

View File

@ -810,13 +810,11 @@
#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; \
} }
@ -824,13 +822,11 @@
#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; \
} }

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "FakeMeta" #define MODULE_NAME "FakeMeta"
#define MODULE_VERSION "1.76d" #define MODULE_VERSION "1.76"
#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"

View File

@ -55,10 +55,6 @@ 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);
@ -91,12 +87,11 @@ 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.Connect2(&nfo, &errcode, buffer, sizeof(buffer)-1); IDatabase *pDb = g_Mysql.Connect(&nfo, &errcode, buffer, sizeof(buffer)-1);
if (!pDb) if (!pDb)
{ {
@ -383,15 +378,13 @@ 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 && !qInfo->opt_ptr)) if (!qInfo || !qInfo->pQuery)
{ {
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;
} }
const char *ptr = qInfo->pQuery ? qInfo->pQuery->GetQueryString() : qInfo->opt_ptr; return MF_SetAmxString(amx, params[2], qInfo->pQuery->GetQueryString(), params[3]);
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)

View File

@ -134,13 +134,11 @@ 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
@ -149,8 +147,6 @@ 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;
}; };

View File

@ -21,16 +21,6 @@ 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);
@ -45,11 +35,6 @@ IDatabase *MysqlDriver::_Connect(DatabaseInfo *info, int *errcode, char *error,
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,
@ -60,13 +45,9 @@ IDatabase *MysqlDriver::_Connect(DatabaseInfo *info, int *errcode, char *error,
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;
} }

View File

@ -9,11 +9,8 @@ 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);
}; };
}; };

View File

@ -10,11 +10,9 @@
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
@ -34,7 +32,6 @@ 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);

View File

@ -15,7 +15,7 @@
* to add multiple entries. * to add multiple entries.
*/ */
#define MODULE_NAME "MySQL" #define MODULE_NAME "MySQL"
#define MODULE_VERSION "1.76b" #define MODULE_VERSION "1.76"
#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"

View File

@ -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_CELL, FP_DONE); int fwd = MF_RegisterSPForwardByName(amx, handler, FP_CELL, FP_CELL, FP_STRING, FP_CELL, FP_ARRAY, 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, cn->max_timeout); kmThread->SetInfo(cn->host, cn->user, cn->pass, cn->db, cn->port);
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,15 +126,13 @@ 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, unsigned int max_timeout) void MysqlThread::SetInfo(const char *host, const char *user, const char *pass, const char *db, int port)
{ {
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)
@ -151,15 +149,10 @@ 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));
m_qrInfo.queue_time = save_time; IDatabase *pDatabase = g_Mysql.Connect(&info, &m_qrInfo.amxinfo.info.errorcode, m_qrInfo.amxinfo.error, 254);
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)
{ {
@ -179,15 +172,11 @@ 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.info.rs = &m_atomicResult;
}
if (pQuery)
{
m_qrInfo.amxinfo.pQuery = pQuery; m_qrInfo.amxinfo.pQuery = pQuery;
m_qrInfo.amxinfo.info.rs = &m_atomicResult;
} else { } else {
m_qrInfo.amxinfo.opt_ptr = new char[m_query.size() + 1]; pQuery->FreeHandle();
strcpy(m_qrInfo.amxinfo.opt_ptr, m_query.c_str()); pQuery = NULL;
} }
if (pDatabase) if (pDatabase)
@ -239,37 +228,31 @@ 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)hndl, (cell)0,
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);
c_diff); /* this should always be true I think */
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;
} }
/***************** /*****************

View File

@ -12,7 +12,6 @@ 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 :
@ -60,7 +59,7 @@ public:
MysqlThread(); MysqlThread();
~MysqlThread(); ~MysqlThread();
public: public:
void SetInfo(const char *host, const char *user, const char *pass, const char *db, int port, unsigned int max_timeout); void SetInfo(const char *host, const char *user, const char *pass, const char *db, int port);
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);
@ -75,7 +74,6 @@ 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;

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "NS" #define MODULE_NAME "NS"
#define MODULE_VERSION "1.76d" #define MODULE_VERSION "1.76"
#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"

View File

@ -6,56 +6,56 @@
// Offsets (used in NPData.cpp) // Offsets (used in NPData.cpp)
#define OFFSET_WIN_RESOURCES 1816 //454 * 4 // est: 454 // CONFIRMED #define OFFSET_WIN_RESOURCES 1816 //454 * 4
#define OFFSET_LIN_RESOURCES 1836 //459 * 4 // no change #define OFFSET_LIN_RESOURCES 1836 //459 * 4
#define OFFSET_WIN_WEAPDMG 408 //100 * 4 // est: 102 // CONFIRMED #define OFFSET_WIN_WEAPDMG 400 //100 * 4
#define OFFSET_LIN_WEAPDMG 424 //106 * 4 // Changed + 8 Bytes #define OFFSET_LIN_WEAPDMG 416 //104 * 4
#define OFFSET_WIN_WEAPRANGE 404 //99 * 4 // est: 101 // CONFIRMED #define OFFSET_WIN_WEAPRANGE 396 //99 * 4
#define OFFSET_LIN_WEAPRANGE 420 //105 * 4 // Changed + 8 Bytes #define OFFSET_LIN_WEAPRANGE 412 //103 * 4
#define OFFSET_WIN_WEAPCLIP 364 //91 * 4 // est: 91 // CONFIRMED #define OFFSET_WIN_WEAPCLIP 364 //91 * 4
#define OFFSET_LIN_WEAPCLIP 380 //95 * 4 // no change #define OFFSET_LIN_WEAPCLIP 380 //95 * 4
#define OFFSET_WIN_HIVE_TRAIT 488 //121 * 4 // est: 122 // CONFIRMED #define OFFSET_WIN_HIVE_TRAIT 484 //121 * 4
#define OFFSET_LIN_HIVE_TRAIT 504 //126 * 4 // Changed + 4 bytes #define OFFSET_LIN_HIVE_TRAIT 500 //125 * 4
#define OFFSET_WIN_SCORE 6588 //1639 * 4 // est: 1647 // CONFIRMED #define OFFSET_WIN_SCORE 6556 //1639 * 4
#define OFFSET_LIN_SCORE 6608 //1644 * 4 // Changed + 32 bytes #define OFFSET_LIN_SCORE 6576 //1644 * 4
#define OFFSET_WIN_EXP 6512 //1620 * 4 // est: 1628 // CONFIRMED #define OFFSET_WIN_EXP 6480 //1620 * 4
#define OFFSET_LIN_EXP 6532 //1633 * 4 // Changed + 32 bytes #define OFFSET_LIN_EXP 6500 //1625 * 4
#define OFFSET_WIN_POINTS 6520 //1622 * 4 // est: 1630 // CONFIRMED #define OFFSET_WIN_POINTS 6488 //1622 * 4
#define OFFSET_LIN_POINTS 6540 //1635 * 4 // Changed + 32 bytes #define OFFSET_LIN_POINTS 6508 //1627 * 4
#define OFFSET_WIN_AMMO_LMG 1116 //279 * 4 // est: 279 // CONFIRMED #define OFFSET_WIN_AMMO_LMG 1116 //279 * 4
#define OFFSET_LIN_AMMO_LMG 1136 //284 * 4 // no change #define OFFSET_LIN_AMMO_LMG 1136 //284 * 4
#define OFFSET_WIN_AMMO_PISTOL 1120 //280 * 4 // est: 280 // CONFIRMED #define OFFSET_WIN_AMMO_PISTOL 1120 //280 * 4
#define OFFSET_LIN_AMMO_PISTOL 1140 //285 * 4 // no change #define OFFSET_LIN_AMMO_PISTOL 1140 //285 * 4
#define OFFSET_WIN_AMMO_SHOTGUN 1124 //281 * 4 // est: 281 // CONFIRMED #define OFFSET_WIN_AMMO_SHOTGUN 1124 //281 * 4
#define OFFSET_LIN_AMMO_SHOTGUN 1144 //286 * 4 // no change #define OFFSET_LIN_AMMO_SHOTGUN 1144 //286 * 4
#define OFFSET_WIN_AMMO_HMG 1128 //282 * 4 // est: 282 // CONFIRMED #define OFFSET_WIN_AMMO_HMG 1128 //282 * 4
#define OFFSET_LIN_AMMO_HMG 1148 //287 * 4 // no change #define OFFSET_LIN_AMMO_HMG 1148 //287 * 4
#define OFFSET_WIN_AMMO_GL 1132 //283 * 4 // est: 283 // CONFIRMED #define OFFSET_WIN_AMMO_GL 1132 //283 * 4
#define OFFSET_LIN_AMMO_GL 1152 //288 * 4 // no change #define OFFSET_LIN_AMMO_GL 1152 //288 * 4
#define OFFSET_WIN_AMMO_HG 1136 //284 * 4 // est: 284 // CONFIRMED #define OFFSET_WIN_AMMO_HG 1136 //284 * 4
#define OFFSET_LIN_AMMO_HG 1156 //289 * 4 // no change #define OFFSET_LIN_AMMO_HG 1156 //289 * 4
#define OFFSET_WIN_DEATHS 1380 //345 * 4 // est: 345 // CONFIRMED #define OFFSET_WIN_DEATHS 1380 //345 * 4
#define OFFSET_LIN_DEATHS 1400 //350 * 4 // no change #define OFFSET_LIN_DEATHS 1400 //349 * 4
#define OFFSET_WIN_STRUCTOWNER 324 //81 * 4 // est: 81 // CONFIRMED #define OFFSET_WIN_STRUCTOWNER 324 //81 * 4
#define OFFSET_LIN_STRUCTOWNER 340 //85 * 4 // no change #define OFFSET_LIN_STRUCTOWNER 340 //85 * 4
#define OFFSET_WIN_HIVEABILITY 6248 //1555 * 4 // est: 1562 // CONFIRMED #define OFFSET_WIN_HIVEABILITY 6220 //1555 * 4
#define OFFSET_LIN_HIVEABILITY 6268 //1567 * 4 // Changed + 28 bytes #define OFFSET_LIN_HIVEABILITY 6240 //1560 * 4
enum enum
{ {

View File

@ -1,5 +1,4 @@
#include <stdio.h> #include <stdio.h>
#include <stdarg.h>
#if defined __linux__ #if defined __linux__
#include <unistd.h> #include <unistd.h>
#endif #endif
@ -25,8 +24,8 @@ int Journal::Replay(VaultMap *pMap)
BinaryReader br(m_fp); BinaryReader br(m_fp);
uint8_t len8; int8_t len8;
uint16_t len16; int16_t len16;
char *key = NULL; char *key = NULL;
char *val = NULL; char *val = NULL;
String sKey; String sKey;

View File

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

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "nVault" #define MODULE_NAME "nVault"
#define MODULE_VERSION "1.76c" #define MODULE_VERSION "1.76"
#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"

View File

@ -169,8 +169,6 @@ public:
} else { } else {
iter++; iter++;
} }
} else {
iter++;
} }
} }
} }

View File

@ -382,16 +382,13 @@ 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;
} }
const char *ptr = qInfo->pQuery ? qInfo->pQuery->GetQueryString() : qInfo->opt_ptr; return MF_SetAmxString(amx, params[2], qInfo->pQuery->GetQueryString(), params[3]);
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)

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "SQLite" #define MODULE_NAME "SQLite"
#define MODULE_VERSION "1.76b" #define MODULE_VERSION "1.76"
#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"

View File

@ -23,7 +23,6 @@
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

View File

@ -10,11 +10,9 @@
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

View File

@ -54,9 +54,6 @@ 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();
@ -68,11 +65,6 @@ 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 {
@ -88,9 +80,7 @@ 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,
@ -197,12 +187,9 @@ bool ThreadWorker::Stop(bool flush_cancel)
{ {
Unpause(); Unpause();
} else { } else {
m_QueueLock->Lock(); m_AddSignal->Signal();
if (m_Waiting) Pause();
{ Unpause();
m_AddSignal->Signal();
}
m_QueueLock->Unlock();
} }
me->WaitForThread(); me->WaitForThread();

View File

@ -97,7 +97,7 @@ IThreadHandle *WinThreader::MakeThread(IThread *pThread, const ThreadParams *par
IEventSignal *WinThreader::MakeEventSignal() IEventSignal *WinThreader::MakeEventSignal()
{ {
HANDLE event = CreateEventA(NULL, FALSE, FALSE, NULL); HANDLE event = CreateEventA(NULL, TRUE, TRUE, NULL);
if (!event) if (!event)
return NULL; return NULL;
@ -275,6 +275,7 @@ 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()

View File

@ -129,7 +129,6 @@ 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)
@ -147,12 +146,8 @@ 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)
@ -173,17 +168,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 = NULL;
m_qrInfo.amxinfo.info.rs = &m_atomicResult; m_qrInfo.amxinfo.info.rs = &m_atomicResult;
} }
if (pQuery) if (pQuery)
{ {
m_qrInfo.amxinfo.pQuery = pQuery; pQuery->FreeHandle();
} else { pQuery = NULL;
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();
@ -233,37 +226,26 @@ 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)hndl, (cell)0,
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);
c_diff);
}
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;
} }
/***************** /*****************

View File

@ -12,7 +12,6 @@ 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 :

View File

@ -32,8 +32,8 @@
-M -M
-$M16384,1048576 -$M16384,1048576
-K$00400000 -K$00400000
-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" -LE"c:\programme\borland\delphi7\Projects\Bpl"
-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" -LN"c:\programme\borland\delphi7\Projects\Bpl"
-DmadExcept -DmadExcept
-w-UNSAFE_TYPE -w-UNSAFE_TYPE
-w-UNSAFE_CODE -w-UNSAFE_CODE

View File

@ -115,7 +115,7 @@ AutoIncBuild=1
MajorVer=1 MajorVer=1
MinorVer=4 MinorVer=4
Release=3 Release=3
Build=3 Build=0
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.3 FileVersion=1.4.3.0
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 final ProductVersion=1.4.3.0
Comments= Comments=

Binary file not shown.

Binary file not shown.

View File

@ -800,8 +800,6 @@ 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);

View File

@ -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) or (Pos('case', eStr[i]) = 1) or (Pos('switch', eStr[i]) = 1)) and (Pos('{', eStr[i]) = 0) then else if (eStr[i] = 'else') or (Pos('else if', 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

View File

@ -26,8 +26,6 @@ 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,
@ -37,14 +35,12 @@ 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
@ -230,7 +226,6 @@ begin
CloseHandle(PipeErrorsWrite); CloseHandle(PipeErrorsWrite);
end; end;
Screen.Cursor := crDefault; Screen.Cursor := crDefault;
Compiling := False;
Output.Free; Output.Free;
end; end;

View File

@ -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; Document: TDocument): String; function AddExtension(eFilename, eHighlighter: String): String;
function ShowColorDialog(var Color: TColor; ePaintImage: TImage): Boolean; function ShowColorDialog(var Color: TColor; ePaintImage: TImage): Boolean;
@ -468,15 +468,11 @@ begin
Collection.Close(eDocument.Index, RemoveTab); Collection.Close(eDocument.Index, RemoveTab);
end; end;
function AddExtension(eFilename, eHighlighter: String; Document: TDocument): String; function AddExtension(eFilename, eHighlighter: String): String;
begin begin
if ExtractFileExt(eFilename) = '' then begin if ExtractFileExt(eFilename) = '' then begin
if eHighlighter = 'Pawn' then begin if eHighlighter = 'Pawn' then
if (ExtractFileExt(Document.Title) = '.inc') then Result := eFilename + '.sma';
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
@ -755,8 +751,6 @@ 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;

View File

@ -63,7 +63,6 @@ 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
@ -102,39 +101,30 @@ begin
end; end;
{ Constants and Variables } { Constants and Variables }
if (IsAtStart('new', eString, False)) or (IsAtStart('const', eString, False)) or (IsAtStart('stock', eString, False)) then begin // const or variable if (IsAtStart('new', 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(Copy(eString, Pos(#32, eString)+1, Length(eString)), ',', #13, [rfReplaceAll]); eStr.Text := StringReplace(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 (IsAtStart('const', eTemp, False)) then begin if Pos(':', eTemp) <> 0 then
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
if (eTempBool) then Result.Variables.AddObject(eTemp, TObject(i));
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;
@ -239,7 +229,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
@ -253,7 +243,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;
@ -268,7 +258,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));
@ -285,7 +275,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.

View File

@ -9,14 +9,13 @@ uses
type type
TfrmGoToLine = class(TForm) TfrmGoToLine = class(TForm)
pnlBG: TSpTBXPanel;
lblCaption: TLabel; lblCaption: TLabel;
cmdCancel: TSpTBXButton;
cmdOK: TSpTBXButton;
txtGoToLine: TSpTBXEdit; txtGoToLine: TSpTBXEdit;
cmdOK: TSpTBXButton;
cmdCancel: TSpTBXButton;
procedure txtGoToLineChange(Sender: TObject);
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
@ -28,6 +27,14 @@ 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
@ -39,12 +46,6 @@ 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.

View File

@ -4,7 +4,7 @@ interface
uses uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, SysUtils, Windows, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, OleCtrls, SHDocVw, ActiveX; StdCtrls, ExtCtrls, Forms, OleCtrls, SHDocVw_TLB, ActiveX;
type type
TfrmHTMLPreview = class(TForm) TfrmHTMLPreview = class(TForm)

View File

@ -7375,8 +7375,8 @@ object frmHudMsgGenerator: TfrmHudMsgGenerator
ColorHighLight = 8623776 ColorHighLight = 8623776
ColorShadow = 8623776 ColorShadow = 8623776
Caption = 'Generate' Caption = 'Generate'
TabOrder = 4
ModalResult = 1 ModalResult = 1
TabOrder = 4
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'
TabOrder = 5
ModalResult = 2 ModalResult = 2
TabOrder = 5
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'
OnExit = txtTimeToShowExit OnChange = txtTimeToShowChange
OnKeyPress = txtTimeToShowKeyPress OnKeyPress = txtTimeToShowKeyPress
end end
end end

View File

@ -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 := FloatToStrF(lblHudMsg.Left / pnlHudmessage.Width, ffFixed, -2, 2); txtXPos.Text := FloatToStr(RoundTo(lblHudMsg.Left / pnlHudmessage.Width, -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 := FloatToStrF(lblHudMsg.Top / pnlHudmessage.Height, ffFixed, -2, 2); txtYPos.Text := FloatToStr(RoundTo(lblHudMsg.Top / pnlHudmessage.Height, -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,6 +210,20 @@ 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
@ -262,16 +276,4 @@ 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.

View File

@ -1,7 +1,7 @@
object frmMain: TfrmMain object frmMain: TfrmMain
Left = 184 Left = 189
Top = 77 Top = 114
Width = 893 Width = 888
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 = 674 Left = 669
Top = 95 Top = 95
Height = 501 Height = 501
Align = alRight Align = alRight
end end
object spcRight1: TImage object spcRight1: TImage
Left = 882 Left = 877
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 = 885 Width = 880
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 = 885 Width = 880
Height = 25 Height = 25
object mnuFilename: TSpTBXRightAlignSpacerItem object mnuFilename: TSpTBXRightAlignSpacerItem
Caption = 'Untitled.sma' Caption = 'Untitled.sma'
CustomWidth = 547 CustomWidth = 542
end end
object sepStatus0: TSpTBXSeparatorItem object sepStatus0: TSpTBXSeparatorItem
end end
@ -728,20 +728,19 @@ object frmMain: TfrmMain
object tbDocs: TJvTabBar object tbDocs: TJvTabBar
Left = 0 Left = 0
Top = 72 Top = 72
Width = 885 Width = 880
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 = 677 Left = 672
Top = 95 Top = 95
Width = 205 Width = 205
Height = 501 Height = 501
@ -938,7 +937,6 @@ 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
@ -952,7 +950,7 @@ object frmMain: TfrmMain
object pnlParent: TPanel object pnlParent: TPanel
Left = 3 Left = 3
Top = 95 Top = 95
Width = 671 Width = 666
Height = 501 Height = 501
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
@ -960,7 +958,7 @@ object frmMain: TfrmMain
object splOutput: TSplitter object splOutput: TSplitter
Left = 0 Left = 0
Top = 416 Top = 416
Width = 671 Width = 666
Height = 3 Height = 3
Cursor = crVSplit Cursor = crVSplit
Align = alBottom Align = alBottom
@ -969,7 +967,7 @@ object frmMain: TfrmMain
object sciEditor: TScintilla object sciEditor: TScintilla
Left = 0 Left = 0
Top = 0 Top = 0
Width = 671 Width = 666
Height = 416 Height = 416
Color = clWhite Color = clWhite
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
@ -4495,7 +4493,7 @@ object frmMain: TfrmMain
object lstOutput: TListBox object lstOutput: TListBox
Left = 0 Left = 0
Top = 419 Top = 419
Width = 671 Width = 666
Height = 82 Height = 82
Align = alBottom Align = alBottom
ItemHeight = 13 ItemHeight = 13
@ -4546,6 +4544,7 @@ 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
@ -6570,7 +6569,6 @@ 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
@ -7828,32 +7826,7 @@ 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

View File

@ -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, JvComponentBase; TBXLists, SpTBXLists;
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); ActiveDoc.FileName := AddExtension(sdSave.FileName, ActiveDoc.Highlighter);
ActiveDoc.Save; ActiveDoc.Save;
tbDocs.Tabs[ActiveDoc.Index].Caption := ActiveDoc.Title; tbDocs.Tabs[ActiveDoc.Index].Caption := ActiveDoc.Title;
end; end;
@ -1071,30 +1071,9 @@ 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 begin if Plugin_CodeSnippetClick(TSpTBXItem(Sender).Caption, GetCat, GetSnippet(GetCat, (Sender as TSpTBXItem).Caption)) then
Snippet := GetSnippet(GetCat, (Sender as TSpTBXItem).Caption); sciEditor.SelText := 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);
@ -1296,7 +1275,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])); TDocument(Collection.Items[b]).FileName := AddExtension(sdSave.FileName, TDocument(Collection.Items[b]).Highlighter);
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
@ -1547,7 +1526,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); eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.Save; eItem.Save;
end end
else begin else begin
@ -1571,7 +1550,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); eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.Save; eItem.Save;
end end
else begin else begin
@ -1595,7 +1574,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); eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.Save; eItem.Save;
end end
else begin else begin
@ -1706,7 +1685,6 @@ 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;
@ -2232,7 +2210,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, 29, 99, buf, 13)'); sciEditor.Lines.Add(#9 + #9 + 'count = ExplodeString(lines, 50, 119, 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 + '}');

View File

@ -64,7 +64,7 @@ object frmSettings: TfrmSettings
Top = 0 Top = 0
Width = 351 Width = 351
Height = 260 Height = 260
ActivePage = jspCodeSnippets ActivePage = jspCTSettings
PropagateEnable = False PropagateEnable = False
Align = alClient Align = alClient
OnChange = jplSettingsChange OnChange = jplSettingsChange
@ -760,9 +760,6 @@ 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

View File

@ -277,9 +277,6 @@ 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;
@ -342,14 +339,9 @@ 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 DirectoryExists(AMXXDir) then if not 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);
@ -429,7 +421,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', txtLangDir.Text); eConfig.WriteString('Misc', 'LangDir', '');
eConfig.WriteInteger('Misc', 'ShowStatusbar', 1); eConfig.WriteInteger('Misc', 'ShowStatusbar', 1);
eConfig.WriteInteger('Misc', 'WindowState', 0); eConfig.WriteInteger('Misc', 'WindowState', 0);
end; end;
@ -442,8 +434,6 @@ 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);
@ -788,7 +778,6 @@ 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
@ -816,9 +805,7 @@ 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);
@ -828,8 +815,8 @@ begin
lstCodeSnippets.ItemIndex := 0 lstCodeSnippets.ItemIndex := 0
else else
txtCodeSnippet.Clear; txtCodeSnippet.Clear;
txtCodeSnippet.Enabled := lstCodeSnippets.Items.Count > 0;
lstCodeSnippetsClick(Sender); lstCodeSnippetsClick(Sender);
txtCodeSnippet.Enabled := lstCodeSnippets.Items.Count > 0;
cmdCSRemove.Enabled := lstCodeSnippets.ItemIndex <> -1; cmdCSRemove.Enabled := lstCodeSnippets.ItemIndex <> -1;
end; end;
@ -1263,28 +1250,4 @@ 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.

View File

@ -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.76c release = amxmodx-1.76

View File

@ -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.76d release = amxmodx-1.76

View File

@ -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.76d" !define PRODUCT_VERSION "1.76"
!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,337 +103,350 @@ 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\addons\amxmodx\configs\amxx.cfg" File "installer\files\base\configs\amxx.cfg"
File "installer\files\base\addons\amxmodx\configs\clcmds.ini" File "installer\files\base\configs\clcmds.ini"
File "installer\files\base\addons\amxmodx\configs\cmds.ini" File "installer\files\base\configs\cmds.ini"
File "installer\files\base\addons\amxmodx\configs\configs.ini" File "installer\files\base\configs\configs.ini"
File "installer\files\base\addons\amxmodx\configs\conmotd.txt" File "installer\files\base\configs\conmotd.txt"
File "installer\files\base\addons\amxmodx\configs\core.ini" File "installer\files\base\configs\core.ini"
File "installer\files\base\addons\amxmodx\configs\custommenuitems.cfg" File "installer\files\base\configs\custommenuitems.cfg"
File "installer\files\base\addons\amxmodx\configs\cvars.ini" File "installer\files\base\configs\cvars.ini"
File "installer\files\base\addons\amxmodx\configs\maps.ini" File "installer\files\base\configs\maps.ini"
File "installer\files\base\addons\amxmodx\configs\modules.ini" File "installer\files\base\configs\modules.ini"
File "installer\files\base\addons\amxmodx\configs\plugins.ini" File "installer\files\base\configs\plugins.ini"
File "installer\files\base\addons\amxmodx\configs\speech.ini" File "installer\files\base\configs\speech.ini"
File "installer\files\base\addons\amxmodx\configs\sql.cfg" File "installer\files\base\configs\sql.cfg"
File "installer\files\base\addons\amxmodx\configs\users.ini" File "installer\files\base\configs\users.ini"
SetOutPath "$INSTDIR\files\base\data" SetOutPath "$INSTDIR\files\base\data"
File "installer\files\base\addons\amxmodx\data\GeoIP.dat" File "installer\files\base\data\GeoIP.dat"
SetOutPath "$INSTDIR\files\base\data\lang" SetOutPath "$INSTDIR\files\base\data\lang"
File "installer\files\base\addons\amxmodx\data\lang\admin.txt" File "installer\files\base\data\lang\admin.txt"
File "installer\files\base\addons\amxmodx\data\lang\adminchat.txt" File "installer\files\base\data\lang\adminchat.txt"
File "installer\files\base\addons\amxmodx\data\lang\admincmd.txt" File "installer\files\base\data\lang\admincmd.txt"
File "installer\files\base\addons\amxmodx\data\lang\adminhelp.txt" File "installer\files\base\data\lang\adminhelp.txt"
File "installer\files\base\addons\amxmodx\data\lang\adminslots.txt" File "installer\files\base\data\lang\adminslots.txt"
File "installer\files\base\addons\amxmodx\data\lang\adminvote.txt" File "installer\files\base\data\lang\adminvote.txt"
File "installer\files\base\addons\amxmodx\data\lang\antiflood.txt" File "installer\files\base\data\lang\antiflood.txt"
File "installer\files\base\addons\amxmodx\data\lang\cmdmenu.txt" File "installer\files\base\data\lang\cmdmenu.txt"
File "installer\files\base\addons\amxmodx\data\lang\common.txt" File "installer\files\base\data\lang\common.txt"
File "installer\files\base\addons\amxmodx\data\lang\imessage.txt" File "installer\files\base\data\lang\imessage.txt"
File "installer\files\base\addons\amxmodx\data\lang\languages.txt" File "installer\files\base\data\lang\languages.txt"
File "installer\files\base\addons\amxmodx\data\lang\mapchooser.txt" File "installer\files\base\data\lang\mapchooser.txt"
File "installer\files\base\addons\amxmodx\data\lang\mapsmenu.txt" File "installer\files\base\data\lang\mapsmenu.txt"
File "installer\files\base\addons\amxmodx\data\lang\menufront.txt" File "installer\files\base\data\lang\menufront.txt"
File "installer\files\base\addons\amxmodx\data\lang\miscstats.txt" File "installer\files\base\data\lang\miscstats.txt"
File "installer\files\base\addons\amxmodx\data\lang\multilingual.txt" File "installer\files\base\data\lang\multilingual.txt"
File "installer\files\base\addons\amxmodx\data\lang\nextmap.txt" File "installer\files\base\data\lang\nextmap.txt"
File "installer\files\base\addons\amxmodx\data\lang\pausecfg.txt" File "installer\files\base\data\lang\pausecfg.txt"
File "installer\files\base\addons\amxmodx\data\lang\plmenu.txt" File "installer\files\base\data\lang\plmenu.txt"
File "installer\files\base\addons\amxmodx\data\lang\restmenu.txt" File "installer\files\base\data\lang\restmenu.txt"
File "installer\files\base\addons\amxmodx\data\lang\scrollmsg.txt" File "installer\files\base\data\lang\scrollmsg.txt"
File "installer\files\base\addons\amxmodx\data\lang\statscfg.txt" File "installer\files\base\data\lang\statscfg.txt"
File "installer\files\base\addons\amxmodx\data\lang\statsx.txt" File "installer\files\base\data\lang\statsx.txt"
File "installer\files\base\addons\amxmodx\data\lang\stats_dod.txt" File "installer\files\base\data\lang\stats_dod.txt"
File "installer\files\base\addons\amxmodx\data\lang\telemenu.txt" File "installer\files\base\data\lang\telemenu.txt"
File "installer\files\base\addons\amxmodx\data\lang\time.txt" File "installer\files\base\data\lang\time.txt"
File "installer\files\base\addons\amxmodx\data\lang\timeleft.txt" File "installer\files\base\data\lang\timeleft.txt"
SetOutPath "$INSTDIR\files\base\dlls" SetOutPath "$INSTDIR\files\base\dlls"
File "installer\files\base\addons\amxmodx\dlls\amxmodx_mm.dll" File "installer\files\base\dlls\amxmodx_mm.dll"
File "installer\files\base\addons\amxmodx\dlls\amxmodx_mm_i386.so" File "installer\files\base\dlls\amxmodx_mm_amd64.so"
File "installer\files\base\addons\amxmodx\dlls\metamod.dll" File "installer\files\base\dlls\amxmodx_mm_i386.so"
File "installer\files\base\addons\amxmodx\dlls\metamod_i386.so" File "installer\files\base\dlls\metamod.dll"
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\addons\amxmodx\modules\nvault_amxx.dll" File "installer\files\base\modules\nvault_amxx.dll"
File "installer\files\base\addons\amxmodx\modules\nvault_amxx_i386.so" File "installer\files\base\modules\nvault_amxx_amd64.so"
File "installer\files\base\addons\amxmodx\modules\engine_amxx.dll" File "installer\files\base\modules\nvault_amxx_i386.so"
File "installer\files\base\addons\amxmodx\modules\engine_amxx_i386.so" File "installer\files\base\modules\engine_amxx.dll"
File "installer\files\base\addons\amxmodx\modules\fakemeta_amxx.dll" File "installer\files\base\modules\engine_amxx_amd64.so"
File "installer\files\base\addons\amxmodx\modules\fakemeta_amxx_i386.so" File "installer\files\base\modules\engine_amxx_i386.so"
File "installer\files\base\addons\amxmodx\modules\fun_amxx.dll" File "installer\files\base\modules\fakemeta_amxx.dll"
File "installer\files\base\addons\amxmodx\modules\fun_amxx_i386.so" File "installer\files\base\modules\fakemeta_amxx_amd64.so"
File "installer\files\base\addons\amxmodx\modules\geoip_amxx.dll" File "installer\files\base\modules\fakemeta_amxx_i386.so"
File "installer\files\base\addons\amxmodx\modules\geoip_amxx_i386.so" File "installer\files\base\modules\fun_amxx.dll"
File "installer\files\base\addons\amxmodx\modules\sqlite_amxx.dll" File "installer\files\base\modules\fun_amxx_amd64.so"
File "installer\files\base\addons\amxmodx\modules\sqlite_amxx_i386.so" File "installer\files\base\modules\fun_amxx_i386.so"
File "installer\files\base\addons\amxmodx\modules\mysql_amxx.dll" File "installer\files\base\modules\geoip_amxx.dll"
File "installer\files\base\addons\amxmodx\modules\mysql_amxx_i386.so" File "installer\files\base\modules\geoip_amxx_amd64.so"
File "installer\files\base\addons\amxmodx\modules\regex_amxx.dll" File "installer\files\base\modules\geoip_amxx_i386.so"
File "installer\files\base\addons\amxmodx\modules\regex_amxx_i386.so" File "installer\files\base\modules\sqlite_amxx.dll"
File "installer\files\base\addons\amxmodx\modules\sockets_amxx.dll" File "installer\files\base\modules\sqlite_amxx_amd64.so"
File "installer\files\base\addons\amxmodx\modules\sockets_amxx_i386.so" File "installer\files\base\modules\sqlite_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\addons\amxmodx\plugins\admin.amxx" File "installer\files\base\plugins\admin.amxx"
File "installer\files\base\addons\amxmodx\plugins\adminchat.amxx" File "installer\files\base\plugins\adminchat.amxx"
File "installer\files\base\addons\amxmodx\plugins\admincmd.amxx" File "installer\files\base\plugins\admincmd.amxx"
File "installer\files\base\addons\amxmodx\plugins\adminhelp.amxx" File "installer\files\base\plugins\adminhelp.amxx"
File "installer\files\base\addons\amxmodx\plugins\adminslots.amxx" File "installer\files\base\plugins\adminslots.amxx"
File "installer\files\base\addons\amxmodx\plugins\adminvote.amxx" File "installer\files\base\plugins\adminvote.amxx"
File "installer\files\base\addons\amxmodx\plugins\admin_sql.amxx" File "installer\files\base\plugins\admin_sql.amxx"
File "installer\files\base\addons\amxmodx\plugins\amxmod_compat.amxx" File "installer\files\base\plugins\amxmod_compat.amxx"
File "installer\files\base\addons\amxmodx\plugins\antiflood.amxx" File "installer\files\base\plugins\antiflood.amxx"
File "installer\files\base\addons\amxmodx\plugins\cmdmenu.amxx" File "installer\files\base\plugins\cmdmenu.amxx"
File "installer\files\base\addons\amxmodx\plugins\imessage.amxx" File "installer\files\base\plugins\imessage.amxx"
File "installer\files\base\addons\amxmodx\plugins\mapchooser.amxx" File "installer\files\base\plugins\mapchooser.amxx"
File "installer\files\base\addons\amxmodx\plugins\mapsmenu.amxx" File "installer\files\base\plugins\mapsmenu.amxx"
File "installer\files\base\addons\amxmodx\plugins\menufront.amxx" File "installer\files\base\plugins\menufront.amxx"
File "installer\files\base\addons\amxmodx\plugins\multilingual.amxx" File "installer\files\base\plugins\multilingual.amxx"
File "installer\files\base\addons\amxmodx\plugins\nextmap.amxx" File "installer\files\base\plugins\nextmap.amxx"
File "installer\files\base\addons\amxmodx\plugins\pausecfg.amxx" File "installer\files\base\plugins\pausecfg.amxx"
File "installer\files\base\addons\amxmodx\plugins\plmenu.amxx" File "installer\files\base\plugins\plmenu.amxx"
File "installer\files\base\addons\amxmodx\plugins\scrollmsg.amxx" File "installer\files\base\plugins\scrollmsg.amxx"
File "installer\files\base\addons\amxmodx\plugins\statscfg.amxx" File "installer\files\base\plugins\statscfg.amxx"
File "installer\files\base\addons\amxmodx\plugins\telemenu.amxx" File "installer\files\base\plugins\telemenu.amxx"
File "installer\files\base\addons\amxmodx\plugins\timeleft.amxx" File "installer\files\base\plugins\timeleft.amxx"
SetOutPath "$INSTDIR\files\base\scripting" SetOutPath "$INSTDIR\files\base\scripting"
File "installer\files\base\addons\amxmodx\scripting\admin.sma" File "installer\files\base\scripting\admin.sma"
File "installer\files\base\addons\amxmodx\scripting\adminchat.sma" File "installer\files\base\scripting\adminchat.sma"
File "installer\files\base\addons\amxmodx\scripting\admincmd.sma" File "installer\files\base\scripting\admincmd.sma"
File "installer\files\base\addons\amxmodx\scripting\adminhelp.sma" File "installer\files\base\scripting\adminhelp.sma"
File "installer\files\base\addons\amxmodx\scripting\adminslots.sma" File "installer\files\base\scripting\adminslots.sma"
File "installer\files\base\addons\amxmodx\scripting\adminvote.sma" File "installer\files\base\scripting\adminvote.sma"
File "installer\files\base\addons\amxmodx\scripting\amxxpc" File "installer\files\base\scripting\amxxpc"
File "installer\files\base\addons\amxmodx\scripting\amxxpc.exe" File "installer\files\base\scripting\amxxpc.exe"
File "installer\files\base\addons\amxmodx\scripting\amxxpc32.dll" File "installer\files\base\scripting\amxxpc32.dll"
File "installer\files\base\addons\amxmodx\scripting\amxxpc32.so" File "installer\files\base\scripting\amxxpc32.so"
File "installer\files\base\addons\amxmodx\scripting\amxxpc64.dll" File "installer\files\base\scripting\amxxpc64.dll"
File "installer\files\base\addons\amxmodx\scripting\amxxpc64.so" File "installer\files\base\scripting\amxxpc64.so"
File "installer\files\base\addons\amxmodx\scripting\antiflood.sma" File "installer\files\base\scripting\antiflood.sma"
File "installer\files\base\addons\amxmodx\scripting\cmdmenu.sma" File "installer\files\base\scripting\cmdmenu.sma"
File "installer\files\base\addons\amxmodx\scripting\compile.exe" File "installer\files\base\scripting\compile.exe"
File "installer\files\base\addons\amxmodx\scripting\compile.sh" File "installer\files\base\scripting\compile.sh"
File "installer\files\base\addons\amxmodx\scripting\dlsym" File "installer\files\base\scripting\dlsym"
File "installer\files\base\addons\amxmodx\scripting\dlsym64" File "installer\files\base\scripting\dlsym64"
File "installer\files\base\addons\amxmodx\scripting\imessage.sma" File "installer\files\base\scripting\imessage.sma"
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\include" SetOutPath "$INSTDIR\files\base\scripting\include"
File "installer\files\base\addons\amxmodx\scripting\include\amxconst.inc" File "installer\files\base\scripting\include\amxconst.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmisc.inc" File "installer\files\base\scripting\include\amxmisc.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmodx.inc" File "installer\files\base\scripting\include\amxmodx.inc"
File "installer\files\base\addons\amxmodx\scripting\include\core.inc" File "installer\files\base\scripting\include\core.inc"
File "installer\files\base\addons\amxmodx\scripting\include\csstats.inc" File "installer\files\base\scripting\include\csstats.inc"
File "installer\files\base\addons\amxmodx\scripting\include\cstrike.inc" File "installer\files\base\scripting\include\cstrike.inc"
File "installer\files\base\addons\amxmodx\scripting\include\csx.inc" File "installer\files\base\scripting\include\csx.inc"
File "installer\files\base\addons\amxmodx\scripting\include\dbi.inc" File "installer\files\base\scripting\include\dbi.inc"
File "installer\files\base\addons\amxmodx\scripting\include\dodconst.inc" File "installer\files\base\scripting\include\dodconst.inc"
File "installer\files\base\addons\amxmodx\scripting\include\dodfun.inc" File "installer\files\base\scripting\include\dodfun.inc"
File "installer\files\base\addons\amxmodx\scripting\include\dodstats.inc" File "installer\files\base\scripting\include\dodstats.inc"
File "installer\files\base\addons\amxmodx\scripting\include\dodx.inc" File "installer\files\base\scripting\include\dodx.inc"
File "installer\files\base\addons\amxmodx\scripting\include\engine.inc" File "installer\files\base\scripting\include\engine.inc"
File "installer\files\base\addons\amxmodx\scripting\include\engine_const.inc" File "installer\files\base\scripting\include\engine_const.inc"
File "installer\files\base\addons\amxmodx\scripting\include\engine_stocks.inc" File "installer\files\base\scripting\include\engine_stocks.inc"
File "installer\files\base\addons\amxmodx\scripting\include\esf.inc" File "installer\files\base\scripting\include\esf.inc"
File "installer\files\base\addons\amxmodx\scripting\include\esf_const.inc" File "installer\files\base\scripting\include\esf_const.inc"
File "installer\files\base\addons\amxmodx\scripting\include\fakemeta.inc" File "installer\files\base\scripting\include\fakemeta.inc"
File "installer\files\base\addons\amxmodx\scripting\include\fakemeta_const.inc" File "installer\files\base\scripting\include\fakemeta_const.inc"
File "installer\files\base\addons\amxmodx\scripting\include\fakemeta_stocks.inc" File "installer\files\base\scripting\include\fakemeta_stocks.inc"
File "installer\files\base\addons\amxmodx\scripting\include\file.inc" File "installer\files\base\scripting\include\file.inc"
File "installer\files\base\addons\amxmodx\scripting\include\float.inc" File "installer\files\base\scripting\include\float.inc"
File "installer\files\base\addons\amxmodx\scripting\include\fun.inc" File "installer\files\base\scripting\include\fun.inc"
File "installer\files\base\addons\amxmodx\scripting\include\geoip.inc" File "installer\files\base\scripting\include\geoip.inc"
File "installer\files\base\addons\amxmodx\scripting\include\hlsdk_const.inc" File "installer\files\base\scripting\include\hlsdk_const.inc"
File "installer\files\base\addons\amxmodx\scripting\include\lang.inc" File "installer\files\base\scripting\include\lang.inc"
File "installer\files\base\addons\amxmodx\scripting\include\messages.inc" File "installer\files\base\scripting\include\messages.inc"
File "installer\files\base\addons\amxmodx\scripting\include\message_const.inc" File "installer\files\base\scripting\include\message_const.inc"
File "installer\files\base\addons\amxmodx\scripting\include\message_stocks.inc" File "installer\files\base\scripting\include\message_stocks.inc"
File "installer\files\base\addons\amxmodx\scripting\include\ns.inc" File "installer\files\base\scripting\include\ns.inc"
File "installer\files\base\addons\amxmodx\scripting\include\ns2amx.inc" File "installer\files\base\scripting\include\ns2amx.inc"
File "installer\files\base\addons\amxmodx\scripting\include\ns_const.inc" File "installer\files\base\scripting\include\ns_const.inc"
File "installer\files\base\addons\amxmodx\scripting\include\regex.inc" File "installer\files\base\scripting\include\regex.inc"
File "installer\files\base\addons\amxmodx\scripting\include\nvault.inc" File "installer\files\base\scripting\include\nvault.inc"
File "installer\files\base\addons\amxmodx\scripting\include\sockets.inc" File "installer\files\base\scripting\include\sockets.inc"
File "installer\files\base\addons\amxmodx\scripting\include\sorting.inc" File "installer\files\base\scripting\include\sorting.inc"
File "installer\files\base\addons\amxmodx\scripting\include\sqlx.inc" File "installer\files\base\scripting\include\sqlx.inc"
File "installer\files\base\addons\amxmodx\scripting\include\string.inc" File "installer\files\base\scripting\include\string.inc"
File "installer\files\base\addons\amxmodx\scripting\include\tfcconst.inc" File "installer\files\base\scripting\include\tfcconst.inc"
File "installer\files\base\addons\amxmodx\scripting\include\tfcstats.inc" File "installer\files\base\scripting\include\tfcstats.inc"
File "installer\files\base\addons\amxmodx\scripting\include\tfcx.inc" File "installer\files\base\scripting\include\tfcx.inc"
File "installer\files\base\addons\amxmodx\scripting\include\time.inc" File "installer\files\base\scripting\include\time.inc"
File "installer\files\base\addons\amxmodx\scripting\include\tsconst.inc" File "installer\files\base\scripting\include\tsconst.inc"
File "installer\files\base\addons\amxmodx\scripting\include\tsfun.inc" File "installer\files\base\scripting\include\tsfun.inc"
File "installer\files\base\addons\amxmodx\scripting\include\tsstats.inc" File "installer\files\base\scripting\include\tsstats.inc"
File "installer\files\base\addons\amxmodx\scripting\include\tsx.inc" File "installer\files\base\scripting\include\tsx.inc"
File "installer\files\base\addons\amxmodx\scripting\include\vault.inc" File "installer\files\base\scripting\include\vault.inc"
File "installer\files\base\addons\amxmodx\scripting\include\vector.inc" File "installer\files\base\scripting\include\vector.inc"
File "installer\files\base\addons\amxmodx\scripting\include\xs.inc" File "installer\files\base\scripting\include\xs.inc"
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat" SetOutPath "$INSTDIR\files\base\scripting\include\amxmod_compat"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\amxmod.inc" File "installer\files\base\scripting\include\amxmod_compat\amxmod.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\maths.inc" File "installer\files\base\scripting\include\amxmod_compat\maths.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\mysql.inc" File "installer\files\base\scripting\include\amxmod_compat\mysql.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\translator.inc" File "installer\files\base\scripting\include\amxmod_compat\translator.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\Vexd_Utilities.inc" File "installer\files\base\scripting\include\amxmod_compat\Vexd_Utilities.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM.inc" File "installer\files\base\scripting\include\amxmod_compat\VexdUM.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_const.inc" File "installer\files\base\scripting\include\amxmod_compat\VexdUM_const.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_stock.inc" File "installer\files\base\scripting\include\amxmod_compat\VexdUM_stock.inc"
File "installer\files\base\addons\amxmodx\scripting\include\amxmod_compat\xtrafun.inc" File "installer\files\base\scripting\include\amxmod_compat\xtrafun.inc"
SetOutPath "$INSTDIR\files\base\scripting" SetOutPath "$INSTDIR\files\base\scripting"
File "installer\files\base\addons\amxmodx\scripting\mapchooser.sma" File "installer\files\base\scripting\mapchooser.sma"
File "installer\files\base\addons\amxmodx\scripting\mapsmenu.sma" File "installer\files\base\scripting\mapsmenu.sma"
File "installer\files\base\addons\amxmodx\scripting\menufront.sma" File "installer\files\base\scripting\menufront.sma"
File "installer\files\base\addons\amxmodx\scripting\multilingual.sma" File "installer\files\base\scripting\multilingual.sma"
File "installer\files\base\addons\amxmodx\scripting\nextmap.sma" File "installer\files\base\scripting\nextmap.sma"
File "installer\files\base\addons\amxmodx\scripting\pausecfg.sma" File "installer\files\base\scripting\pausecfg.sma"
File "installer\files\base\addons\amxmodx\scripting\plmenu.sma" File "installer\files\base\scripting\plmenu.sma"
File "installer\files\base\addons\amxmodx\scripting\scrollmsg.sma" File "installer\files\base\scripting\scrollmsg.sma"
File "installer\files\base\addons\amxmodx\scripting\statscfg.sma" File "installer\files\base\scripting\statscfg.sma"
File "installer\files\base\addons\amxmodx\scripting\telemenu.sma" File "installer\files\base\scripting\telemenu.sma"
File "installer\files\base\addons\amxmodx\scripting\timeleft.sma" File "installer\files\base\scripting\timeleft.sma"
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat" SetOutPath "$INSTDIR\files\base\scripting\amxmod_compat"
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\amxmod_compat.sma" File "installer\files\base\scripting\amxmod_compat\amxmod_compat.sma"
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\core.sma" File "installer\files\base\scripting\amxmod_compat\core.sma"
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\mysql.sma" File "installer\files\base\scripting\amxmod_compat\mysql.sma"
File "installer\files\base\addons\amxmodx\scripting\amxmod_compat\vexdum.sma" File "installer\files\base\scripting\amxmod_compat\vexdum.sma"
SetOutPath "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite" SetOutPath "$INSTDIR\files\base\scripting\testsuite"
File "installer\files\base\addons\amxmodx\scripting\testsuite\callfunc_test.sma" File "installer\files\base\scripting\testsuite\callfunc_test.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\fakemeta_tests.sma" File "installer\files\base\scripting\testsuite\fakemeta_tests.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\fmttest.sma" File "installer\files\base\scripting\testsuite\fmttest.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\fwdtest1.sma" File "installer\files\base\scripting\testsuite\fwdtest1.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\fwdtest2.sma" File "installer\files\base\scripting\testsuite\fwdtest2.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\logtest.sma" File "installer\files\base\scripting\testsuite\logtest.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\menutest.sma" File "installer\files\base\scripting\testsuite\menutest.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\nvault_test.sma" File "installer\files\base\scripting\testsuite\nvault_test.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\sorttest.sma" File "installer\files\base\scripting\testsuite\sorttest.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sma" File "installer\files\base\scripting\testsuite\sqlxtest.sma"
File "installer\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sq3" File "installer\files\base\scripting\testsuite\sqlxtest.sq3"
File "installer\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sql" File "installer\files\base\scripting\testsuite\sqlxtest.sql"
SetOutPath "$INSTDIR\files\cstrike\configs" SetOutPath "$INSTDIR\files\cstrike\configs"
File "installer\files\cstrike\addons\amxmodx\configs\amxx.cfg" File "installer\files\cstrike\configs\amxx.cfg"
File "installer\files\cstrike\addons\amxmodx\configs\cmds.ini" File "installer\files\cstrike\configs\cmds.ini"
File "installer\files\cstrike\addons\amxmodx\configs\core.ini" File "installer\files\cstrike\configs\core.ini"
File "installer\files\cstrike\addons\amxmodx\configs\cvars.ini" File "installer\files\cstrike\configs\cvars.ini"
File "installer\files\cstrike\addons\amxmodx\configs\maps.ini" File "installer\files\cstrike\configs\maps.ini"
File "installer\files\cstrike\addons\amxmodx\configs\modules.ini" File "installer\files\cstrike\configs\modules.ini"
File "installer\files\cstrike\addons\amxmodx\configs\plugins.ini" File "installer\files\cstrike\configs\plugins.ini"
File "installer\files\cstrike\addons\amxmodx\configs\stats.ini" File "installer\files\cstrike\configs\stats.ini"
SetOutPath "$INSTDIR\files\cstrike\data" SetOutPath "$INSTDIR\files\cstrike\data"
File "installer\files\cstrike\addons\amxmodx\data\csstats.amxx" File "installer\files\cstrike\data\csstats.amxx"
File "installer\files\cstrike\addons\amxmodx\data\WinCSX.exe" File "installer\files\cstrike\data\WinCSX.exe"
SetOutPath "$INSTDIR\files\cstrike\modules" SetOutPath "$INSTDIR\files\cstrike\modules"
File "installer\files\cstrike\addons\amxmodx\modules\cstrike_amxx.dll" File "installer\files\cstrike\modules\cstrike_amxx.dll"
File "installer\files\cstrike\addons\amxmodx\modules\cstrike_amxx_i386.so" File "installer\files\cstrike\modules\cstrike_amxx_amd64.so"
File "installer\files\cstrike\addons\amxmodx\modules\csx_amxx.dll" File "installer\files\cstrike\modules\cstrike_amxx_i386.so"
File "installer\files\cstrike\addons\amxmodx\modules\csx_amxx_i386.so" File "installer\files\cstrike\modules\csx_amxx.dll"
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\addons\amxmodx\plugins\miscstats.amxx" File "installer\files\cstrike\plugins\miscstats.amxx"
File "installer\files\cstrike\addons\amxmodx\plugins\restmenu.amxx" File "installer\files\cstrike\plugins\restmenu.amxx"
File "installer\files\cstrike\addons\amxmodx\plugins\statsx.amxx" File "installer\files\cstrike\plugins\statsx.amxx"
File "installer\files\cstrike\addons\amxmodx\plugins\stats_logging.amxx" File "installer\files\cstrike\plugins\stats_logging.amxx"
SetOutPath "$INSTDIR\files\cstrike\scripting" SetOutPath "$INSTDIR\files\cstrike\scripting"
File "installer\files\cstrike\addons\amxmodx\scripting\csstats.sma" File "installer\files\cstrike\scripting\csstats.sma"
File "installer\files\cstrike\addons\amxmodx\scripting\miscstats.sma" File "installer\files\cstrike\scripting\miscstats.sma"
File "installer\files\cstrike\addons\amxmodx\scripting\restmenu.sma" File "installer\files\cstrike\scripting\restmenu.sma"
File "installer\files\cstrike\addons\amxmodx\scripting\statsx.sma" File "installer\files\cstrike\scripting\statsx.sma"
File "installer\files\cstrike\addons\amxmodx\scripting\stats_logging.sma" File "installer\files\cstrike\scripting\stats_logging.sma"
SetOutPath "$INSTDIR\files\dod\configs" SetOutPath "$INSTDIR\files\dod\configs"
File "installer\files\dod\addons\amxmodx\configs\core.ini" File "installer\files\dod\configs\core.ini"
File "installer\files\dod\addons\amxmodx\configs\cvars.ini" File "installer\files\dod\configs\cvars.ini"
File "installer\files\dod\addons\amxmodx\configs\maps.ini" File "installer\files\dod\configs\maps.ini"
File "installer\files\dod\addons\amxmodx\configs\modules.ini" File "installer\files\dod\configs\modules.ini"
File "installer\files\dod\addons\amxmodx\configs\plugins.ini" File "installer\files\dod\configs\plugins.ini"
SetOutPath "$INSTDIR\files\dod\data" SetOutPath "$INSTDIR\files\dod\data"
File "installer\files\dod\addons\amxmodx\data\dodstats.amxx" File "installer\files\dod\data\dodstats.amxx"
SetOutPath "$INSTDIR\files\dod\modules" SetOutPath "$INSTDIR\files\dod\modules"
File "installer\files\dod\addons\amxmodx\modules\dodfun_amxx.dll" File "installer\files\dod\modules\dodfun_amxx.dll"
File "installer\files\dod\addons\amxmodx\modules\dodfun_amxx_i386.so" File "installer\files\dod\modules\dodfun_amxx_i386.so"
File "installer\files\dod\addons\amxmodx\modules\dodx_amxx.dll" File "installer\files\dod\modules\dodx_amxx.dll"
File "installer\files\dod\addons\amxmodx\modules\dodx_amxx_i386.so" File "installer\files\dod\modules\dodx_amxx_i386.so"
SetOutPath "$INSTDIR\files\dod\plugins" SetOutPath "$INSTDIR\files\dod\plugins"
File "installer\files\dod\addons\amxmodx\plugins\plmenu.amxx" File "installer\files\dod\plugins\plmenu.amxx"
File "installer\files\dod\addons\amxmodx\plugins\stats.amxx" File "installer\files\dod\plugins\stats.amxx"
File "installer\files\dod\addons\amxmodx\plugins\statssounds.amxx" File "installer\files\dod\plugins\statssounds.amxx"
File "installer\files\dod\addons\amxmodx\plugins\stats_logging.amxx" File "installer\files\dod\plugins\stats_logging.amxx"
SetOutPath "$INSTDIR\files\dod\scripting" SetOutPath "$INSTDIR\files\dod\scripting"
File "installer\files\dod\addons\amxmodx\scripting\dodstats.sma" File "installer\files\dod\scripting\dodstats.sma"
File "installer\files\dod\addons\amxmodx\scripting\plmenu.sma" File "installer\files\dod\scripting\plmenu.sma"
File "installer\files\dod\addons\amxmodx\scripting\stats.sma" File "installer\files\dod\scripting\stats.sma"
File "installer\files\dod\addons\amxmodx\scripting\statssounds.sma" File "installer\files\dod\scripting\statssounds.sma"
File "installer\files\dod\addons\amxmodx\scripting\stats_logging.sma" File "installer\files\dod\scripting\stats_logging.sma"
SetOutPath "$INSTDIR\files\ns\configs" SetOutPath "$INSTDIR\files\ns\configs"
File "installer\files\ns\addons\amxmodx\configs\amxx.cfg" File "installer\files\ns\configs\amxx.cfg"
File "installer\files\ns\addons\amxmodx\configs\clcmds.ini" File "installer\files\ns\configs\clcmds.ini"
File "installer\files\ns\addons\amxmodx\configs\cmds.ini" File "installer\files\ns\configs\cmds.ini"
File "installer\files\ns\addons\amxmodx\configs\cvars.ini" File "installer\files\ns\configs\cvars.ini"
File "installer\files\ns\addons\amxmodx\configs\maps.ini" File "installer\files\ns\configs\maps.ini"
File "installer\files\ns\addons\amxmodx\configs\modules.ini" File "installer\files\ns\configs\modules.ini"
File "installer\files\ns\addons\amxmodx\configs\plugins.ini" File "installer\files\ns\configs\plugins.ini"
File "installer\files\ns\addons\amxmodx\configs\speech.ini" File "installer\files\ns\configs\speech.ini"
File "installer\files\ns\addons\amxmodx\configs\users.ini" File "installer\files\ns\configs\users.ini"
SetOutPath "$INSTDIR\files\ns\modules" SetOutPath "$INSTDIR\files\ns\modules"
File "installer\files\ns\addons\amxmodx\modules\ns_amxx.dll" File "installer\files\ns\modules\ns_amxx.dll"
File "installer\files\ns\addons\amxmodx\modules\ns_amxx_i386.so" File "installer\files\ns\modules\ns_amxx_i386.so"
SetOutPath "$INSTDIR\files\ns\plugins" SetOutPath "$INSTDIR\files\ns\plugins"
File "installer\files\ns\addons\amxmodx\plugins\idlekicker.amxx" File "installer\files\ns\plugins\idlekicker.amxx"
File "installer\files\ns\addons\amxmodx\plugins\mapchooser.amxx" File "installer\files\ns\plugins\mapchooser.amxx"
File "installer\files\ns\addons\amxmodx\plugins\nextmap.amxx" File "installer\files\ns\plugins\nextmap.amxx"
File "installer\files\ns\addons\amxmodx\plugins\nscommands.amxx" File "installer\files\ns\plugins\nscommands.amxx"
File "installer\files\ns\addons\amxmodx\plugins\timeleft.amxx" File "installer\files\ns\plugins\timeleft.amxx"
File "installer\files\ns\addons\amxmodx\plugins\unstuck.amxx" File "installer\files\ns\plugins\unstuck.amxx"
SetOutPath "$INSTDIR\files\ns\scripting" SetOutPath "$INSTDIR\files\ns\scripting"
File "installer\files\ns\addons\amxmodx\scripting\idlekicker.sma" File "installer\files\ns\scripting\idlekicker.sma"
File "installer\files\ns\addons\amxmodx\scripting\mapchooser.sma" File "installer\files\ns\scripting\mapchooser.sma"
File "installer\files\ns\addons\amxmodx\scripting\nextmap.sma" File "installer\files\ns\scripting\nextmap.sma"
File "installer\files\ns\addons\amxmodx\scripting\nscommands.sma" File "installer\files\ns\scripting\nscommands.sma"
File "installer\files\ns\addons\amxmodx\scripting\timeleft.sma" File "installer\files\ns\scripting\timeleft.sma"
File "installer\files\ns\addons\amxmodx\scripting\unstuck.sma" File "installer\files\ns\scripting\unstuck.sma"
SetOutPath "$INSTDIR\files\esf\configs" SetOutPath "$INSTDIR\files\esf\configs"
File "installer\files\esf\addons\amxmodx\configs\modules.ini" File "installer\files\esf\configs\modules.ini"
File "installer\files\esf\addons\amxmodx\configs\plugins.ini" File "installer\files\esf\configs\plugins.ini"
SetOutPath "$INSTDIR\files\esf\scripting" SetOutPath "$INSTDIR\files\esf\scripting"
File "installer\files\esf\addons\amxmodx\scripting\ESF_mod_tutorial.txt" File "installer\files\esf\scripting\ESF_mod_tutorial.txt"
File "installer\files\esf\addons\amxmodx\scripting\EvolutionX.Core.sma" File "installer\files\esf\scripting\EvolutionX.Core.sma"
SetOutPath "$INSTDIR\files\esf\plugins" SetOutPath "$INSTDIR\files\esf\plugins"
File "installer\files\esf\addons\amxmodx\plugins\EvolutionX.Core.amxx" File "installer\files\esf\plugins\EvolutionX.Core.amxx"
SetOutPath "$INSTDIR\files\tfc\configs" SetOutPath "$INSTDIR\files\tfc\configs"
File "installer\files\tfc\addons\amxmodx\configs\core.ini" File "installer\files\tfc\configs\core.ini"
File "installer\files\tfc\addons\amxmodx\configs\cvars.ini" File "installer\files\tfc\configs\cvars.ini"
File "installer\files\tfc\addons\amxmodx\configs\maps.ini" File "installer\files\tfc\configs\maps.ini"
File "installer\files\tfc\addons\amxmodx\configs\modules.ini" File "installer\files\tfc\configs\modules.ini"
File "installer\files\tfc\addons\amxmodx\configs\plugins.ini" File "installer\files\tfc\configs\plugins.ini"
SetOutPath "$INSTDIR\files\tfc\data" SetOutPath "$INSTDIR\files\tfc\data"
File "installer\files\tfc\addons\amxmodx\data\tfcstats.amxx" File "installer\files\tfc\data\tfcstats.amxx"
SetOutPath "$INSTDIR\files\tfc\modules" SetOutPath "$INSTDIR\files\tfc\modules"
File "installer\files\tfc\addons\amxmodx\modules\tfcx_amxx.dll" File "installer\files\tfc\modules\tfcx_amxx.dll"
File "installer\files\tfc\addons\amxmodx\modules\tfcx_amxx_i386.so" File "installer\files\tfc\modules\tfcx_amxx_i386.so"
SetOutPath "$INSTDIR\files\tfc\plugins" SetOutPath "$INSTDIR\files\tfc\plugins"
File "installer\files\tfc\addons\amxmodx\plugins\plmenu.amxx" File "installer\files\tfc\plugins\plmenu.amxx"
File "installer\files\tfc\addons\amxmodx\plugins\stats.amxx" File "installer\files\tfc\plugins\stats.amxx"
File "installer\files\tfc\addons\amxmodx\plugins\statssounds.amxx" File "installer\files\tfc\plugins\statssounds.amxx"
File "installer\files\tfc\addons\amxmodx\plugins\stats_logging.amxx" File "installer\files\tfc\plugins\stats_logging.amxx"
SetOutPath "$INSTDIR\files\tfc\scripting" SetOutPath "$INSTDIR\files\tfc\scripting"
File "installer\files\tfc\addons\amxmodx\scripting\plmenu.sma" File "installer\files\tfc\scripting\plmenu.sma"
File "installer\files\tfc\addons\amxmodx\scripting\stats.sma" File "installer\files\tfc\scripting\stats.sma"
File "installer\files\tfc\addons\amxmodx\scripting\statssounds.sma" File "installer\files\tfc\scripting\statssounds.sma"
File "installer\files\tfc\addons\amxmodx\scripting\stats_logging.sma" File "installer\files\tfc\scripting\stats_logging.sma"
File "installer\files\tfc\addons\amxmodx\scripting\tfcstats.sma" File "installer\files\tfc\scripting\tfcstats.sma"
SetOutPath "$INSTDIR\files\ts\configs" SetOutPath "$INSTDIR\files\ts\configs"
File "installer\files\ts\addons\amxmodx\configs\core.ini" File "installer\files\ts\configs\core.ini"
File "installer\files\ts\addons\amxmodx\configs\maps.ini" File "installer\files\ts\configs\maps.ini"
File "installer\files\ts\addons\amxmodx\configs\modules.ini" File "installer\files\ts\configs\modules.ini"
File "installer\files\ts\addons\amxmodx\configs\plugins.ini" File "installer\files\ts\configs\plugins.ini"
SetOutPath "$INSTDIR\files\ts\data" SetOutPath "$INSTDIR\files\ts\data"
File "installer\files\ts\addons\amxmodx\data\tsstats.amxx" File "installer\files\ts\data\tsstats.amxx"
SetOutPath "$INSTDIR\files\ts\modules" SetOutPath "$INSTDIR\files\ts\modules"
File "installer\files\ts\addons\amxmodx\modules\tsx_amxx.dll" File "installer\files\ts\modules\tsx_amxx.dll"
File "installer\files\ts\addons\amxmodx\modules\tsx_amxx_i386.so" File "installer\files\ts\modules\tsx_amxx_i386.so"
File "installer\files\ts\addons\amxmodx\modules\tsfun_amxx.dll" File "installer\files\ts\modules\tsfun_amxx.dll"
File "installer\files\ts\addons\amxmodx\modules\tsfun_amxx_i386.so" File "installer\files\ts\modules\tsfun_amxx_i386.so"
SetOutPath "$INSTDIR\files\ts\plugins" SetOutPath "$INSTDIR\files\ts\plugins"
File "installer\files\ts\addons\amxmodx\plugins\stats.amxx" File "installer\files\ts\plugins\stats.amxx"
File "installer\files\ts\addons\amxmodx\plugins\statssounds.amxx" File "installer\files\ts\plugins\statssounds.amxx"
File "installer\files\ts\addons\amxmodx\plugins\stats_logging.amxx" File "installer\files\ts\plugins\stats_logging.amxx"
SetOutPath "$INSTDIR\files\ts\scripting" SetOutPath "$INSTDIR\files\ts\scripting"
File "installer\files\ts\addons\amxmodx\scripting\stats.sma" File "installer\files\ts\scripting\stats.sma"
File "installer\files\ts\addons\amxmodx\scripting\statssounds.sma" File "installer\files\ts\scripting\statssounds.sma"
File "installer\files\ts\addons\amxmodx\scripting\stats_logging.sma" File "installer\files\ts\scripting\stats_logging.sma"
File "installer\files\ts\addons\amxmodx\scripting\tsstats.sma" File "installer\files\ts\scripting\tsstats.sma"
SetOutPath "$INSTDIR\" SetOutPath "$INSTDIR\"
File "installer\gpl.txt" File "installer\gpl.txt"
@ -572,8 +585,10 @@ 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"
@ -585,113 +600,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\addons\amxmodx\scripting\timeleft.sma" Delete "$INSTDIR\files\base\scripting\timeleft.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\telemenu.sma" Delete "$INSTDIR\files\base\scripting\telemenu.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\statscfg.sma" Delete "$INSTDIR\files\base\scripting\statscfg.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\scrollmsg.sma" Delete "$INSTDIR\files\base\scripting\scrollmsg.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\plmenu.sma" Delete "$INSTDIR\files\base\scripting\plmenu.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\pausecfg.sma" Delete "$INSTDIR\files\base\scripting\pausecfg.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\nextmap.sma" Delete "$INSTDIR\files\base\scripting\nextmap.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\multilingual.sma" Delete "$INSTDIR\files\base\scripting\multilingual.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\menufront.sma" Delete "$INSTDIR\files\base\scripting\menufront.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\mapsmenu.sma" Delete "$INSTDIR\files\base\scripting\mapsmenu.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\mapchooser.sma" Delete "$INSTDIR\files\base\scripting\mapchooser.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\amxmod.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\amxmod.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\maths.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\maths.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\mysql.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\mysql.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\translator.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\translator.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\Vexd_Utilities.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\Vexd_Utilities.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\VexdUM.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_const.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\VexdUM_const.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\VexdUM_stock.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\VexdUM_stock.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod_compat\xtrafun.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod_compat\xtrafun.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\xtrafun.inc" Delete "$INSTDIR\files\base\scripting\include\xtrafun.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\xs.inc" Delete "$INSTDIR\files\base\scripting\include\xs.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\Vexd_Utilities.inc" Delete "$INSTDIR\files\base\scripting\include\Vexd_Utilities.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\vector.inc" Delete "$INSTDIR\files\base\scripting\include\vector.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\vault.inc" Delete "$INSTDIR\files\base\scripting\include\vault.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsx.inc" Delete "$INSTDIR\files\base\scripting\include\tsx.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsfun.inc" Delete "$INSTDIR\files\base\scripting\include\tsfun.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsstats.inc" Delete "$INSTDIR\files\base\scripting\include\tsstats.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tsconst.inc" Delete "$INSTDIR\files\base\scripting\include\tsconst.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tfcx.inc" Delete "$INSTDIR\files\base\scripting\include\tfcx.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tfcstats.inc" Delete "$INSTDIR\files\base\scripting\include\tfcstats.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\tfcconst.inc" Delete "$INSTDIR\files\base\scripting\include\tfcconst.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\time.inc" Delete "$INSTDIR\files\base\scripting\include\time.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\string.inc" Delete "$INSTDIR\files\base\scripting\include\string.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\sqlx.inc" Delete "$INSTDIR\files\base\scripting\include\sqlx.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\sorting.inc" Delete "$INSTDIR\files\base\scripting\include\sorting.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\sockets.inc" Delete "$INSTDIR\files\base\scripting\include\sockets.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\regex.inc" Delete "$INSTDIR\files\base\scripting\include\regex.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\ns_const.inc" Delete "$INSTDIR\files\base\scripting\include\ns_const.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\ns2amx.inc" Delete "$INSTDIR\files\base\scripting\include\ns2amx.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\ns.inc" Delete "$INSTDIR\files\base\scripting\include\ns.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\nvault.inc" Delete "$INSTDIR\files\base\scripting\include\nvault.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\message_stocks.inc" Delete "$INSTDIR\files\base\scripting\include\message_stocks.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\message_const.inc" Delete "$INSTDIR\files\base\scripting\include\message_const.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\messages.inc" Delete "$INSTDIR\files\base\scripting\include\messages.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\lang.inc" Delete "$INSTDIR\files\base\scripting\include\lang.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\hlsdk_const.inc" Delete "$INSTDIR\files\base\scripting\include\hlsdk_const.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\geoip.inc" Delete "$INSTDIR\files\base\scripting\include\geoip.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fun.inc" Delete "$INSTDIR\files\base\scripting\include\fun.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\float.inc" Delete "$INSTDIR\files\base\scripting\include\float.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\file.inc" Delete "$INSTDIR\files\base\scripting\include\file.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fakemeta_stocks.inc" Delete "$INSTDIR\files\base\scripting\include\fakemeta_stocks.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fakemeta_const.inc" Delete "$INSTDIR\files\base\scripting\include\fakemeta_const.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\fakemeta.inc" Delete "$INSTDIR\files\base\scripting\include\fakemeta.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\esf.inc" Delete "$INSTDIR\files\base\scripting\include\esf.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\esf_const.inc" Delete "$INSTDIR\files\base\scripting\include\esf_const.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\engine_stocks.inc" Delete "$INSTDIR\files\base\scripting\include\engine_stocks.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\engine_const.inc" Delete "$INSTDIR\files\base\scripting\include\engine_const.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\engine.inc" Delete "$INSTDIR\files\base\scripting\include\engine.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodx.inc" Delete "$INSTDIR\files\base\scripting\include\dodx.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodstats.inc" Delete "$INSTDIR\files\base\scripting\include\dodstats.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodfun.inc" Delete "$INSTDIR\files\base\scripting\include\dodfun.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dodconst.inc" Delete "$INSTDIR\files\base\scripting\include\dodconst.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\dbi.inc" Delete "$INSTDIR\files\base\scripting\include\dbi.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\csx.inc" Delete "$INSTDIR\files\base\scripting\include\csx.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\cstrike.inc" Delete "$INSTDIR\files\base\scripting\include\cstrike.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\csstats.inc" Delete "$INSTDIR\files\base\scripting\include\csstats.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\core.inc" Delete "$INSTDIR\files\base\scripting\include\core.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmodx.inc" Delete "$INSTDIR\files\base\scripting\include\amxmodx.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmod.inc" Delete "$INSTDIR\files\base\scripting\include\amxmod.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxmisc.inc" Delete "$INSTDIR\files\base\scripting\include\amxmisc.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\include\amxconst.inc" Delete "$INSTDIR\files\base\scripting\include\amxconst.inc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\imessage.sma" Delete "$INSTDIR\files\base\scripting\imessage.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\dlsym64" Delete "$INSTDIR\files\base\scripting\dlsym64"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\dlsym" Delete "$INSTDIR\files\base\scripting\dlsym"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\compile.sh" Delete "$INSTDIR\files\base\scripting\compile.sh"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\compile.exe" Delete "$INSTDIR\files\base\scripting\compile.exe"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\cmdmenu.sma" Delete "$INSTDIR\files\base\scripting\cmdmenu.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\antiflood.sma" Delete "$INSTDIR\files\base\scripting\antiflood.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc64.so" Delete "$INSTDIR\files\base\scripting\amxxpc64.so"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc64.dll" Delete "$INSTDIR\files\base\scripting\amxxpc64.dll"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc32.so" Delete "$INSTDIR\files\base\scripting\amxxpc32.so"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc32.dll" Delete "$INSTDIR\files\base\scripting\amxxpc32.dll"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc.exe" Delete "$INSTDIR\files\base\scripting\amxxpc.exe"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxxpc" Delete "$INSTDIR\files\base\scripting\amxxpc"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminvote.sma" Delete "$INSTDIR\files\base\scripting\adminvote.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminslots.sma" Delete "$INSTDIR\files\base\scripting\adminslots.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminhelp.sma" Delete "$INSTDIR\files\base\scripting\adminhelp.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\admincmd.sma" Delete "$INSTDIR\files\base\scripting\admincmd.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\adminchat.sma" Delete "$INSTDIR\files\base\scripting\adminchat.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\admin.sma" Delete "$INSTDIR\files\base\scripting\admin.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\amxmod_compat.sma" Delete "$INSTDIR\files\base\scripting\amxmod_compat\amxmod_compat.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\core.sma" Delete "$INSTDIR\files\base\scripting\amxmod_compat\core.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\mysql.sma" Delete "$INSTDIR\files\base\scripting\amxmod_compat\mysql.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat\vexdum.sma" Delete "$INSTDIR\files\base\scripting\amxmod_compat\vexdum.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\callfunc_test.sma" Delete "$INSTDIR\files\base\scripting\testsuite\callfunc_test.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fakemeta_tests.sma" Delete "$INSTDIR\files\base\scripting\testsuite\fakemeta_tests.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fmttest.sma" Delete "$INSTDIR\files\base\scripting\testsuite\fmttest.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fwdtest1.sma" Delete "$INSTDIR\files\base\scripting\testsuite\fwdtest1.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\fwdtest2.sma" Delete "$INSTDIR\files\base\scripting\testsuite\fwdtest2.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\logtest.sma" Delete "$INSTDIR\files\base\scripting\testsuite\logtest.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\menutest.sma" Delete "$INSTDIR\files\base\scripting\testsuite\menutest.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\nvault_test.sma" Delete "$INSTDIR\files\base\scripting\testsuite\nvault_test.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sorttest.sma" Delete "$INSTDIR\files\base\scripting\testsuite\sorttest.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sma" Delete "$INSTDIR\files\base\scripting\testsuite\sqlxtest.sma"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sq3" Delete "$INSTDIR\files\base\scripting\testsuite\sqlxtest.sq3"
Delete "$INSTDIR\files\base\addons\amxmodx\scripting\testsuite\sqlxtest.sql" Delete "$INSTDIR\files\base\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"
@ -714,26 +729,37 @@ 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"
@ -815,7 +841,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 Studio.lnk" Delete "$DESKTOP\AMX Mod X Editor.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"
@ -848,9 +874,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\addons\amxmodx\scripting\include\amxmod_compat" RMDir "$INSTDIR\files\base\scripting\include\amxmod_compat"
RMDir "$INSTDIR\files\base\addons\amxmodx\scripting\include" RMDir "$INSTDIR\files\base\scripting\include"
RMDir "$INSTDIR\files\base\addons\amxmodx\scripting\amxmod_compat" RMDir "$INSTDIR\files\base\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"

View File

@ -32,8 +32,8 @@
-M -M
-$M16384,1048576 -$M16384,1048576
-K$00400000 -K$00400000
-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" -LE"c:\programme\borland\delphi7\Projects\Bpl"
-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" -LN"c:\programme\borland\delphi7\Projects\Bpl"
-DmadExcept -DmadExcept
-w-UNSAFE_TYPE -w-UNSAFE_TYPE
-w-UNSAFE_CODE -w-UNSAFE_CODE

View File

@ -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)
- mxFlatPack Component Pack (www.maxcomponents.net/components.html) - FlatPack Component Pack (www.torry.net)
- 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.

View File

@ -3,15 +3,14 @@ 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, Dialogs, JclFileUtils; TlHelp32, IdFTPCommon, ComCtrls, JclFileUtils, Dialogs;
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);
@ -89,17 +88,6 @@ 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);
@ -185,12 +173,8 @@ 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
try frmMain.IdFTP.Put(eFile, eDestination);
frmMain.IdFTP.Put(eFile, eDestination); AddDone;
AddDone;
except
AddFailed;
end;
end; end;
procedure FTPMakeDir(eDir: String); procedure FTPMakeDir(eDir: String);
@ -229,7 +213,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
@ -237,7 +221,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;
@ -296,13 +280,13 @@ var eStr: TStringList;
UpdatePluginsIni: Boolean; UpdatePluginsIni: Boolean;
begin begin
AddStatus('Scanning for directories...', clBlack); AddStatus('Scanning for directories...', clBlack);
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'files\*.*', faDirectory, True, True) do begin with GetAllFiles(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'files\*.*', faAnyFile, True, False) do begin with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'files\*.*', faAnyFile, True, False) do begin
FileList.Text := Text; FileList.Text := Text;
Free; Free;
end; end;
@ -343,9 +327,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(Application.ExeName)) + 7, Length(DirList[i])); DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 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(Application.ExeName)) + 7, Length(FileList[i])); FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 7, Length(FileList[i]));
{ liblist.gam } { liblist.gam }
if not FileExists(ePath + 'liblist.gam') then begin if not FileExists(ePath + 'liblist.gam') then begin
@ -366,10 +350,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
@ -454,44 +438,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(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), CopyConfig); FileCopy(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), CopyConfig); FileCopy(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig); FileCopy(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig); FileCopy(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig); FileCopy(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig); FileCopy(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig); FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
end; end;
end; end;
end; end;
@ -612,7 +596,7 @@ begin
frmMain.IdFTP.Connect; frmMain.IdFTP.Connect;
Result := True; Result := True;
except except
MessageBox(frmMain.Handle, 'Failed to reconnect. Installation has been aborted.', PChar(Application.Title), MB_ICONSTOP); MessageBox(frmMain.Handle, 'Failed to reconnect. Installation aborted.', PChar(Application.Title), MB_ICONSTOP);
end; end;
end; end;
end; end;
@ -630,12 +614,10 @@ begin
ePath := '/'; ePath := '/';
CurNode := frmMain.trvDirectories.Selected; CurNode := frmMain.trvDirectories.Selected;
if (Assigned(CurNode)) then begin repeat
repeat ePath := '/' + CurNode.Text + ePath;
ePath := '/' + CurNode.Text + ePath; CurNode := CurNode.Parent;
CurNode := CurNode.Parent; until (not Assigned(CurNode));
until (not Assigned(CurNode));
end;
Screen.Cursor := crAppStart; Screen.Cursor := crAppStart;
frmMain.cmdCancel.Show; frmMain.cmdCancel.Show;
@ -643,13 +625,13 @@ begin
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(Application.ExeName) + 'temp\*.*', faDirectory, True, True) do begin with GetAllFiles(ExtractFilePath(ParamStr(0)) + '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(Application.ExeName) + 'temp\*.*', faAnyFile, True, False) do begin with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'temp\*.*', faAnyFile, True, False) do begin
FileList.Text := Text; FileList.Text := Text;
Free; Free;
end; end;
@ -660,9 +642,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(Application.ExeName)) + 6, Length(DirList[i])); DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 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(Application.ExeName)) + 6, Length(FileList[i])); FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 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);
@ -682,7 +664,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(Application.ExeName) + 'temp\liblist.gam'); eStr.LoadFromFile(ExtractFilePath(ParamStr(0)) + '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);
@ -700,8 +682,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(Application.ExeName) + 'temp\liblist.gam', 0); FileSetAttr(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam', 0);
eStr.SaveToFile(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam'); eStr.SaveToFile(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
end; end;
eStr.Free; eStr.Free;
AddDone; AddDone;
@ -767,8 +749,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(Application.ExeName) + 'temp\' + FileList[i]) then begin if FileExists(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]) then begin
frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i]); frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]);
UploadAgain: UploadAgain:
try try
eGoBack := False; eGoBack := False;
@ -780,11 +762,11 @@ begin
AddStatus('Warning: CHMOD not supported.', clMaroon); AddStatus('Warning: CHMOD not supported.', clMaroon);
end; end;
UploadFile(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig); UploadFile(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig);
try try
if FileList[i] = 'liblist.gam' then if FileList[i] = 'liblist.gam' then
frmMain.IdFTP.Site('CHMOD 444 liblist.gam'); frmMain.IdFTP.Size('CHMOD 444 liblist.gam');
except except
AddStatus('Warning: CHMOD not supported.', clMaroon); AddStatus('Warning: CHMOD not supported.', clMaroon);
end; end;
@ -823,8 +805,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(Application.ExeName) + 'temp')) then if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
DelTree(ExtractFilePath(Application.ExeName) + 'temp'); DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
AddDone; AddDone;
frmMain.ggeAll.Progress := frmMain.ggeAll.MaxValue; frmMain.ggeAll.Progress := frmMain.ggeAll.MaxValue;

View File

@ -5056,7 +5056,6 @@ 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'
@ -6102,14 +6101,14 @@ object frmMain: TfrmMain
end end
object lblStep2: TLabel object lblStep2: TLabel
Left = 44 Left = 44
Top = 230 Top = 254
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 = 188 Top = 214
Width = 117 Width = 117
Height = 13 Height = 13
Caption = '3. Select a game addon:' Caption = '3. Select a game addon:'
@ -6123,7 +6122,7 @@ object frmMain: TfrmMain
end end
object lblStep5: TLabel object lblStep5: TLabel
Left = 44 Left = 44
Top = 334 Top = 358
Width = 64 Width = 64
Height = 13 Height = 13
Caption = '5. Click Next.' Caption = '5. Click Next.'
@ -6313,7 +6312,7 @@ object frmMain: TfrmMain
end end
object cmdConnect: TFlatButton object cmdConnect: TFlatButton
Left = 416 Left = 416
Top = 247 Top = 269
Width = 71 Width = 71
Height = 20 Height = 20
ColorFocused = 16245198 ColorFocused = 16245198
@ -6327,35 +6326,30 @@ object frmMain: TfrmMain
end end
object pnlDirectory: TPanel object pnlDirectory: TPanel
Left = 44 Left = 44
Top = 246 Top = 270
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
Anchors = [akLeft, akTop, akRight, akBottom] Align = alClient
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 = 204 Top = 230
Width = 443 Width = 443
Height = 21 Height = 21
Style = csDropDownList Style = csDropDownList
@ -6378,9 +6372,27 @@ object frmMain: TfrmMain
Left = 44 Left = 44
Top = 158 Top = 158
Width = 441 Width = 441
Height = 25 Height = 50
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
@ -6405,7 +6417,6 @@ 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
@ -6758,7 +6769,6 @@ 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