1 Commits

Author SHA1 Message Date
45bccd7a7f Tagged 1.76b 2007-02-02 05:10:54 +00:00
115 changed files with 1444 additions and 2350 deletions

View File

@ -226,8 +226,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 +236,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 +248,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,8 +356,6 @@ cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
} }
} }
m_InExec = false;
return retVal; return retVal;
} }
@ -460,20 +452,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,15 +524,8 @@ 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;
if (fwd->m_InExec)
{
fwd->m_ToDelete = true;
} else {
fwd->isFree = true;
m_FreeSPForwards.push(id); 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, int fwd_type)

View File

@ -143,7 +143,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 +152,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;

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

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,26 +35,9 @@
#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"}; 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)
{ {
int len; int len;
@ -1105,31 +1088,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 +1216,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 +1253,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 +1288,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 +1535,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;
@ -2342,15 +2283,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 +2453,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;
@ -4317,8 +4253,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 +4263,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;
} }

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.76b"
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

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

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

@ -904,7 +904,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,15 +940,10 @@ 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 = g_menucmds.GetWatchIter();
} else {
++a; ++a;
} }
} }
} }
}
/* check for PLUGIN_HANDLED_MAIN and block hl call if needed */ /* check for PLUGIN_HANDLED_MAIN and block hl call if needed */
RETURN_META(result); RETURN_META(result);
@ -1217,7 +1211,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);

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

@ -343,16 +343,13 @@ 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)
{ {
@ -379,28 +376,19 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
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_display, pItem->name.c_str()); _snprintf(buffer, sizeof(buffer)-1, "\\r%d.\\w %s\n", ++option, pItem->name.c_str());
} else { } else {
_snprintf(buffer, sizeof(buffer)-1, "%d. %s\n", option_display, pItem->name.c_str()); _snprintf(buffer, sizeof(buffer)-1, "%d. %s\n", ++option, 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++;

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

@ -82,29 +82,13 @@ void amx_command()
CPluginMngr::CPlugin *plugin = g_plugins.findPlugin(sPlugin); CPluginMngr::CPlugin *plugin = g_plugins.findPlugin(sPlugin);
if (plugin && plugin->isValid()) if (plugin && plugin->isValid())
{
if (plugin->isPaused())
{
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(); plugin->pausePlugin();
print_srvconsole("Paused plugin \"%s\"\n", plugin->getName()); 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)
{ {
const char* sPlugin = CMD_ARGV(2); const char* sPlugin = CMD_ARGV(2);
@ -112,22 +96,15 @@ void amx_command()
CPluginMngr::CPlugin *plugin = g_plugins.findPlugin(sPlugin); CPluginMngr::CPlugin *plugin = g_plugins.findPlugin(sPlugin);
if (plugin && plugin->isValid() && plugin->isPaused()) if (plugin && plugin->isValid() && plugin->isPaused())
{
if (plugin->isStopped())
{
print_srvconsole("Plugin \"%s\" is stopped and may not be unpaused.\n", plugin->getName());
}
else
{ {
plugin->unpausePlugin(); plugin->unpausePlugin();
print_srvconsole("Unpaused plugin \"%s\"\n", plugin->getName()); 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

@ -27,8 +27,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,7,6,3387 FILEVERSION 1,7,6,2
PRODUCTVERSION 1,7,6,3387 PRODUCTVERSION 1,7,6,2
FILEFLAGSMASK 0x17L FILEFLAGSMASK 0x17L
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -45,12 +45,12 @@ BEGIN
BEGIN BEGIN
VALUE "Comments", "AMX Mod X" VALUE "Comments", "AMX Mod X"
VALUE "FileDescription", "AMX Mod X" VALUE "FileDescription", "AMX Mod X"
VALUE "FileVersion", "1.76d" VALUE "FileVersion", "1.76b"
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.76b"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

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

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

@ -58,7 +58,7 @@ 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

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.76a"
#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"

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

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

@ -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]); peng = &(EnginePost[func]);
patchAddr = EngineAddrsPost[func]; else
} else {
peng = &(Engine[func]); peng = &(Engine[func]);
patchAddr = EngineAddrs[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.76b"
#define MODULE_AUTHOR "AMX Mod X Dev Team" #define MODULE_AUTHOR "AMX Mod X Dev Team"
#define MODULE_URL "http://www.amxmodx.org" #define MODULE_URL "http://www.amxmodx.org"
#define MODULE_LOGTAG "FAKEMETA" #define MODULE_LOGTAG "FAKEMETA"

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

@ -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=1
Debug=0 Debug=0
PreRelease=0 PreRelease=0
Special=0 Special=0
@ -126,7 +126,7 @@ 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.1
InternalName= InternalName=
LegalCopyright=AMX Mod X Dev Team LegalCopyright=AMX Mod X Dev Team
LegalTrademarks= LegalTrademarks=

Binary file not shown.

Binary file not shown.

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 + '.inc'
else
Result := eFilename + '.sma'; 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

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.

View File

@ -730,12 +730,11 @@ object frmMain: TfrmMain
Top = 72 Top = 72
Width = 885 Width = 885
RightClickSelect = False RightClickSelect = False
Painter = mtpDocuments
Tabs = < Tabs = <
item item
Caption = '< 1 Untitled.sma >' Caption = '< 1 Untitled.sma >'
Selected = True
end> end>
Painter = mtpDocuments
OnTabClosing = tbDocsTabClosing OnTabClosing = tbDocsTabClosing
OnTabSelected = tbDocsTabSelected OnTabSelected = tbDocsTabSelected
OnMouseDown = tbDocsMouseDown OnMouseDown = tbDocsMouseDown
@ -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
@ -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;
@ -1296,7 +1296,7 @@ begin
b := Integer(frmAllFilesForm.lstFiles.Items.Objects[a]); b := Integer(frmAllFilesForm.lstFiles.Items.Objects[a]);
if TDocument(Collection.Items[b]).Untitled then begin if TDocument(Collection.Items[b]).Untitled then begin
if sdSave.Execute then begin if sdSave.Execute then begin
TDocument(Collection.Items[b]).FileName := AddExtension(sdSave.FileName, TDocument(Collection.Items[b]).Highlighter, TDocument(Collection.Items[b])); 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 +1547,7 @@ begin
else begin else begin
frmMain.sdSave.FilterIndex := 1; frmMain.sdSave.FilterIndex := 1;
if frmMain.sdSave.Execute then begin if frmMain.sdSave.Execute then begin
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem); eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.Save; eItem.Save;
end end
else begin else begin
@ -1571,7 +1571,7 @@ begin
else begin else begin
frmMain.sdSave.FilterIndex := 2; frmMain.sdSave.FilterIndex := 2;
if frmMain.sdSave.Execute then begin if frmMain.sdSave.Execute then begin
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem); eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.Save; eItem.Save;
end end
else begin else begin
@ -1595,7 +1595,7 @@ begin
else begin else begin
frmMain.sdSave.FilterIndex := 0; frmMain.sdSave.FilterIndex := 0;
if frmMain.sdSave.Execute then begin if frmMain.sdSave.Execute then begin
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem); eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.Save; eItem.Save;
end end
else begin else begin
@ -1706,7 +1706,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 +2231,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

@ -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.76b

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.76b"
!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"
@ -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,9 +350,9 @@ 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');
@ -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,7 +762,7 @@ 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
@ -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

View File

@ -4,12 +4,12 @@ interface
uses uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, mxFlatControls, JvPageList, Dialogs, TFlatRadioButtonUnit, StdCtrls, ComCtrls, mxFlatControls, JvPageList,
ExtCtrls, JvExControls, JvComponent, TFlatButtonUnit, jpeg, TFlatEditUnit, ExtCtrls, JvExControls, JvComponent, TFlatButtonUnit, jpeg, TFlatEditUnit,
TFlatGaugeUnit, ImgList, FileCtrl, Registry, CheckLst, TFlatComboBoxUnit, TFlatGaugeUnit, ImgList, FileCtrl, Registry, CheckLst, TFlatComboBoxUnit,
TFlatCheckBoxUnit, IdBaseComponent, IdComponent, IdTCPConnection, TFlatCheckBoxUnit, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP, IdException, IdAntiFreezeBase, IdAntiFreeze, IdTCPClient, IdFTP, IdException, IdAntiFreezeBase, IdAntiFreeze,
IdIntercept, IdLogBase, IdLogFile, JclFileUtils, TFlatRadioButtonUnit; IdIntercept, IdLogBase, IdLogFile, JclFileUtils;
type type
TfrmMain = class(TForm) TfrmMain = class(TForm)
@ -108,9 +108,10 @@ type
pnlOS: TPanel; pnlOS: TPanel;
optWindows: TFlatRadioButton; optWindows: TFlatRadioButton;
optLinux32: TFlatRadioButton; optLinux32: TFlatRadioButton;
optLinux64: TFlatRadioButton;
lblOSNote: TLabel;
lblStep5: TLabel; lblStep5: TLabel;
lblFTP: TLabel; lblFTP: TLabel;
optLinux64: TFlatRadioButton;
procedure jvwStepsCancelButtonClick(Sender: TObject); procedure jvwStepsCancelButtonClick(Sender: TObject);
procedure cmdCancelClick(Sender: TObject); procedure cmdCancelClick(Sender: TObject);
procedure cmdNextClick(Sender: TObject); procedure cmdNextClick(Sender: TObject);
@ -122,6 +123,7 @@ type
procedure cmdProxySettingsClick(Sender: TObject); procedure cmdProxySettingsClick(Sender: TObject);
procedure txtPortChange(Sender: TObject); procedure txtPortChange(Sender: TObject);
procedure trvDirectoriesExpanded(Sender: TObject; Node: TTreeNode); procedure trvDirectoriesExpanded(Sender: TObject; Node: TTreeNode);
procedure trvDirectoriesChange(Sender: TObject; Node: TTreeNode);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
procedure IdFTPWork(Sender: TObject; AWorkMode: TWorkMode; procedure IdFTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer); const AWorkCount: Integer);
@ -135,9 +137,6 @@ type
procedure frbFTPClick(Sender: TObject); procedure frbFTPClick(Sender: TObject);
procedure frbLocalClick(Sender: TObject); procedure frbLocalClick(Sender: TObject);
procedure trvModsClick(Sender: TObject); procedure trvModsClick(Sender: TObject);
procedure trvDirectoriesMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure trvDirectoriesChange(Sender: TObject; Node: TTreeNode);
private private
OldProgress: Integer; OldProgress: Integer;
CurrProgress: Integer; CurrProgress: Integer;
@ -149,7 +148,7 @@ var
frmMain: TfrmMain; frmMain: TfrmMain;
gMultiAccount: Boolean; gMultiAccount: Boolean;
const VERSION = '1.76d'; const VERSION = '1.76b';
implementation implementation
@ -215,12 +214,10 @@ begin
eStr := TStringList.Create; eStr := TStringList.Create;
ePath := '/'; ePath := '/';
CurNode := trvDirectories.Selected; CurNode := 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;
try try
IdFTP.ChangeDir(ePath); IdFTP.ChangeDir(ePath);
@ -239,7 +236,6 @@ begin
if eStr.IndexOf('liblist.gam') = -1 then begin if eStr.IndexOf('liblist.gam') = -1 then begin
MessageBox(Handle, 'Invalid directory. Please select your mod directory and try again.', PChar(Application.Title), MB_ICONWARNING); MessageBox(Handle, 'Invalid directory. Please select your mod directory and try again.', PChar(Application.Title), MB_ICONWARNING);
eStr.Free; eStr.Free;
Screen.Cursor := crDefault;
exit; exit;
end end
else else
@ -250,15 +246,15 @@ begin
cmdConnect.Enabled := False; cmdConnect.Enabled := False;
optWindows.Enabled := False; optWindows.Enabled := False;
optLinux32.Enabled := False; optLinux32.Enabled := False;
//optLinux64.Enabled := False; optLinux64.Enabled := False;
cboGameAddon.Enabled := False; cboGameAddon.Enabled := False;
// preinstall... // preinstall...
MakeDir(ExtractFilePath(Application.ExeName) + 'temp'); MakeDir(ExtractFilePath(ParamStr(0)) + 'temp');
DownloadFile('liblist.gam', ExtractFilePath(Application.ExeName) + 'temp\liblist.gam'); DownloadFile('liblist.gam', ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
try try
IdFTP.ChangeDir(ePath + 'addons/metamod/'); IdFTP.ChangeDir(ePath + 'addons/metamod/');
ForceDirectories(ExtractFilePath(Application.ExeName) + 'temp\addons\metamod\'); ForceDirectories(ExtractFilePath(ParamStr(0)) + 'temp\addons\metamod\');
DownloadFile('plugins.ini', ExtractFilePath(Application.ExeName) + 'temp\addons\metamod\plugins.ini'); DownloadFile('plugins.ini', ExtractFilePath(ParamStr(0)) + 'temp\addons\metamod\plugins.ini');
except except
try try
IdFTP.ChangeDir(ePath); IdFTP.ChangeDir(ePath);
@ -281,10 +277,10 @@ begin
if optWindows.Checked then if optWindows.Checked then
eOS := osWindows eOS := osWindows
else //if optLinux32.Checked then else if optLinux32.Checked then
eOS := osLinux32; eOS := osLinux32
//else else
// eOS := osLinux64; eOS := osLinux64;
jspInstallProgress.Show; jspInstallProgress.Show;
frmMain.Height := 382; frmMain.Height := 382;
@ -294,7 +290,7 @@ begin
ggeAll.Progress := 0; ggeAll.Progress := 0;
ggeItem.Progress := 0; ggeItem.Progress := 0;
cmdNext.Hide; cmdNext.Hide;
InstallCustom(ExtractFilePath(Application.ExeName) + 'temp\', ChosenMod, eOS); InstallCustom(ExtractFilePath(ParamStr(0)) + 'temp\', ChosenMod, eOS);
if Cancel then if Cancel then
exit; exit;
AddStatus('', clBlack, False); AddStatus('', clBlack, False);
@ -580,7 +576,7 @@ begin
end; end;
end end
else if frbFTP.Checked then begin // FTP else if frbFTP.Checked then begin // FTP
frmMain.Height := 421; frmMain.Height := 445;
jspFTP.Show; jspFTP.Show;
end; end;
end; end;
@ -606,8 +602,7 @@ end;
procedure TfrmMain.cmdConnectClick(Sender: TObject); procedure TfrmMain.cmdConnectClick(Sender: TObject);
var i: integer; var i: integer;
eStr: TStringList; eStr: TStringList;
CurNode, HomeNode, OldNode: TTreeNode; CurNode: TTreeNode;
Path: String;
begin begin
if (Trim(txtHost.Text) = '') or (Trim(txtUsername.Text) = '') then if (Trim(txtHost.Text) = '') or (Trim(txtUsername.Text) = '') then
MessageBox(Handle, 'Please fill in each field!', PChar(Application.Title), MB_ICONWARNING) MessageBox(Handle, 'Please fill in each field!', PChar(Application.Title), MB_ICONWARNING)
@ -632,84 +627,37 @@ begin
// ... connect and check values etc ... // ... connect and check values etc ...
try try
IdFTP.Connect(True, 15000); IdFTP.Connect(True, 15000);
// ... get initial directory ... // ... scan for initial directory ...
Path := IdFTP.RetrieveCurrentDir;
// ... "fix" path ...
eStr := TStringList.Create; eStr := TStringList.Create;
eStr.Text := StringReplace(Path, '/', #13, [rfReplaceAll]); eStr.Text := StringReplace(IdFTP.RetrieveCurrentDir, '/', #13, [rfReplaceAll]);
for i := eStr.Count -1 downto 0 do begin for i := eStr.Count -1 downto 0 do begin
if eStr[i] = '' then if eStr[i] = '' then
eStr.Delete(i); eStr.Delete(i);
end; end;
if (Copy(Path, Length(Path) -1, 1) <> '/') then
Path := Path + '/';
// ... connect successful, change captions ... // ... connect successful, change captions ...
trvDirectories.Enabled := True; trvDirectories.Enabled := True;
cmdConnect.Enabled := True; cmdConnect.Enabled := True;
cmdConnect.Caption := 'Disconnect'; cmdConnect.Caption := 'Disconnect';
cmdCancel.Caption := '&Close'; cmdCancel.Caption := '&Close';
cmdNext.Enabled := True;
// ... change to / and create all the directories ...
HomeNode := nil;
try
if (Path <> '/') then
IdFTP.ChangeDir('/');
trvDirectories.Items.BeginUpdate; CurNode := nil;
if eStr.Count <> 0 then begin
for i := 0 to eStr.Count -1 do
CurNode := trvDirectories.Items.AddChild(CurNode, eStr[i]);
end;
if trvDirectories.Items.Count <> 0 then
trvDirectories.Items.Item[0].Expand(True);
eStr.Free;
// ... scan for directories ...
with GetAllDirs do begin with GetAllDirs do begin
for i := 0 to Count -1 do begin for i := 0 to Count -1 do
CurNode := trvDirectories.Items.Add(nil, Strings[i]); trvDirectories.Items.AddChild(trvDirectories.Items.AddChild(CurNode, Strings[i]), 'Scanning...');
if (Pos('/' + CurNode.Text + '/', Path) = 0) then begin
trvDirectories.Items.AddChild(CurNode, 'Scanning...');
CurNode.Data := Pointer(2);
end
else begin
HomeNode := CurNode;
CurNode.Data := Pointer(1);
Repaint;
end;
end;
Free; Free;
end; end;
trvDirectories.Items.EndUpdate;
trvDirectories.TopItem := HomeNode;
IdFTP.ChangeDir(Path);
except
trvDirectories.Items.EndUpdate;
if (IdFTP.Connected) then
IdFTP.ChangeDir(Path)
else
IdFTP.Connect;
end;
// ... find directories in start path ...
CurNode := HomeNode;
OldNode := nil;
for i := 1 to eStr.Count -1 do begin
if (Assigned(CurNode)) then begin
CurNode := trvDirectories.Items.AddChild(CurNode, eStr[i]);
if (Assigned(OldNode)) then
OldNode.Expand(False);
CurNode.Data := Pointer(1);
OldNode := CurNode;
end;
end;
if (Assigned(CurNode)) then begin
trvDirectories.Items.AddChild(CurNode, 'Scanning...');
CurNode.Data := Pointer(2);
end;
// ... expand home node ...
if (Assigned(HomeNode)) and (HomeNode <> CurNode) then begin
HomeNode.Data := Pointer(0);
trvDirectories.TopItem := HomeNode;
HomeNode.Expand(False);
HomeNode.Data := Pointer(1);
end;
eStr.Free;
// ... scan for directories in home dir ...
if Assigned(CurNode) then if Assigned(CurNode) then
CurNode.Expand(False); CurNode.Expand(False);
trvDirectories.TopItem := HomeNode;
except except
on E: Exception do begin on E: Exception do begin
Screen.Cursor := crDefault; Screen.Cursor := crDefault;
@ -801,11 +749,11 @@ procedure TfrmMain.FormCreate(Sender: TObject);
begin begin
if LowerCase(ParamStr(1)) = '-logftp' then begin if LowerCase(ParamStr(1)) = '-logftp' then begin
MessageBox(Handle, 'FTP installation will be logged to FTP.log!', PChar(Application.Title), MB_ICONINFORMATION); MessageBox(Handle, 'FTP installation will be logged to FTP.log!', PChar(Application.Title), MB_ICONINFORMATION);
IdLogFile.Filename := ExtractFilePath(Application.ExeName) + 'FTP.log'; IdLogFile.Filename := ExtractFilePath(ParamStr(0)) + 'FTP.log';
IdLogFile.Active := True; IdLogFile.Active := True;
end; end;
if not DirectoryExists(ExtractFilePath(Application.ExeName) + 'files') then begin if not DirectoryExists(ExtractFilePath(ParamStr(0)) + 'files') then begin
MessageBox(Handle, 'The files-folder couldn''t be found. Run the Pre-Installer of AMX Mod X and try again.', 'Error', MB_ICONERROR); MessageBox(Handle, 'The files-folder couldn''t be found. Run the Pre-Installer of AMX Mod X and try again.', 'Error', MB_ICONERROR);
Application.Terminate; Application.Terminate;
end end
@ -816,8 +764,8 @@ begin
end; end;
// delete files, then directories // delete files, then directories
if (DirectoryExists(ExtractFilePath(Application.ExeName) + 'temp')) then if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
DelTree(ExtractFilePath(Application.ExeName) + 'temp'); DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
end; end;
procedure TfrmMain.cmdProxySettingsClick(Sender: TObject); procedure TfrmMain.cmdProxySettingsClick(Sender: TObject);
@ -859,60 +807,42 @@ end;
procedure TfrmMain.trvDirectoriesExpanded(Sender: TObject; procedure TfrmMain.trvDirectoriesExpanded(Sender: TObject;
Node: TTreeNode); Node: TTreeNode);
function NodeExists(const SNode: TTreeNode; const Text: String): Boolean;
var i: integer;
begin
Result := False;
for i := 0 to SNode.Count -1 do begin
if (SNode.Item[i].Text = Text) then begin
Result := True;
break;
end;
end;
end;
var ePath: String; var ePath: String;
CurNode: TTreeNode; CurNode: TTreeNode;
i: integer; i: integer;
begin begin
if (Integer(Node.Data) <> 0) then begin // no directories added yet if Node.Item[0].Text = 'Scanning...' then begin // no directories added yet
Screen.Cursor := crHourGlass; Screen.Cursor := crHourGlass;
// get complete path // get complete path
ePath := '/'; ePath := '/';
CurNode := Node; CurNode := Node;
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;
// change dir and add directories in it // change dir and add directories in it
try try
Repaint; Repaint;
IdFTP.ChangeDir(ePath); IdFTP.ChangeDir(ePath);
with GetAllDirs do begin with GetAllDirs do begin
if (Integer(Node.Data) = 2) and (Node.Count > 0) then
Node.Item[0].Free; Node.Item[0].Free;
for i := 0 to Count -1 do begin for i := 0 to Count -1 do begin
if (not NodeExists(Node, Strings[i])) then begin trvDirectories.Items.AddChild(trvDirectories.Items.AddChild(Node, Strings[i]), 'Scanning...');
CurNode := trvDirectories.Items.AddChild(Node, Strings[i]);
trvDirectories.Items.AddChild(CurNode, 'Scanning...');
CurNode.Data := Pointer(2);
end;
end; end;
Free; Free;
end; end;
except finally
if (Integer(Node.Data) = 2) and (Node.Count > 0) then
Node.Item[0].Free;
Application.ProcessMessages; Application.ProcessMessages;
end; end;
Node.Data := Pointer(0); // scan done
Screen.Cursor := crDefault; Screen.Cursor := crDefault;
end; end;
end; end;
procedure TfrmMain.trvDirectoriesChange(Sender: TObject; Node: TTreeNode);
begin
cmdNext.Enabled := Assigned(trvDirectories.Selected);
end;
procedure TfrmMain.FormDestroy(Sender: TObject); procedure TfrmMain.FormDestroy(Sender: TObject);
begin begin
FileList.Free; FileList.Free;
@ -951,8 +881,8 @@ begin
end; end;
end; end;
if (DirectoryExists(ExtractFilePath(Application.ExeName) + 'temp')) then if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
DelTree(ExtractFilePath(Application.ExeName) + 'temp'); DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
end; end;
procedure TfrmMain.ExceptionHandler(Sender: TObject; E: Exception); procedure TfrmMain.ExceptionHandler(Sender: TObject; E: Exception);
@ -1006,21 +936,4 @@ begin
cmdNext.Enabled := (Assigned(trvMods.Selected)); cmdNext.Enabled := (Assigned(trvMods.Selected));
end; end;
procedure TfrmMain.trvDirectoriesMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var Node: TTreeNode;
begin
Node := trvDirectories.GetNodeAt(X, Y);
if (Assigned(Node)) then begin
if (Node.DisplayRect(True).Right < X) then
trvDirectories.Selected := nil;
end;
end;
procedure TfrmMain.trvDirectoriesChange(Sender: TObject; Node: TTreeNode);
begin
if (Screen.Cursor <> crHourGlass) and (Assigned(Node)) and (Integer(Node.Data) = 1) then
Node.Expand(False);
end;
end. end.

View File

@ -141,7 +141,7 @@ public addadminfn(id, level, cid)
if (equali(t_arg, "name")) if (equali(t_arg, "name"))
idtype |= ADMIN_LOOKUP idtype |= ADMIN_LOOKUP
} else { } else {
console_print(id, "[%s] Unknown id type ^"%s^", use one of: steamid, ip, name", PLUGINNAME, t_arg) console_print(id, "[%s] Unknown idtype ^"%s^", use one of: steamid, ip, name", PLUGINNAME, t_arg)
return PLUGIN_HANDLED return PLUGIN_HANDLED
} }
} }
@ -460,7 +460,7 @@ public adminSql()
new qcolAccess = SQL_FieldNameToNum(query, "access") new qcolAccess = SQL_FieldNameToNum(query, "access")
new qcolFlags = SQL_FieldNameToNum(query, "flags") new qcolFlags = SQL_FieldNameToNum(query, "flags")
while ((g_aNum < MAX_ADMINS) && (SQL_MoreResults(query))) while (SQL_MoreResults(query))
{ {
SQL_ReadResult(query, qcolAuth, g_aName[g_aNum], 31) SQL_ReadResult(query, qcolAuth, g_aName[g_aNum], 31)
SQL_ReadResult(query, qcolPass, g_aPassword[g_aNum], 31) SQL_ReadResult(query, qcolPass, g_aPassword[g_aNum], 31)
@ -574,13 +574,13 @@ getAccess(id, name[], authid[], ip[], password[])
} else { } else {
if (g_aFlags[i] & FLAG_TAG) if (g_aFlags[i] & FLAG_TAG)
{ {
if (containi(name, g_aName[i]) != -1) if (contain(name, g_aName[i]) != -1)
{ {
index = i index = i
break break
} }
} }
else if (equali(name, g_aName[i])) else if (equal(name, g_aName[i]))
{ {
index = i index = i
break break
@ -652,13 +652,9 @@ accessUser(id, name[] = "")
get_user_authid(id, userauthid, 31) get_user_authid(id, userauthid, 31)
if (name[0]) if (name[0])
{
copy(username, 31, name) copy(username, 31, name)
}
else else
{
get_user_name(id, username, 31) get_user_name(id, username, 31)
}
get_cvar_string("amx_password_field", passfield, 31) get_cvar_string("amx_password_field", passfield, 31)
get_user_info(id, passfield, password, 31) get_user_info(id, passfield, password, 31)
@ -666,9 +662,7 @@ accessUser(id, name[] = "")
new result = getAccess(id, username, userauthid, userip, password) new result = getAccess(id, username, userauthid, userip, password)
if (result & 1) if (result & 1)
{
client_cmd(id, "echo ^"* %L^"", id, "INV_PAS") client_cmd(id, "echo ^"* %L^"", id, "INV_PAS")
}
if (result & 2) if (result & 2)
{ {
@ -677,14 +671,10 @@ accessUser(id, name[] = "")
} }
if (result & 4) if (result & 4)
{
client_cmd(id, "echo ^"* %L^"", id, "PAS_ACC") client_cmd(id, "echo ^"* %L^"", id, "PAS_ACC")
}
if (result & 8) if (result & 8)
{
client_cmd(id, "echo ^"* %L^"", id, "PRIV_SET") client_cmd(id, "echo ^"* %L^"", id, "PRIV_SET")
}
return PLUGIN_CONTINUE return PLUGIN_CONTINUE
} }
@ -692,19 +682,15 @@ accessUser(id, name[] = "")
public client_infochanged(id) public client_infochanged(id)
{ {
if (!is_user_connected(id) || !get_cvar_num("amx_mode")) if (!is_user_connected(id) || !get_cvar_num("amx_mode"))
{
return PLUGIN_CONTINUE return PLUGIN_CONTINUE
}
new newname[32], oldname[32] new newname[32], oldname[32]
get_user_name(id, oldname, 31) get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31) get_user_info(id, "name", newname, 31)
if (!equali(newname, oldname)) if (!equal(newname, oldname))
{
accessUser(id, newname) accessUser(id, newname)
}
return PLUGIN_CONTINUE return PLUGIN_CONTINUE
} }

View File

@ -236,8 +236,6 @@ public cmdPsay(id, level, cid)
if (!priv) if (!priv)
return PLUGIN_HANDLED return PLUGIN_HANDLED
get_user_name(priv, name, 31);
new length = strlen(name) + 1 new length = strlen(name) + 1
new message[192], name2[32], authid[32], authid2[32], userid, userid2 new message[192], name2[32], authid[32], authid2[32], userid, userid2

View File

@ -53,7 +53,7 @@ public plugin_init()
register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]") register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")
register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]") register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]") register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
register_concmd("amx_addban", "cmdAddBan", ADMIN_RCON, "<authid or ip> <minutes> [reason]") register_concmd("amx_addban", "cmdAddBan", ADMIN_BAN, "<authid or ip> <minutes> [reason]")
register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<authid or ip>") register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<authid or ip>")
register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>") register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]") register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")
@ -571,7 +571,7 @@ public cmdPlugins(id, level, cid)
get_plugin(i, filename, 31, name, 31, version, 31, author, 31, status, 31) get_plugin(i, filename, 31, name, 31, version, 31, author, 31, status, 31)
console_print(id, "%-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status) console_print(id, "%-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)
if (status[0]=='d' || status[0]=='r') // "debug" or "running" if (equal(status, "running"))
running++ running++
} }
console_print(id, "%L", id, "PLUGINS_RUN", num, running) console_print(id, "%L", id, "PLUGINS_RUN", num, running)

View File

@ -21,11 +21,6 @@ new g_FwdKeyValue
new g_PlayerModels[33][64] new g_PlayerModels[33][64]
new g_PlayerModeled[33] new g_PlayerModeled[33]
/* User Messages */
new g_msgDamage
new g_msgDeathMsg
new g_msgScoreInfo
new g_LastTrace = 0 new g_LastTrace = 0
VexdUM_Register() VexdUM_Register()
@ -56,11 +51,6 @@ VexdUM_Register()
g_FwdTraceLine = CreateMultiForwardEx("traceline", ET_STOP, FORWARD_ONLY_OLD, FP_CELL) g_FwdTraceLine = CreateMultiForwardEx("traceline", ET_STOP, FORWARD_ONLY_OLD, FP_CELL)
g_FwdSetCliKeyValue = CreateMultiForwardEx("setclientkeyvalue", ET_STOP, FORWARD_ONLY_OLD, FP_CELL, FP_STRING, FP_STRING) g_FwdSetCliKeyValue = CreateMultiForwardEx("setclientkeyvalue", ET_STOP, FORWARD_ONLY_OLD, FP_CELL, FP_STRING, FP_STRING)
g_FwdKeyValue = CreateMultiForwardEx("keyvalue", ET_STOP, FORWARD_ONLY_OLD, FP_CELL) g_FwdKeyValue = CreateMultiForwardEx("keyvalue", ET_STOP, FORWARD_ONLY_OLD, FP_CELL)
/* User Messages */
g_msgDamage = get_user_msgid("Damage")
g_msgDeathMsg = get_user_msgid("DeathMsg")
g_msgScoreInfo = get_user_msgid("ScoreInfo")
} }
VexdUM_Natives() VexdUM_Natives()
@ -83,9 +73,6 @@ VexdUM_Natives()
register_native("get_maxentities", "__get_maxentities") register_native("get_maxentities", "__get_maxentities")
register_native("PointContents", "__PointContents") register_native("PointContents", "__PointContents")
register_native("DispatchKeyValue", "__DispatchKeyValue") register_native("DispatchKeyValue", "__DispatchKeyValue")
register_native("entity_use","__entity_use")
register_native("get_num_ents","__get_num_ents")
register_native("take_damage","__take_damage")
if (g_ModType == MOD_CSTRIKE) if (g_ModType == MOD_CSTRIKE)
{ {
@ -115,90 +102,6 @@ GetClientKeyValue(id, const key[], value[], maxlen)
engfunc(EngFunc_InfoKeyValue, buffer, key, value, maxlen) engfunc(EngFunc_InfoKeyValue, buffer, key, value, maxlen)
} }
Death(victim, killer, weapon[64], hs)
{
if(pev(victim,pev_takedamage) > DAMAGE_NO)
{
new inflictor = pev(killer,pev_owner)
if(pev(killer,pev_flags) & (FL_CLIENT | FL_FAKECLIENT))
{
if(equal(weapon,""))
{
pev(killer,pev_viewmodel2,weapon,63)
replace(weapon,63,"models/v_","")
weapon[strlen(weapon) - 4] = '^0'
}
}
else if(inflictor > 0 && inflictor < get_maxplayers())
{
if(equal(weapon,""))
{
pev(killer,pev_viewmodel2,weapon,63)
replace(weapon,63,"weapon_","")
replace(weapon,63,"monster_","")
replace(weapon,63,"func_","")
}
if(inflictor == victim)
{
killer = victim
} else {
killer = inflictor
}
}
message_begin(MSG_ALL,g_msgDeathMsg)
write_byte(killer)
write_byte(victim)
write_byte(hs)
write_string(weapon)
message_end()
new vname[32],vauthid[32],vteam[32]
get_user_name(victim,vname,31)
get_user_authid(victim,vauthid,31)
get_user_team(victim,vteam,31)
if(victim == killer)
{
log_message("^"%s<%i><%s><%s>^" killed self with ^"%s^"^n",vname,get_user_userid(victim),
vauthid,vteam,weapon)
}
else if(pev(killer,pev_flags) & (FL_CLIENT | FL_FAKECLIENT))
{
new kname[32],kauthid[32],kteam[32],team
get_user_name(killer,kname,31)
get_user_authid(killer,kauthid,31)
team = get_user_team(killer,kteam,31)
log_message("^"%s<%i><%s><%s>^" killed ^"%s<%i><%s><%s>^" with ^"%s^"^n",kname,get_user_userid(killer),
kauthid,kteam,vname,get_user_userid(victim),vauthid,vteam,weapon)
new Float:frags
pev(killer,pev_frags,frags)
set_pev(killer,pev_frags,frags+1.0)
message_begin(MSG_ALL,g_msgScoreInfo)
write_byte(killer)
write_short(floatround(frags))
write_short(get_user_deaths(killer))
write_short(0)
write_short(team)
message_end()
pev(victim,pev_frags,frags)
set_pev(victim,pev_frags,frags+1.0)
} else {
log_message("^"%s<%i><%s><%s>^" killed by ^"%s^"^n",vname,get_user_userid(victim),vauthid,vteam,weapon)
}
set_msg_block(g_msgDeathMsg,BLOCK_ONCE)
dllfunc(DLLFunc_ClientKill,victim)
}
}
public __is_entity(plid, num) public __is_entity(plid, num)
{ {
new ent = get_param(1) new ent = get_param(1)
@ -537,57 +440,6 @@ public __DispatchKeyValue(plid, num)
return 1 return 1
} }
public __entity_use(plid, num)
{
new entUsed = get_param(1)
new entOther = get_param(2)
return dllfunc(DLLFunc_Use,entUsed,entOther)
}
public __get_num_ents(plid, num)
{
return engfunc(EngFunc_NumberOfEntities)
}
public __take_damage(plid, num)
{
new victim = get_param(1)
new attacker = get_param(2)
new Float:orig[3]
get_array_f(3,orig,3)
new Float:dmg = get_param_f(4)
new bit = get_param(5)
new wpnName[64]
get_string(6,wpnName,63)
new hs = get_param(7)
if(pev(victim,pev_takedamage) > DAMAGE_NO)
{
set_pev(victim,pev_dmg_inflictor,attacker)
new Float:olddmg
pev(victim,pev_dmg_take,olddmg)
set_pev(victim,pev_dmg_take,olddmg+dmg)
message_begin(MSG_ONE, g_msgDamage, {0,0,0} , victim)
write_byte(0)
write_byte(floatround(olddmg+dmg))
write_long(bit)
write_coord(floatround(orig[0]))
write_coord(floatround(orig[1]))
write_coord(floatround(orig[2]))
message_end()
new Float:health
pev(victim,pev_health,health)
if((dmg >= health) && (health > 0.0))
{
Death(victim,attacker,wpnName,hs)
} else {
set_pev(victim,pev_health,health-dmg)
}
}
}
/********************************* /*********************************
***** HOOKS ********************* ***** HOOKS *********************

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -160,8 +160,7 @@ displayCmdMenu(id, pos)
if (start >= g_menuSelectNum[id]) if (start >= g_menuSelectNum[id])
start = pos = g_menuPosition[id] = 0 start = pos = g_menuPosition[id] = 0
new limit = (g_menuSelectNum[id] / 8 + ((g_menuSelectNum[id] % 8))) new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, g_cmdMenuName[g_menuLayer[id]], pos + 1, (g_menuSelectNum[id] / 8 + ((g_menuSelectNum[id] % 8) ? 1 : 0)))
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, g_cmdMenuName[g_menuLayer[id]], pos + 1, (limit == 0) ? 1 : limit)
new end = start + 8 new end = start + 8
new keys = MENU_KEY_0 new keys = MENU_KEY_0

View File

@ -420,7 +420,7 @@ public client_death(killer, victim, wpnindex, hitplace, TK)
get_user_name(g_LastAnnounce, name, 31) get_user_name(g_LastAnnounce, name, 31)
set_hudmessage(0, 255, 255, -1.0, 0.38, 0, 6.0, 6.0, 0.5, 0.15, -1) set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)]) ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
if (!is_user_connecting(g_LastAnnounce)) if (!is_user_connecting(g_LastAnnounce))
@ -566,7 +566,7 @@ public showStatus(id)
public eNewRound() public eNewRound()
{ {
if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor)) if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0))
{ {
g_firstBlood = 1 g_firstBlood = 1
g_C4Timer = 0 g_C4Timer = 0

View File

@ -45,20 +45,8 @@ new g_Modified
new g_blockPos[112] new g_blockPos[112]
new g_saveFile[64] new g_saveFile[64]
new g_Restricted[] = "* This item is restricted *" new g_Restricted[] = "* This item is restricted *"
new g_szWeapRestr[27] = "00000000000000000000000000" new g_szWeapRestr[27] = "0000000000000000000000000"
new g_szEquipAmmoRestr[10] = "000000000" new g_szEquipAmmoRestr[10] = "000000000"
new g_InBuyMenu[33]
new g_RegisteredMenus[10]
new g_menuStrings[6][] =
{
"BuyPistol",
"BuyShotgun",
"BuySubMachineGun",
"BuyRifle",
"BuyMachineGun",
"BuyItem"
}
new g_menusNames[7][] = new g_menusNames[7][] =
{ {
@ -307,19 +295,6 @@ new g_Aliases2[MAXMENUPOS][] =
new g_Autobuy[33][AUTOBUYLENGTH + 1] new g_Autobuy[33][AUTOBUYLENGTH + 1]
//new g_Rebuy[33][AUTOBUYLENGTH + 1] //new g_Rebuy[33][AUTOBUYLENGTH + 1]
bool:IsOurMenuID(id)
{
for (new i=1; i<=g_RegisteredMenus[0]; i++)
{
if (g_RegisteredMenus[i] == id)
{
return true
}
}
return false
}
setWeapon(a, action) setWeapon(a, action)
{ {
new b, m = g_Keys[a][0] * 8 new b, m = g_Keys[a][0] * 8
@ -630,30 +605,7 @@ public client_command(id)
new arg[13] new arg[13]
if (read_argv(0, arg, 12) > 11) /* Longest buy command has 11 chars so if command is longer then don't care */ if (read_argv(0, arg, 12) > 11) /* Longest buy command has 11 chars so if command is longer then don't care */
{
return PLUGIN_CONTINUE return PLUGIN_CONTINUE
}
if (equali(arg, "menuselect") && is_user_connected(id))
{
new menu, newmenu
new inMenu = player_menu_info(id, menu, newmenu)
if (!inMenu && g_InBuyMenu[id])
{
new key[12], num
read_argv(1, key, 11)
num = str_to_num(key) - 1
return checkRest(id, g_InBuyMenu[id], num)
} else if ((!menu || newmenu != -1)
|| !IsOurMenuID(menu)) {
g_InBuyMenu[id] = 0
}
return PLUGIN_CONTINUE
}
new a = 0 new a = 0
@ -679,9 +631,7 @@ public blockcommand(id)
public cmdMenu(id, level, cid) public cmdMenu(id, level, cid)
{ {
if (cmd_access(id, level, cid, 1)) if (cmd_access(id, level, cid, 1))
{
displayMenu(id, g_Position[id] = 0) displayMenu(id, g_Position[id] = 0)
}
return PLUGIN_HANDLED return PLUGIN_HANDLED
} }
@ -691,18 +641,9 @@ checkRest(id, menu, key)
new team = get_user_team(id) new team = get_user_team(id)
if (team != 1 && team != 2) if (team != 1 && team != 2)
{
return PLUGIN_HANDLED return PLUGIN_HANDLED
}
new pos = (menu * 8 + key) + (get_user_team(id) - 1) * 56 if (g_blockPos[(menu * 8 + key) + (get_user_team(id) - 1) * 56])
if (pos < 0 || pos >= 112)
{
return PLUGIN_CONTINUE
}
if (g_blockPos[pos])
{ {
engclient_cmd(id, "menuselect", "10") engclient_cmd(id, "menuselect", "10")
client_print(id, print_center, "%s", g_Restricted) client_print(id, print_center, "%s", g_Restricted)
@ -858,70 +799,6 @@ public fn_autobuy(id)
return PLUGIN_HANDLED return PLUGIN_HANDLED
} }
public HookEvent_ShowMenu(id)
{
new menustring[24]
read_data(4, menustring, 23)
/* Early breakouts */
new curidx
if (menustring[curidx++] != '#')
{
g_InBuyMenu[id] = 0
return
}
/* Strip D */
if (menustring[curidx] == 'D')
{
curidx++
}
/* Strip AS_ */
if (menustring[curidx] == 'A'
&& menustring[curidx+1] == 'S'
&& menustring[curidx+2] == '_')
{
curidx += 3
}
/* Strip any team tags */
if (menustring[curidx] == 'C'
&& menustring[curidx+1] == 'T'
&& menustring[curidx+2] == '_')
{
curidx += 3
} else if (menustring[curidx] == 'T'
&& menustring[curidx+1] == '_') {
curidx += 2
}
if (menustring[curidx] != 'B')
{
g_InBuyMenu[id] = 0
return
}
for (new i=0; i<6; i++)
{
if (equali(menustring[curidx], g_menuStrings[i]))
{
g_InBuyMenu[id] = i+1
return
}
}
g_InBuyMenu[id] = 0
}
RegisterMenuID(const menuname[])
{
new id = register_menuid(menuname, 1)
g_RegisteredMenus[++g_RegisteredMenus[0]] = id
return id
}
public plugin_init() public plugin_init()
{ {
register_plugin("Restrict Weapons", AMXX_VERSION_STR, "AMXX Dev Team") register_plugin("Restrict Weapons", AMXX_VERSION_STR, "AMXX Dev Team")
@ -934,12 +811,12 @@ public plugin_init()
register_clcmd("amx_restmenu", "cmdMenu", ADMIN_CFG, "- displays weapons restriction menu") register_clcmd("amx_restmenu", "cmdMenu", ADMIN_CFG, "- displays weapons restriction menu")
register_menucmd(register_menuid("#Buy", 1), 511, "menuBuy") register_menucmd(register_menuid("#Buy", 1), 511, "menuBuy")
register_menucmd(register_menuid("Restrict Weapons"), 1023, "actionMenu") register_menucmd(register_menuid("Restrict Weapons"), 1023, "actionMenu")
register_menucmd(RegisterMenuID("BuyPistol"), 511, "menuPistol") register_menucmd(register_menuid("BuyPistol", 1), 511, "menuPistol")
register_menucmd(RegisterMenuID("BuyShotgun"), 511, "menuShotgun") register_menucmd(register_menuid("BuyShotgun", 1), 511, "menuShotgun")
register_menucmd(RegisterMenuID("BuySub"), 511, "menuSub") register_menucmd(register_menuid("BuySub", 1), 511, "menuSub")
register_menucmd(RegisterMenuID("BuyRifle"), 511, "menuRifle") register_menucmd(register_menuid("BuyRifle", 1), 511, "menuRifle")
register_menucmd(RegisterMenuID("BuyMachine"), 511, "menuMachine") register_menucmd(register_menuid("BuyMachine", 1), 511, "menuMachine")
register_menucmd(RegisterMenuID("BuyItem"), 511, "menuItem") register_menucmd(register_menuid("BuyItem", 1), 511, "menuItem")
register_menucmd(-28, 511, "menuBuy") register_menucmd(-28, 511, "menuBuy")
register_menucmd(-29, 511, "menuPistol") register_menucmd(-29, 511, "menuPistol")
register_menucmd(-30, 511, "menuShotgun") register_menucmd(-30, 511, "menuShotgun")
@ -952,8 +829,6 @@ public plugin_init()
register_cvar("amx_restrweapons", "00000000000000000000000000") register_cvar("amx_restrweapons", "00000000000000000000000000")
register_cvar("amx_restrequipammo", "000000000") register_cvar("amx_restrequipammo", "000000000")
register_event("ShowMenu", "HookEvent_ShowMenu", "b")
new configsDir[64]; new configsDir[64];
get_configsdir(configsDir, 63); get_configsdir(configsDir, 63);
#if defined MAPSETTINGS #if defined MAPSETTINGS

View File

@ -204,7 +204,7 @@ public plugin_init()
register_clcmd("say /me", "cmdMe", 0, "- display current round stats (chat)") register_clcmd("say /me", "cmdMe", 0, "- display current round stats (chat)")
register_clcmd("say /score", "cmdScore", 0, "- display last score (chat)") register_clcmd("say /score", "cmdScore", 0, "- display last score (chat)")
register_clcmd("say /rank", "cmdRank", 0, "- display your rank (chat)") register_clcmd("say /rank", "cmdRank", 0, "- display your rank (chat)")
register_clcmd("say /report", "cmdReport", 0, "- display weapon status (say_team)") register_clcmd("say /report", "cmdReport", 0, "- display waepon status (say_team)")
register_clcmd("say /top15", "cmdTop15", 0, "- display top 15 players (MOTD)") register_clcmd("say /top15", "cmdTop15", 0, "- display top 15 players (MOTD)")
register_clcmd("say /stats", "cmdStats", 0, "- display players stats (menu/MOTD)") register_clcmd("say /stats", "cmdStats", 0, "- display players stats (menu/MOTD)")
register_clcmd("say /switch", "cmdSwitch", 0, "- switch client's stats on or off") register_clcmd("say /switch", "cmdSwitch", 0, "- switch client's stats on or off")
@ -214,7 +214,7 @@ public plugin_init()
register_clcmd("say_team /me", "cmdMe", 0, "- display current round stats (chat)") register_clcmd("say_team /me", "cmdMe", 0, "- display current round stats (chat)")
register_clcmd("say_team /score", "cmdScore", 0, "- display last score (chat)") register_clcmd("say_team /score", "cmdScore", 0, "- display last score (chat)")
register_clcmd("say_team /rank", "cmdRank", 0, "- display your rank (chat)") register_clcmd("say_team /rank", "cmdRank", 0, "- display your rank (chat)")
register_clcmd("say_team /report", "cmdReport", 0, "- display weapon status (say_team_team)") register_clcmd("say_team /report", "cmdReport", 0, "- display waepon status (say_team_team)")
register_clcmd("say_team /top15", "cmdTop15", 0, "- display top 15 players (MOTD)") register_clcmd("say_team /top15", "cmdTop15", 0, "- display top 15 players (MOTD)")
register_clcmd("say_team /stats", "cmdStats", 0, "- display players stats (menu/MOTD)") register_clcmd("say_team /stats", "cmdStats", 0, "- display players stats (menu/MOTD)")
register_clcmd("say_team /switch", "cmdSwitch", 0, "- switch client's stats on or off") register_clcmd("say_team /switch", "cmdSwitch", 0, "- switch client's stats on or off")
@ -1268,8 +1268,11 @@ public eventStartGame()
public eventStartRound() public eventStartRound()
{ {
new iTeam, id, i new iTeam, id, i
new iRoundTime
if (read_data(1) >= floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor)) iRoundTime = read_data(1)
if (iRoundTime >= get_cvar_float("mp_roundtime") * 60)
{ {
#if defined STATSX_DEBUG #if defined STATSX_DEBUG
log_amx("Reset round stats") log_amx("Reset round stats")

View File

@ -758,8 +758,6 @@ public client_death(killer,victim,wpnindex,hitplace,TK)
} }
public showDoubleKill(){ public showDoubleKill(){
if (g_KillCount < 2)
return
new pos = g_KillCount - 2 new pos = g_KillCount - 2
if ( pos > 2 ) pos = 2 if ( pos > 2 ) pos = 2
if ( DoubleKill ) { if ( DoubleKill ) {

View File

@ -11,9 +11,9 @@
#endif #endif
#define _amxconst_included #define _amxconst_included
#define AMXX_VERSION 1.764 #define AMXX_VERSION 1.762
#define AMXX_VERSION_NUM 176 #define AMXX_VERSION_NUM 176
stock const AMXX_VERSION_STR[]="1.76d"; stock const AMXX_VERSION_STR[]="1.76b"
#define M_PI 3.1415926535 #define M_PI 3.1415926535

View File

@ -11,14 +11,6 @@
#endif #endif
#define _amxmisc_included #define _amxmisc_included
#if !defined _amxmodx_included
#if defined AMXMOD_BCOMPAT
#include <amxmod>
#else
#include <amxmodx>
#endif
#endif
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
#if defined _translator_included #if defined _translator_included
#define SIMPLE_T(%1) _T(%1) #define SIMPLE_T(%1) _T(%1)
@ -29,64 +21,48 @@
stock is_user_admin(id) stock is_user_admin(id)
{ {
return ( get_user_flags(id)>0 && !(get_user_flags(id)&ADMIN_USER) ); return ( get_user_flags(id)>0 && !(get_user_flags(id)&ADMIN_USER) )
} }
stock cmd_access(id,level,cid,num) stock cmd_access(id,level,cid,num) {
{ new has_access = 0
new has_access = 0; if ( id==(is_dedicated_server()?0:1) ) {
if ( id==(is_dedicated_server()?0:1) ) has_access = 1
{ } else if ( level==ADMIN_ADMIN ) {
has_access = 1;
}
else if ( level==ADMIN_ADMIN )
{
if ( is_user_admin(id) ) if ( is_user_admin(id) )
{ has_access = 1
has_access = 1; } else if ( get_user_flags(id) & level ) {
} has_access = 1
} } else if (level == ADMIN_ALL) {
else if ( get_user_flags(id) & level ) has_access = 1
{
has_access = 1;
}
else if (level == ADMIN_ALL)
{
has_access = 1;
} }
if ( has_access==0 ) if ( has_access==0 ) {
{
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
console_print(id, SIMPLE_T("You have no access to that command.")); console_print(id, SIMPLE_T("You have no access to that command."))
#else #else
console_print(id,"%L",id,"NO_ACC_COM"); console_print(id,"%L",id,"NO_ACC_COM")
#endif #endif
return 0; return 0
} }
if (read_argc() < num) if (read_argc() < num) {
{ new hcmd[32], hinfo[128], hflag
new hcmd[32], hinfo[128], hflag; get_concmd(cid,hcmd,31,hflag,hinfo,127,level)
get_concmd(cid,hcmd,31,hflag,hinfo,127,level);
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
console_print(id, SIMPLE_T("Usage: %s %s"), hcmd, SIMPLE_T(hinfo)); console_print(id, SIMPLE_T("Usage: %s %s"), hcmd, SIMPLE_T(hinfo))
#else #else
console_print(id,"%L: %s %s",id,"USAGE",hcmd,hinfo); console_print(id,"%L: %s %s",id,"USAGE",hcmd,hinfo)
#endif #endif
return 0; return 0
} }
return 1
return 1;
} }
stock access(id,level) stock access(id,level) {
{
if ( level==ADMIN_ADMIN ) if ( level==ADMIN_ADMIN )
{ return is_user_admin(id)
return is_user_admin(id);
}
return (get_user_flags(id) & level); return (get_user_flags(id) & level)
} }
/* Flags: /* Flags:
@ -94,150 +70,124 @@ stock access(id,level)
* 2 - allow yourself * 2 - allow yourself
* 4 - must be alive * 4 - must be alive
* 8 - can't be bot */ * 8 - can't be bot */
stock cmd_target(id,const arg[],flags = 1) stock cmd_target(id,const arg[],flags = 1) {
{ new player = find_player("bl",arg)
new player = find_player("bl",arg); if (player) {
if (player) if ( player != find_player("blj",arg) ) {
{
if ( player != find_player("blj",arg) )
{
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
console_print(id, SIMPLE_T("There are more clients matching to your argument")); console_print(id, SIMPLE_T("There are more clients matching to your argument"))
#else #else
console_print(id,"%L",id,"MORE_CL_MATCHT"); console_print(id,"%L",id,"MORE_CL_MATCHT")
#endif #endif
return 0; return 0
} }
} }
else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] ) else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] )
{ player = find_player("k",str_to_num(arg[1]))
player = find_player("k",str_to_num(arg[1])); if (!player) {
}
if (!player)
{
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
console_print(id, SIMPLE_T("Client with that name or userid not found")); console_print(id, SIMPLE_T("Client with that name or userid not found"))
#else #else
console_print(id,"%L",id,"CL_NOT_FOUND"); console_print(id,"%L",id,"CL_NOT_FOUND")
#endif #endif
return 0; return 0
} }
if (flags & 1) if (flags & 1) {
{ if ((get_user_flags(player)&ADMIN_IMMUNITY) && ((flags&2)?(id!=player):true) ) {
if ((get_user_flags(player)&ADMIN_IMMUNITY) && ((flags&2)?(id!=player):true) ) new imname[32]
{ get_user_name(player,imname,31)
new imname[32];
get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
console_print(id, SIMPLE_T("Client ^"%s^" has immunity"), imname); console_print(id, SIMPLE_T("Client ^"%s^" has immunity"), imname)
#else #else
console_print(id,"%L",id,"CLIENT_IMM",imname); console_print(id,"%L",id,"CLIENT_IMM",imname)
#endif #endif
return 0; return 0
} }
} }
if (flags & 4) if (flags & 4) {
{ if (!is_user_alive(player)) {
if (!is_user_alive(player)) new imname[32]
{ get_user_name(player,imname,31)
new imname[32];
get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
console_print(id, SIMPLE_T("That action can't be performed on dead client ^"%s^""), imname); console_print(id, SIMPLE_T("That action can't be performed on dead client ^"%s^""), imname)
#else #else
console_print(id,"%L",id,"CANT_PERF_DEAD",imname); console_print(id,"%L",id,"CANT_PERF_DEAD",imname)
#endif #endif
return 0; return 0
} }
} }
if (flags & 8) if (flags & 8) {
{ if (is_user_bot(player)) {
if (is_user_bot(player)) new imname[32]
{ get_user_name(player,imname,31)
new imname[32];
get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
console_print(id, SIMPLE_T("That action can't be performed on bot ^"%s^""), imname); console_print(id, SIMPLE_T("That action can't be performed on bot ^"%s^""), imname)
#else #else
console_print(id,"%L",id,"CANT_PERF_BOT",imname); console_print(id,"%L",id,"CANT_PERF_BOT",imname)
#endif #endif
return 0; return 0
} }
} }
return player; return player
} }
stock show_activity( id, const name[], {Float,_}: ... ) stock show_activity( id, const name[], {Float,_}: ... ) {
{ new buffer[128]
new buffer[128]; format_args( buffer , 127 , 2 )
format_args( buffer , 127 , 2 );
switch(get_cvar_num("amx_show_activity")) switch(get_cvar_num("amx_show_activity"))
{ {
case 2: case 2:
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
client_print(0, print_chat, "%s %s: %s", is_user_admin(id) ? SIMPLE_T("ADMIN") : SIMPLE_T("PLAYER"), name, buffer); client_print(0, print_chat, "%s %s: %s", is_user_admin(id) ? SIMPLE_T("ADMIN") : SIMPLE_T("PLAYER"), name, buffer)
#else #else
client_print(0, print_chat, "%L %s: %s", id, is_user_admin(id) ? "ADMIN" : "PLAYER" , name , buffer ); client_print(0, print_chat, "%L %s: %s", id, is_user_admin(id) ? "ADMIN" : "PLAYER" , name , buffer )
#endif #endif
case 1: case 1:
#if defined AMXMOD_BCOMPAT #if defined AMXMOD_BCOMPAT
client_print(0, print_chat, "%s: %s", is_user_admin(id) ? SIMPLE_T("ADMIN") : SIMPLE_T("PLAYER"), buffer); client_print(0, print_chat, "%s: %s", is_user_admin(id) ? SIMPLE_T("ADMIN") : SIMPLE_T("PLAYER"), buffer)
#else #else
client_print(0, print_chat, "%L: %s", id, is_user_admin(id) ? "ADMIN" : "PLAYER", buffer ); client_print(0, print_chat, "%L: %s", id, is_user_admin(id) ? "ADMIN" : "PLAYER", buffer )
#endif #endif
} }
} }
stock colored_menus() stock colored_menus() {
{ new mod_name[32]
new mod_name[32]; get_modname(mod_name,31)
get_modname(mod_name,31);
return ( equal(mod_name,"cstrike") || equal(mod_name,"czero") || equal(mod_name,"dod") ); return ( equal(mod_name,"cstrike") || equal(mod_name,"czero") || equal(mod_name,"dod") )
} }
stock cstrike_running() stock cstrike_running() {
{ new mod_name[32]
new mod_name[32]; get_modname(mod_name,31)
get_modname(mod_name,31);
return ( equal(mod_name,"cstrike") || equal(mod_name,"czero") || equal(mod_name,"csv15") || equal(mod_name,"cs13") ); return ( equal(mod_name,"cstrike") || equal(mod_name,"czero") || equal(mod_name,"csv15") || equal(mod_name,"cs13") )
} }
stock is_running(const mod[]) stock is_running(const mod[]) {
{ new mod_name[32]
new mod_name[32]; get_modname(mod_name,31)
get_modname(mod_name,31);
return equal(mod_name,mod); return equal(mod_name,mod)
} }
stock get_basedir(name[],len) stock get_basedir(name[],len)
{ return get_localinfo("amxx_basedir",name,len)
return get_localinfo("amxx_basedir",name,len);
}
stock get_configsdir(name[],len) stock get_configsdir(name[],len)
{ return get_localinfo("amxx_configsdir",name,len)
return get_localinfo("amxx_configsdir",name,len);
}
stock get_datadir(name[],len) stock get_datadir(name[],len)
{ return get_localinfo("amxx_datadir",name,len)
return get_localinfo("amxx_datadir",name,len);
}
stock register_menu(const title[],keys,const function[],outside=0) stock register_menu(title[],keys,function[],outside=0)
{ register_menucmd(register_menuid(title,outside),keys,function)
register_menucmd(register_menuid(title,outside),keys,function);
}
/* Backwards Compatibility /* Backwards Compatibility
* don't use it! */ * don't use it! */
stock get_customdir(name[],len) stock get_customdir(name[],len)
{ return get_localinfo("amxx_configsdir",name,len)
return get_localinfo("amxx_configsdir",name,len);
}
/* Add a menu item to Menus Front-End plugin ("amxmodmenu"): /* Add a menu item to Menus Front-End plugin ("amxmodmenu"):
* MENU_TEXT: Text that will be shown for this item in menu * MENU_TEXT: Text that will be shown for this item in menu
@ -245,52 +195,46 @@ stock get_customdir(name[],len)
* MENU_ACCESS: Access required for menu * MENU_ACCESS: Access required for menu
* MENU_PLUGIN: The exact case-insensitive name of plugin holding the menu command * MENU_PLUGIN: The exact case-insensitive name of plugin holding the menu command
*/ */
stock AddMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[]) stock AddMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[]) {
{ AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, false)
AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, false);
} }
/* Just like above, but add menu item to "amx_menu", that should also be accessible by non-admins. /* Just like above, but add menu item to "amx_menu", that should also be accessible by non-admins.
*/ */
stock AddClientMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[]) stock AddClientMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[]) {
{ AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, true)
AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, true);
} }
// Internal function used by above stocks. // Internal function used by above stocks.
stock AddMenuItem_call(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[], const bool:ADD_TO_CLIENT_MENU) stock AddMenuItem_call(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[], const bool:ADD_TO_CLIENT_MENU) {
{ new pluginid = is_plugin_loaded("Menus Front-End")
new pluginid = is_plugin_loaded("Menus Front-End");
if (pluginid == -1) { if (pluginid == -1) {
log_amx("Can't add menu item ^"%s^" from plugin ^"%s^" to menu set because the Menus Front-End plugin itself is not loaded!", MENU_TEXT, MENU_PLUGIN); log_amx("Can't add menu item ^"%s^" from plugin ^"%s^" to menu set because the Menus Front-End plugin itself is not loaded!", MENU_TEXT, MENU_PLUGIN)
return; // Menus Front-End doesn't exist, return. return // Menus Front-End doesn't exist, return.
} }
new filename[64], b[1]; new filename[64], b[1]
get_plugin(pluginid, filename, 63, b, 0, b, 0, b, 0, b, 0); get_plugin(pluginid, filename, 63, b, 0, b, 0, b, 0, b, 0)
new status = callfunc_begin(ADD_TO_CLIENT_MENU ? "AddClientMenu" : "AddMenu", filename); new status = callfunc_begin(ADD_TO_CLIENT_MENU ? "AddClientMenu" : "AddMenu", filename)
new bool:failed = true; new bool:failed = true
switch (status) switch (status) {
{ case 1: failed = false
case 1: failed = false; case 0: log_amx("Run time error! (AddMenuItem_call failed)")
case 0: log_amx("Run time error! (AddMenuItem_call failed)"); case -2: log_amx("Function not found! (AddMenuItem_call failed)")
case -2: log_amx("Function not found! (AddMenuItem_call failed)"); case -1: log_amx("Plugin not found! (AddMenuItem_call failed)")
case -1: log_amx("Plugin not found! (AddMenuItem_call failed)");
} }
if (failed) if (failed)
{ return
return;
}
// Item text // Item text
callfunc_push_str(MENU_TEXT); callfunc_push_str(MENU_TEXT)
// Cmd // Cmd
callfunc_push_str(MENU_CMD); callfunc_push_str(MENU_CMD)
// Access // Access
callfunc_push_int(MENU_ACCESS); callfunc_push_int(MENU_ACCESS)
// Menu exists in this plugin // Menu exists in this plugin
callfunc_push_str(MENU_PLUGIN); callfunc_push_str(MENU_PLUGIN)
callfunc_end(); callfunc_end()
} }
@ -300,13 +244,8 @@ stock constraint_offset(low, high, seed, offset)
offset += seed - low; offset += seed - low;
if (offset >= 0) if (offset >= 0)
{
return low + (offset % numElements); return low + (offset % numElements);
}
else else
{
return high - (abs(offset) % numElements) + 1; return high - (abs(offset) % numElements) + 1;
}
return 0; // Makes the compiler happy -_- return 0; // Makes the compiler happy -_-
} }

View File

@ -22,10 +22,7 @@
#include <VexdUM_const> #include <VexdUM_const>
native radius_damage(inflictor, Float:dmg, Float:orig[3], Float:rad, bit = DMG_BULLET, wpnName[]="", hs = 0); native radius_damage(inflictor, Float:dmg, Float:orig[3], Float:rad, bit = DMG_BULLET, wpnName[]="", hs = 0);
native take_damage(victim, attacker, Float:orig[3], Float:dmg, bit = DMG_BULLET, wpnName[]="", hs = 0);
native set_user_model(id, const Model[]=""); native set_user_model(id, const Model[]="");
native entity_use(eUsed, eOther);
native get_num_ents();
native DispatchKeyValue(ent, szKey[], szValue[]); native DispatchKeyValue(ent, szKey[], szValue[]);

View File

@ -46,7 +46,7 @@ stock Float:cos(Float:value)
stock Float:cosh(Float:value) stock Float:cosh(Float:value)
{ {
return floatcosh(value, radian) retuen floatcosh(value, radian)
} }
stock Float:atan(Float:value) stock Float:atan(Float:value)

View File

@ -81,7 +81,6 @@ enum {
targetname targetname
} }
#if !defined _vexd_bcompat_included
/* Find an entity ID from start_from_ent id (use 0 to start from /* Find an entity ID from start_from_ent id (use 0 to start from
* the beginning, category is either "classname", "target" or * the beginning, category is either "classname", "target" or
* "targetname", value is the name you are searching for */ * "targetname", value is the name you are searching for */
@ -92,6 +91,5 @@ stock find_entity(start_from_ent, category, value[]) {
} }
return find_ent_by_class(start_from_ent, value) return find_ent_by_class(start_from_ent, value)
} }
#endif
#endif // _xtrafun_included #endif // _xtrafun_included

View File

@ -67,7 +67,7 @@ forward client_command(id);
/* Called when client is entering to a game. */ /* Called when client is entering to a game. */
forward client_putinserver(id); forward client_putinserver(id);
/* Sets informations about plugin. Returns the plugin id of the calling plugin. */ /* Sets informations about plugin. */
native register_plugin(const plugin_name[],const version[],const author[]); native register_plugin(const plugin_name[],const version[],const author[]);
/* Precache model. Can be used only in plugin_precache() function.*/ /* Precache model. Can be used only in plugin_precache() function.*/
@ -77,7 +77,7 @@ native precache_model(const name[]);
native precache_sound(const name[]); native precache_sound(const name[]);
/* Precaches any file. */ /* Precaches any file. */
native precache_generic(const szFile[]); native precache_generic(szFile[]);
/* Sets info for player. */ /* Sets info for player. */
native set_user_info(index,const info[],const value[]); native set_user_info(index,const info[],const value[]);
@ -121,7 +121,7 @@ native console_cmd(id,const cmd[],{Float,Sql,Result,_}:...);
* "3!4" - 3rd must be different from 4. * "3!4" - 3rd must be different from 4.
* "2&Buy" - 2nd parameter of message must contain "Buy" substring. * "2&Buy" - 2nd parameter of message must contain "Buy" substring.
* "2!Buy" - 2nd parameter of message can't contain "Buy" substring. */ * "2!Buy" - 2nd parameter of message can't contain "Buy" substring. */
native register_event(const event[],const function[],const flags[],const cond[]="", ... ); native register_event(const event[],const function[],const flags[],cond[]="", ... );
/* Registers log event on which the given function will be called /* Registers log event on which the given function will be called
* Examples for conditions: * Examples for conditions:
@ -144,7 +144,7 @@ native set_hudmessage(red=200, green=100, blue=0, Float:x=-1.0, Float:y=0.35, ef
native show_hudmessage(index,const message[],{Float,Sql,Result,_}:...); native show_hudmessage(index,const message[],{Float,Sql,Result,_}:...);
/* Displays menu. Keys have bit values (key 1 is (1<<0), key 5 is (1<<4) etc.). */ /* Displays menu. Keys have bit values (key 1 is (1<<0), key 5 is (1<<4) etc.). */
native show_menu(index,keys,const menu[], time = -1, const title[] = ""); native show_menu(index,keys,const menu[], time = -1, title[] = "");
/* Gets value from client messages. /* Gets value from client messages.
* When you are asking for string the array and length is needed (read_data(2,name,len)). * When you are asking for string the array and length is needed (read_data(2,name,len)).
@ -373,7 +373,7 @@ native client_cmd(index,const command[],{Float,Sql,Result,_}:...);
* It allows to execute some commands on players and bots. * It allows to execute some commands on players and bots.
* Function is excellent for forcing to do an action related to a game (not settings!). * Function is excellent for forcing to do an action related to a game (not settings!).
* The command must stand alone but in arguments you can use spaces. */ * The command must stand alone but in arguments you can use spaces. */
native engclient_cmd(index,const command[],const arg1[]="",const arg2[]=""); native engclient_cmd(index,const command[],arg1[]="",arg2[]="");
/* Executes command on a server console. */ /* Executes command on a server console. */
native server_cmd(const command[],{Float,Sql,Result,_}:...); native server_cmd(const command[],{Float,Sql,Result,_}:...);
@ -450,7 +450,7 @@ native parse_time(const input[],const format[], time = -1);
* "b" - loop task. * "b" - loop task.
* "c" - do task on time after a map timeleft. * "c" - do task on time after a map timeleft.
* "d" - do task on time before a map timelimit. */ * "d" - do task on time before a map timelimit. */
native set_task(Float:time,const function[],id = 0,const parameter[]="",len = 0,const flags[]="", repeat = 0); native set_task(Float:time,const function[],id = 0,parameter[]="",len = 0,flags[]="", repeat = 0);
/* Removes all tasks with given id. If outside var is /* Removes all tasks with given id. If outside var is
* set then a task can be removed also when * set then a task can be removed also when
@ -473,20 +473,14 @@ native get_user_flags(index,id=0);
/* Removes flags for player. */ /* Removes flags for player. */
native remove_user_flags(index,flags=-1,id=0); native remove_user_flags(index,flags=-1,id=0);
/* Registers function which will be called from client console. /* Registers function which will be called from client console. */
* Returns the command ID. native register_clcmd(const client_cmd[],const function[],flags=-1, info[]="");
*/
native register_clcmd(const client_cmd[],const function[],flags=-1, const info[]="");
/* Registers function which will be called from any console. /* Registers function which will be called from any console. */
* Returns the command ID. native register_concmd(const cmd[],const function[],flags=-1, info[]="");
*/
native register_concmd(const cmd[],const function[],flags=-1, const info[]="");
/* Registers function which will be called from server console. /* Registers function which will be called from server console. */
* Returns the command ID. native register_srvcmd(const server_cmd[],const function[],flags=-1, info[]="");
*/
native register_srvcmd(const server_cmd[],const function[],flags=-1, const info[]="");
/* Gets info about client command. */ /* Gets info about client command. */
native get_clcmd(index, command[], len1, &flags, info[], len2, flag); native get_clcmd(index, command[], len1, &flags, info[], len2, flag);
@ -534,7 +528,7 @@ native get_user_menu(index,&id,&keys);
native server_exec(); native server_exec();
/* Emits sound. Sample must be precached. */ /* Emits sound. Sample must be precached. */
native emit_sound(index, channel, const sample[], Float:vol, Float:att,flags, pitch); native emit_sound(index, channel, sample[], Float:vol, Float:att,flags, pitch);
/* Registers new cvar for HL engine. /* Registers new cvar for HL engine.
* Returns the cvar pointer for get/set_pcvar functions. * Returns the cvar pointer for get/set_pcvar functions.
@ -607,7 +601,6 @@ native is_plugin_loaded(const name[]);
/* Gets info about plugin by given index. /* Gets info about plugin by given index.
* Function returns -1 if plugin doesn't exist with given index. * Function returns -1 if plugin doesn't exist with given index.
* Note: the [...] portion should not be used, and is only for backward compatibility. * Note: the [...] portion should not be used, and is only for backward compatibility.
* Use index of -1 to use the calling plugin's ID.
*/ */
native get_plugin(index,filename[],len1,name[],len2,version[],len3,author[],len4,status[],len5,...); native get_plugin(index,filename[],len1,name[],len2,version[],len3,author[],len4,status[],len5,...);
@ -619,21 +612,21 @@ native get_pluginsnum();
* param2 name of plugin (all depends on flags). * param2 name of plugin (all depends on flags).
* Flags: * Flags:
* "a" - pause whole plugin. * "a" - pause whole plugin.
* "b" - pause function.
* "c" - look outside the plugin (by given plugin name). * "c" - look outside the plugin (by given plugin name).
* "d" - set "stopped" status when pausing whole plugin. * "d" - set "stopped" status when pausing whole plugin.
* "e" - set "locked" status when pausing whole plugin.
* In this status plugin is unpauseable. * In this status plugin is unpauseable.
* Example: pause("ac","myplugin.amxx") * Example: pause("ac","myplugin.amxx")
* * pause("bc","myfunc","myplugin.amxx") */
* Note: There used to be the b and e flags as well, native pause(flag[], const param1[]="",const param2[]="");
* which have been deprecated and are no longer used.
*/
native pause(const flag[], const param1[]="",const param2[]="");
/* Unpauses function or plugin. /* Unpauses function or plugin.
* Flags: * Flags:
* "a" - unpause whole plugin. * "a" - unpause whole plugin.
* "b" - unpause function.
* "c" - look outside the plugin (by given plugin name). */ * "c" - look outside the plugin (by given plugin name). */
native unpause(const flag[], const param1[]="",const param2[]=""); native unpause(flag[], const param1[]="",const param2[]="");
/* Call a function in this / an another plugin by name. /* Call a function in this / an another plugin by name.
* Parameters: * Parameters:
@ -678,7 +671,7 @@ native callfunc_push_floatrf(& Float: value);
* which is only kept for special backwards compatibility. * which is only kept for special backwards compatibility.
*/ */
native callfunc_push_str(const VALUE[], bool:copyback=true); native callfunc_push_str(const VALUE[], bool:copyback=true);
native callfunc_push_array(const VALUE[], array_size, bool:copyback=true); native callfunc_push_array(VALUE[], array_size, bool:copyback=true);
/* Make the actual call. /* Make the actual call.
* Return value of the function called. */ * Return value of the function called. */
@ -690,7 +683,7 @@ forward inconsistent_file(id,const filename[], reason[64] );
/* Forces the client and server to be running with the same /* Forces the client and server to be running with the same
* version of the specified file ( e.g., a player model ). */ * version of the specified file ( e.g., a player model ). */
native force_unmodified(force_type, const mins[3] , const maxs[3], const filename[]); native force_unmodified(force_type, mins[3] , maxs[3], const filename[]);
/* Calculates the md5 keysum of a string */ /* Calculates the md5 keysum of a string */
native md5(const szString[], md5buffer[34]); native md5(const szString[], md5buffer[34]);
@ -775,20 +768,20 @@ native set_float_byref(param, Float:value);
// Or copies an array from you to the calling plugin // Or copies an array from you to the calling plugin
native get_array(param, dest[], size); native get_array(param, dest[], size);
native get_array_f(param, Float:dest[], size); native get_array_f(param, Float:dest[], size);
native set_array(param, const source[], size); native set_array(param, source[], size);
native set_array_f(param, const Float:source[], size); native set_array_f(param, Float:source[], size);
/** The new menu natives */ /** The new menu natives */
//If you set ml to 1, everything will be preformatted //If you set ml to 1, everything will be preformatted
// with the multi-lingual system. // with the multi-lingual system.
//NOTE: ml=1 currently is not enabled. //NOTE: ml=1 currently is not enabled.
//handler[] will be called when someone presses a key on your menu //handler[] will be called when someone presses a key on your menu
native menu_create(const title[], const handler[], ml=0); native menu_create(title[], handler[], ml=0);
//Creates a menu item callback handler. //Creates a menu item callback handler.
//The callback handler is passed the playerid, menuid, and itemid. //The callback handler is passed the playerid, menuid, and itemid.
//It can return either ITEM_IGNORE, ITEM_ENABLED, or ITEM_DISABLED. //It can return either ITEM_IGNORE, ITEM_ENABLED, or ITEM_DISABLED.
native menu_makecallback(const function[]); native menu_makecallback(function[]);
//Adds an item to a menu. When displayed, the name will be shown. //Adds an item to a menu. When displayed, the name will be shown.
//If the player does not have the access it is disabled. //If the player does not have the access it is disabled.
@ -815,8 +808,8 @@ native menu_find_id(menu, page, key);
//Gets/sets info about a menu option //Gets/sets info about a menu option
native menu_item_getinfo(menu, item, &access, command[], cmdlen, name[]="", namelen=0, &callback); native menu_item_getinfo(menu, item, &access, command[], cmdlen, name[]="", namelen=0, &callback);
native menu_item_setname(menu, item, const name[]); native menu_item_setname(menu, item, name[]);
native menu_item_setcmd(menu, item, const cmd[]); native menu_item_setcmd(menu, item, cmd[]);
native menu_item_setcall(menu, item, callback=-1); native menu_item_setcall(menu, item, callback=-1);
//Destroys a menu - invalidates the handle //Destroys a menu - invalidates the handle
@ -1049,7 +1042,7 @@ native CreateOneForward(plugin_id, const name[], ...);
* prepares an array. use this and pass the result into * prepares an array. use this and pass the result into
* ExecuteForward() instead of the array itself. * ExecuteForward() instead of the array itself.
*/ */
native PrepareArray(const array[], size, copyback=0); native PrepareArray(array[], size, copyback=0);
/** /**
* executes a forward. returns result in ret. * executes a forward. returns result in ret.

View File

@ -44,7 +44,7 @@ forward bomb_defused(defuser);
/* Custom Weapon Support */ /* Custom Weapon Support */
/* function will return index of new weapon */ /* function will return index of new weapon */
native custom_weapon_add( const wpnname[],melee = 0,const logname[]="" ); native custom_weapon_add( wpnname[],melee = 0,logname[]="" );
/* Function will pass damage done by this custom weapon to stats module and other plugins */ /* Function will pass damage done by this custom weapon to stats module and other plugins */
native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 ); native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 );
/* Function will pass info about custom weapon shot to stats module */ /* Function will pass info about custom weapon shot to stats module */

View File

@ -119,27 +119,20 @@ native dbi_field_name(Result:result, field, name[], maxLength);
/* This function can be used to find out if a table in a Sqlite database exists. /* This function can be used to find out if a table in a Sqlite database exists.
*/ */
stock bool:sqlite_table_exists(Sql:sql, table[]) stock bool:sqlite_table_exists(Sql:sql, table[]) {
{ new bool:exists
new bool:exists; new query[128]
new query[128]; format(query, 127, "SELECT name FROM sqlite_master WHERE type='table' AND name='%s' LIMIT 1;", table)
format(query, 127, "SELECT name FROM sqlite_master WHERE type='table' AND name='%s' LIMIT 1;", table);
new Result:result = dbi_query(sql, query); new Result:result = dbi_query(sql, query)
if (dbi_nextrow(result)) if (dbi_nextrow(result))
{ exists = true
exists = true;
}
else else
{ exists = false
exists = false;
}
if (result > RESULT_NONE) if (result > RESULT_NONE)
{ dbi_free_result(result)
dbi_free_result(result);
}
return exists; return exists
} }

View File

@ -59,7 +59,7 @@ native dod_set_user_kills(index,value,refresh=1);
native dod_set_user_score(index,value,refresh=1); native dod_set_user_score(index,value,refresh=1);
/* Sets new team name for this player */ /* Sets new team name for this player */
native dod_set_pl_teamname(index,const szName[]); native dod_set_pl_teamname(index,szName[]);
/* Gets player team name */ /* Gets player team name */
native dod_get_pl_teamname(index,szName[],len); native dod_get_pl_teamname(index,szName[],len);
@ -122,7 +122,7 @@ native objectives_reinit( player=0 );
native objective_get_data( index, CP_VALUE:key, szValue[]="", len=0 ); native objective_get_data( index, CP_VALUE:key, szValue[]="", len=0 );
/* use this function to change control point's data */ /* use this function to change control point's data */
native objective_set_data( index, CP_VALUE:key , iValue=-1, const szValue[]="" ); native objective_set_data( index, CP_VALUE:key , iValue=-1, szValue[]="" );
enum CA_VALUE { enum CA_VALUE {
CA_edict = 1, CA_edict = 1,
@ -140,4 +140,4 @@ enum CA_VALUE {
native area_get_data( index, CA_VALUE:key, szValue[]="", len=0 ); native area_get_data( index, CA_VALUE:key, szValue[]="", len=0 );
/* use this function to change control point's area data */ /* use this function to change control point's area data */
native area_set_data( index, CA_VALUE:key , iValue=-1, const szValue[]="" ); native area_set_data( index, CA_VALUE:key , iValue=-1, szValue[]="" );

View File

@ -54,7 +54,7 @@ forward dod_client_changeclass(id, class, oldclass);
forward dod_client_spawn(id); forward dod_client_spawn(id);
/* Sets the model for a player */ /* Sets the model for a player */
native dod_set_model(id, const model[]); native dod_set_model(id, model[]);
/* Sets the model for a player */ /* Sets the model for a player */
native dod_set_body_number(id, bodynumber); native dod_set_body_number(id, bodynumber);
@ -64,7 +64,7 @@ native dod_clear_model(id);
/* Custom Weapon Support */ /* Custom Weapon Support */
/* function will return index of new weapon */ /* function will return index of new weapon */
native custom_weapon_add( const wpnname[], melee = 0, const logname[]="" ); native custom_weapon_add( wpnname[], melee = 0, logname[]="" );
/* Function will pass damage done by this custom weapon to stats module and other plugins */ /* Function will pass damage done by this custom weapon to stats module and other plugins */
native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 ); native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 );
@ -93,10 +93,10 @@ native xmod_is_custom_wpn(wpnindex);
/************* Shared Natives End ********************************/ /************* Shared Natives End ********************************/
/* weapon logname to weapon name convertion */ /* weapon logname to weapon name convertion */
native dod_wpnlog_to_name(const logname[],name[],len); native dod_wpnlog_to_name(logname[],name[],len);
/* weapon logname to weapon index convertion */ /* weapon logname to weapon index convertion */
native dod_wpnlog_to_id(const logname[]); native dod_wpnlog_to_id(logname[]);
native dod_get_map_info( info ); native dod_get_map_info( info );

View File

@ -25,13 +25,13 @@
native traceresult(type,{Float,Sql,Result,_}:...); native traceresult(type,{Float,Sql,Result,_}:...);
/* Registers a client impulse to a function. Function is passed the ID of the user. */ /* Registers a client impulse to a function. Function is passed the ID of the user. */
native register_impulse(impulse, const function[]); native register_impulse(impulse, function[]);
/* Registers a touch action to a function by classnames. Use * to specify any classname. */ /* Registers a touch action to a function by classnames. Use * to specify any classname. */
native register_touch(const Touched[], const Toucher[], const function[]); native register_touch(Touched[], Toucher[], function[]);
/* Registers a think action to a function by classname. */ /* Registers a think action to a function by classname. */
native register_think(const Classname[], const function[]); native register_think(Classname[], function[]);
/* NOTE: In old engine versions, this was not the case. Values are now WINDOWS values. /* NOTE: In old engine versions, this was not the case. Values are now WINDOWS values.
* You must pass with the windows offset (e.g. if 230 on windows, pass 230 no matter what) * You must pass with the windows offset (e.g. if 230 on windows, pass 230 no matter what)
@ -39,14 +39,14 @@ native register_think(const Classname[], const function[]);
*/ */
/* Precaches an event. */ /* Precaches an event. */
native precache_event(type, const Name[], {Float,Sql,Result,_}:...); native precache_event(type, Name[], {Float,Sql,Result,_}:...);
/* set/get a user's speak flags */ /* set/get a user's speak flags */
native set_speak(iIndex, iSpeakFlags); native set_speak(iIndex, iSpeakFlags)
native get_speak(iIndex); native get_speak(iIndex)
/* Drops an entity to the floor (work?) */ /* Drops an entity to the floor (work?) */
native drop_to_floor(entity); native drop_to_floor(entity)
/* Get whole buffer containing keys and their data. */ /* Get whole buffer containing keys and their data. */
native get_info_keybuffer(id, buffer[], length); native get_info_keybuffer(id, buffer[], length);
@ -62,7 +62,7 @@ native get_global_vector(variable, Float:vector[3]);
native get_global_edict(variable); native get_global_edict(variable);
/* Set entity bounds. */ /* Set entity bounds. */
native entity_set_size(index, const Float:mins[3], const Float:maxs[3]); native entity_set_size(index, Float:mins[3], Float:maxs[3]);
/* Get decal index */ /* Get decal index */
native get_decal_index(const szDecalName[]); native get_decal_index(const szDecalName[]);
@ -76,7 +76,7 @@ native entity_set_int(iIndex, iKey, iVal);
native Float:entity_get_float(iIndex, iKey); native Float:entity_get_float(iIndex, iKey);
native entity_set_float(iIndex, iKey, Float:iVal); native entity_set_float(iIndex, iKey, Float:iVal);
native entity_get_vector(iIndex, iKey, Float:vRetVector[3]); native entity_get_vector(iIndex, iKey, Float:vRetVector[3]);
native entity_set_vector(iIndex, iKey, const Float:vNewVector[3]); native entity_set_vector(iIndex, iKey, Float:vNewVector[3]);
native entity_get_edict(iIndex, iKey); native entity_get_edict(iIndex, iKey);
native entity_set_edict(iIndex, iKey, iNewIndex); native entity_set_edict(iIndex, iKey, iNewIndex);
native entity_get_string(iIndex, iKey, szReturn[], iRetLen); native entity_get_string(iIndex, iKey, szReturn[], iRetLen);
@ -85,26 +85,26 @@ native entity_get_byte(iIndex, iKey);
native entity_set_byte(iIndex, iKey, iVal); native entity_set_byte(iIndex, iKey, iVal);
/* Creates an entity, will return the index of the created entity. ClassName must be valid. */ /* Creates an entity, will return the index of the created entity. ClassName must be valid. */
native create_entity(const szClassname[]); native create_entity(szClassname[]);
/* Finds an entity in the world, will return 0 if nothing is found */ /* Finds an entity in the world, will return 0 if nothing is found */
native find_ent_by_class(iIndex, const szClass[]); native find_ent_by_class(iIndex, szClass[]);
//optionally you can set a jghg2 type //optionally you can set a jghg2 type
// 1: target, 2:targetname, 0:classname (default) // 1: target, 2:targetname, 0:classname (default)
native find_ent_by_owner(iIndex, const szClass[], iOwner, iJghgType=0); native find_ent_by_owner(iIndex, szClass[], iOwner, iJghgType=0);
native find_ent_by_target(iIndex, const szClass[]); native find_ent_by_target(iIndex, szClass[]);
native find_ent_by_tname(iIndex, const szClass[]); native find_ent_by_tname(iIndex, szClass[]);
native find_ent_by_model(iIndex, const szClass[], const szModel[]); native find_ent_by_model(iIndex, szClass[], szModel[]);
native find_ent_in_sphere(start_from_ent, const Float:origin[3], Float:radius); native find_ent_in_sphere(start_from_ent, Float:origin[3], Float:radius);
//this will CBaseEntity::Think() or something from the entity //this will CBaseEntity::Think() or something from the entity
native call_think(entity); native call_think(entity)
/* Is entity valid? */ /* Is entity valid? */
native is_valid_ent(iIndex); native is_valid_ent(iIndex);
/* Proper origin setting, keeps updated with Half-Life engine. */ /* Proper origin setting, keeps updated with Half-Life engine. */
native entity_set_origin(iIndex, const Float:fNewOrigin[3]); native entity_set_origin(iIndex, Float:fNewOrigin[3]);
/* Sets the model of an Entity. */ /* Sets the model of an Entity. */
native entity_set_model(iIndex, const szModel[]); native entity_set_model(iIndex, const szModel[]);
@ -125,7 +125,7 @@ native fake_touch(entTouched, entToucher);
native DispatchKeyValue(...); native DispatchKeyValue(...);
#endif #endif
native get_keyvalue(entity, const szKey[], value[], maxLength); native get_keyvalue(entity, szKey[], value[], maxLength);
native copy_keyvalue(szClassName[],sizea,szKeyName[],sizeb,szValue[],sizec); native copy_keyvalue(szClassName[],sizea,szKeyName[],sizeb,szValue[],sizec);
@ -134,24 +134,24 @@ native DispatchSpawn(iIndex);
/* Hurts/Kills players in a sphere, like an explosion, Multiplier determines damage. */ /* Hurts/Kills players in a sphere, like an explosion, Multiplier determines damage. */
#if !defined AMXMOD_BCOMPAT #if !defined AMXMOD_BCOMPAT
native radius_damage(const Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier); native radius_damage(Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier);
#endif #endif
/* Will return the contents of a point (inside map? in sky? outside map? etc.). */ /* Will return the contents of a point (inside map? in sky? outside map? etc.). */
native point_contents(const Float:fCheckAt[3]); native point_contents(Float:fCheckAt[3]);
/* Trace a line from Start(X, Y, Z) to End(X, Y, Z), will return the point hit in vReturn[3] /* Trace a line from Start(X, Y, Z) to End(X, Y, Z), will return the point hit in vReturn[3]
* and an entity index if an entity is hit. */ * and an entity index if an entity is hit. */
#if !defined AMXMOD_BCOMPAT #if !defined AMXMOD_BCOMPAT
native trace_line(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]); native trace_line(iIgnoreEnt, Float:fStart[3], Float:fEnd[3], Float:vReturn[3]);
#endif #endif
/* Traces a hull. */ /* Traces a hull. */
native trace_hull(const Float:origin[3],hull,ignoredent=0,ignoremonsters=0); native trace_hull(Float:origin[3],hull,ignoredent=0,ignoremonsters=0);
/* Traces a line, and returns the normal to the plane hit in vReturn. /* Traces a line, and returns the normal to the plane hit in vReturn.
* Returns 0 if theres no normal. */ * Returns 0 if theres no normal. */
native trace_normal(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]); native trace_normal(iIgnoreEnt, Float:fStart[3], Float:fEnd[3], Float:vReturn[3]);
/* Gets the ID of a grenade. */ /* Gets the ID of a grenade. */
native get_grenade_id(id, model[], len, grenadeid = 0); native get_grenade_id(id, model[], len, grenadeid = 0);
@ -169,7 +169,7 @@ native attach_view(iIndex, iTargetIndex);
native set_view(iIndex, ViewType); native set_view(iIndex, ViewType);
/* Direct copy of PLAYBACK_EVENT_FULL from Metamod/HLSDK. If you don't know how that works, you probably shouldn't be using it. */ /* Direct copy of PLAYBACK_EVENT_FULL from Metamod/HLSDK. If you don't know how that works, you probably shouldn't be using it. */
native playback_event(flags,invoker,eventindex,Float:delay,const Float:origin[3],const Float:angles[3],Float:fparam1,Float:fparam2,iparam1,iparam2,bparam1,bparam2); native playback_event(flags,invoker,eventindex,Float:delay,Float:origin[3],Float:angles[3],Float:fparam1,Float:fparam2,iparam1,iparam2,bparam1,bparam2);
/* Gets parameters sent from CmdStart. /* Gets parameters sent from CmdStart.
Note that you will receive modified values if any other plugin have Note that you will receive modified values if any other plugin have
@ -224,17 +224,17 @@ forward pfn_spawn(entid);
* If aroundent is 0 its origin is not used, but origin in 6th parameter. Ie, do not specify 6th parameter (origin) if you specified an entity * If aroundent is 0 its origin is not used, but origin in 6th parameter. Ie, do not specify 6th parameter (origin) if you specified an entity
* in aroundent. * in aroundent.
*/ */
native find_sphere_class(aroundent, const _lookforclassname[], Float:radius, entlist[], maxents, const Float:origin[3] = {0.0, 0.0, 0.0}); native find_sphere_class(aroundent, _lookforclassname[], Float:radius, entlist[], maxents, Float:origin[3] = {0.0, 0.0, 0.0});
/* SDK function - checks if an origin is in an entity's view cone /* SDK function - checks if an origin is in an entity's view cone
* Set use3d to 1 to do the calculation in 3D. Otherwise it will be in 2D. * Set use3d to 1 to do the calculation in 3D. Otherwise it will be in 2D.
*/ */
native is_in_viewcone(entity, const Float:origin[3], use3d = 0); native is_in_viewcone(entity, Float:origin[3], use3d = 0);
//SDK function - checks if an entity is visible to an entity //SDK function - checks if an entity is visible to an entity
native is_visible(entity, target); native is_visible(entity, target);
//Added at twistedeuphoria's request, see funcwiki for details //Added at twistedeuphoria's request, see funcwiki for details
native trace_forward(const Float:start[3], const Float:angle[3], Float:give, ignoreEnt, &Float:hitX, &Float:hitY, &Float:shortestDistance, &Float:shortestDistLow, &Float:shortestDistHigh); native trace_forward(Float:start[3], Float:angle[3], Float:give, ignoreEnt, &Float:hitX, &Float:hitY, &Float:shortestDistance, &Float:shortestDistLow, &Float:shortestDistHigh);
#include <engine_stocks> #include <engine_stocks>

View File

@ -19,133 +19,127 @@
#include <engine> #include <engine>
#endif #endif
stock fakedamage(idvictim,const szClassname[],Float:takedmgdamage,damagetype) stock fakedamage(idvictim,szClassname[],Float:takedmgdamage,damagetype)
{ {
new entity = create_entity("trigger_hurt"); new entity = create_entity("trigger_hurt")
if (entity) if (entity)
{ {
DispatchKeyValue(entity,"classname","trigger_hurt"); DispatchKeyValue(entity,"classname","trigger_hurt")
new szDamage[16]; new szDamage[16]
// Takedamages only do half damage per attack (damage is damage per second, and it's triggered in 0.5 second intervals). // Takedamages only do half damage per attack (damage is damage per second, and it's triggered in 0.5 second intervals).
// Compensate for that. // Compensate for that.
format(szDamage,15,"%f",takedmgdamage * 2); format(szDamage,15,"%f",takedmgdamage * 2)
DispatchKeyValue(entity,"dmg",szDamage); DispatchKeyValue(entity,"dmg",szDamage)
format(szDamage,15,"%i",damagetype); format(szDamage,15,"%i",damagetype)
DispatchKeyValue(entity,"damagetype",szDamage); DispatchKeyValue(entity,"damagetype",szDamage)
DispatchKeyValue(entity,"origin","8192 8192 8192"); DispatchKeyValue(entity,"origin","8192 8192 8192")
DispatchSpawn(entity); DispatchSpawn(entity)
entity_set_string(entity, EV_SZ_classname, szClassname); entity_set_string(entity, EV_SZ_classname, szClassname)
fake_touch(entity,idvictim); fake_touch(entity,idvictim)
remove_entity(entity); remove_entity(entity)
return 1; return 1
} }
return 0; return 0
} }
//wrapper for find_ent_by_class //wrapper for find_ent_by_class
stock find_ent(iStart, const szClassname[]) stock find_ent(iStart, szClassname[])
{ {
return find_ent_by_class(iStart, szClassname); return find_ent_by_class(iStart, szClassname)
} }
/* Get the Button(s) user is pressing */ /* Get the Button(s) user is pressing */
stock get_user_button(id) stock get_user_button(id)
{ return entity_get_int(id, EV_INT_button)
return entity_get_int(id, EV_INT_button);
}
stock get_user_oldbutton(id) stock get_user_oldbutton(id)
{ return entity_get_int(id, EV_INT_oldbuttons)
return entity_get_int(id, EV_INT_oldbuttons);
}
/* Get flags an entity is flagged with */ /* Get flags an entity is flagged with */
stock get_entity_flags(ent) stock get_entity_flags(ent)
{ return entity_get_int(ent, EV_INT_flags)
return entity_get_int(ent, EV_INT_flags);
}
/* Get the distance between two entities */ /* Get the distance between two entities */
stock get_entity_distance(ent1, ent2) stock get_entity_distance(ent1, ent2)
{ {
return floatround(entity_range(ent1, ent2)); return floatround(entity_range(ent1, ent2))
} }
/* Get grenade thrown by this user */ /* Get grenade thrown by this user */
stock get_grenade(id) stock get_grenade(id)
{ {
new iGrenade = find_ent_by_class(-1, "grenade"); new iGrenade = find_ent_by_class(-1, "grenade")
while(iGrenade > 0) while(iGrenade > 0)
{ {
if(entity_get_edict(iGrenade, EV_ENT_owner) == id) if(entity_get_edict(iGrenade, EV_ENT_owner) == id)
return iGrenade; return iGrenade
iGrenade = find_ent_by_class(iGrenade, "grenade"); iGrenade = find_ent_by_class(iGrenade, "grenade")
} }
return 0; return 0
} }
/* Get origin of a brush entity */ /* Get origin of a brush entity */
stock get_brush_entity_origin(ent, Float:orig[3]) stock get_brush_entity_origin(ent, Float:orig[3])
{ {
new Float:Min[3], Float:Max[3]; new Float:Min[3], Float:Max[3]
entity_get_vector(ent, EV_VEC_mins, Min); entity_get_vector(ent, EV_VEC_mins, Min)
entity_get_vector(ent, EV_VEC_maxs, Max); entity_get_vector(ent, EV_VEC_maxs, Max)
orig[0] = (Min[0] + Max[0]) * 0.5; orig[0] = (Min[0] + Max[0]) * 0.5
orig[1] = (Min[1] + Max[1]) * 0.5; orig[1] = (Min[1] + Max[1]) * 0.5
orig[2] = (Min[2] + Max[2]) * 0.5; orig[2] = (Min[2] + Max[2]) * 0.5
return 1; return 1
} }
/* Remove entity by name */ /* Remove entity by name */
stock remove_entity_name(const eName[]) stock remove_entity_name(eName[])
{ {
new iEntity = find_ent_by_class(-1, eName); new iEntity = find_ent_by_class(-1, eName)
while (iEntity > 0) while (iEntity > 0)
{ {
remove_entity(iEntity); remove_entity(iEntity)
iEntity = find_ent_by_class(-1, eName); iEntity = find_ent_by_class(-1, eName)
} }
return 1; return 1
} }
/* Get the contents of the point a user is aiming at */ /* Get the contents of the point a user is aiming at */
stock ViewContents(id) stock ViewContents(id)
{ {
new origin[3], Float:Orig[3]; new origin[3], Float:Orig[3]
get_user_origin(id, origin, 3); get_user_origin(id, origin, 3)
Orig[0] = float(origin[0]); Orig[0] = float(origin[0])
Orig[1] = float(origin[1]); Orig[1] = float(origin[1])
Orig[2] = float(origin[2]); Orig[2] = float(origin[2])
return point_contents(Orig); return point_contents(Orig)
} }
stock get_speed(ent) stock get_speed(ent)
{ {
new Float:Vel[3]; new Float:Vel[3]
entity_get_vector(ent, EV_VEC_velocity, Vel); entity_get_vector(ent, EV_VEC_velocity, Vel)
return floatround(vector_length(Vel)); return floatround(vector_length(Vel))
} }
/* Set rendering of an entity */ /* Set rendering of an entity */
stock set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16) stock set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{ {
entity_set_int(index,EV_INT_renderfx,fx); entity_set_int(index,EV_INT_renderfx,fx)
new Float:RenderColor[3]; new Float:RenderColor[3]
RenderColor[0] = float(r); RenderColor[0] = float(r)
RenderColor[1] = float(g); RenderColor[1] = float(g)
RenderColor[2] = float(b); RenderColor[2] = float(b)
entity_set_vector(index,EV_VEC_rendercolor,RenderColor); entity_set_vector(index,EV_VEC_rendercolor,RenderColor)
entity_set_int(index,EV_INT_rendermode,render); entity_set_int(index,EV_INT_rendermode,render)
entity_set_float(index,EV_FL_renderamt,float(amount)); entity_set_float(index,EV_FL_renderamt,float(amount))
return 1; return 1
} }
/* Set flags on an entity */ /* Set flags on an entity */
@ -155,82 +149,76 @@ stock set_entity_flags(ent,flag,onoff)
{ {
if (onoff == 1) if (onoff == 1)
{ {
return 2; return 2
} }
else else
{ {
entity_set_int(ent,EV_INT_flags,entity_get_int(ent,EV_INT_flags)-flag); entity_set_int(ent,EV_INT_flags,entity_get_int(ent,EV_INT_flags)-flag)
return 1; return 1
} }
} }
else else
{ {
if (onoff == 0) if (onoff == 0)
{ {
return 2; return 2
} }
else else
{ {
entity_set_int(ent,EV_INT_flags,entity_get_int(ent,EV_INT_flags)+flag); entity_set_int(ent,EV_INT_flags,entity_get_int(ent,EV_INT_flags)+flag)
return 1; return 1
} }
} }
return 0; return 0
} }
/* If visible = 1, entity will be set to be visible, else invisible. */ /* If visible = 1, entity will be set to be visible, else invisible. */
stock set_entity_visibility(entity, visible = 1) stock set_entity_visibility(entity, visible = 1) {
{ entity_set_int(entity, EV_INT_effects, visible == 1 ? entity_get_int(entity, EV_INT_effects) & ~EF_NODRAW : entity_get_int(entity, EV_INT_effects) | EF_NODRAW)
entity_set_int(entity, EV_INT_effects, visible == 1 ? entity_get_int(entity, EV_INT_effects) & ~EF_NODRAW : entity_get_int(entity, EV_INT_effects) | EF_NODRAW);
return 1; return 1
} }
/* Returns 1 if entity is visible. */ /* Returns 1 if entity is visible. */
stock get_entity_visibility(entity) stock get_entity_visibility(entity) {
{ return !(entity_get_int(entity, EV_INT_effects) & EF_NODRAW)
return !(entity_get_int(entity, EV_INT_effects) & EF_NODRAW);
} }
stock set_user_velocity(entity, const Float:vec[3]) stock set_user_velocity(entity, Float:vec[3])
{ {
return entity_set_vector(entity, EV_VEC_velocity, vec); return entity_set_vector(entity, EV_VEC_velocity, vec)
} }
stock get_user_velocity(entity, Float:vec[3]) stock get_user_velocity(entity, Float:vec[3])
{ {
return entity_get_vector(entity, EV_VEC_velocity, vec); return entity_get_vector(entity, EV_VEC_velocity, vec)
} }
/* Backwards compatible */ /* Backwards compatible */
/* Hurts/Kills players in a sphere, like an explosion, Multiplier determines damage. */ /* Hurts/Kills players in a sphere, like an explosion, Multiplier determines damage. */
stock RadiusDamage(const Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier) stock RadiusDamage(Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier) {
{ return radius_damage(fExplodeAt, iDamageMultiplier, iRadiusMultiplier)
return radius_damage(fExplodeAt, iDamageMultiplier, iRadiusMultiplier);
} }
/* Gives you a velocity in the direction a player is looking, iVelocity is the multiplier. */ /* Gives you a velocity in the direction a player is looking, iVelocity is the multiplier. */
stock VelocityByAim(iIndex,iVelocity, Float:vRetValue[3]) stock VelocityByAim(iIndex,iVelocity, Float:vRetValue[3]) {
{ return velocity_by_aim(iIndex,iVelocity,vRetValue)
return velocity_by_aim(iIndex,iVelocity,vRetValue);
} }
/* Will return the contents of a point (inside map? in sky? outside map? etc.). */ /* Will return the contents of a point (inside map? in sky? outside map? etc.). */
stock PointContents(const Float:fCheckAt[3]) stock PointContents(Float:fCheckAt[3]) {
{
return point_contents(fCheckAt); return point_contents(fCheckAt);
} }
stock set_size(index, const Float:mins[3], const Float:maxs[3]) stock set_size(index, Float:mins[3], Float:maxs[3]) {
{ return entity_set_size(index,mins,maxs)
return entity_set_size(index,mins,maxs);
} }
//by Twilight Suzuka, request addition at29428 //by Twilight Suzuka, request addition at29428
//"Lifted from HLSDK" //"Lifted from HLSDK"
stock IsInWorld( ent ) stock IsInWorld( ent )
{ {
new Float:origin[3]; new Float:origin[3]
entity_get_vector(ent,EV_VEC_origin,origin); entity_get_vector(ent,EV_VEC_origin,origin)
if (origin[0] >= 4096.0) return 0; if (origin[0] >= 4096.0) return 0;
if (origin[1] >= 4096.0) return 0; if (origin[1] >= 4096.0) return 0;
@ -239,8 +227,8 @@ stock IsInWorld( ent )
if (origin[1] <= -4096.0) return 0; if (origin[1] <= -4096.0) return 0;
if (origin[2] <= -4096.0) return 0; if (origin[2] <= -4096.0) return 0;
new Float:velocity[3]; new Float:velocity[3]
entity_get_vector(ent,EV_VEC_velocity,velocity); entity_get_vector(ent,EV_VEC_velocity,velocity)
if (velocity[0] >= 2000) return 0; if (velocity[0] >= 2000) return 0;
if (velocity[1] >= 2000) return 0; if (velocity[1] >= 2000) return 0;

View File

@ -68,7 +68,7 @@ native set_pdata_float(_index,_Offset,Float:_Value,_linuxdiff=5);
/* Registers a forward. /* Registers a forward.
* Returns an id you can pass to unregister_forward * Returns an id you can pass to unregister_forward
*/ */
native register_forward(_forwardType,const _function[],_post=0); native register_forward(_forwardType,_function[],_post=0);
/* Unregisters a forward. /* Unregisters a forward.
* The registerId must be from register_forward, and * The registerId must be from register_forward, and
@ -86,7 +86,7 @@ native forward_return(type,{Float,Sql,Result,_}:...);
* get_orig_retval(&Float:value) - retrieves float return value by reference * get_orig_retval(&Float:value) - retrieves float return value by reference
* get_orig_retval(value[], len) - retrives string return value * get_orig_retval(value[], len) - retrives string return value
*/ */
native get_orig_retval({Float,_}:...); native get_orig_retval({Float,_}:...)
native engfunc(type,{Float,Sql,Result,AlertType,_}:...); native engfunc(type,{Float,Sql,Result,AlertType,_}:...);
native dllfunc(type,{Float,Sql,Result,_}:...); native dllfunc(type,{Float,Sql,Result,_}:...);

View File

@ -20,11 +20,10 @@
/* The actual return value of the function, use these instead of PLUGIN_HANDLED etc when /* The actual return value of the function, use these instead of PLUGIN_HANDLED etc when
* returning from registered forwards. * returning from registered forwards.
*/ */
#define FMRES_IGNORED 1 // Calls target function, returns normal value #define FMRES_HANDLED 2
#define FMRES_HANDLED 2 // Tells metamod you did something, still calls target function and returns normal value #define FMRES_SUPERCEDE 4
#define FMRES_OVERRIDE 3 // Supposed to still call the target function but return your value instead #define FMRES_IGNORED 1
// however this does not work properly with metamod; use supercede instead. #define FMRES_OVERRIDE 3
#define FMRES_SUPERCEDE 4 // Block the target call, and use your return value (if applicable)
// Use this with GetInfoKeyBuffer if you want the server's localinfo buffer // Use this with GetInfoKeyBuffer if you want the server's localinfo buffer
#define FM_NULLENT -1 #define FM_NULLENT -1

View File

@ -15,259 +15,258 @@
#define _fakemeta_stocks_included #define _fakemeta_stocks_included
// EngFuncs // EngFuncs
stock EF_PrecacheModel(const string[]) stock EF_PrecacheModel(string[])
return engfunc(EngFunc_PrecacheModel, string); return engfunc(EngFunc_PrecacheModel, string)
stock EF_PrecacheSound(string[])
stock EF_PrecacheSound(const string[]) return engfunc(EngFunc_PrecacheSound, string)
return engfunc(EngFunc_PrecacheSound, string);
stock EF_SetModel(const ID, const STRING[]) stock EF_SetModel(const ID, const STRING[])
return engfunc(EngFunc_SetModel, ID, STRING); return engfunc(EngFunc_SetModel, ID, STRING)
stock EF_ModelIndex(const STRING[]) stock EF_ModelIndex(const STRING[])
return engfunc(EngFunc_ModelIndex, STRING); return engfunc(EngFunc_ModelIndex, STRING)
stock EF_ModelFrames(modelIndex) stock EF_ModelFrames(modelIndex)
return engfunc(EngFunc_ModelFrames, modelIndex); return engfunc(EngFunc_ModelFrames, modelIndex)
stock EF_SetSize(const STRING[]) stock EF_SetSize(const STRING[])
return engfunc(EngFunc_SetSize, STRING); return engfunc(EngFunc_SetSize, STRING)
stock EF_ChangeLevel(const S1[], const S2[]) stock EF_ChangeLevel(const S1[], const S2[])
return engfunc(EngFunc_ChangeLevel, S1, S2); return engfunc(EngFunc_ChangeLevel, S1, S2)
stock EF_VecToYaw(const Float:VECTOR[3], &Float:returnValue) stock EF_VecToYaw(const Float:VECTOR[3], &Float:returnValue)
return engfunc(EngFunc_VecToYaw, VECTOR, returnValue); return engfunc(EngFunc_VecToYaw, VECTOR, returnValue)
stock EF_VecToAngles(const Float:VECTORIN[3], const Float:VECTOROUT[3]) stock EF_VecToAngles(const Float:VECTORIN[3], const Float:VECTOROUT[3])
return engfunc(EngFunc_VecToAngles, VECTORIN, VECTOROUT); return engfunc(EngFunc_VecToAngles, VECTORIN, VECTOROUT)
stock EF_MoveToOrigin(const ENTITY, const Float:GOAL[3], const Float:DISTANCE, const MOVETYPE) stock EF_MoveToOrigin(const ENTITY, const Float:GOAL[3], const Float:DISTANCE, const MOVETYPE)
return engfunc(EngFunc_MoveToOrigin, ENTITY, GOAL, DISTANCE, MOVETYPE); return engfunc(EngFunc_MoveToOrigin, ENTITY, GOAL, DISTANCE, MOVETYPE)
stock EF_ChangeYaw(const ENTITY) stock EF_ChangeYaw(const ENTITY)
return engfunc(EngFunc_ChangeYaw, ENTITY); return engfunc(EngFunc_ChangeYaw, ENTITY)
stock EF_ChangePitch(const ENTITY) stock EF_ChangePitch(const ENTITY)
return engfunc(EngFunc_ChangePitch, ENTITY); return engfunc(EngFunc_ChangePitch, ENTITY)
stock EF_FindEntityByString(const STARTSEARCHAFTER, const FIELD[], const VALUE[]) stock EF_FindEntityByString(const STARTSEARCHAFTER, const FIELD[], const VALUE[])
return engfunc(EngFunc_FindEntityByString, STARTSEARCHAFTER, FIELD, VALUE); return engfunc(EngFunc_FindEntityByString, STARTSEARCHAFTER, FIELD, VALUE)
stock EF_GetEntityIllum(const ENTITY) stock EF_GetEntityIllum(const ENTITY)
return engfunc(EngFunc_GetEntityIllum, ENTITY); return engfunc(EngFunc_GetEntityIllum, ENTITY)
stock EF_FindEntityInSphere(const STARTSEARCHAFTER, const Float:ORIGIN[3], Float:radius) stock EF_FindEntityInSphere(const STARTSEARCHAFTER, const Float:ORIGIN[3], Float:radius)
return engfunc(EngFunc_FindEntityInSphere, STARTSEARCHAFTER, ORIGIN, radius); return engfunc(EngFunc_FindEntityInSphere, STARTSEARCHAFTER, ORIGIN, radius)
stock EF_FindClientInPVS(const CLIENT) stock EF_FindClientInPVS(const CLIENT)
return engfunc(EngFunc_FindClientInPVS, CLIENT); return engfunc(EngFunc_FindClientInPVS, CLIENT)
stock EF_EntitiesInPVS(const CLIENT) stock EF_EntitiesInPVS(const CLIENT)
return engfunc(EngFunc_EntitiesInPVS, CLIENT); return engfunc(EngFunc_EntitiesInPVS, CLIENT)
stock EF_MakeVectors(const Float:VECTOR[3]) stock EF_MakeVectors(const Float:VECTOR[3])
return engfunc(EngFunc_MakeVectors, VECTOR); return engfunc(EngFunc_MakeVectors, VECTOR)
stock EF_AngleVectors(const Float:VECTOR[3], Float:forward_[3], Float:right[3], Float:up[3]) stock EF_AngleVectors(const Float:VECTOR[3], Float:forward_[3], Float:right[3], Float:up[3])
return engfunc(EngFunc_AngleVectors, VECTOR, forward_, right, up); return engfunc(EngFunc_AngleVectors, VECTOR, forward_, right, up)
stock EF_CreateEntity() stock EF_CreateEntity()
return engfunc(EngFunc_CreateEntity); return engfunc(EngFunc_CreateEntity)
stock EF_RemoveEntity(const ENTITY) stock EF_RemoveEntity(const ENTITY)
return engfunc(EngFunc_RemoveEntity, ENTITY); return engfunc(EngFunc_RemoveEntity, ENTITY)
stock EF_CreateNamedEntity(const CLASSNAME) stock EF_CreateNamedEntity(const CLASSNAME)
return engfunc(EngFunc_CreateNamedEntity, CLASSNAME); return engfunc(EngFunc_CreateNamedEntity, CLASSNAME)
stock EF_MakeStatic(const ENTITY) stock EF_MakeStatic(const ENTITY)
return engfunc(EngFunc_MakeStatic, ENTITY); return engfunc(EngFunc_MakeStatic, ENTITY)
stock EF_EntIsOnFloor(const ENTITY) stock EF_EntIsOnFloor(const ENTITY)
return engfunc(EngFunc_EntIsOnFloor, ENTITY); return engfunc(EngFunc_EntIsOnFloor, ENTITY)
stock EF_DropToFloor(const ENTITY) stock EF_DropToFloor(const ENTITY)
return engfunc(EngFunc_DropToFloor, ENTITY); return engfunc(EngFunc_DropToFloor, ENTITY)
stock EF_WalkMove(const ENTITY, Float:yaw, Float:distance, iMode) stock EF_WalkMove(const ENTITY, Float:yaw, Float:distance, iMode)
return engfunc(EngFunc_WalkMove, ENTITY, yaw, distance, iMode); return engfunc(EngFunc_WalkMove, ENTITY, yaw, distance, iMode)
stock EF_SetOrigin(const ENTITY, const Float:ORIGIN[3]) stock EF_SetOrigin(const ENTITY, const Float:ORIGIN[3])
return engfunc(EngFunc_SetOrigin, ENTITY, ORIGIN); return engfunc(EngFunc_SetOrigin, ENTITY, ORIGIN)
stock EF_EmitSound(const ENTITY, channel, const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch) stock EF_EmitSound(const ENTITY, channel, const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch)
return engfunc(EngFunc_EmitSound, ENTITY, channel, SAMPLE, volume, attenuation, fFlags, pitch); return engfunc(EngFunc_EmitSound, ENTITY, channel, SAMPLE, volume, attenuation, fFlags, pitch)
stock EF_EmitAmbientSound(const ENTITY, Float:pos[3], const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch) stock EF_EmitAmbientSound(const ENTITY, Float:pos[3], const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch)
return engfunc(EngFunc_EmitAmbientSound, ENTITY, pos, SAMPLE, volume, attenuation, fFlags, pitch); return engfunc(EngFunc_EmitAmbientSound, ENTITY, pos, SAMPLE, volume, attenuation, fFlags, pitch)
stock EF_TraceLine(const Float:V1[3], const Float:V2[3], fNoMonsters, const ENT_TO_SKIP) stock EF_TraceLine(const Float:V1[3], const Float:V2[3], fNoMonsters, const ENT_TO_SKIP)
return engfunc(EngFunc_TraceLine, V1, V2, fNoMonsters, ENT_TO_SKIP); return engfunc(EngFunc_TraceLine, V1, V2, fNoMonsters, ENT_TO_SKIP)
stock EF_TraceToss(const ENTITY, const ENTITY_TO_IGNORE) stock EF_TraceToss(const ENTITY, const ENTITY_TO_IGNORE)
return engfunc(EngFunc_TraceToss, ENTITY, ENTITY_TO_IGNORE); return engfunc(EngFunc_TraceToss, ENTITY, ENTITY_TO_IGNORE)
stock EF_TraceMonsterHull(const ENTITY, const Float:V1[3], const Float:V2[3], fNoMonsters, const ENTITY_TO_SKIP) stock EF_TraceMonsterHull(const ENTITY, const Float:V1[3], const Float:V2[3], fNoMonsters, const ENTITY_TO_SKIP)
return engfunc(EngFunc_TraceMonsterHull, ENTITY, V1, V2, fNoMonsters, ENTITY_TO_SKIP); return engfunc(EngFunc_TraceMonsterHull, ENTITY, V1, V2, fNoMonsters, ENTITY_TO_SKIP)
stock EF_TraceHull(const Float:V1[3], const Float:V2[3], fNoMonsters, hullNumber, const ENTITY_TO_SKIP) stock EF_TraceHull(const Float:V1[3], const Float:V2[3], fNoMonsters, hullNumber, const ENTITY_TO_SKIP)
return engfunc(EngFunc_TraceHull, V1, V2, fNoMonsters, hullNumber, ENTITY_TO_SKIP); return engfunc(EngFunc_TraceHull, V1, V2, fNoMonsters, hullNumber, ENTITY_TO_SKIP)
stock EF_TraceModel(const Float:V1[3], const Float:V2[3], hullNumber, const ENTITY) stock EF_TraceModel(const Float:V1[3], const Float:V2[3], hullNumber, const ENTITY)
return engfunc(EngFunc_TraceModel, V1, V2, hullNumber, ENTITY); return engfunc(EngFunc_TraceModel, V1, V2, hullNumber, ENTITY)
stock EF_TraceTexture(const TEXTURE_ENTITY, const Float:V1[3], const Float:V2[3]) stock EF_TraceTexture(const TEXTURE_ENTITY, const Float:V1[3], const Float:V2[3])
return engfunc(EngFunc_TraceTexture, TEXTURE_ENTITY, V1, V2); return engfunc(EngFunc_TraceTexture, TEXTURE_ENTITY, V1, V2)
stock EF_TraceSphere(const Float:V1[3], const Float:V2[3], fNoMonsters, Float:radius, const ENTITY_TO_SKIP) stock EF_TraceSphere(const Float:V1[3], const Float:V2[3], fNoMonsters, Float:radius, const ENTITY_TO_SKIP)
return engfunc(EngFunc_TraceSphere, V1, V2, fNoMonsters, radius, ENTITY_TO_SKIP); return engfunc(EngFunc_TraceSphere, V1, V2, fNoMonsters, radius, ENTITY_TO_SKIP)
stock EF_GetAimVector(const ENTITY, Float:speed, Float:returnVector[3]) stock EF_GetAimVector(const ENTITY, Float:speed, Float:returnVector[3])
return engfunc(EngFunc_GetAimVector, ENTITY, speed, returnVector); return engfunc(EngFunc_GetAimVector, ENTITY, speed, returnVector)
stock EF_ParticleEffect(const Float:ORIGIN[3], const Float:DIRECTION[3], Float:color, Float:count) stock EF_ParticleEffect(const Float:ORIGIN[3], const Float:DIRECTION[3], Float:color, Float:count)
return engfunc(EngFunc_ParticleEffect, ORIGIN, DIRECTION, color, count); return engfunc(EngFunc_ParticleEffect, ORIGIN, DIRECTION, color, count)
stock EF_LightStyle(style, val[]) stock EF_LightStyle(style, val[])
return engfunc(EngFunc_LightStyle, style, val); return engfunc(EngFunc_LightStyle, style, val)
stock EF_DecalIndex(const NAME[]) stock EF_DecalIndex(const NAME[])
return engfunc(EngFunc_DecalIndex, NAME); return engfunc(EngFunc_DecalIndex, NAME)
stock EF_PointContents(const Float:VECTOR[3]) stock EF_PointContents(const Float:VECTOR[3])
return engfunc(EngFunc_PointContents, VECTOR); return engfunc(EngFunc_PointContents, VECTOR)
stock EF_FreeEntPrivateData(const ENTITY) stock EF_FreeEntPrivateData(const ENTITY)
return engfunc(EngFunc_FreeEntPrivateData, ENTITY); return engfunc(EngFunc_FreeEntPrivateData, ENTITY)
stock EF_SzFromIndex(iString) stock EF_SzFromIndex(iString)
return engfunc(EngFunc_SzFromIndex, iString); return engfunc(EngFunc_SzFromIndex, iString)
stock EF_AllocString(const STRING[]) stock EF_AllocString(const STRING[])
return engfunc(EngFunc_AllocString, STRING); return engfunc(EngFunc_AllocString, STRING)
stock EF_RegUserMsg(const NAME[], iSize) stock EF_RegUserMsg(const NAME[], iSize)
return engfunc(EngFunc_RegUserMsg, NAME, iSize); return engfunc(EngFunc_RegUserMsg, NAME, iSize)
stock EF_AnimationAutomove(const ENTITY, Float:flTime) stock EF_AnimationAutomove(const ENTITY, Float:flTime)
return engfunc(EngFunc_AnimationAutomove, ENTITY, flTime); return engfunc(EngFunc_AnimationAutomove, ENTITY, flTime)
stock EF_GetBonePosition(const ENTITY, iBone, Float:origin[3], Float:angles[3]) stock EF_GetBonePosition(const ENTITY, iBone, Float:origin[3], Float:angles[3])
return engfunc(EngFunc_GetBonePosition, ENTITY, iBone, origin, angles); return engfunc(EngFunc_GetBonePosition, ENTITY, iBone, origin, angles)
stock EF_GetAttachment(const ENTITY, iAttachment, Float:origin[3], Float:angles[3]) stock EF_GetAttachment(const ENTITY, iAttachment, Float:origin[3], Float:angles[3])
return engfunc(EngFunc_GetAttachment, ENTITY, iAttachment, origin, angles); return engfunc(EngFunc_GetAttachment, ENTITY, iAttachment, origin, angles)
stock EF_SetView(const CLIENT, const VIEW_ENTITY) stock EF_SetView(const CLIENT, const VIEW_ENTITY)
return engfunc(EngFunc_SetView, CLIENT, VIEW_ENTITY); return engfunc(EngFunc_SetView, CLIENT, VIEW_ENTITY)
stock EF_Time(&Float:returnValue) stock EF_Time(&Float:returnValue)
return engfunc(EngFunc_Time, returnValue); return engfunc(EngFunc_Time, returnValue)
stock EF_CrosshairAngle(const CLIENT, Float:pitch, Float:yaw) stock EF_CrosshairAngle(const CLIENT, Float:pitch, Float:yaw)
return engfunc(EngFunc_CrosshairAngle, CLIENT, pitch, yaw); return engfunc(EngFunc_CrosshairAngle, CLIENT, pitch, yaw)
stock EF_FadeClientVolume(const ENTITY, fadePercent, fadeOutSeconds, holdTime, fadeInSeconds) stock EF_FadeClientVolume(const ENTITY, fadePercent, fadeOutSeconds, holdTime, fadeInSeconds)
return engfunc(EngFunc_FadeClientVolume, ENTITY, fadePercent, fadeOutSeconds, holdTime, fadeInSeconds); return engfunc(EngFunc_FadeClientVolume, ENTITY, fadePercent, fadeOutSeconds, holdTime, fadeInSeconds)
stock EF_SetClientMaxspeed(const ENTITY, Float:newMaxspeed) stock EF_SetClientMaxspeed(const ENTITY, Float:newMaxspeed)
return engfunc(EngFunc_SetClientMaxspeed, ENTITY, newMaxspeed); return engfunc(EngFunc_SetClientMaxspeed, ENTITY, newMaxspeed)
stock EF_CreateFakeClient(const NETNAME[]) stock EF_CreateFakeClient(const NETNAME[])
return engfunc(EngFunc_CreateFakeClient, NETNAME); return engfunc(EngFunc_CreateFakeClient, NETNAME)
stock EF_RunPlayerMove(const FAKECLIENT, const Float:VIEWANGLES[3], Float:forwardmove, Float:sidemove, Float:upmove, buttons, impulse, msec) stock EF_RunPlayerMove(const FAKECLIENT, const Float:VIEWANGLES[3], Float:forwardmove, Float:sidemove, Float:upmove, buttons, impulse, msec)
return engfunc(EngFunc_RunPlayerMove, FAKECLIENT, VIEWANGLES, forwardmove, sidemove, upmove, buttons, impulse, msec); return engfunc(EngFunc_RunPlayerMove, FAKECLIENT, VIEWANGLES, forwardmove, sidemove, upmove, buttons, impulse, msec)
stock EF_NumberOfEntities() stock EF_NumberOfEntities()
return engfunc(EngFunc_NumberOfEntities); return engfunc(EngFunc_NumberOfEntities)
stock EF_StaticDecal(const Float:ORIGIN[3], decalIndex, entityIndex, modelIndex) stock EF_StaticDecal(const Float:ORIGIN[3], decalIndex, entityIndex, modelIndex)
return engfunc(EngFunc_StaticDecal, ORIGIN, decalIndex, entityIndex, modelIndex); return engfunc(EngFunc_StaticDecal, ORIGIN, decalIndex, entityIndex, modelIndex)
stock EF_PrecacheGeneric(const STRING[]) stock EF_PrecacheGeneric(const STRING[])
return engfunc(EngFunc_PrecacheGeneric, STRING); return engfunc(EngFunc_PrecacheGeneric, STRING)
stock EF_BuildSoundMSG(const ENTITY, channel, const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch, msg_dest, msg_type, const Float:ORIGIN[3], const ED) stock EF_BuildSoundMSG(const ENTITY, channel, const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch, msg_dest, msg_type, const Float:ORIGIN[3], const ED)
return engfunc(EngFunc_BuildSoundMsg, ENTITY, channel, SAMPLE, volume, attenuation, fFlags, pitch, msg_dest, msg_type, ORIGIN, ED); return engfunc(EngFunc_BuildSoundMsg, ENTITY, channel, SAMPLE, volume, attenuation, fFlags, pitch, msg_dest, msg_type, ORIGIN, ED)
stock EF_GetPhysicsKeyValue(const CLIENT, const KEY[]) stock EF_GetPhysicsKeyValue(const CLIENT, const KEY[])
return engfunc(EngFunc_GetPhysicsKeyValue, CLIENT, KEY); return engfunc(EngFunc_GetPhysicsKeyValue, CLIENT, KEY)
stock EF_SetPhysicsKeyValue(const CLIENT, const KEY[], const VALUE[]) stock EF_SetPhysicsKeyValue(const CLIENT, const KEY[], const VALUE[])
return engfunc(EngFunc_SetPhysicsKeyValue, CLIENT, KEY, VALUE); return engfunc(EngFunc_SetPhysicsKeyValue, CLIENT, KEY, VALUE)
stock EF_GetPhysicsInfoString(const CLIENT, returnString[], maxLength) stock EF_GetPhysicsInfoString(const CLIENT, returnString[], maxLength)
return engfunc(EngFunc_GetPhysicsInfoString, CLIENT, returnString, maxLength); return engfunc(EngFunc_GetPhysicsInfoString, CLIENT, returnString, maxLength)
stock EF_PrecacheEvent(type, const STRING[]) stock EF_PrecacheEvent(type, const STRING[])
return engfunc(EngFunc_PrecacheEvent, type, STRING); return engfunc(EngFunc_PrecacheEvent, type, STRING)
stock EF_PlaybackEvent(flags, const INVOKER, eventindex, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iparam1, iparam2, bparam1, bparam2) stock EF_PlaybackEvent(flags, const INVOKER, eventindex, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iparam1, iparam2, bparam1, bparam2)
return engfunc(EngFunc_PlaybackEvent, flags, INVOKER, eventindex, delay, origin, angles, fparam1, fparam2, iparam1, iparam2, bparam1, bparam2); return engfunc(EngFunc_PlaybackEvent, flags, INVOKER, eventindex, delay, origin, angles, fparam1, fparam2, iparam1, iparam2, bparam1, bparam2)
stock EF_CheckVisibility(const ENTITY, set) stock EF_CheckVisibility(const ENTITY, set)
return engfunc(EngFunc_CheckVisibility, ENTITY, set); return engfunc(EngFunc_CheckVisibility, ENTITY, set)
stock EF_GetCurrentPlayer() stock EF_GetCurrentPlayer()
return engfunc(EngFunc_GetCurrentPlayer); return engfunc(EngFunc_GetCurrentPlayer)
stock EF_CanSkipPlayer(const PLAYER) stock EF_CanSkipPlayer(const PLAYER)
return engfunc(EngFunc_CanSkipPlayer, PLAYER); return engfunc(EngFunc_CanSkipPlayer, PLAYER)
stock EF_SetGroupMask(mask, op) stock EF_SetGroupMask(mask, op)
return engfunc(EngFunc_SetGroupMask, mask, op); return engfunc(EngFunc_SetGroupMask, mask, op)
stock EF_GetClientListening(receiver, sender) stock EF_GetClientListening(receiver, sender)
return engfunc(EngFunc_GetClientListening, receiver, sender); return engfunc(EngFunc_GetClientListening, receiver, sender);
stock EF_SetClientListening(receiver, sender, bool:listen) stock EF_SetClientListening(receiver, sender, bool:listen)
return engfunc(EngFunc_SetClientListening, receiver, sender, listen); return engfunc(EngFunc_SetClientListening, receiver, sender, listen);
stock EF_MessageBegin(msg_dest, msg_type, const Float:ORIGIN[3], const ED) stock EF_MessageBegin(msg_dest, msg_type, const Float:ORIGIN[3], const ED)
return engfunc(EngFunc_MessageBegin, msg_dest, msg_type, ORIGIN, ED); return engfunc(EngFunc_MessageBegin, msg_dest, msg_type, ORIGIN, ED)
stock EF_WriteCoord(Float:value) stock EF_WriteCoord(Float:value)
return engfunc(EngFunc_WriteCoord, value); return engfunc(EngFunc_WriteCoord, value)
stock EF_WriteAngle(Float:value) stock EF_WriteAngle(Float:value)
return engfunc(EngFunc_WriteAngle, value); return engfunc(EngFunc_WriteAngle, value)
stock EF_InfoKeyValue(const INFOBUFFER, const KEY[], returnValue[], maxLength) stock EF_InfoKeyValue(const INFOBUFFER, const KEY[], returnValue[], maxLength)
return engfunc(EngFunc_InfoKeyValue, INFOBUFFER, KEY, returnValue, maxLength); return engfunc(EngFunc_InfoKeyValue, INFOBUFFER, KEY, returnValue, maxLength)
stock EF_SetKeyValue(const INFOBUFFER, const KEY[], const VALUE[]) stock EF_SetKeyValue(const INFOBUFFER, const KEY[], const VALUE[])
return engfunc(EngFunc_SetKeyValue, INFOBUFFER, KEY, VALUE); return engfunc(EngFunc_SetKeyValue, INFOBUFFER, KEY, VALUE)
stock EF_SetClientKeyValue(const ID, const INFOBUFFER, const KEY[], const VALUE[]) stock EF_SetClientKeyValue(const ID, const INFOBUFFER, const KEY[], const VALUE[])
return engfunc(EngFunc_SetClientKeyValue, ID, INFOBUFFER, KEY, VALUE); return engfunc(EngFunc_SetClientKeyValue, ID, INFOBUFFER, KEY, VALUE)
stock EF_CreateInstBaseline(CLASSNAME, baseline) stock EF_CreateInstBaseline(CLASSNAME, baseline)
return engfunc(EngFunc_CreateInstBaseline, CLASSNAME, baseline); return engfunc(EngFunc_CreateInstBaseline, CLASSNAME, baseline)
// Returns pointer to info buffer that can be used with the INFOBUFFER param // Returns pointer to info buffer that can be used with the INFOBUFFER param
// of EF_InfoKeyValue, EF_SetKeyValue, and EF_SetClientKeyValue // of EF_InfoKeyValue, EF_SetKeyValue, and EF_SetClientKeyValue
stock EF_GetInfoKeyBuffer(const ENTITY) stock EF_GetInfoKeyBuffer(const ENTITY)
return engfunc(EngFunc_GetInfoKeyBuffer, ENTITY); return engfunc(EngFunc_GetInfoKeyBuffer, ENTITY)
stock EF_ClientPrintf(const ENTITY, const printType, const MESSAGE[]) stock EF_ClientPrintf(const ENTITY, const printType, const MESSAGE[])
return engfunc(EngFunc_ClientPrintf, ENTITY, printType, MESSAGE); return engfunc(EngFunc_ClientPrintf, ENTITY, printType, MESSAGE)
// DLLFuncs // DLLFuncs
stock DF_GameInit() stock DF_GameInit()
return dllfunc(DLLFunc_GameInit); return dllfunc(DLLFunc_GameInit)
stock DF_Spawn(const ENTITY) stock DF_Spawn(const ENTITY)
return dllfunc(DLLFunc_Spawn, ENTITY); return dllfunc(DLLFunc_Spawn, ENTITY)
stock DF_Think(const ENTITY) stock DF_Think(const ENTITY)
return dllfunc(DLLFunc_Think, ENTITY); return dllfunc(DLLFunc_Think, ENTITY)
stock DF_Use(const ENT_Used, const ENT_User) stock DF_Use(const ENT_Used, const ENT_User)
return dllfunc(DLLFunc_Use, ENT_Used, ENT_User); return dllfunc(DLLFunc_Use, ENT_Used, ENT_User)
stock DF_Touch(const ENT_Touched, const ENT_Toucher) stock DF_Touch(const ENT_Touched, const ENT_Toucher)
return dllfunc(DLLFunc_Touch, ENT_Touched, ENT_Toucher); return dllfunc(DLLFunc_Touch, ENT_Touched, ENT_Toucher)
stock DF_Blocked(const ENT_Blocked, const ENT_Other) stock DF_Blocked(const ENT_Blocked, const ENT_Other)
return dllfunc(DLLFunc_Blocked, ENT_Blocked, ENT_Other); return dllfunc(DLLFunc_Blocked, ENT_Blocked, ENT_Other)
stock DF_SetAbsBox(const ENTITY) stock DF_SetAbsBox(const ENTITY)
return dllfunc(DLLFunc_SetAbsBox, ENTITY); return dllfunc(DLLFunc_SetAbsBox, ENTITY)
stock DF_ClientConnect(const ENTITY, const NAME[], const ADDRESS[], RejectReason[128]) stock DF_ClientConnect(const ENTITY, const NAME[], const ADDRESS[], RejectReason[128])
return dllfunc(DLLFunc_ClientConnect, ENTITY, NAME, ADDRESS, RejectReason); return dllfunc(DLLFunc_ClientConnect, ENTITY, NAME, ADDRESS, RejectReason)
stock DF_ClientDisconnect(const ENTITY) stock DF_ClientDisconnect(const ENTITY)
return dllfunc(DLLFunc_ClientDisconnect, ENTITY); return dllfunc(DLLFunc_ClientDisconnect, ENTITY)
stock DF_ClientKill(const ENTITY) stock DF_ClientKill(const ENTITY)
return dllfunc(DLLFunc_ClientKill, ENTITY); return dllfunc(DLLFunc_ClientKill, ENTITY)
stock DF_ClientPutInServer(const ENTITY) stock DF_ClientPutInServer(const ENTITY)
return dllfunc(DLLFunc_ClientPutInServer, ENTITY); return dllfunc(DLLFunc_ClientPutInServer, ENTITY)
stock DF_ClientCommand(const ENTITY) stock DF_ClientCommand(const ENTITY)
return dllfunc(DLLFunc_ClientCommand, ENTITY); return dllfunc(DLLFunc_ClientCommand, ENTITY)
stock DF_ServerDeactivate() stock DF_ServerDeactivate()
return dllfunc(DLLFunc_ServerDeactivate); return dllfunc(DLLFunc_ServerDeactivate)
stock DF_PlayerPreThink(const ENTITY) stock DF_PlayerPreThink(const ENTITY)
return dllfunc(DLLFunc_PlayerPreThink, ENTITY); return dllfunc(DLLFunc_PlayerPreThink, ENTITY)
stock DF_PlayerPostThink(const ENTITY) stock DF_PlayerPostThink(const ENTITY)
return dllfunc(DLLFunc_PlayerPostThink, ENTITY); return dllfunc(DLLFunc_PlayerPostThink, ENTITY)
stock DF_StartFrame() stock DF_StartFrame()
return dllfunc(DLLFunc_StartFrame); return dllfunc(DLLFunc_StartFrame)
stock DF_ParmsNewLevel() stock DF_ParmsNewLevel()
return dllfunc(DLLFunc_ParmsNewLevel); return dllfunc(DLLFunc_ParmsNewLevel)
stock DF_ParmsChangeLevel() stock DF_ParmsChangeLevel()
return dllfunc(DLLFunc_ParmsChangeLevel); return dllfunc(DLLFunc_ParmsChangeLevel)
stock DF_GetGameDescription() stock DF_GetGameDescription()
return dllfunc(DLLFunc_GetGameDescription); return dllfunc(DLLFunc_GetGameDescription)
stock DF_SpectatorConnect(const ENTITY) stock DF_SpectatorConnect(const ENTITY)
return dllfunc(DLLFunc_SpectatorConnect, ENTITY); return dllfunc(DLLFunc_SpectatorConnect, ENTITY)
stock DF_SpectatorDisconnect(const ENTITY) stock DF_SpectatorDisconnect(const ENTITY)
return dllfunc(DLLFunc_SpectatorDisconnect, ENTITY); return dllfunc(DLLFunc_SpectatorDisconnect, ENTITY)
stock DF_SpectatorThink(const ENTITY) stock DF_SpectatorThink(const ENTITY)
return dllfunc(DLLFunc_SpectatorThink, ENTITY); return dllfunc(DLLFunc_SpectatorThink, ENTITY)
stock DF_Sys_Error(const ERROR_STRING[]) stock DF_Sys_Error(const ERROR_STRING[])
return dllfunc(DLLFunc_Sys_Error, ERROR_STRING); return dllfunc(DLLFunc_Sys_Error, ERROR_STRING)
stock DF_PM_FindTextureType(name[]) stock DF_PM_FindTextureType(name[])
return dllfunc(DLLFunc_PM_FindTextureType, name); return dllfunc(DLLFunc_PM_FindTextureType, name)
stock DF_RegisterEncoders() stock DF_RegisterEncoders()
return dllfunc(DLLFunc_RegisterEncoders); return dllfunc(DLLFunc_RegisterEncoders)
stock DF_GetHullBounds(hullnumber, Float:mins[3], Float:maxs[3]) stock DF_GetHullBounds(hullnumber, Float:mins[3], Float:maxs[3])
return dllfunc(DLLFunc_GetHullBounds, hullnumber, mins, maxs); return dllfunc(DLLFunc_GetHullBounds, hullnumber, mins, maxs)
stock DF_CreateInstBaselines() stock DF_CreateInstBaselines()
return dllfunc(DLLFunc_CreateInstBaselines); return dllfunc(DLLFunc_CreateInstBaselines)
stock DF_pfnAllowLagCompensation() stock DF_pfnAllowLagCompensation()
return dllfunc(DLLFunc_pfnAllowLagCompensation); return dllfunc(DLLFunc_pfnAllowLagCompensation)
stock DF_MetaFunc_CallGameEntity(const STRING[], const ENTITY) stock DF_MetaFunc_CallGameEntity(const STRING[], const ENTITY)
return dllfunc(MetaFunc_CallGameEntity, STRING, ENTITY); return dllfunc(MetaFunc_CallGameEntity, STRING, ENTITY)
stock DF_ClientUserInfoChanged(const IDPLAYER) stock DF_ClientUserInfoChanged(const IDPLAYER)
return dllfunc(DLLFunc_ClientUserInfoChanged, IDPLAYER); return dllfunc(DLLFunc_ClientUserInfoChanged, IDPLAYER)
stock DF_UpdateClientData(const ENTITY, sendweapons, const cd/* = 0*/) stock DF_UpdateClientData(const ENTITY, sendweapons, const cd = 0)
return dllfunc(DLLFunc_UpdateClientData, ENTITY, sendweapons, cd); return dllfunc(DLLFunc_UpdateClientData, ENTITY, sendweapons, cd)
stock DF_AddToFullPack(const STATE/* = 0*/, e, ENT, HOST, hostflags, player, set) stock DF_AddToFullPack(const STATE = 0, e, ENT, HOST, hostflags, player, set)
return dllfunc(DLLFunc_AddToFullPack, STATE, e, ENT, HOST, hostflags, player, set); return dllfunc(DLLFunc_AddToFullPack, STATE, e, ENT, HOST, hostflags, player, set)
stock DF_CmdStart(const PLAYER, const CMD/* = 0*/, randomSeed) stock DF_CmdStart(const PLAYER, const CMD = 0, randomSeed)
return dllfunc(DLLFunc_CmdStart, PLAYER, CMD, randomSeed); return dllfunc(DLLFunc_CmdStart, PLAYER, CMD, randomSeed)
stock DF_CmdEnd(const PLAYER) stock DF_CmdEnd(const PLAYER)
return dllfunc(DLLFunc_CmdEnd, PLAYER); return dllfunc(DLLFunc_CmdEnd, PLAYER)
stock DF_CreateBaseline(PLAYER, eIndex, baseline, playerModelIndex, Float:playerMins[3], Float:playerMaxs[3]) stock DF_CreateBaseline(PLAYER, eIndex, baseline, playerModelIndex, Float:playerMins[3], Float:playerMaxs[3])
return dllfunc(DLLFunc_CreateBaseline, PLAYER, eIndex, baseline, playerModelIndex, playerMins, playerMaxs); return dllfunc(DLLFunc_CreateBaseline, PLAYER, eIndex, baseline, playerModelIndex, playerMins, playerMaxs)

View File

@ -82,10 +82,10 @@ native Float:floatabs(Float:value);
/* Return the angle of a sine, cosine or tangent. /* Return the angle of a sine, cosine or tangent.
* The output angle may be in radians, degrees, or grades. */ * The output angle may be in radians, degrees, or grades. */
native Float:floatatan(Float:angle, {anglemode,_}:radix); native Float:floatatan(Float:angle, radix);
native Float:floatacos(Float:angle, {anglemode,_}:radix); native Float:floatacos(Float:angle, radix);
native Float:floatasin(Float:angle, {anglemode,_}:radix); native Float:floatasin(Float:angle, radix);
native Float:floatatan2(Float:x, Float:y, {anglemode,_}:radix); native Float:floatatan2(Float:x, Float:y, radix);
#pragma rational Float #pragma rational Float
@ -102,7 +102,7 @@ stock Float:operator--(Float:oper)
return oper-1.0; return oper-1.0;
stock Float:operator-(Float:oper) stock Float:operator-(Float:oper)
return oper^Float:cellmin; /* IEEE values are sign/magnitude */ return oper^Float:((-1)^((-1)/2)); /* IEEE values are sign/magnitude */
stock Float:operator*(Float:oper1, oper2) stock Float:operator*(Float:oper1, oper2)
return floatmul(oper1, float(oper2)); /* "*" is commutative */ return floatmul(oper1, float(oper2)); /* "*" is commutative */

View File

@ -39,7 +39,7 @@ native set_user_armor(index, armor);
native set_user_health(index, health); native set_user_health(index, health);
/* Move player to origin. */ /* Move player to origin. */
native set_user_origin(index, const origin[3]); native set_user_origin(index, origin[3]);
/* Sets player rendering mode. */ /* Sets player rendering mode. */
native set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16); native set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16);

View File

@ -3,7 +3,7 @@
(C)Copyrighted under the GNU General Public License, Version 2 (C)Copyrighted under the GNU General Public License, Version 2
*/ */
#if defined geoip_included #if defined _geoip_included
#endinput #endinput
#endif #endif
#define _geoip_included #define _geoip_included
@ -20,10 +20,10 @@
//IP address can contain ports, the ports will be stripped out //IP address can contain ports, the ports will be stripped out
//get a two character country code (eg US, CA etc) //get a two character country code (eg US, CA etc)
native geoip_code2(const ip[], ccode[3]); native geoip_code2(ip[], ccode[3]);
//get a three character country code (eg USA, cAN etc) //get a three character country code (eg USA, cAN etc)
native geoip_code3(const ip[], result[4]); native geoip_code3(ip[], result[4]);
//get a full country name. max name is 45 chars //get a full country name. max name is 45 chars
native geoip_country(const ip[], result[], len=45); native geoip_country(ip[], result[], len=45);

View File

@ -323,8 +323,6 @@ enum
// write_coord(position.z) // write_coord(position.z)
// write_short(model index) // write_short(model index)
// write_byte(scale / 10) // write_byte(scale / 10)
// write_byte(size)
// write_byte(brightness)
#define TE_BEAMRING 24 // Connect a beam ring to two entities #define TE_BEAMRING 24 // Connect a beam ring to two entities
// write_byte(TE_BEAMRING) // write_byte(TE_BEAMRING)
@ -364,6 +362,7 @@ enum
// write_byte(red) // write_byte(red)
// write_byte(green) // write_byte(green)
// write_byte(blue) // write_byte(blue)
// write_byte(brightness)
// write_byte(life in 10's) // write_byte(life in 10's)
// write_byte(decay rate in 10's) // write_byte(decay rate in 10's)
@ -649,7 +648,7 @@ enum
#define TE_PLAYERSPRITES 121 // Sprites emit from a player's bounding box (ONLY use for players!) #define TE_PLAYERSPRITES 121 // Sprites emit from a player's bounding box (ONLY use for players!)
// write_byte(TE_PLAYERSPRITES) // write_byte(TE_PLAYERSPRITES)
// write_short(playernum) // write_byte(playernum)
// write_short(sprite modelindex) // write_short(sprite modelindex)
// write_byte(count) // write_byte(count)
// write_byte(variance) (0 = no variance in size) (10 = 10% variance in size) // write_byte(variance) (0 = no variance in size) (10 = 10% variance in size)

View File

@ -41,7 +41,7 @@ stock user_silentkill(index)
} }
/* Creates a death message. */ /* Creates a death message. */
stock make_deathmsg(killer, victim, headshot, const weapon[]) stock make_deathmsg(killer, victim, headshot, weapon[])
{ {
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0); message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0);
write_byte(killer); write_byte(killer);

View File

@ -16,7 +16,7 @@
* You may generate menu, smoke, shockwaves, thunderlights, * You may generate menu, smoke, shockwaves, thunderlights,
* intermission and many many others messages. * intermission and many many others messages.
* See HL SDK for more examples. */ * See HL SDK for more examples. */
native message_begin(dest, msg_type, const origin[3] = {0,0,0}, player = 0); native message_begin(dest, msg_type, origin[3] = {0,0,0}, player = 0);
native message_end(); native message_end();
native write_byte(x); native write_byte(x);
native write_char(x); native write_char(x);
@ -25,7 +25,7 @@ native write_long(x);
native write_entity(x); native write_entity(x);
native write_angle(x); native write_angle(x);
native write_coord(x); native write_coord(x);
native write_string(const x[]); native write_string(x[]);
/* These are the same as above, except that the messages sent /* These are the same as above, except that the messages sent
* are also sent to all other plugins and Metamod plugins. * are also sent to all other plugins and Metamod plugins.
@ -35,7 +35,7 @@ native write_string(const x[]);
* could cause infinite recursion or something just as bad. * could cause infinite recursion or something just as bad.
* NOTE! These natives are experimental. * NOTE! These natives are experimental.
*/ */
native emessage_begin(dest, msg_type, const origin[3] = {0,0,0}, player = 0); native emessage_begin(dest, msg_type, origin[3] = {0,0,0}, player = 0);
native emessage_end(); native emessage_end();
native ewrite_byte(x); native ewrite_byte(x);
native ewrite_char(x); native ewrite_char(x);
@ -44,7 +44,7 @@ native ewrite_long(x);
native ewrite_entity(x); native ewrite_entity(x);
native ewrite_angle(x); native ewrite_angle(x);
native ewrite_coord(x); native ewrite_coord(x);
native ewrite_string(const x[]); native ewrite_string(x[]);
/* Sets/Gets what engine messages are blocked. */ /* Sets/Gets what engine messages are blocked. */
native set_msg_block(iMessage, iMessageFlags); native set_msg_block(iMessage, iMessageFlags);
@ -56,7 +56,7 @@ native get_msg_block(iMessage);
* If you hook a message, the message is stored but not sent. You have the opportunity to * If you hook a message, the message is stored but not sent. You have the opportunity to
* not only execute code, but to get/set the contents of the message, before you choose to * not only execute code, but to get/set the contents of the message, before you choose to
* either block it or let it go on its way. The hooked function will be passed a msg_id, msg_dest, and entity index. */ * either block it or let it go on its way. The hooked function will be passed a msg_id, msg_dest, and entity index. */
native register_message(iMsgId, const szFunction[]); native register_message(iMsgId, szFunction[]);
/* The get/set _msg commands will fail if used outside a hooked message scope. /* The get/set _msg commands will fail if used outside a hooked message scope.
* They should never be used unless inside a registered message function. * They should never be used unless inside a registered message function.
@ -81,7 +81,7 @@ native get_msg_arg_string(argn, szReturn[], iLength);
/* sets the value of argn. */ /* sets the value of argn. */
native set_msg_arg_int(argn, argtype, iValue); native set_msg_arg_int(argn, argtype, iValue);
native set_msg_arg_float(argn, argtype, Float:fValue); native set_msg_arg_float(argn, argtype, Float:fValue);
native set_msg_arg_string(argn, const szString[]); native set_msg_arg_string(argn, szString[]);
/* Gets the origin of a message */ /* Gets the origin of a message */
native get_msg_origin(const Float:_Origin[3]); native get_msg_origin(Float:_Origin[3]);

View File

@ -31,12 +31,12 @@ forward client_built(idPlayer,idStructure,type,impulse);
/* Returns if the map's combat or not. */ /* Returns if the map's combat or not. */
native ns_is_combat(); native ns_is_combat();
/* Sends a popup to a player. Set target to 0 to send to everybody. Message length is 180 characters. The last parameter, if set to 1, will only display when the player has cl_autohelp set to 1. */ /* Sends a popup to a player. Set target to 0 to send to everybody. Message length is 188 characters. The last parameter, if set to 1, will only display when the player has cl_autohelp set to 1. */
native ns_popup(target,const szMsg[180],ah=0); native ns_popup(target,szMsg[180],ah=0)
/* Sets a player model. Omit the second parameter to return to default. /* Sets a player model. Omit the second parameter to return to default.
Note: This does *not* change back on death, team switch, gestations, etc. */ Note: This does *not* change back on death, team switch, gestations, etc. */
native ns_set_player_model(id,const szModel[]=""); native ns_set_player_model(id,szModel[]="");
/* Sets a player's skin. Omit second parameter to return to default. /* Sets a player's skin. Omit second parameter to return to default.
Note: This does *not* change back on death, team switch, gestations, etc. */ Note: This does *not* change back on death, team switch, gestations, etc. */
@ -73,7 +73,7 @@ native ns_set_mask(id,mask,value);
Number is any other value: Number is any other value:
The index of the #th matching structure is returned. The index of the #th matching structure is returned.
*/ */
native ns_get_build(const classname[],builtOnly=1,Number=0); native ns_get_build(classname[],builtOnly=1,Number=0);
/* Returns if the player has the weapon or not in their pev->weapons field. /* Returns if the player has the weapon or not in their pev->weapons field.
set "setweapon" to 0 to turn the bit off, set to 1 to turn it on. Or omit it to just return the value. */ set "setweapon" to 0 to turn the bit off, set to 1 to turn it on. Or omit it to just return the value. */

View File

@ -15,251 +15,249 @@
#include <ns> // ns specifics #include <ns> // ns specifics
stock is_entity(id) stock is_entity(id)
return is_valid_ent(id); return is_valid_ent(id)
/* The end of the native is buffered incase the plugin is including an NS_VERSION (no longer supported), ignore it */ /* The end of the native is buffered incase the plugin is including an NS_VERSION (no longer supported), ignore it */
stock get_build(classname[], value, number=0,{Float,Sql,Result,_}:...) stock get_build(classname[], value, number=0,{Float,Sql,Result,_}:...)
return ns_get_build(classname, value, number); return ns_get_build(classname, value, number)
stock get_private_i(index, offset, linuxdiff=5) stock get_private_i(index, offset, linuxdiff=5)
return get_pdata_int(index, offset, linuxdiff); return get_pdata_int(index, offset, linuxdiff)
stock set_private_i(index, offset, value, linuxdiff=5) stock set_private_i(index, offset, value, linuxdiff=5)
{ {
return set_pdata_int(index, offset, value, linuxdiff); return set_pdata_int(index, offset, value, linuxdiff)
} }
stock Float:get_private_f(index, offset, linuxdiff=5) stock Float:get_private_f(index, offset, linuxdiff=5)
{ {
return get_pdata_float(index, offset, linuxdiff); return get_pdata_float(index, offset, linuxdiff)
} }
stock set_private_f(index, offset, Float:value, linuxdiff=5) stock set_private_f(index, offset, Float:value, linuxdiff=5)
{ {
return set_pdata_float(index, offset, value, linuxdiff); return set_pdata_float(index, offset, value, linuxdiff)
} }
stock make_string(value[]) stock make_string(value[])
return engfunc(EngFunc_AllocString,value); return engfunc(EngFunc_AllocString,value)
stock string(value, ret[]) stock string(value, ret[])
{ {
new szString[128]; new szString[128] // gah...
engfunc(EngFunc_SzFromIndex,value,szString,127); engfunc(EngFunc_SzFromIndex,value,szString,127)
copy(ret,127,szString); copy(ret,szString,127)
} }
stock gpgobals_time() stock gpgobals_time()
return floatround(halflife_time()); return halflife_time()
stock Float:get_range(ida, idb) stock Float:get_range(ida, idb)
return entity_range(ida, idb); return entity_range(ida, idb)
stock supercede() stock supercede()
return 0; return 0
stock register_clientkill() stock register_clientkill()
return 0; return 0
stock register_changelvl() stock register_changelvl()
return 0; return 0
stock register_msgblock(msgName[]) stock register_msgblock(msgName[])
return set_msg_block(get_user_msgid(msgName), BLOCK_SET); return set_msg_block(get_user_msgid(msgName), BLOCK_SET)
stock register_msgedit(msgName[], cmd[]) stock register_msgedit(msgName[], cmd[])
return register_message(get_user_msgid(msgName), cmd); return register_message(get_user_msgid(msgName), cmd)
stock register_playback(event, cmd[]) stock register_playback(event, cmd[])
return 0; return 0
stock get_spawn(type, number=0, Float:ret[3]) stock get_spawn(type, number=0, Float:ret[3])
return ns_get_spawn(type, number, ret); return ns_get_spawn(type, number, ret)
stock has_weapon(index, weapon, setweapon=-1) stock has_weapon(index, weapon, setweapon=-1)
return ns_has_weapon(index, weapon, setweapon); return ns_has_weapon(index, weapon, setweapon)
stock gpglobals_v(type, Float:ret[3]) stock gpglobals_v(type, Float:ret[3])
{ {
new v_type=0; new v_type=0
switch (type) switch (type)
{ {
case 1: case 1:
v_type = GL_v_forward; v_type = GL_v_forward
case 2: case 2:
v_type = GL_v_right; v_type = GL_v_right
case 3: case 3:
v_type = GL_v_up; v_type = GL_v_up
} }
if (!v_type) if (!v_type)
return 0; return 0
return get_global_vector(v_type, ret); return get_global_vector(v_type, ret)
} }
stock pev_i(_index,_field) stock pev_i(_index,_field)
return pev(_index,_field); return pev(_index,_field)
stock set_pev_i(_index, _field, _val) stock set_pev_i(_index, _field, _val)
return set_pev(_index,_field,_val); return set_pev(_index,_field,_val)
stock Float:pev_f(_index,_field) stock Float:pev_f(_index,_field)
{ {
new Float:f; new Float:f
pev(_index,_field,f); pev(_index,_field,f)
return f; return f
} }
stock set_pev_f(_index,_field,Float:_val) stock set_pev_f(_index,_field,Float:_val)
return set_pev(_index,_field,_val); return set_pev(_index,_field,_val)
stock msg_args() stock msg_args()
return get_msg_args(); return get_msg_args()
stock Float:msg_loc(vec) stock Float:msg_loc(vec)
{ {
new Float:Ret[3]; new Float:Ret[3]
get_msg_origin(Ret); get_msg_origin(Ret)
if (vec < 0 || vec > 3) if (vec < 0 || vec > 3)
return float(0); return float(0)
else else
return Ret[vec]; return Ret[vec]
return 0.0; // make compiler happy!
} }
stock msg_dest() stock msg_dest()
return 0; return 0
stock msg_type() stock msg_type()
return 0; return 0
stock msg_name() stock msg_name()
return 0; return 0
stock msg_set_s(number, value[]) stock msg_set_s(number, value[])
return set_msg_arg_string(number, value); return set_msg_arg_string(number, value)
stock msg_set_f(number, Float:value) stock msg_set_f(number, Float:value)
return set_msg_arg_float(number, get_msg_argtype(number), value); return set_msg_arg_float(number, get_msg_argtype(number), value)
stock msg_set_i(number, value) stock msg_set_i(number, value)
return set_msg_arg_int(number, get_msg_argtype(number), value); return set_msg_arg_int(number, get_msg_argtype(number), value)
stock msg_data_type(value) stock msg_data_type(value)
return get_msg_argtype(value); return get_msg_arg_type(value)
stock msg_strdata(value) stock msg_strdata(value)
return 0; return 0
stock msg_data(value, ...) stock msg_data(value, ...)
{ {
return (0*value); return (0*value)
} }
stock get_filename(szFile[], len=-1) stock get_filename(szFile[], len=-1)
{ {
new name[16], version[16], author[16], status[16]; new name[16], version[16], author[16], status[16]
new res = get_plugin(0, szFile, len, name, 16, version, 16, author, 16, status, 16); new res = get_plugin(0, szFile, len, name, 16, version, 16, author, 16, status, 16)
return res; return res
} }
stock get_speedchange(id) stock get_speedchange(id)
return ns_get_speedchange(id); return ns_get_speedchange(id)
stock set_speedchange(id, speed) stock set_speedchange(id, speed)
return ns_set_speedchange(id,speed); return ns_set_speedchange(id,speed)
stock get_maxspeed(id) stock get_maxspeed(id)
return ns_get_maxspeed(id); return ns_get_maxspeed(id)
stock set_player_model(id, model[]="") stock set_player_model(id, model[]="")
return ns_set_player_model(id, model); return ns_set_player_model(id, model)
stock set_player_skin(id, skin=-1) stock set_player_skin(id, skin=-1)
return ns_set_player_skin(id, skin); return ns_set_player_skin(id, skin)
stock set_player_body(id, body=-1) stock set_player_body(id, body=-1)
return ns_set_player_body(id, body); return ns_set_player_body(id, body)
stock ns2amx_version() stock ns2amx_version()
return 0; return 0
stock set_kvhandled() stock set_kvhandled()
return 0; return 0
stock ns2amx_getammo(id,Weapon) stock ns2amx_getammo(id,Weapon)
return ns_get_weap_reserve(id, Weapon); return ns_get_weap_reserve(id, Weapon)
stock ns2amx_setammo(id,Weapon,Value) stock ns2amx_setammo(id,Weapon,Value)
return ns_set_weap_reserve(id, Weapon, Value); return ns_set_weap_reserve(id, Weapon, Value)
stock ns2amx_giveitem(id,svClassname[]) stock ns2amx_giveitem(id,svClassname[])
return ns_give_item(id, svClassname); return ns_give_item(id, svClassname)
stock ns2amx_moveto(idMoved,idDest) stock ns2amx_moveto(idMoved,idDest)
{ {
new Float:origin[3]; new Float:origin[3]
entity_get_vector(idDest, EV_VEC_origin,origin); entity_get_vector(idDest, EV_VEC_origin,origin)
entity_set_origin(idMoved, origin); entity_set_origin(idMoved, origin)
return 1; return 1
} }
/* Returns whether or not the player has the MASK_DIGESTING flag set. */ /* Returns whether or not the player has the MASK_DIGESTING flag set. */
stock ns2amx_isdigesting(id) stock ns2amx_isdigesting(id)
return ns_get_mask(id,MASK_DIGESTING); return ns_get_mask(id,MASK_DIGESTING)
/* Returns total # of active hives. */ /* Returns total # of active hives. */
stock ns2amx_gethives() stock ns2amx_gethives()
return ns_get_build("team_hive",1); return ns_get_build("team_hive",1)
/* Returns 1 if the two entities are within the given range. */ /* Returns 1 if the two entities are within the given range. */
stock ns2amx_inrange(ida,idb,range) stock ns2amx_inrange(ida,idb,range)
{ {
if (entity_range(ida,idb) <= range) if (entity_range(ida,idb) <= range)
return 1; return 1
return 0; return 0
} }
stock ns2amx_nspopup(id,svMessage[190]) { stock ns2amx_nspopup(id,svMessage[190]) {
new szMessage[180]; new szMessage[180]
copy(szMessage,179,svMessage); copy(szMessage,179,svMessage)
return ns_popup(id, szMessage); return ns_popup(id, szMessage)
} }
stock ns2amx_setres(id,value) stock ns2amx_setres(id,value)
return ns_set_res(id, float(value)); return ns_set_res(id, float(value))
stock ns2amx_getenergy(id) stock ns2amx_getenergy(id)
return floatround(ns_get_energy(id)); return floatround(ns_get_energy(id))
stock ns2amx_setenergy(id,energy) stock ns2amx_setenergy(id,energy)
return ns_set_energy(id, float(energy)); return ns_set_energy(id, float(energy))
stock ns2amx_getjpfuel(id) stock ns2amx_getjpfuel(id)
return floatround(ns_get_jpfuel(id)); return floatround(ns_get_jpfuel(id))
stock ns2amx_setjpfuel(id,fuel) stock ns2amx_setjpfuel(id,fuel)
return ns_set_jpfuel(id, float(fuel)); return ns_set_jpfuel(id, float(fuel))
stock get_mask(id,mask) stock get_mask(id,mask)
return ns_get_mask(id, mask); return ns_get_mask(id, mask)
stock set_mask(id,mask,value) stock set_mask(id,mask,value)
return ns_set_mask(id,mask,value); return ns_set_mask(id,mask,value)
stock get_special(id,mask) stock get_special(id,mask)
{ {
if (pev(id,pev_iuser4) & mask) if (pev(id,pev_iuser4) & mask)
return 1; return 1
return 0; return 0
} }
stock get_res(id) stock get_res(id)
return floatround(ns_get_res(id)); return floatround(ns_get_res(id))
stock get_class(id) stock get_class(id)
return ns_get_class(id); return ns_get_class(id)
stock is_combat() stock is_combat()
return ns_is_combat(); return ns_is_combat()

View File

@ -34,7 +34,7 @@ native nvault_get(vault, const key[], ...);
/* Looks up a vault value for full information /* Looks up a vault value for full information
* Returns 0 if the entry is not found * Returns 0 if the entry is not found
*/ */
native nvault_lookup(vault, const key[], value[], maxlen, &timestamp); native nvault_lookup(vault, const key[], value[], maxlen, &timestamp)
/* Sets a vault value (with current timestamp) */ /* Sets a vault value (with current timestamp) */
native nvault_set(vault, const key[], const value[]); native nvault_set(vault, const key[], const value[]);

Some files were not shown because too many files have changed in this diff Show More