114 Commits

Author SHA1 Message Date
a54c4f530d Tagged 1.76d 2007-03-09 03:03:30 +00:00
7adc49c541 changed start page back to original first page 2007-03-08 17:23:36 +00:00
baba221dd9 made my life 1,000 times easier for creating these release builds 2007-03-08 06:20:11 +00:00
829485ef2a bumped version one last time
fixed makefile for nongpl changes
2007-03-08 04:54:03 +00:00
b793b80360 fixed several FTP bugs (thanks bail!) 2007-03-07 20:38:42 +00:00
ea34c2c78a fixed a bug reported by peanut where amx_fwrite() had the wrong sizeof() type 2007-03-07 02:29:54 +00:00
722e97fef2 (hopefully) fixed bug where 0 files+dirs were detected 2007-03-05 21:37:48 +00:00
bd412d7204 Fixed bug amb70 - include files not semicolon-correct
Also, removed OLOcode from amxmisc.inc
2007-03-05 19:30:40 +00:00
39e6d958bf bumped installer version 2007-03-04 06:06:44 +00:00
bb54b37399 removed allow_nongpl, it wasn't really viable 2007-03-04 04:37:42 +00:00
88dd3b021e removed this option 2007-03-04 04:33:29 +00:00
ef4d19378d bumped more versions 2007-03-04 03:43:57 +00:00
7f1ea1490d bumped necessary module versions 2007-03-04 03:42:11 +00:00
041fb4e37f updated compiler builds 2007-03-04 01:46:38 +00:00
193e59df90 updated compiler builds 2007-03-04 01:40:40 +00:00
d4703f045d fixed a bug where '%c' did not correctly count toward the writable string length 2007-03-04 00:02:23 +00:00
109b1e45b5 added non-gpl plugin blocking (wow i can't believe it came to this) 2007-03-03 23:14:24 +00:00
1f1edef98d Merged in NS 3.2 Final offsets 2007-03-01 22:39:57 +00:00
83631e95aa fixed bug amb41 2007-02-24 21:08:00 +00:00
6eb1242600 fixed tags (amb36) 2007-02-24 20:07:21 +00:00
77e7ea161b Fixed half of amb29 - Debug plugins could not be paused/stopped
Waiting on language keys to fix the rest
2007-02-21 21:03:48 +00:00
09f271e5d0 Fixed amb35, multiple plugins loading 2007-02-21 18:42:14 +00:00
e35a8326d5 Fixed an issue where backwards amx mod compatibility layer wasn't transparent. 2007-02-20 22:25:17 +00:00
09d46aa025 Fixed native get_num_ents 2007-02-20 20:57:21 +00:00
615e097c68 Fixed am49892 - Plugin load fails going to error logs instead of normal logs 2007-02-19 08:46:43 +00:00
ade56b62e9 Fixed am50089 - unary - float operator 2007-02-19 08:11:00 +00:00
b3d7f04b5e Fixed am50530 - amx_psay output format fix 2007-02-19 07:34:38 +00:00
4f81c50a3e Fixed am50731 - compiler crash when amxmisc is included before amxmodx 2007-02-19 07:03:26 +00:00
d45c3aeb96 Fixed am51050 - "amxx {pause,unpause" had misleading output 2007-02-19 06:57:26 +00:00
fff603635a Fixed am51051 - unpause() returning true on stopped plugins 2007-02-19 06:43:52 +00:00
06f01ea7dc Wow I deleted the comment too! 2007-02-19 06:38:08 +00:00
2395abcf7e Fixed retarded typo 2007-02-19 06:37:03 +00:00
d33f9ba2d4 Fixed am51083 - Comments in amxmodx.inc 2007-02-19 06:29:02 +00:00
aec28542ac Fixed am51276 - typod "return" 2007-02-19 06:23:34 +00:00
73219c45dd Fixed bug am51368 - Unused variable 2007-02-19 06:16:56 +00:00
39d6cb7840 Fixed #error ignoring #if blocks 2007-02-16 18:49:21 +00:00
bfd4e345dd corrected a typo 2007-02-14 18:55:42 +00:00
aded0f9c1c Added request am49339 - exploding chainsaw gun 2007-02-14 05:17:57 +00:00
811265e28b made it a little safer 2007-02-12 19:35:01 +00:00
0caffa2b82 fixed bug where directories in / couldn't be detected unless your home directory was / 2007-02-12 19:32:32 +00:00
4dfb01bb1d finished ftp browser in the settings dialog (rewrote it, looks pretty nice now imo), various other changes 2007-02-12 18:21:40 +00:00
862ed243be Fixed typo (am51042) 2007-02-10 21:10:55 +00:00
39f1fa6045 Fixed unnecessary call to accessUser() (am51009) 2007-02-09 08:34:33 +00:00
f26939e2cc Fixed bug am50907 - Name and Tag admins were case sensitive 2007-02-09 07:26:37 +00:00
9d53451933 bumped version to 1.76d 2007-02-05 21:21:50 +00:00
4ae54eeb2a fixed am50849 2007-02-05 21:13:15 +00:00
d62ae07b75 Merged in changes from revision 3276 in 1.77: ES_Body was not a valid parameter for get/set_es() 2007-02-01 22:25:18 +00:00
0f22a7fa06 Added missing natives:
- take_damage
- entity_use
- get_num_ents
2007-01-31 20:20:49 +00:00
7f3c2d00ac fixed bug am50501 2007-01-28 05:01:38 +00:00
b324e8ed9d Merged revision 3260 from 1.77; Stats would not display on awkward mp_roundtime settings 2007-01-26 06:15:49 +00:00
8420823713 Merged revision 3251 from 1.77; debug commands not counted as running in amx_plugins 2007-01-26 06:12:25 +00:00
1d1b50ce0c Merged revision 3250 from 1.77; amx_addban is now ADMIN_RCON access by default 2007-01-26 06:11:00 +00:00
35fcca8a66 Merged revision 3258 from 1.77; forward_return with non-string values 2007-01-26 06:08:29 +00:00
7a01503478 Merged revision 3249 from 1.77; fixed typo in tfcconst.in (am50097) 2007-01-26 06:04:11 +00:00
dd8f138892 Back ported revision 3242 - Every include file now is const correct (am49281) 2007-01-26 05:56:10 +00:00
8341e41f04 Fixed TE_GLOWSPRITE (vittu) & TE_PLAYERSPRITES examples 2007-01-18 00:18:31 +00:00
a682ec6b7a Fixed TE_DLIGHT example Valve mistake! (P34nut) 2007-01-17 18:16:17 +00:00
451b648c7f Fixed TR_InOpen missing with *et_tr native (XxAvalanchexX) 2007-01-17 14:52:09 +00:00
2d1c43c937 Merged in changes to report 49977 2007-01-17 06:56:52 +00:00
17adb214f2 Fixed bug am49982 (wrote parameter counts) 2007-01-17 05:32:45 +00:00
3a2839c6c9 bugfix for 49698 2007-01-15 15:56:48 +00:00
f96f95c4ff translated shortcuts into english :x 2007-01-15 15:53:14 +00:00
609fdae508 Fixed native get_user_origin mode 4 2007-01-09 15:01:08 +00:00
580305ce92 fixed am49041 (hopefully) 2007-01-02 13:23:23 +00:00
cbfd12e0f1 fixed am49040 2007-01-02 13:17:33 +00:00
c5ccf7d2c8 fixed am48881 2007-01-02 13:04:56 +00:00
Zor
d1c42751cd - Fix in need of testing in regards to the TK / TA bug detected
- Created a temp pointer as the first thing to do in the CurWpn function.  This way if another message gets thrown while still in the middle of this function the global pointer to messaged player is not affected.
2006-12-29 19:25:16 +00:00
68f1ce7a52 fixed an initialization bug 2006-12-23 22:05:51 +00:00
e5b0ed3af1 fixed bug am48866 part 2 2006-12-23 19:01:11 +00:00
49e70063fa fixed bug am48866 2006-12-23 18:59:30 +00:00
7aa4cf70be removed amd64 support from installer (and yep, installer's version is already up-to-date ;] ) 2006-12-19 19:50:20 +00:00
b661873426 removed amd64 crap 2006-12-19 14:34:41 +00:00
8e290cdf31 final build info 2006-12-19 14:26:31 +00:00
42f23a832a bumped version number for plugins 2006-12-19 14:24:01 +00:00
13e619bf97 bumped versions 2006-12-19 14:18:05 +00:00
4332d6c271 fixed bug am47617 2006-12-19 14:03:02 +00:00
627b3f0f98 Fixed bug 48522 2006-12-19 12:24:36 +00:00
b7b55d060a sawce's sdk fixes 2006-12-19 11:19:45 +00:00
b110021f4f fixed bug am48308 2006-12-19 11:12:12 +00:00
96c49f4ff9 defaulted value back to 0 for backwards compat 2006-12-19 11:03:00 +00:00
f53c877670 fixed bug am27152 2006-12-19 10:57:43 +00:00
b237317e50 Fixed bug am48018 2006-12-19 10:36:26 +00:00
73b2ceb855 fixed bug am47988 2006-12-19 03:32:58 +00:00
b64fb4678d fixed issue 48202 2006-12-19 02:35:16 +00:00
d6ed1a8d8a Fixed bug am48234 2006-12-19 02:24:09 +00:00
b762174c30 fixed bug am48275 2006-12-19 02:02:49 +00:00
86838bead1 Fixed bug am48294 2006-12-19 01:58:46 +00:00
e6c15d9f05 Fixed bug am48580 2006-12-19 01:57:18 +00:00
266ed797c5 Fixed bug at48523 2006-12-18 14:33:06 +00:00
93cb2060dd fixed typo 2006-12-11 04:07:55 +00:00
0cd1782d01 fixed bug at48369 once and for all 2006-12-10 22:58:28 +00:00
75a5dadd4d small bug fix, compressed exe again :x 2006-12-10 22:37:01 +00:00
f03449acbd fixed 3rd bug at48369 2006-12-10 22:32:49 +00:00
34f127b9aa fixed 2nd bug at48369 2006-12-10 22:25:09 +00:00
0c345ceebc fixed bug at48201 2006-12-09 18:23:52 +00:00
c5dc780635 correction since commit 3164 was accidental 2006-12-06 08:46:44 +00:00
fe0e461c76 checks if the none option is the majority vote 2006-12-06 07:41:38 +00:00
935da9f0de version bump? >:o 2006-12-05 19:31:22 +00:00
36e9f29d55 2006-12-03 02:20:32 +00:00
c66c076a03 fixed bug at47865 2006-11-28 20:04:04 +00:00
4eaea443e1 who would have thought that iterators change?! 2006-11-22 07:33:54 +00:00
299f1b5f62 Fixed bug am46960 (cannot unpause through menu) 2006-11-22 06:14:10 +00:00
4e7bf7e348 ! 2006-11-22 05:39:08 +00:00
d048996b50 fixed bug am47194 (journal crash) 2006-11-22 05:30:58 +00:00
a34c8daf34 again... oops 2006-11-22 04:17:08 +00:00
6cd5a51c8e fixed issue am47452 2006-11-22 04:14:56 +00:00
5cabf748ca fixed issue am47474 2006-11-22 04:13:39 +00:00
1905ea7295 added info about console commands 2006-11-22 02:47:15 +00:00
89158f9342 Added request am47144 (register_*cmd return id) 2006-11-22 02:45:12 +00:00
db7dc509e0 Fixed another serious bug where deleting menus and not returning PLUGIN_HANDLED would cause the iterator to fail and crash 2006-11-21 23:59:21 +00:00
c15a23a2a7 fixed a serious bug where deleted forwards could be placed in the re-use cache too soon 2006-11-21 23:06:50 +00:00
3e0866e57a fixed bug am47134 2006-11-11 19:05:46 +00:00
551e5298cc fixed bug am46924 2006-11-05 18:38:09 +00:00
dfea3e8a13 corrected typo (at46807) 2006-11-03 13:27:17 +00:00
115 changed files with 2350 additions and 1444 deletions

View File

@ -226,6 +226,8 @@ void CSPForward::Set(int func, AMX *amx, int numParams, const ForwardParam *para
name[0] = '\0';
amx_GetPublic(amx, func, name);
m_Name.assign(name);
m_ToDelete = false;
m_InExec = false;
}
void CSPForward::Set(const char *funcName, AMX *amx, int numParams, const ForwardParam *paramTypes)
@ -236,6 +238,8 @@ void CSPForward::Set(const char *funcName, AMX *amx, int numParams, const Forwar
m_HasFunc = (amx_FindPublic(amx, funcName, &m_Func) == AMX_ERR_NONE);
isFree = false;
m_Name.assign(funcName);
m_ToDelete = false;
m_InExec = false;
}
cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
@ -248,13 +252,15 @@ cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
cell realParams[FORWARD_MAX_PARAMS];
cell *physAddrs[FORWARD_MAX_PARAMS];
if (!m_HasFunc)
if (!m_HasFunc || m_ToDelete)
return 0;
CPluginMngr::CPlugin *pPlugin = g_plugins.findPluginFast(m_Amx);
if (!pPlugin->isExecutable(m_Func))
return 0;
m_InExec = true;
Debugger *pDebugger = (Debugger *)m_Amx->userdata[UD_DEBUGGER];
if (pDebugger)
pDebugger->BeginExec();
@ -356,6 +362,8 @@ cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
}
}
m_InExec = false;
return retVal;
}
@ -452,7 +460,20 @@ bool CForwardMngr::isIdValid(int id) const
cell CForwardMngr::executeForwards(int id, cell *params)
{
int retVal = (id & 1) ? m_SPForwards[id >> 1]->execute(params, m_TmpArrays) : m_Forwards[id >> 1]->execute(params, m_TmpArrays);
int retVal;
if (id & 1)
{
CSPForward *fwd = m_SPForwards[id >> 1];
retVal = fwd->execute(params, m_TmpArrays);
if (fwd->m_ToDelete)
{
fwd->m_ToDelete = false;
unregisterSPForward(id);
}
} else {
retVal = m_Forwards[id >> 1]->execute(params, m_TmpArrays);
}
m_TmpArraysNum = 0;
return retVal;
@ -524,8 +545,15 @@ void CForwardMngr::unregisterSPForward(int id)
if (!isIdValid(id) || m_SPForwards.at(id >> 1)->isFree)
return;
m_SPForwards.at(id >> 1)->isFree = true;
m_FreeSPForwards.push(id);
CSPForward *fwd = m_SPForwards.at(id >> 1);
if (fwd->m_InExec)
{
fwd->m_ToDelete = true;
} else {
fwd->isFree = true;
m_FreeSPForwards.push(id);
}
}
int registerForwardC(const char *funcName, ForwardExecType et, cell *list, size_t num, int fwd_type)

View File

@ -143,6 +143,7 @@ public:
// Single plugin forward
class CSPForward
{
friend class CForwardMngr;
const char *m_FuncName;
int m_NumParams;
@ -152,6 +153,8 @@ class CSPForward
int m_Func;
bool m_HasFunc;
String m_Name;
bool m_InExec;
bool m_ToDelete;
public:
bool isFree;

View File

@ -87,6 +87,10 @@ void MenuMngr::removeMenuId(int id)
{
if (c->menuid == id)
{
if (m_watch_iter.a == c)
{
++m_watch_iter;
}
if (lc)
lc->next = c->next;
else
@ -140,4 +144,13 @@ void MenuMngr::clear()
}
}
MenuMngr::iterator MenuMngr::SetWatchIter(MenuMngr::iterator iter)
{
MenuMngr::iterator old = m_watch_iter;
m_watch_iter = iter;
return old;
}
int MenuMngr::MenuIdEle::uniqueid = 0;

View File

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

View File

@ -120,7 +120,6 @@ public:
cell hudmap[5];
Vector lastTrace;
Vector thisTrace;
Vector lastHit;
List<ClientCvarQuery_Info *> queries;

View File

@ -90,7 +90,7 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
{
if (warn)
{
AMXXLOG_Log("[AMXX] Plugins list not found (file \"%s\")", filename);
AMXXLOG_Error("[AMXX] Plugins list not found (file \"%s\")", filename);
}
return 1;
}
@ -153,6 +153,11 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
continue;
}
if (findPlugin(pluginName) != NULL)
{
continue;
}
CPlugin* plugin = loadPlugin(pluginsDir, pluginName, error, debugFlag);
if (plugin->getStatusCode() == ps_bad_load)
@ -160,7 +165,7 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
char errorMsg[255];
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
plugin->setError(errorMsg);
AMXXLOG_Log("[AMXX] %s", plugin->getError());
AMXXLOG_Error("[AMXX] %s", plugin->getError());
}
}
@ -212,7 +217,7 @@ CPluginMngr::CPlugin* CPluginMngr::findPlugin(int index)
return a;
}
CPluginMngr::CPlugin* CPluginMngr::findPlugin(const char* name)
{
if (!name)
@ -231,6 +236,17 @@ CPluginMngr::CPlugin* CPluginMngr::findPlugin(const char* name)
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
{
switch (status)
@ -258,6 +274,7 @@ CPluginMngr::CPlugin::CPlugin(int i, const char* p, const char* n, char* e, int
{
const char* unk = "unknown";
failcounter = 0;
title.assign(unk);
author.assign(unk);
version.assign(unk);

View File

@ -71,6 +71,7 @@ public:
String author;
String errorMsg;
unsigned int failcounter;
int m_PauseFwd;
int m_UnpauseFwd;
int paused_fun;
@ -98,9 +99,11 @@ public:
inline void setError(const char* n) { errorMsg.assign(n); }
inline bool isValid() const { return (status >= ps_paused); }
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()); }
void Finalize();
void AddToFailCounter(unsigned int i);
void pausePlugin();
void unpausePlugin();
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 \
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 \
amxmod_compat.cpp
amxmod_compat.cpp nongpl_matches.cpp
LINK = -lgcc -static-libgcc

View File

@ -35,9 +35,26 @@
#include "debugger.h"
#include "binlog.h"
#include "libraries.h"
#include "nongpl_matches.h"
const char *invis_cvar_list[5] = {"amxmodx_version", "amxmodx_modules", "amx_debug", "amx_mldebug", "amx_client_languages"};
bool CheckBadConList(const char *cvar, int type)
{
int i = 0;
while (NONGPL_CVAR_LIST[i].cvar != NULL)
{
if (NONGPL_CVAR_LIST[i].type == type
&& strcmp(NONGPL_CVAR_LIST[i].cvar, cvar) == 0)
{
return true;
}
i++;
}
return false;
}
static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params)
{
int len;
@ -1087,6 +1104,31 @@ static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param *
a->setTitle(title);
a->setVersion(vers);
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();
}
@ -1215,11 +1257,16 @@ static cell AMX_NATIVE_CALL register_concmd(AMX *amx, cell *params) /* 4 param *
if ((cmd = g_commands.registerCommand(plugin, idx, temp, info, access, listable)) == NULL)
return 0;
if (CheckBadConList(temp, 1))
{
plugin->AddToFailCounter(1);
}
cmd->setCmdType(CMD_ConsoleCommand);
REG_SVR_COMMAND((char*)cmd->getCommand(), plugin_srvcmd);
return 1;
return cmd->getId();
}
static cell AMX_NATIVE_CALL register_clcmd(AMX *amx, cell *params) /* 4 param */
@ -1253,7 +1300,7 @@ static cell AMX_NATIVE_CALL register_clcmd(AMX *amx, cell *params) /* 4 param */
cmd->setCmdType(CMD_ClientCommand);
return 1;
return cmd->getId();
}
static cell AMX_NATIVE_CALL register_srvcmd(AMX *amx, cell *params) /* 2 param */
@ -1288,7 +1335,7 @@ static cell AMX_NATIVE_CALL register_srvcmd(AMX *amx, cell *params) /* 2 param *
cmd->setCmdType(CMD_ServerCommand);
REG_SVR_COMMAND((char*)cmd->getCommand(), plugin_srvcmd);
return 0;
return cmd->getId();
}
static cell AMX_NATIVE_CALL get_concmd(AMX *amx, cell *params) /* 7 param */
@ -1534,6 +1581,18 @@ static cell AMX_NATIVE_CALL server_cmd(AMX *amx, cell *params) /* 1 param */
int len;
g_langMngr.SetDefLang(LANG_SERVER);
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] = 0;
@ -2283,10 +2342,15 @@ static cell AMX_NATIVE_CALL register_cvar(AMX *amx, cell *params) /* 3 param */
{
int 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))
{
CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx);
CCVar* cvar = new CCVar(temp, plugin->getName(), params[3], amx_ctof(params[4]));
cvar->plugin_id = plugin->getId();
@ -2453,7 +2517,7 @@ static cell AMX_NATIVE_CALL unpause(AMX *amx, cell *params) /* 3 param */
else
plugin = g_plugins.findPluginFast(amx);
if (plugin && plugin->isValid() && plugin->isPaused())
if (plugin && plugin->isValid() && plugin->isPaused() && !plugin->isStopped())
{
plugin->unpausePlugin();
return 1;
@ -4253,7 +4317,8 @@ static cell AMX_NATIVE_CALL is_user_hacking(AMX *amx, cell *params)
CPlayer *p = GET_PLAYER_POINTER_I(params[1]);
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;
}
@ -4263,7 +4328,19 @@ static cell AMX_NATIVE_CALL is_user_hacking(AMX *amx, cell *params)
static cell AMX_NATIVE_CALL arrayset(AMX *amx, cell *params)
{
memset(get_amxaddr(amx, params[1]), params[2], params[3] * sizeof(cell));
cell value = params[2];
if (!value)
{
memset(get_amxaddr(amx, params[1]), 0, params[3] * sizeof(cell));
} else {
int size = params[3];
cell *addr = get_amxaddr(amx, params[1]);
for (int i=0; i<size; i++)
{
addr[i] = value;
}
}
return 1;
}

View File

@ -73,7 +73,7 @@
#define AMXXLOG_Log g_log.Log
#define AMXXLOG_Error g_log.LogError
#define AMX_VERSION "1.76b"
#define AMX_VERSION "1.76d"
extern AMX_NATIVE_INFO core_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:
{
int c = static_cast<int>(params[2]);
return fwrite(&c, sizeof(short), 1, fp);
return fwrite(&c, sizeof(int), 1, fp);
}
}

View File

@ -403,6 +403,7 @@ reswitch:
case 'c':
CHECK_ARGS(0);
*buf_p++ = static_cast<D>(*get_amxaddr(amx, params[arg]));
llen--;
arg++;
break;
case 'd':

View File

@ -904,6 +904,7 @@ void C_ClientCommand(edict_t *pEntity)
while (a)
{
g_menucmds.SetWatchIter(a);
if ((*a).matchCommand(menuid, bit_key) && (*a).getPlugin()->isExecutable((*a).getFunction()))
{
if (pPlayer->newmenu != -1)
@ -940,7 +941,12 @@ void C_ClientCommand(edict_t *pEntity)
if (ret & 1) RETURN_META(MRES_SUPERCEDE);
}
}
++a;
if (g_menucmds.GetWatchIter() != a)
{
a = g_menucmds.GetWatchIter();
} else {
++a;
}
}
}
}
@ -1211,8 +1217,7 @@ void C_TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t
if (ptr->pHit && (ptr->pHit->v.flags & (FL_CLIENT | FL_FAKECLIENT)))
pPlayer->aiming = ptr->iHitgroup;
pPlayer->lastTrace = pPlayer->thisTrace;
pPlayer->thisTrace = ptr->vecEndPos;
pPlayer->lastTrace = ptr->vecEndPos;
}
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)
{
Debugger::GenericMessage(amx, err);
AMXXLOG_Log("An error occurred in plugins_native. This is dangerous!");
AMXXLOG_Log("An error occurred in plugin_natives. This is dangerous!");
}
}

View File

@ -439,6 +439,9 @@
<File
RelativePath="..\newmenus.cpp">
</File>
<File
RelativePath="..\nongpl_matches.cpp">
</File>
<File
RelativePath="..\optimizer.cpp">
</File>
@ -581,6 +584,9 @@
<File
RelativePath="..\newmenus.h">
</File>
<File
RelativePath="..\nongpl_matches.h">
</File>
<File
RelativePath="..\optimizer.h">
</File>

View File

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

View File

@ -343,13 +343,16 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
bool enabled = true;
int ret = 0;
int slots = 0;
int option_display = 0;
for (item_t i = start; i <= end; i++)
{
pItem = m_Items[i];
if (pItem->access && !(pItem->access & g_players[player].flags[0]))
{
enabled = false;
}
if (pItem->handler != -1)
{
@ -372,23 +375,32 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
enabled = false;
}
}
if (enabled)
{
keys |= (1<<option);
}
option_display = ++option;
if (option_display == 10)
{
option_display = 0;
}
if (enabled)
{
if (m_AutoColors)
{
_snprintf(buffer, sizeof(buffer)-1, "\\r%d.\\w %s\n", ++option, pItem->name.c_str());
_snprintf(buffer, sizeof(buffer)-1, "\\r%d.\\w %s\n", option_display, pItem->name.c_str());
} else {
_snprintf(buffer, sizeof(buffer)-1, "%d. %s\n", ++option, pItem->name.c_str());
_snprintf(buffer, sizeof(buffer)-1, "%d. %s\n", option_display, pItem->name.c_str());
}
} else {
if (m_AutoColors)
{
_snprintf(buffer, sizeof(buffer)-1, "\\d%d. %s\n\\w", ++option, pItem->name.c_str());
_snprintf(buffer, sizeof(buffer)-1, "\\d%d. %s\n\\w", option_display, pItem->name.c_str());
} else {
_snprintf(buffer, sizeof(buffer)-1, "#. %s\n", pItem->name.c_str());
option++;
}
}
slots++;

View File

@ -0,0 +1,22 @@
#include <string.h>
#include "nongpl_matches.h"
NONGPL_PLUGIN_T NONGPL_PLUGIN_LIST[] =
{
{"Live", "CZ Gun Game", "czgungame.amxx"},
{NULL, NULL, NULL},
};
NONGPL_CVAR_T NONGPL_CVAR_LIST[] =
{
{"gg_mode", 0},
{"gg_warmuptimer", 0},
{"gg_ff", 0},
{"gg_fflevel", 0},
{"gg_stats", 0},
{"gg_dm", 0},
{"gg_turbo", 0},
{"amx_ggreset", 1},
{"amx_gg", 1},
{NULL, 0},
};

51
amxmodx/nongpl_matches.h Normal file
View File

@ -0,0 +1,51 @@
/* AMX Mod X
*
* by the AMX Mod X Development Team
* originally developed by OLO
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/
#ifndef _INCLUDE_AMXMODX_NONGPL_MATCHES_H_
#define _INCLUDE_AMXMODX_NONGPL_MATCHES_H_
struct NONGPL_PLUGIN_T
{
const char *author;
const char *title;
const char *filename;
};
struct NONGPL_CVAR_T
{
const char *cvar;
int type;
};
extern NONGPL_PLUGIN_T NONGPL_PLUGIN_LIST[];
extern NONGPL_CVAR_T NONGPL_CVAR_LIST[];
#endif //_INCLUDE_AMXMODX_NONGPL_MATCHES_H_

View File

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

View File

@ -1077,7 +1077,7 @@ void FN_AlertMessage(ALERT_TYPE atype, char *szFmt, ...);
#endif // FN_AlertMessage
#ifdef FN_EngineFprintf
void FN_EngineFprintf(FILE *pfile, char *szFmt, ...);
void FN_EngineFprintf(void *pfile, char *szFmt, ...);
#endif // FN_EngineFprintf
#ifdef FN_PvAllocEntPrivateData
@ -1141,11 +1141,11 @@ void FN_GetBonePosition(const edict_t *pEdict, int iBone, float *rgflOrigin, flo
#endif // FN_GetBonePosition
#ifdef FN_FunctionFromName
unsigned long FN_FunctionFromName(const char *pName);
uint32 FN_FunctionFromName(const char *pName);
#endif // FN_FunctionFromName
#ifdef FN_NameForFunction
const char *FN_NameForFunction(unsigned long function);
const char *FN_NameForFunction(uint32);
#endif // FN_NameForFunction
#ifdef FN_ClientPrintf
@ -1189,7 +1189,7 @@ CRC32_t FN_CRC32_Final(CRC32_t pulCRC);
#endif // FN_CRC32_Final
#ifdef FN_RandomLong
long FN_RandomLong(long lLow, long lHigh);
int32 FN_RandomLong(int32 lLow, int32 lHigh);
#endif // FN_RandomLong
#ifdef FN_RandomFloat
@ -1658,11 +1658,11 @@ void FN_AlertMessage_Post(ALERT_TYPE atype, char *szFmt, ...);
#endif // FN_AlertMessage_Post
#ifdef FN_EngineFprintf_Post
void FN_EngineFprintf_Post(FILE *pfile, char *szFmt, ...);
void FN_EngineFprintf_Post(void *pfile, char *szFmt, ...);
#endif // FN_EngineFprintf_Post
#ifdef FN_PvAllocEntPrivateData_Post
void *FN_PvAllocEntPrivateData_Post(edict_t *pEdict, long cb);
void *FN_PvAllocEntPrivateData_Post(edict_t *pEdict, int32 cb);
#endif // FN_PvAllocEntPrivateData_Post
#ifdef FN_PvEntPrivateData_Post
@ -1722,11 +1722,11 @@ void FN_GetBonePosition_Post(const edict_t *pEdict, int iBone, float *rgflOrigin
#endif // FN_GetBonePosition_Post
#ifdef FN_FunctionFromName_Post
unsigned long FN_FunctionFromName_Post(const char *pName);
uint32 FN_FunctionFromName_Post(const char *pName);
#endif // FN_FunctionFromName_Post
#ifdef FN_NameForFunction_Post
const char *FN_NameForFunction_Post(unsigned long function);
const char *FN_NameForFunction_Post(uint32);
#endif // FN_NameForFunction_Post
#ifdef FN_ClientPrintf_Post
@ -1770,7 +1770,7 @@ CRC32_t FN_CRC32_Final_Post(CRC32_t pulCRC);
#endif // FN_CRC32_Final_Post
#ifdef FN_RandomLong_Post
long FN_RandomLong_Post(long lLow, long lHigh);
int32 FN_RandomLong_Post(int32 lLow, int32 lHigh);
#endif // FN_RandomLong_Post
#ifdef FN_RandomFloat_Post

View File

@ -83,11 +83,27 @@ void amx_command()
if (plugin && plugin->isValid())
{
plugin->pausePlugin();
print_srvconsole("Paused plugin \"%s\"\n", plugin->getName());
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();
print_srvconsole("Paused plugin \"%s\"\n", plugin->getName());
}
}
else
{
print_srvconsole("Couldn't find plugin matching \"%s\"\n", sPlugin);
}
}
else if (!strcmp(cmd, "unpause") && CMD_ARGC() > 2)
{
@ -97,14 +113,21 @@ void amx_command()
if (plugin && plugin->isValid() && plugin->isPaused())
{
plugin->unpausePlugin();
print_srvconsole("Unpaused plugin \"%s\"\n", plugin->getName());
if (plugin->isStopped())
{
print_srvconsole("Plugin \"%s\" is stopped and may not be unpaused.\n", plugin->getName());
}
else
{
plugin->unpausePlugin();
print_srvconsole("Unpaused plugin \"%s\"\n", plugin->getName());
}
}
else if (!plugin)
{
print_srvconsole("Couldn't find plugin matching \"%s\"\n", sPlugin);
} else {
print_srvconsole("Plugin %s can't be unpaused right now.", sPlugin);
print_srvconsole("Plugin %s can't be unpaused right now.\n", sPlugin);
}
}
else if (!strcmp(cmd, "cvars"))

View File

@ -27,8 +27,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,7,6,2
PRODUCTVERSION 1,7,6,2
FILEVERSION 1,7,6,3387
PRODUCTVERSION 1,7,6,3387
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -45,12 +45,12 @@ BEGIN
BEGIN
VALUE "Comments", "AMX Mod X"
VALUE "FileDescription", "AMX Mod X"
VALUE "FileVersion", "1.76b"
VALUE "FileVersion", "1.76d"
VALUE "InternalName", "amxmodx"
VALUE "LegalCopyright", "Copyright (c) 2004-2006, AMX Mod X Dev Team"
VALUE "OriginalFilename", "amxmodx_mm.dll"
VALUE "ProductName", "AMX Mod X"
VALUE "ProductVersion", "1.76b"
VALUE "ProductVersion", "1.76d"
END
END
BLOCK "VarFileInfo"

View File

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

View File

@ -244,9 +244,14 @@ void CPlayer::saveBDefused(){
// *****************************************************
bool ignoreBots (edict_t *pEnt, edict_t *pOther){
if ( !rankBots && ( pEnt->v.flags & FL_FAKECLIENT || ( pOther && pOther->v.flags & FL_FAKECLIENT ) ) )
bool ignoreBots(edict_t *pEnt, edict_t *pOther)
{
rankBots = (int)csstats_rankbots->value ? true : false;
if (!rankBots && (pEnt->v.flags & FL_FAKECLIENT || (pOther && pOther->v.flags & FL_FAKECLIENT)))
{
return true;
}
return false;
}

View File

@ -58,7 +58,7 @@ cvar_t *csstats_rank;
cvar_t* csstats_rankbots;
cvar_t* csstats_pause;
cvar_t init_csstats_rankbots ={"csstats_rankbots","1"};
cvar_t init_csstats_rankbots ={"csstats_rankbots","0"};
cvar_t init_csstats_pause = {"csstats_pause","0"};
struct sUserMsg

View File

@ -5,7 +5,7 @@
// Module info
#define MODULE_NAME "CSX"
#define MODULE_VERSION "1.76a"
#define MODULE_VERSION "1.76c"
#define MODULE_AUTHOR "AMX Mod X Dev Team"
#define MODULE_URL "http://www.amxmodx.org/"
#define MODULE_LOGTAG "CSX"

View File

@ -60,13 +60,13 @@ extern int mState;
extern int mPlayerIndex;
void Client_CurWeapon(void*);
void Client_Health_End(void*);
void Client_ResetHUD_End(void*);
void Client_ObjScore(void*);
void Client_TeamScore(void*);
void Client_RoundState(void*);
void Client_AmmoX(void*);
void Client_AmmoShort(void*);
void Client_Health_End(void*);
// Zors
//void WeaponList(void*);
@ -78,7 +78,6 @@ extern int AlliesScore;
extern int AxisScore;
extern int gmsgCurWeapon;
extern int gmsgHealth;
extern int gmsgResetHUD;
extern int gmsgObjScore;
extern int gmsgRoundState;
@ -87,12 +86,11 @@ extern int gmsgScoreShort;
extern int gmsgPTeam;
extern int gmsgAmmoX;
extern int gmsgAmmoShort;
extern int gmsgHealth_End;
extern int iFDamage;
extern int iFDeath;
extern int iFScore;
// Zors
extern int iFSpawnForward;
extern int iFTeamForward;
extern int iFClassForward;

View File

@ -57,7 +57,6 @@ int iFTeamForward = -1;
int iFClassForward = -1;
int gmsgCurWeapon;
int gmsgHealth;
int gmsgResetHUD;
int gmsgObjScore;
int gmsgRoundState;
@ -66,6 +65,7 @@ int gmsgScoreShort;
int gmsgPTeam;
int gmsgAmmoX;
int gmsgAmmoShort;
int gmsgHealth_End;
// Zors
//int gmsgWeaponList;
@ -90,22 +90,23 @@ struct sUserMsg {
int* id;
funEventCall func;
bool endmsg;
} g_user_msg[] = {
{ "CurWeapon",&gmsgCurWeapon,Client_CurWeapon,false },
{ "ObjScore",&gmsgObjScore,Client_ObjScore,false },
{ "RoundState",&gmsgRoundState,Client_RoundState,false },
{ "Health",&gmsgHealth,Client_Health_End,true },
{ "ResetHUD",&gmsgResetHUD,Client_ResetHUD_End,true },
{ "TeamScore",&gmsgTeamScore,Client_TeamScore,false },
{ "ScoreShort",&gmsgScoreShort,NULL,false },
{ "PTeam",&gmsgPTeam,NULL,false },
{ "AmmoX",&gmsgAmmoX,Client_AmmoX,false},
{ "AmmoShort",&gmsgAmmoShort,Client_AmmoShort,false},
{ "ScoreShort",&gmsgScoreShort,NULL,false },
} g_user_msg[] =
{
{ "CurWeapon", &gmsgCurWeapon, Client_CurWeapon, false },
{ "ObjScore", &gmsgObjScore, Client_ObjScore, false },
{ "RoundState", &gmsgRoundState, Client_RoundState, false },
{ "ResetHUD", &gmsgResetHUD, Client_ResetHUD_End, true },
{ "TeamScore", &gmsgTeamScore, Client_TeamScore, false },
{ "AmmoX", &gmsgAmmoX, Client_AmmoX, false },
{ "AmmoShort", &gmsgAmmoShort, Client_AmmoShort, false },
{ "Health", &gmsgHealth_End, Client_Health_End, true },
//Zors
//{ "WeaponList",&gmsgWeaponList,WeaponList,true },
//{ "WeaponList",&gmsgWeaponList_End,WeaponList_End,true },
//{ "WeaponList", &gmsgWeaponList, WeaponList, true },
//{ "WeaponList", &gmsgWeaponList_End, WeaponList_End, true },
{ "PTeam", &gmsgPTeam, NULL, false },
{ "ScoreShort", &gmsgScoreShort, NULL, false },
{ 0,0,0,false }
};
@ -440,8 +441,6 @@ void OnPluginsLoaded()
iFDeath = MF_RegisterForward("client_death",ET_IGNORE,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_CELL,FP_DONE);
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);
// Zors
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);
iFClassForward = MF_RegisterForward("dod_client_changeclass",ET_IGNORE,FP_CELL/*id*/,FP_CELL/*class*/,FP_CELL/*oldclass*/,FP_DONE);

View File

@ -141,67 +141,6 @@ void Client_CurWeapon(void* mValue)
}
}
/*
Nie ma damage event ...
*/
void Client_Health_End(void* mValue){
if ( !isModuleActive() )
return;
edict_t *enemy = mPlayer->pEdict->v.dmg_inflictor;
int damage = (int)mPlayer->pEdict->v.dmg_take;
if ( !mPlayer || !damage || !enemy )
return;
int weapon = 0;
int aim = 0;
mPlayer->pEdict->v.dmg_take = 0.0;
CPlayer* pAttacker = NULL;
if ( enemy->v.flags & (FL_CLIENT | FL_FAKECLIENT) )
{
pAttacker = GET_PLAYER_POINTER(enemy);
weapon = pAttacker->current;
if ( weaponData[weapon].needcheck )
weapon = get_weaponid(pAttacker);
aim = pAttacker->aiming;
if ( weaponData[weapon].melee )
pAttacker->saveShot(weapon);
}
else
g_grenades.find( enemy , &pAttacker , weapon );
int TA = 0;
if ( !pAttacker )
{
pAttacker = mPlayer;
}
if ( pAttacker->index != mPlayer->index )
{
pAttacker->saveHit( mPlayer , weapon , damage, aim );
if ( mPlayer->pEdict->v.team == pAttacker->pEdict->v.team )
TA = 1;
}
MF_ExecuteForward( iFDamage, pAttacker->index, mPlayer->index, damage, weapon, aim, TA );
if ( !mPlayer->IsAlive() )
{
pAttacker->saveKill(mPlayer,weapon,( aim == 1 ) ? 1:0 ,TA);
MF_ExecuteForward( iFDeath, pAttacker->index, mPlayer->index, weapon, aim, TA );
}
}
void Client_AmmoX(void* mValue)
{
static int iAmmo;
@ -241,6 +180,67 @@ void Client_AmmoShort(void* mValue)
}
}
void Client_Health_End(void* mValue)
{
if ( !isModuleActive() )
return;
CPlayer* pVictim = mPlayer;
edict_t *enemy = pVictim->pEdict->v.dmg_inflictor;
int damage = (int)pVictim->pEdict->v.dmg_take;
if(!pVictim || !damage || !enemy)
return;
int weapon = 0;
int aim = 0;
pVictim->pEdict->v.dmg_take = 0.0;
CPlayer* pAttacker = NULL;
if(enemy->v.flags & (FL_CLIENT | FL_FAKECLIENT))
{
pAttacker = GET_PLAYER_POINTER(enemy);
weapon = pAttacker->current;
if(weaponData[weapon].needcheck)
weapon = get_weaponid(pAttacker);
aim = pAttacker->aiming;
if(weaponData[weapon].melee)
pAttacker->saveShot(weapon);
}
else
g_grenades.find(enemy , &pAttacker , weapon);
int TA = 0;
if(!pAttacker)
{
pAttacker = pVictim;
}
if(pAttacker->index != pVictim->index)
{
pAttacker->saveHit(pVictim , weapon , damage, aim);
if(pVictim->pEdict->v.team == pAttacker->pEdict->v.team)
TA = 1;
}
MF_ExecuteForward(iFDamage, pAttacker->index, pVictim->index, damage, weapon, aim, TA);
if(!pVictim->IsAlive())
{
pAttacker->saveKill(pVictim, weapon, (aim == 1) ? 1:0 , TA);
MF_ExecuteForward(iFDeath, pAttacker->index, pVictim->index, weapon, aim, TA);
}
}
/*
Working on being able to modify and switch weapons as they are sent to the client

View File

@ -34,19 +34,25 @@ void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
g_pFunctionTable->pfn##tcall =0; \
g_pFunctionTable_Post->pfn##tcall =NULL; \
Engine[FM_##tcall].clear(); \
EnginePost[FM_##tcall].clear()
EnginePost[FM_##tcall].clear(); \
EngineAddrs[FM_##tcall] = NULL; \
EngineAddrsPost[FM_##tcall] = NULL;
#define RESETE(call) \
g_pengfuncsTable->pfn##call = NULL; \
g_pengfuncsTable_Post->pfn##call = NULL; \
Engine[FM_##call].clear(); \
EnginePost[FM_##call].clear()
EnginePost[FM_##call].clear(); \
EngineAddrs[FM_##call] = NULL; \
EngineAddrsPost[FM_##call] = NULL;
#define RESETN(call) \
g_pNewFunctionsTable->pfn##call = NULL; \
g_pNewFunctionsTable_Post->pfn##call = NULL; \
Engine[FM_##call].clear(); \
EnginePost[FM_##call].clear();
EnginePost[FM_##call].clear(); \
EngineAddrs[FM_##call] = NULL; \
EngineAddrsPost[FM_##call] = NULL;
void FMH_ServerDeactivate_Post()
{

View File

@ -30,6 +30,12 @@ static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
return 1;
break;
}
case TR_InOpen:
{
gfm_tr->fInOpen = *ptr;
return 1;
break;
}
case TR_InWater:
{
gfm_tr->fInWater = *ptr;
@ -104,6 +110,11 @@ static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params)
return gfm_tr->fStartSolid;
break;
}
case TR_InOpen:
{
return gfm_tr->fInOpen;
break;
}
case TR_InWater:
{
return gfm_tr->fInWater;

View File

@ -692,6 +692,8 @@ static cell AMX_NATIVE_CALL get_es(AMX *amx, cell *params)
ptr = MF_GetAmxAddr(amx, params[3]);
*ptr = amx_ftoc(es->framerate);
return 1;
case ES_Body:
return es->body;
case ES_Controller:
ptr = MF_GetAmxAddr(amx, params[3]);
ptr[0] = es->controller[0];
@ -937,6 +939,9 @@ static cell AMX_NATIVE_CALL set_es(AMX *amx, cell *params)
case ES_FrameRate:
es->framerate = amx_ctof(*ptr);
return 1;
case ES_Body:
es->body = *ptr;
return 1;
case ES_Controller:
es->controller[0] = ptr[0];
es->controller[1] = ptr[1];

View File

@ -2,6 +2,8 @@
CVector<int> Engine[ENGFUNC_NUM+10];
CVector<int> EnginePost[ENGFUNC_NUM+10];
void *EngineAddrs[ENGFUNC_NUM+10];
void *EngineAddrsPost[ENGFUNC_NUM+10];
cell mCellResult;
cell mlCellResult;
float mFloatResult;
@ -57,12 +59,12 @@ static cell AMX_NATIVE_CALL fm_return(AMX *amx, cell *params)
}
case FMV_FLOAT:
{
mFloatResult = amx_ctof(params[2]);
mFloatResult = amx_ctof(*(MF_GetAmxAddr(amx,params[2])));
break;
}
case FMV_CELL:
{
mCellResult = params[2];
mCellResult = *(MF_GetAmxAddr(amx,params[2]));
break;
}
default:
@ -819,11 +821,17 @@ static cell AMX_NATIVE_CALL unregister_forward(AMX *amx, cell *params)
return 0;
}
void *patchAddr = NULL;
CVector<int> *peng = NULL;
if (post)
{
peng = &(EnginePost[func]);
else
patchAddr = EngineAddrsPost[func];
} else {
peng = &(Engine[func]);
patchAddr = EngineAddrs[func];
}
CVector<int>::iterator begin, end=peng->end();
@ -832,10 +840,12 @@ static cell AMX_NATIVE_CALL unregister_forward(AMX *amx, cell *params)
if ((*begin) == func_id)
{
peng->erase(begin);
if (!peng->size())
if (!peng->size()
&& patchAddr != NULL
&& func != FM_ServerDeactivate)
{
//:TODO: we should probably clear this here!
//but, we have no reverse lookup possible.
/* Clear out this forward if we no longer need it */
*(void **)patchAddr = NULL;
}
return 1;
}
@ -999,19 +1009,19 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
ENGHOOK(TraceLine);
break;
case FM_TraceToss:
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
ENGHOOK(TraceToss);
break;
case FM_TraceMonsterHull:
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
ENGHOOK(TraceMonsterHull);
break;
case FM_TraceHull:
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
ENGHOOK(TraceHull);
break;
case FM_TraceModel:
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
ENGHOOK(TraceModel);
break;
case FM_TraceTexture:

View File

@ -169,6 +169,8 @@ enum {
extern CVector<int> Engine[];
extern CVector<int> EnginePost[];
extern void *EngineAddrs[ENGFUNC_NUM+10];
extern void *EngineAddrsPost[ENGFUNC_NUM+10];
extern cell mCellResult;
extern float mFloatResult;
extern const char *mStringResult;

View File

@ -810,11 +810,13 @@
#define ENGHOOK(pfnCall) \
if (post) \
{ \
EngineAddrsPost[FM_##pfnCall] = &engtable->pfn##pfnCall; \
if (engtable->pfn##pfnCall == NULL) \
engtable->pfn##pfnCall = pfnCall##_post; \
} \
else \
{ \
EngineAddrs[FM_##pfnCall] = &engtable->pfn##pfnCall; \
if (engtable->pfn##pfnCall == NULL) \
engtable->pfn##pfnCall = pfnCall; \
}
@ -822,11 +824,13 @@
#define DLLHOOK(pfnCall) \
if (post) \
{ \
EngineAddrsPost[FM_##pfnCall] = &dlltable->pfn##pfnCall; \
if (dlltable->pfn##pfnCall == NULL) \
dlltable->pfn##pfnCall = pfnCall##_post; \
} \
else \
{ \
EngineAddrs[FM_##pfnCall] = &dlltable->pfn##pfnCall; \
if (dlltable->pfn##pfnCall == NULL) \
dlltable->pfn##pfnCall = pfnCall; \
}

View File

@ -5,7 +5,7 @@
// Module info
#define MODULE_NAME "FakeMeta"
#define MODULE_VERSION "1.76b"
#define MODULE_VERSION "1.76d"
#define MODULE_AUTHOR "AMX Mod X Dev Team"
#define MODULE_URL "http://www.amxmodx.org"
#define MODULE_LOGTAG "FAKEMETA"

View File

@ -5,7 +5,7 @@
// Module info
#define MODULE_NAME "NS"
#define MODULE_VERSION "1.76"
#define MODULE_VERSION "1.76d"
#define MODULE_AUTHOR "Steve Dudenhoeffer"
#define MODULE_URL "http://www.amxmodx.org/"
#define MODULE_LOGTAG "NS"

View File

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

View File

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

View File

@ -2773,7 +2773,7 @@ void ValidateMacros_DontCallThis_Smiley()
MF_FindLibrary(NULL, LibType_Class);
MF_AddLibraries(NULL, LibType_Class, NULL);
MF_RemoveLibraries(NULL);
MF_OverrideNatives(NULL);
MF_OverrideNatives(NULL, "");
}
#endif

View File

@ -5,7 +5,7 @@
// Module info
#define MODULE_NAME "nVault"
#define MODULE_VERSION "1.76"
#define MODULE_VERSION "1.76c"
#define MODULE_AUTHOR "AMX Mod X Dev Team"
#define MODULE_URL "http://www.amxmodx.org/"
#define MODULE_LOGTAG "nVault"

View File

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

View File

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

View File

@ -115,7 +115,7 @@ AutoIncBuild=1
MajorVer=1
MinorVer=4
Release=3
Build=1
Build=3
Debug=0
PreRelease=0
Special=0
@ -126,7 +126,7 @@ CodePage=1252
[Version Info Keys]
CompanyName=AMX Mod X Dev Team
FileDescription=
FileVersion=1.4.3.1
FileVersion=1.4.3.3
InternalName=
LegalCopyright=AMX Mod X Dev Team
LegalTrademarks=

Binary file not shown.

Binary file not shown.

View File

@ -26,6 +26,8 @@ type TPAWNCompileThread = class(TThread)
function DoCompilePAWN(eFlags: Integer): Boolean;
var Compiling: Boolean;
implementation
uses UnitfrmSettings, UnitLanguages, UnitMainTools, UnitfrmMain,
@ -35,12 +37,14 @@ function DoCompilePAWN(eFlags: Integer): Boolean;
var eFile: string;
begin
Result := False;
if (Compiling) then exit;
if not FileExists(frmSettings.txtPAWNCompilerPath.Text) then begin
MessageBox(frmMain.Handle, PChar(lPAWNCompilerNotFound), PChar(Application.Title), MB_ICONERROR);
exit;
end;
Screen.Cursor := crHourGlass;
Compiling := True;
if (ActiveDoc.Untitled) then
eFile := ExtractFilePath(ParamStr(0)) + 'Untitled.sma'
else
@ -226,6 +230,7 @@ begin
CloseHandle(PipeErrorsWrite);
end;
Screen.Cursor := crDefault;
Compiling := False;
Output.Free;
end;

View File

@ -80,7 +80,7 @@ function IEInstalled: Boolean;
function GetAMXXDir(ListenServer: Boolean): String;
function CloseDocument(eDocument: TDocument; SaveActiveDoc, RemoveTab: Boolean): Boolean;
function AddExtension(eFilename, eHighlighter: String): String;
function AddExtension(eFilename, eHighlighter: String; Document: TDocument): String;
function ShowColorDialog(var Color: TColor; ePaintImage: TImage): Boolean;
@ -468,11 +468,15 @@ begin
Collection.Close(eDocument.Index, RemoveTab);
end;
function AddExtension(eFilename, eHighlighter: String): String;
function AddExtension(eFilename, eHighlighter: String; Document: TDocument): String;
begin
if ExtractFileExt(eFilename) = '' then begin
if eHighlighter = 'Pawn' then
Result := eFilename + '.sma';
if eHighlighter = 'Pawn' then begin
if (ExtractFileExt(Document.Title) = '.inc') then
Result := eFilename + '.inc'
else
Result := eFilename + '.sma';
end;
if eHighlighter = 'C++' then
Result := eFilename + '.cpp';
if eHighlighter = 'HTML' then

View File

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

View File

@ -7375,8 +7375,8 @@ object frmHudMsgGenerator: TfrmHudMsgGenerator
ColorHighLight = 8623776
ColorShadow = 8623776
Caption = 'Generate'
ModalResult = 1
TabOrder = 4
ModalResult = 1
end
object cmdCancel: TFlatButton
Left = 334
@ -7388,8 +7388,8 @@ object frmHudMsgGenerator: TfrmHudMsgGenerator
ColorHighLight = 8623776
ColorShadow = 8623776
Caption = 'Cancel'
ModalResult = 2
TabOrder = 5
ModalResult = 2
end
object pnlText: TPanel
Left = 6
@ -7430,7 +7430,7 @@ object frmHudMsgGenerator: TfrmHudMsgGenerator
ColorFlat = clWhite
TabOrder = 1
Text = '12,0'
OnChange = txtTimeToShowChange
OnExit = txtTimeToShowExit
OnKeyPress = txtTimeToShowKeyPress
end
end

View File

@ -47,10 +47,10 @@ type
procedure cmdSelectColorClick(Sender: TObject);
procedure txtTextChange(Sender: TObject);
procedure txtTimeToShowKeyPress(Sender: TObject; var Key: Char);
procedure txtTimeToShowChange(Sender: TObject);
procedure chkXCenterClick(Sender: TObject);
procedure chkYCenterClick(Sender: TObject);
procedure txtPosExit(Sender: TObject);
procedure txtTimeToShowExit(Sender: TObject);
private
eDown: Boolean;
eStartPos: TPoint;
@ -89,7 +89,7 @@ begin
lblHudMsg.Left := 0
else if lblHudMsg.Left > pnlHudmessage.Width then
lblHudMsg.Left := pnlHudmessage.Width;
txtXPos.Text := FloatToStr(RoundTo(lblHudMsg.Left / pnlHudmessage.Width, -2));
txtXPos.Text := FloatToStrF(lblHudMsg.Left / pnlHudmessage.Width, ffFixed, -2, 2);
end;
{ Y Pos }
@ -99,7 +99,7 @@ begin
lblHudMsg.Top := 0
else if lblHudMsg.Top > pnlHudmessage.Height then
lblHudMsg.Top := pnlHudmessage.Height;
txtYPos.Text := FloatToStr(RoundTo(lblHudMsg.Top / pnlHudmessage.Height, -2));
txtYPos.Text := FloatToStrF(lblHudMsg.Top / pnlHudmessage.Height, ffFixed, -2, 2);
end;
end;
end;
@ -169,7 +169,7 @@ procedure TfrmHudMsgGenerator.txtTextKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then begin
txtText.SelText := '\n';
txtText.SelText := '^n';
Key := #0;
end;
end;
@ -195,7 +195,7 @@ begin
if txtText.Text = '' then
lblHudMsg.Caption := 'Custom Hudmessage'
else
lblHudMsg.Caption := StringReplace(txtText.Text, '\n', #13, [rfReplaceAll]);
lblHudMsg.Caption := StringReplace(txtText.Text, '^n', #13, [rfReplaceAll]);
if chkXCenter.Checked then
CenterX;
@ -210,20 +210,6 @@ begin
Key := ',';
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);
var eChar: Char;
begin
@ -276,4 +262,16 @@ begin
txtYPos.OnKeyPress(txtXPos, eChar);
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.

View File

@ -730,11 +730,12 @@ object frmMain: TfrmMain
Top = 72
Width = 885
RightClickSelect = False
Painter = mtpDocuments
Tabs = <
item
Caption = '< 1 Untitled.sma >'
Selected = True
end>
Painter = mtpDocuments
OnTabClosing = tbDocsTabClosing
OnTabSelected = tbDocsTabSelected
OnMouseDown = tbDocsMouseDown
@ -937,6 +938,7 @@ object frmMain: TfrmMain
Top = 26
Width = 191
Height = 199
Style = isItemPainter
Align = alClient
Divider = 110
ItemHeight = 16
@ -4544,7 +4546,6 @@ object frmMain: TfrmMain
TabOrder = 1
OnClick = cmdCancelClick
CaptionGlowColor = clBtnFace
DropDownArrow = True
LinkFont.Charset = DEFAULT_CHARSET
LinkFont.Color = clBlue
LinkFont.Height = -11
@ -6569,6 +6570,7 @@ object frmMain: TfrmMain
end
object IdFTP: TIdFTP
MaxLineAction = maSplit
ReadTimeout = 0
ProxySettings.ProxyType = fpcmNone
ProxySettings.Port = 0
Left = 722
@ -7826,7 +7828,32 @@ object frmMain: TfrmMain
end
end
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
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
Top = 36
end

View File

@ -21,7 +21,7 @@ uses
JvInspector, JvExControls, JvPluginManager, JvgLanguageLoader,
JvWndProcHook, CommCtrl, JvPageList, JvPageListTreeView,
SciSearchReplaceBase, SpTBXControls, JvTabBar, TB2ExtItems, SpTBXEditors,
TBXLists, SpTBXLists;
TBXLists, SpTBXLists, JvComponentBase;
type
TfrmMain = class(TForm)
@ -894,7 +894,7 @@ end;
procedure TfrmMain.mnuSaveAsClick(Sender: TObject);
begin
if sdSave.Execute then begin
ActiveDoc.FileName := AddExtension(sdSave.FileName, ActiveDoc.Highlighter);
ActiveDoc.FileName := AddExtension(sdSave.FileName, ActiveDoc.Highlighter, ActiveDoc);
ActiveDoc.Save;
tbDocs.Tabs[ActiveDoc.Index].Caption := ActiveDoc.Title;
end;
@ -1296,7 +1296,7 @@ begin
b := Integer(frmAllFilesForm.lstFiles.Items.Objects[a]);
if TDocument(Collection.Items[b]).Untitled then begin
if sdSave.Execute then begin
TDocument(Collection.Items[b]).FileName := AddExtension(sdSave.FileName, TDocument(Collection.Items[b]).Highlighter);
TDocument(Collection.Items[b]).FileName := AddExtension(sdSave.FileName, TDocument(Collection.Items[b]).Highlighter, TDocument(Collection.Items[b]));
TDocument(Collection.Items[b]).Save;
TJvTabBarItem(tbDocs.Tabs[b]).Caption := TDocument(Collection.Items[b]).Title;
end
@ -1547,7 +1547,7 @@ begin
else begin
frmMain.sdSave.FilterIndex := 1;
if frmMain.sdSave.Execute then begin
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem);
eItem.Save;
end
else begin
@ -1571,7 +1571,7 @@ begin
else begin
frmMain.sdSave.FilterIndex := 2;
if frmMain.sdSave.Execute then begin
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem);
eItem.Save;
end
else begin
@ -1595,7 +1595,7 @@ begin
else begin
frmMain.sdSave.FilterIndex := 0;
if frmMain.sdSave.Execute then begin
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter);
eItem.FileName := AddExtension(frmMain.sdSave.FileName, eItem.Highlighter, eItem);
eItem.Save;
end
else begin
@ -1706,6 +1706,7 @@ procedure TfrmMain.mnuHudmessageClick(Sender: TObject);
function Dot(eIn: string): string;
begin
Result := StringReplace(eIn, ',', '.', [rfReplaceAll]);
Result := StringReplace(Result, '.00', '.0', [rfReplaceAll]);
end;
var eStr: string;
@ -2231,7 +2232,7 @@ begin
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 + 'socket_recv(sck' + frmConnGen.txtName.Text + ', buf, 511)');
sciEditor.Lines.Add(#9 + #9 + 'count = ExplodeString(lines, 50, 119, buf, 13)');
sciEditor.Lines.Add(#9 + #9 + 'count = ExplodeString(lines, 29, 99, buf, 13)');
sciEditor.Lines.Add(#9 + #9 + 'for(new i=0;i<count;i++) {');
sciEditor.Lines.Add(#9 + #9 + #9 + '/* Process items here */');
sciEditor.Lines.Add(#9 + #9 + '}');

View File

@ -3,4 +3,4 @@ source = /home/users/dvander/amxx
makeopts =
output = /home/users/dvander/done
devenv = /usr/bin/make
release = amxmodx-1.76
release = amxmodx-1.76c

View File

@ -3,4 +3,4 @@ source = R:\amxmodx
makeopts =
output = c:\real\done
devenv = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.com
release = amxmodx-1.76b
release = amxmodx-1.76d

View File

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

View File

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

View File

@ -7,7 +7,7 @@ program AMXInstaller;
- Indy 9 (www.indyproject.org)
- FlatStyle Components (www.torry.net)
- FlatPack Component Pack (www.torry.net)
- mxFlatPack Component Pack (www.maxcomponents.net/components.html)
- JVCL Lib Pack 3.0 (jvcl.sourceforge.net)
AMXX Installer for AMX Mod X is developed under GNU Public License

Binary file not shown.

View File

@ -3,14 +3,15 @@ unit UnitInstall;
interface
uses SysUtils, Classes, Windows, Graphics, Forms, ShellAPI, Controls, Messages,
TlHelp32, IdFTPCommon, ComCtrls, JclFileUtils, Dialogs;
TlHelp32, IdFTPCommon, ComCtrls, Dialogs, JclFileUtils;
type TMod = (modNone, modCS, modDoD, modTFC, modNS, modTS, modESF);
type TOS = (osWindows, osLinux32, osLinux64);
type TOS = (osWindows, osLinux32{, osLinux64});
procedure AddStatus(Text: String; Color: TColor; ShowTime: Boolean = True);
procedure AddDone(Additional: String = '');
procedure AddSkipped;
procedure AddFailed;
procedure AddNotFound;
procedure MakeDir(Dir: String);
procedure DownloadFile(eFile: String; eDestination: String);
@ -88,6 +89,17 @@ begin
Application.ProcessMessages;
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;
begin
frmMain.rtfDetails.SelStart := Length(frmMain.rtfDetails.Text);
@ -173,8 +185,12 @@ begin
if frmMain.IdFTP.TransferType <> TransferType then
frmMain.IdFTP.TransferType := TransferType;
// upload the file
frmMain.IdFTP.Put(eFile, eDestination);
AddDone;
try
frmMain.IdFTP.Put(eFile, eDestination);
AddDone;
except
AddFailed;
end;
end;
procedure FTPMakeDir(eDir: String);
@ -213,7 +229,7 @@ begin
if Pos('_amd64', ExtractFileName(eFile)) <> 0 then
Result := True;
end;
osLinux64: begin
{osLinux64: begin
if ExtractFileExt(eFile) = '.dll' then
Result := True;
if ExtractFileExt(eFile) = '.exe' then
@ -221,7 +237,7 @@ begin
if Pos('_i386', ExtractFileName(eFile)) <> 0 then
Result := True;
end;
end;}
end;
end;
@ -280,13 +296,13 @@ var eStr: TStringList;
UpdatePluginsIni: Boolean;
begin
AddStatus('Scanning for directories...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'files\*.*', faDirectory, True, True) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'files\*.*', faDirectory, True, True) do begin
DirList.Text := Text;
Free;
end;
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
AddStatus('Scanning for files...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'files\*.*', faAnyFile, True, False) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'files\*.*', faAnyFile, True, False) do begin
FileList.Text := Text;
Free;
end;
@ -327,9 +343,9 @@ begin
end;
for i := 0 to DirList.Count -1 do
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 7, Length(DirList[i]));
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(Application.ExeName)) + 7, Length(DirList[i]));
for i := 0 to FileList.Count -1 do
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 7, Length(FileList[i]));
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(Application.ExeName)) + 7, Length(FileList[i]));
{ liblist.gam }
if not FileExists(ePath + 'liblist.gam') then begin
@ -350,10 +366,10 @@ begin
eStr[i] := '//' + eStr[i];
end;
eStr.Add('gamedll "addons\metamod\dlls\metamod.dll"');
if OS = osLinux64 then
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"')
else
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"');
//if OS = osLinux64 then
// eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"')
//else
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"');
FileSetAttr(ePath + 'liblist.gam', 0);
eStr.SaveToFile(ePath + 'liblist.gam');
FileSetAttr(ePath + 'liblist.gam', faReadOnly); // important for listen servers
@ -438,44 +454,44 @@ begin
if not IsForbidden(FileList[i], OS) then begin
if Pos('base', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), CopyConfig);
end;
case eMod of
modCS: begin
if Pos('cstrike', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), CopyConfig);
end;
end;
modDoD: begin
if Pos('dod', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
end;
end;
modTFC: begin
if Pos('tfc', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
end;
end;
modNS: begin
if Pos('ns', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
end;
end;
modTS: begin
if Pos('ts', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
end;
end;
modESF: begin
if Pos('esf', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
end;
end;
end;
@ -596,7 +612,7 @@ begin
frmMain.IdFTP.Connect;
Result := True;
except
MessageBox(frmMain.Handle, 'Failed to reconnect. Installation aborted.', PChar(Application.Title), MB_ICONSTOP);
MessageBox(frmMain.Handle, 'Failed to reconnect. Installation has been aborted.', PChar(Application.Title), MB_ICONSTOP);
end;
end;
end;
@ -614,24 +630,26 @@ begin
ePath := '/';
CurNode := frmMain.trvDirectories.Selected;
repeat
ePath := '/' + CurNode.Text + ePath;
CurNode := CurNode.Parent;
until (not Assigned(CurNode));
if (Assigned(CurNode)) then begin
repeat
ePath := '/' + CurNode.Text + ePath;
CurNode := CurNode.Parent;
until (not Assigned(CurNode));
end;
Screen.Cursor := crAppStart;
frmMain.cmdCancel.Show;
frmMain.cmdCancel.Caption := '&Cancel';
frmMain.cmdNext.Hide;
Screen.Cursor := crHourGlass;
AddStatus('Scanning for directories...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'temp\*.*', faDirectory, True, True) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'temp\*.*', faDirectory, True, True) do begin
DirList.Text := Text;
Free;
end;
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
AddStatus('Scanning for files...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'temp\*.*', faAnyFile, True, False) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'temp\*.*', faAnyFile, True, False) do begin
FileList.Text := Text;
Free;
end;
@ -642,9 +660,9 @@ begin
frmMain.ggeItem.MaxValue := DirList.Count;
for i := 0 to DirList.Count -1 do
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 6, Length(DirList[i]));
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(Application.ExeName)) + 6, Length(DirList[i]));
for i := 0 to FileList.Count -1 do
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 6, Length(FileList[i]));
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(Application.ExeName)) + 6, Length(FileList[i]));
CopyConfig := True;
AddStatus('Checking for previous AMX Mod X installation...', clBlack);
@ -664,7 +682,7 @@ begin
// liblist.gam
AddStatus('Editing liblist.gam...', clBlack);
eStr := TStringList.Create;
eStr.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
eStr.LoadFromFile(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam');
if eStr.IndexOf('gamedll "addons\metamod\dlls\metamod.dll"') = -1 then begin
if Cancel then begin
AddStatus('', clBlack, False);
@ -682,8 +700,8 @@ begin
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"')
else
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"');
FileSetAttr(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam', 0);
eStr.SaveToFile(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
FileSetAttr(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam', 0);
eStr.SaveToFile(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam');
end;
eStr.Free;
AddDone;
@ -728,7 +746,7 @@ begin
end;
if eGoBack then
goto CreateAgain;
goto CreateAgain;
AddDone;
@ -749,8 +767,8 @@ begin
if not IsForbidden(FileList[i], OS) then begin
AddStatus('Uploading file: ' + FileList[i], clBlack);
if FileExists(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]) then begin
frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]);
if FileExists(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i]) then begin
frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i]);
UploadAgain:
try
eGoBack := False;
@ -762,7 +780,7 @@ begin
AddStatus('Warning: CHMOD not supported.', clMaroon);
end;
UploadFile(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig);
UploadFile(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig);
try
if FileList[i] = 'liblist.gam' then
@ -805,8 +823,8 @@ begin
end;
AddStatus('', clBlack, False);
AddStatus('Cleaning up installation...', clBlack, False);
if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
if (DirectoryExists(ExtractFilePath(Application.ExeName) + 'temp')) then
DelTree(ExtractFilePath(Application.ExeName) + 'temp');
AddDone;
frmMain.ggeAll.Progress := frmMain.ggeAll.MaxValue;

View File

@ -5056,6 +5056,7 @@ object frmMain: TfrmMain
'2111-1307 USA'
' Everyone is permitted to copy and distribute verbatim copies'
' of this license document, but changing it is not allowed.'
''
#9#9#9' Preamble'
' The licenses for most software are designed to take away your'
@ -6101,14 +6102,14 @@ object frmMain: TfrmMain
end
object lblStep2: TLabel
Left = 44
Top = 254
Top = 230
Width = 244
Height = 13
Caption = '4. Connect to server and select the mod directory:'
end
object lblStep4: TLabel
Left = 44
Top = 214
Top = 188
Width = 117
Height = 13
Caption = '3. Select a game addon:'
@ -6122,7 +6123,7 @@ object frmMain: TfrmMain
end
object lblStep5: TLabel
Left = 44
Top = 358
Top = 334
Width = 64
Height = 13
Caption = '5. Click Next.'
@ -6312,7 +6313,7 @@ object frmMain: TfrmMain
end
object cmdConnect: TFlatButton
Left = 416
Top = 269
Top = 247
Width = 71
Height = 20
ColorFocused = 16245198
@ -6326,30 +6327,35 @@ object frmMain: TfrmMain
end
object pnlDirectory: TPanel
Left = 44
Top = 270
Top = 246
Width = 367
Height = 83
BevelOuter = bvLowered
TabOrder = 2
DesignSize = (
367
83)
object trvDirectories: TTreeView
Left = 1
Top = 1
Width = 365
Height = 81
Align = alClient
Anchors = [akLeft, akTop, akRight, akBottom]
BorderStyle = bsNone
Images = ilImages
Indent = 19
ReadOnly = True
TabOrder = 0
OnChange = trvDirectoriesChange
OnCollapsing = trvDirectoriesCollapsing
OnExpanding = trvDirectoriesExpanding
OnExpanded = trvDirectoriesExpanded
OnMouseDown = trvDirectoriesMouseDown
end
end
object cboGameAddon: TFlatComboBox
Left = 44
Top = 230
Top = 204
Width = 443
Height = 21
Style = csDropDownList
@ -6372,27 +6378,9 @@ object frmMain: TfrmMain
Left = 44
Top = 158
Width = 441
Height = 50
Height = 25
BevelOuter = bvLowered
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
Left = 5
Top = 5
@ -6417,6 +6405,7 @@ object frmMain: TfrmMain
Width = 82
Height = 14
Caption = 'Linux (64-bit)'
Enabled = False
TabOrder = 2
end
end
@ -6769,6 +6758,7 @@ object frmMain: TfrmMain
object IdFTP: TIdFTP
Intercept = IdLogFile
MaxLineAction = maException
ReadTimeout = 0
RecvBufferSize = 1024
SendBufferSize = 1024
OnWork = IdFTPWork

View File

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

View File

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

View File

@ -236,6 +236,8 @@ public cmdPsay(id, level, cid)
if (!priv)
return PLUGIN_HANDLED
get_user_name(priv, name, 31);
new length = strlen(name) + 1
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_ban", "cmdBan", 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_BAN, "<authid or ip> <minutes> [reason]")
register_concmd("amx_addban", "cmdAddBan", ADMIN_RCON, "<authid or ip> <minutes> [reason]")
register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<authid or ip>")
register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
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)
console_print(id, "%-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)
if (equal(status, "running"))
if (status[0]=='d' || status[0]=='r') // "debug" or "running"
running++
}
console_print(id, "%L", id, "PLUGINS_RUN", num, running)

View File

@ -21,6 +21,11 @@ new g_FwdKeyValue
new g_PlayerModels[33][64]
new g_PlayerModeled[33]
/* User Messages */
new g_msgDamage
new g_msgDeathMsg
new g_msgScoreInfo
new g_LastTrace = 0
VexdUM_Register()
@ -51,6 +56,11 @@ VexdUM_Register()
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_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()
@ -73,6 +83,9 @@ VexdUM_Natives()
register_native("get_maxentities", "__get_maxentities")
register_native("PointContents", "__PointContents")
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)
{
@ -102,6 +115,90 @@ GetClientKeyValue(id, const 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)
{
new ent = get_param(1)
@ -440,6 +537,57 @@ public __DispatchKeyValue(plid, num)
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 *********************

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -159,8 +159,9 @@ displayCmdMenu(id, pos)
if (start >= g_menuSelectNum[id])
start = pos = g_menuPosition[id] = 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, (g_menuSelectNum[id] / 8 + ((g_menuSelectNum[id] % 8) ? 1 : 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, (limit == 0) ? 1 : limit)
new end = start + 8
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)
set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
set_hudmessage(0, 255, 255, -1.0, 0.38, 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)])
if (!is_user_connecting(g_LastAnnounce))
@ -566,7 +566,7 @@ public showStatus(id)
public eNewRound()
{
if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0))
if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor))
{
g_firstBlood = 1
g_C4Timer = 0

View File

@ -45,8 +45,20 @@ new g_Modified
new g_blockPos[112]
new g_saveFile[64]
new g_Restricted[] = "* This item is restricted *"
new g_szWeapRestr[27] = "0000000000000000000000000"
new g_szWeapRestr[27] = "00000000000000000000000000"
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][] =
{
@ -295,6 +307,19 @@ new g_Aliases2[MAXMENUPOS][] =
new g_Autobuy[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)
{
new b, m = g_Keys[a][0] * 8
@ -605,7 +630,30 @@ public client_command(id)
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 */
{
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
@ -631,7 +679,9 @@ public blockcommand(id)
public cmdMenu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
displayMenu(id, g_Position[id] = 0)
{
displayMenu(id, g_Position[id] = 0)
}
return PLUGIN_HANDLED
}
@ -641,9 +691,18 @@ checkRest(id, menu, key)
new team = get_user_team(id)
if (team != 1 && team != 2)
{
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")
client_print(id, print_center, "%s", g_Restricted)
@ -799,6 +858,70 @@ public fn_autobuy(id)
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()
{
register_plugin("Restrict Weapons", AMXX_VERSION_STR, "AMXX Dev Team")
@ -811,12 +934,12 @@ public plugin_init()
register_clcmd("amx_restmenu", "cmdMenu", ADMIN_CFG, "- displays weapons restriction menu")
register_menucmd(register_menuid("#Buy", 1), 511, "menuBuy")
register_menucmd(register_menuid("Restrict Weapons"), 1023, "actionMenu")
register_menucmd(register_menuid("BuyPistol", 1), 511, "menuPistol")
register_menucmd(register_menuid("BuyShotgun", 1), 511, "menuShotgun")
register_menucmd(register_menuid("BuySub", 1), 511, "menuSub")
register_menucmd(register_menuid("BuyRifle", 1), 511, "menuRifle")
register_menucmd(register_menuid("BuyMachine", 1), 511, "menuMachine")
register_menucmd(register_menuid("BuyItem", 1), 511, "menuItem")
register_menucmd(RegisterMenuID("BuyPistol"), 511, "menuPistol")
register_menucmd(RegisterMenuID("BuyShotgun"), 511, "menuShotgun")
register_menucmd(RegisterMenuID("BuySub"), 511, "menuSub")
register_menucmd(RegisterMenuID("BuyRifle"), 511, "menuRifle")
register_menucmd(RegisterMenuID("BuyMachine"), 511, "menuMachine")
register_menucmd(RegisterMenuID("BuyItem"), 511, "menuItem")
register_menucmd(-28, 511, "menuBuy")
register_menucmd(-29, 511, "menuPistol")
register_menucmd(-30, 511, "menuShotgun")
@ -828,6 +951,8 @@ public plugin_init()
register_cvar("amx_restrweapons", "00000000000000000000000000")
register_cvar("amx_restrequipammo", "000000000")
register_event("ShowMenu", "HookEvent_ShowMenu", "b")
new configsDir[64];
get_configsdir(configsDir, 63);

View File

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

View File

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

View File

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

View File

@ -11,6 +11,14 @@
#endif
#define _amxmisc_included
#if !defined _amxmodx_included
#if defined AMXMOD_BCOMPAT
#include <amxmod>
#else
#include <amxmodx>
#endif
#endif
#if defined AMXMOD_BCOMPAT
#if defined _translator_included
#define SIMPLE_T(%1) _T(%1)
@ -21,48 +29,64 @@
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) {
new has_access = 0
if ( id==(is_dedicated_server()?0:1) ) {
has_access = 1
} else if ( level==ADMIN_ADMIN ) {
if ( is_user_admin(id) )
has_access = 1
} else if ( get_user_flags(id) & level ) {
has_access = 1
} else if (level == ADMIN_ALL) {
has_access = 1
}
stock cmd_access(id,level,cid,num)
{
new has_access = 0;
if ( id==(is_dedicated_server()?0:1) )
{
has_access = 1;
}
else if ( level==ADMIN_ADMIN )
{
if ( is_user_admin(id) )
{
has_access = 1;
}
}
else if ( get_user_flags(id) & level )
{
has_access = 1;
}
else if (level == ADMIN_ALL)
{
has_access = 1;
}
if ( has_access==0 ) {
if ( has_access==0 )
{
#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
console_print(id,"%L",id,"NO_ACC_COM")
console_print(id,"%L",id,"NO_ACC_COM");
#endif
return 0
}
if (read_argc() < num) {
new hcmd[32], hinfo[128], hflag
get_concmd(cid,hcmd,31,hflag,hinfo,127,level)
return 0;
}
if (read_argc() < num)
{
new hcmd[32], hinfo[128], hflag;
get_concmd(cid,hcmd,31,hflag,hinfo,127,level);
#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
console_print(id,"%L: %s %s",id,"USAGE",hcmd,hinfo)
console_print(id,"%L: %s %s",id,"USAGE",hcmd,hinfo);
#endif
return 0
}
return 1
return 0;
}
return 1;
}
stock access(id,level) {
if ( level==ADMIN_ADMIN )
return is_user_admin(id)
stock access(id,level)
{
if ( level==ADMIN_ADMIN )
{
return is_user_admin(id);
}
return (get_user_flags(id) & level)
return (get_user_flags(id) & level);
}
/* Flags:
@ -70,124 +94,150 @@ stock access(id,level) {
* 2 - allow yourself
* 4 - must be alive
* 8 - can't be bot */
stock cmd_target(id,const arg[],flags = 1) {
new player = find_player("bl",arg)
if (player) {
if ( player != find_player("blj",arg) ) {
stock cmd_target(id,const arg[],flags = 1)
{
new player = find_player("bl",arg);
if (player)
{
if ( player != find_player("blj",arg) )
{
#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
console_print(id,"%L",id,"MORE_CL_MATCHT")
console_print(id,"%L",id,"MORE_CL_MATCHT");
#endif
return 0
}
}
else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] )
player = find_player("k",str_to_num(arg[1]))
if (!player) {
return 0;
}
}
else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] )
{
player = find_player("k",str_to_num(arg[1]));
}
if (!player)
{
#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
console_print(id,"%L",id,"CL_NOT_FOUND")
console_print(id,"%L",id,"CL_NOT_FOUND");
#endif
return 0
}
if (flags & 1) {
if ((get_user_flags(player)&ADMIN_IMMUNITY) && ((flags&2)?(id!=player):true) ) {
new imname[32]
get_user_name(player,imname,31)
return 0;
}
if (flags & 1)
{
if ((get_user_flags(player)&ADMIN_IMMUNITY) && ((flags&2)?(id!=player):true) )
{
new imname[32];
get_user_name(player,imname,31);
#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
console_print(id,"%L",id,"CLIENT_IMM",imname)
console_print(id,"%L",id,"CLIENT_IMM",imname);
#endif
return 0
}
}
if (flags & 4) {
if (!is_user_alive(player)) {
new imname[32]
get_user_name(player,imname,31)
return 0;
}
}
if (flags & 4)
{
if (!is_user_alive(player))
{
new imname[32];
get_user_name(player,imname,31);
#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
console_print(id,"%L",id,"CANT_PERF_DEAD",imname)
console_print(id,"%L",id,"CANT_PERF_DEAD",imname);
#endif
return 0
}
}
if (flags & 8) {
if (is_user_bot(player)) {
new imname[32]
get_user_name(player,imname,31)
return 0;
}
}
if (flags & 8)
{
if (is_user_bot(player))
{
new imname[32];
get_user_name(player,imname,31);
#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
console_print(id,"%L",id,"CANT_PERF_BOT",imname)
console_print(id,"%L",id,"CANT_PERF_BOT",imname);
#endif
return 0
}
}
return player
return 0;
}
}
return player;
}
stock show_activity( id, const name[], {Float,_}: ... ) {
new buffer[128]
format_args( buffer , 127 , 2 )
switch(get_cvar_num("amx_show_activity"))
{
case 2:
stock show_activity( id, const name[], {Float,_}: ... )
{
new buffer[128];
format_args( buffer , 127 , 2 );
switch(get_cvar_num("amx_show_activity"))
{
case 2:
#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
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
case 1:
case 1:
#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
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
}
}
}
stock colored_menus() {
new mod_name[32]
get_modname(mod_name,31)
stock colored_menus()
{
new mod_name[32];
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() {
new mod_name[32]
get_modname(mod_name,31)
stock cstrike_running()
{
new mod_name[32];
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[]) {
new mod_name[32]
get_modname(mod_name,31)
stock is_running(const mod[])
{
new mod_name[32];
get_modname(mod_name,31);
return equal(mod_name,mod)
return equal(mod_name,mod);
}
stock get_basedir(name[],len)
return get_localinfo("amxx_basedir",name,len)
{
return get_localinfo("amxx_basedir",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)
return get_localinfo("amxx_datadir",name,len)
{
return get_localinfo("amxx_datadir",name,len);
}
stock register_menu(title[],keys,function[],outside=0)
register_menucmd(register_menuid(title,outside),keys,function)
stock register_menu(const title[],keys,const function[],outside=0)
{
register_menucmd(register_menuid(title,outside),keys,function);
}
/* Backwards Compatibility
* don't use it! */
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"):
* MENU_TEXT: Text that will be shown for this item in menu
@ -195,57 +245,68 @@ stock get_customdir(name[],len)
* MENU_ACCESS: Access required for menu
* 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[]) {
AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, false)
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);
}
/* 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[]) {
AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, true)
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);
}
// 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) {
new pluginid = is_plugin_loaded("Menus Front-End")
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");
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)
return // Menus Front-End doesn't exist, return.
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.
}
new filename[64], b[1]
get_plugin(pluginid, filename, 63, b, 0, b, 0, b, 0, b, 0)
new filename[64], b[1];
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 bool:failed = true
switch (status) {
case 1: failed = false
case 0: log_amx("Run time error! (AddMenuItem_call failed)")
case -2: log_amx("Function not found! (AddMenuItem_call failed)")
case -1: log_amx("Plugin not found! (AddMenuItem_call failed)")
new status = callfunc_begin(ADD_TO_CLIENT_MENU ? "AddClientMenu" : "AddMenu", filename);
new bool:failed = true;
switch (status)
{
case 1: failed = false;
case 0: log_amx("Run time error! (AddMenuItem_call failed)");
case -2: log_amx("Function not found! (AddMenuItem_call failed)");
case -1: log_amx("Plugin not found! (AddMenuItem_call failed)");
}
if (failed)
return
{
return;
}
// Item text
callfunc_push_str(MENU_TEXT)
callfunc_push_str(MENU_TEXT);
// Cmd
callfunc_push_str(MENU_CMD)
callfunc_push_str(MENU_CMD);
// Access
callfunc_push_int(MENU_ACCESS)
callfunc_push_int(MENU_ACCESS);
// Menu exists in this plugin
callfunc_push_str(MENU_PLUGIN)
callfunc_push_str(MENU_PLUGIN);
callfunc_end()
callfunc_end();
}
stock constraint_offset(low, high, seed, offset)
{
new numElements = high - low + 1;
offset += seed - low;
new numElements = high - low + 1;
offset += seed - low;
if (offset >= 0)
return low + (offset % numElements);
else
return high - (abs(offset) % numElements) + 1;
return 0; // Makes the compiler happy -_-
if (offset >= 0)
{
return low + (offset % numElements);
}
else
{
return high - (abs(offset) % numElements) + 1;
}
return 0; // Makes the compiler happy -_-
}

View File

@ -22,7 +22,10 @@
#include <VexdUM_const>
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 entity_use(eUsed, eOther);
native get_num_ents();
native DispatchKeyValue(ent, szKey[], szValue[]);

View File

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

View File

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

View File

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

View File

@ -44,7 +44,7 @@ forward bomb_defused(defuser);
/* Custom Weapon Support */
/* function will return index of new weapon */
native custom_weapon_add( wpnname[],melee = 0,logname[]="" );
native custom_weapon_add( const wpnname[],melee = 0,const logname[]="" );
/* 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 );
/* Function will pass info about custom weapon shot to stats module */

View File

@ -119,20 +119,27 @@ 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.
*/
stock bool:sqlite_table_exists(Sql:sql, table[]) {
new bool:exists
new query[128]
format(query, 127, "SELECT name FROM sqlite_master WHERE type='table' AND name='%s' LIMIT 1;", table)
stock bool:sqlite_table_exists(Sql:sql, table[])
{
new bool:exists;
new query[128];
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))
exists = true
{
exists = true;
}
else
exists = false
{
exists = false;
}
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);
/* Sets new team name for this player */
native dod_set_pl_teamname(index,szName[]);
native dod_set_pl_teamname(index,const szName[]);
/* Gets player team name */
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 );
/* use this function to change control point's data */
native objective_set_data( index, CP_VALUE:key , iValue=-1, szValue[]="" );
native objective_set_data( index, CP_VALUE:key , iValue=-1, const szValue[]="" );
enum CA_VALUE {
CA_edict = 1,
@ -140,4 +140,4 @@ enum CA_VALUE {
native area_get_data( index, CA_VALUE:key, szValue[]="", len=0 );
/* use this function to change control point's area data */
native area_set_data( index, CA_VALUE:key , iValue=-1, szValue[]="" );
native area_set_data( index, CA_VALUE:key , iValue=-1, const szValue[]="" );

View File

@ -54,7 +54,7 @@ forward dod_client_changeclass(id, class, oldclass);
forward dod_client_spawn(id);
/* Sets the model for a player */
native dod_set_model(id, model[]);
native dod_set_model(id, const model[]);
/* Sets the model for a player */
native dod_set_body_number(id, bodynumber);
@ -64,7 +64,7 @@ native dod_clear_model(id);
/* Custom Weapon Support */
/* function will return index of new weapon */
native custom_weapon_add( wpnname[], melee = 0, logname[]="" );
native custom_weapon_add( const wpnname[], melee = 0, const logname[]="" );
/* 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 );
@ -93,10 +93,10 @@ native xmod_is_custom_wpn(wpnindex);
/************* Shared Natives End ********************************/
/* weapon logname to weapon name convertion */
native dod_wpnlog_to_name(logname[],name[],len);
native dod_wpnlog_to_name(const logname[],name[],len);
/* weapon logname to weapon index convertion */
native dod_wpnlog_to_id(logname[]);
native dod_wpnlog_to_id(const logname[]);
native dod_get_map_info( info );

View File

@ -25,13 +25,13 @@
native traceresult(type,{Float,Sql,Result,_}:...);
/* Registers a client impulse to a function. Function is passed the ID of the user. */
native register_impulse(impulse, function[]);
native register_impulse(impulse, const function[]);
/* Registers a touch action to a function by classnames. Use * to specify any classname. */
native register_touch(Touched[], Toucher[], function[]);
native register_touch(const Touched[], const Toucher[], const function[]);
/* Registers a think action to a function by classname. */
native register_think(Classname[], function[]);
native register_think(const Classname[], const function[]);
/* 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)
@ -39,14 +39,14 @@ native register_think(Classname[], function[]);
*/
/* Precaches an event. */
native precache_event(type, Name[], {Float,Sql,Result,_}:...);
native precache_event(type, const Name[], {Float,Sql,Result,_}:...);
/* set/get a user's speak flags */
native set_speak(iIndex, iSpeakFlags)
native get_speak(iIndex)
native set_speak(iIndex, iSpeakFlags);
native get_speak(iIndex);
/* 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. */
native get_info_keybuffer(id, buffer[], length);
@ -62,7 +62,7 @@ native get_global_vector(variable, Float:vector[3]);
native get_global_edict(variable);
/* Set entity bounds. */
native entity_set_size(index, Float:mins[3], Float:maxs[3]);
native entity_set_size(index, const Float:mins[3], const Float:maxs[3]);
/* Get decal index */
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 entity_set_float(iIndex, iKey, Float:iVal);
native entity_get_vector(iIndex, iKey, Float:vRetVector[3]);
native entity_set_vector(iIndex, iKey, Float:vNewVector[3]);
native entity_set_vector(iIndex, iKey, const Float:vNewVector[3]);
native entity_get_edict(iIndex, iKey);
native entity_set_edict(iIndex, iKey, iNewIndex);
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);
/* Creates an entity, will return the index of the created entity. ClassName must be valid. */
native create_entity(szClassname[]);
native create_entity(const szClassname[]);
/* Finds an entity in the world, will return 0 if nothing is found */
native find_ent_by_class(iIndex, szClass[]);
native find_ent_by_class(iIndex, const szClass[]);
//optionally you can set a jghg2 type
// 1: target, 2:targetname, 0:classname (default)
native find_ent_by_owner(iIndex, szClass[], iOwner, iJghgType=0);
native find_ent_by_target(iIndex, szClass[]);
native find_ent_by_tname(iIndex, szClass[]);
native find_ent_by_model(iIndex, szClass[], szModel[]);
native find_ent_in_sphere(start_from_ent, Float:origin[3], Float:radius);
native find_ent_by_owner(iIndex, const szClass[], iOwner, iJghgType=0);
native find_ent_by_target(iIndex, const szClass[]);
native find_ent_by_tname(iIndex, const szClass[]);
native find_ent_by_model(iIndex, const szClass[], const szModel[]);
native find_ent_in_sphere(start_from_ent, const Float:origin[3], Float:radius);
//this will CBaseEntity::Think() or something from the entity
native call_think(entity)
native call_think(entity);
/* Is entity valid? */
native is_valid_ent(iIndex);
/* Proper origin setting, keeps updated with Half-Life engine. */
native entity_set_origin(iIndex, Float:fNewOrigin[3]);
native entity_set_origin(iIndex, const Float:fNewOrigin[3]);
/* Sets the model of an Entity. */
native entity_set_model(iIndex, const szModel[]);
@ -125,7 +125,7 @@ native fake_touch(entTouched, entToucher);
native DispatchKeyValue(...);
#endif
native get_keyvalue(entity, szKey[], value[], maxLength);
native get_keyvalue(entity, const szKey[], value[], maxLength);
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. */
#if !defined AMXMOD_BCOMPAT
native radius_damage(Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier);
native radius_damage(const Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier);
#endif
/* Will return the contents of a point (inside map? in sky? outside map? etc.). */
native point_contents(Float:fCheckAt[3]);
native point_contents(const Float:fCheckAt[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. */
#if !defined AMXMOD_BCOMPAT
native trace_line(iIgnoreEnt, Float:fStart[3], Float:fEnd[3], Float:vReturn[3]);
native trace_line(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]);
#endif
/* Traces a hull. */
native trace_hull(Float:origin[3],hull,ignoredent=0,ignoremonsters=0);
native trace_hull(const Float:origin[3],hull,ignoredent=0,ignoremonsters=0);
/* Traces a line, and returns the normal to the plane hit in vReturn.
* Returns 0 if theres no normal. */
native trace_normal(iIgnoreEnt, Float:fStart[3], Float:fEnd[3], Float:vReturn[3]);
native trace_normal(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]);
/* Gets the ID of a grenade. */
native get_grenade_id(id, model[], len, grenadeid = 0);
@ -169,7 +169,7 @@ native attach_view(iIndex, iTargetIndex);
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. */
native playback_event(flags,invoker,eventindex,Float:delay,Float:origin[3],Float:angles[3],Float:fparam1,Float:fparam2,iparam1,iparam2,bparam1,bparam2);
native playback_event(flags,invoker,eventindex,Float:delay,const Float:origin[3],const Float:angles[3],Float:fparam1,Float:fparam2,iparam1,iparam2,bparam1,bparam2);
/* Gets parameters sent from CmdStart.
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
* in aroundent.
*/
native find_sphere_class(aroundent, _lookforclassname[], Float:radius, entlist[], maxents, Float:origin[3] = {0.0, 0.0, 0.0});
native find_sphere_class(aroundent, const _lookforclassname[], Float:radius, entlist[], maxents, const Float:origin[3] = {0.0, 0.0, 0.0});
/* 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.
*/
native is_in_viewcone(entity, Float:origin[3], use3d = 0);
native is_in_viewcone(entity, const Float:origin[3], use3d = 0);
//SDK function - checks if an entity is visible to an entity
native is_visible(entity, target);
//Added at twistedeuphoria's request, see funcwiki for details
native trace_forward(Float:start[3], Float:angle[3], Float:give, ignoreEnt, &Float:hitX, &Float:hitY, &Float:shortestDistance, &Float:shortestDistLow, &Float:shortestDistHigh);
native trace_forward(const Float:start[3], const Float:angle[3], Float:give, ignoreEnt, &Float:hitX, &Float:hitY, &Float:shortestDistance, &Float:shortestDistLow, &Float:shortestDistHigh);
#include <engine_stocks>

View File

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

View File

@ -20,10 +20,11 @@
/* The actual return value of the function, use these instead of PLUGIN_HANDLED etc when
* returning from registered forwards.
*/
#define FMRES_HANDLED 2
#define FMRES_SUPERCEDE 4
#define FMRES_IGNORED 1
#define FMRES_OVERRIDE 3
#define FMRES_IGNORED 1 // Calls target function, returns normal value
#define FMRES_HANDLED 2 // Tells metamod you did something, still calls target function and returns normal value
#define FMRES_OVERRIDE 3 // Supposed to still call the target function but return your value instead
// however this does not work properly with metamod; use supercede instead.
#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
#define FM_NULLENT -1

View File

@ -15,258 +15,259 @@
#define _fakemeta_stocks_included
// EngFuncs
stock EF_PrecacheModel(string[])
return engfunc(EngFunc_PrecacheModel, string)
stock EF_PrecacheSound(string[])
return engfunc(EngFunc_PrecacheSound, string)
stock EF_PrecacheModel(const string[])
return engfunc(EngFunc_PrecacheModel, string);
stock EF_PrecacheSound(const string[])
return engfunc(EngFunc_PrecacheSound, 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[])
return engfunc(EngFunc_ModelIndex, STRING)
return engfunc(EngFunc_ModelIndex, STRING);
stock EF_ModelFrames(modelIndex)
return engfunc(EngFunc_ModelFrames, modelIndex)
return engfunc(EngFunc_ModelFrames, modelIndex);
stock EF_SetSize(const STRING[])
return engfunc(EngFunc_SetSize, STRING)
return engfunc(EngFunc_SetSize, STRING);
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)
return engfunc(EngFunc_VecToYaw, VECTOR, returnValue)
return engfunc(EngFunc_VecToYaw, VECTOR, returnValue);
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)
return engfunc(EngFunc_MoveToOrigin, ENTITY, GOAL, DISTANCE, MOVETYPE)
return engfunc(EngFunc_MoveToOrigin, ENTITY, GOAL, DISTANCE, MOVETYPE);
stock EF_ChangeYaw(const ENTITY)
return engfunc(EngFunc_ChangeYaw, ENTITY)
return engfunc(EngFunc_ChangeYaw, 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[])
return engfunc(EngFunc_FindEntityByString, STARTSEARCHAFTER, FIELD, VALUE)
return engfunc(EngFunc_FindEntityByString, STARTSEARCHAFTER, FIELD, VALUE);
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)
return engfunc(EngFunc_FindEntityInSphere, STARTSEARCHAFTER, ORIGIN, radius)
return engfunc(EngFunc_FindEntityInSphere, STARTSEARCHAFTER, ORIGIN, radius);
stock EF_FindClientInPVS(const CLIENT)
return engfunc(EngFunc_FindClientInPVS, CLIENT)
return engfunc(EngFunc_FindClientInPVS, CLIENT);
stock EF_EntitiesInPVS(const CLIENT)
return engfunc(EngFunc_EntitiesInPVS, CLIENT)
return engfunc(EngFunc_EntitiesInPVS, CLIENT);
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])
return engfunc(EngFunc_AngleVectors, VECTOR, forward_, right, up)
return engfunc(EngFunc_AngleVectors, VECTOR, forward_, right, up);
stock EF_CreateEntity()
return engfunc(EngFunc_CreateEntity)
return engfunc(EngFunc_CreateEntity);
stock EF_RemoveEntity(const ENTITY)
return engfunc(EngFunc_RemoveEntity, ENTITY)
return engfunc(EngFunc_RemoveEntity, ENTITY);
stock EF_CreateNamedEntity(const CLASSNAME)
return engfunc(EngFunc_CreateNamedEntity, CLASSNAME)
return engfunc(EngFunc_CreateNamedEntity, CLASSNAME);
stock EF_MakeStatic(const ENTITY)
return engfunc(EngFunc_MakeStatic, ENTITY)
return engfunc(EngFunc_MakeStatic, ENTITY);
stock EF_EntIsOnFloor(const ENTITY)
return engfunc(EngFunc_EntIsOnFloor, ENTITY)
return engfunc(EngFunc_EntIsOnFloor, 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)
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])
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)
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)
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)
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)
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)
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)
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)
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])
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)
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])
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)
return engfunc(EngFunc_ParticleEffect, ORIGIN, DIRECTION, color, count)
return engfunc(EngFunc_ParticleEffect, ORIGIN, DIRECTION, color, count);
stock EF_LightStyle(style, val[])
return engfunc(EngFunc_LightStyle, style, val)
return engfunc(EngFunc_LightStyle, style, val);
stock EF_DecalIndex(const NAME[])
return engfunc(EngFunc_DecalIndex, NAME)
return engfunc(EngFunc_DecalIndex, NAME);
stock EF_PointContents(const Float:VECTOR[3])
return engfunc(EngFunc_PointContents, VECTOR)
return engfunc(EngFunc_PointContents, VECTOR);
stock EF_FreeEntPrivateData(const ENTITY)
return engfunc(EngFunc_FreeEntPrivateData, ENTITY)
return engfunc(EngFunc_FreeEntPrivateData, ENTITY);
stock EF_SzFromIndex(iString)
return engfunc(EngFunc_SzFromIndex, iString)
return engfunc(EngFunc_SzFromIndex, iString);
stock EF_AllocString(const STRING[])
return engfunc(EngFunc_AllocString, STRING)
return engfunc(EngFunc_AllocString, STRING);
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)
return engfunc(EngFunc_AnimationAutomove, ENTITY, flTime)
return engfunc(EngFunc_AnimationAutomove, ENTITY, flTime);
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])
return engfunc(EngFunc_GetAttachment, ENTITY, iAttachment, origin, angles)
return engfunc(EngFunc_GetAttachment, ENTITY, iAttachment, origin, angles);
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)
return engfunc(EngFunc_Time, returnValue)
return engfunc(EngFunc_Time, returnValue);
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)
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)
return engfunc(EngFunc_SetClientMaxspeed, ENTITY, newMaxspeed)
return engfunc(EngFunc_SetClientMaxspeed, ENTITY, newMaxspeed);
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)
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()
return engfunc(EngFunc_NumberOfEntities)
return engfunc(EngFunc_NumberOfEntities);
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[])
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)
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[])
return engfunc(EngFunc_GetPhysicsKeyValue, CLIENT, KEY)
return engfunc(EngFunc_GetPhysicsKeyValue, CLIENT, KEY);
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)
return engfunc(EngFunc_GetPhysicsInfoString, CLIENT, returnString, maxLength)
return engfunc(EngFunc_GetPhysicsInfoString, CLIENT, returnString, maxLength);
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)
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)
return engfunc(EngFunc_CheckVisibility, ENTITY, set)
return engfunc(EngFunc_CheckVisibility, ENTITY, set);
stock EF_GetCurrentPlayer()
return engfunc(EngFunc_GetCurrentPlayer)
return engfunc(EngFunc_GetCurrentPlayer);
stock EF_CanSkipPlayer(const PLAYER)
return engfunc(EngFunc_CanSkipPlayer, PLAYER)
return engfunc(EngFunc_CanSkipPlayer, PLAYER);
stock EF_SetGroupMask(mask, op)
return engfunc(EngFunc_SetGroupMask, mask, op)
return engfunc(EngFunc_SetGroupMask, mask, op);
stock EF_GetClientListening(receiver, sender)
return engfunc(EngFunc_GetClientListening, receiver, sender);
stock EF_SetClientListening(receiver, sender, bool:listen)
return engfunc(EngFunc_SetClientListening, receiver, sender, listen);
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)
return engfunc(EngFunc_WriteCoord, value)
return engfunc(EngFunc_WriteCoord, 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)
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[])
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[])
return engfunc(EngFunc_SetClientKeyValue, ID, INFOBUFFER, KEY, VALUE)
return engfunc(EngFunc_SetClientKeyValue, ID, INFOBUFFER, KEY, VALUE);
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
// of EF_InfoKeyValue, EF_SetKeyValue, and EF_SetClientKeyValue
stock EF_GetInfoKeyBuffer(const ENTITY)
return engfunc(EngFunc_GetInfoKeyBuffer, ENTITY)
return engfunc(EngFunc_GetInfoKeyBuffer, ENTITY);
stock EF_ClientPrintf(const ENTITY, const printType, const MESSAGE[])
return engfunc(EngFunc_ClientPrintf, ENTITY, printType, MESSAGE)
return engfunc(EngFunc_ClientPrintf, ENTITY, printType, MESSAGE);
// DLLFuncs
stock DF_GameInit()
return dllfunc(DLLFunc_GameInit)
return dllfunc(DLLFunc_GameInit);
stock DF_Spawn(const ENTITY)
return dllfunc(DLLFunc_Spawn, ENTITY)
return dllfunc(DLLFunc_Spawn, 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)
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)
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)
return dllfunc(DLLFunc_Blocked, ENT_Blocked, ENT_Other)
return dllfunc(DLLFunc_Blocked, ENT_Blocked, ENT_Other);
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])
return dllfunc(DLLFunc_ClientConnect, ENTITY, NAME, ADDRESS, RejectReason)
return dllfunc(DLLFunc_ClientConnect, ENTITY, NAME, ADDRESS, RejectReason);
stock DF_ClientDisconnect(const ENTITY)
return dllfunc(DLLFunc_ClientDisconnect, ENTITY)
return dllfunc(DLLFunc_ClientDisconnect, ENTITY);
stock DF_ClientKill(const ENTITY)
return dllfunc(DLLFunc_ClientKill, ENTITY)
return dllfunc(DLLFunc_ClientKill, ENTITY);
stock DF_ClientPutInServer(const ENTITY)
return dllfunc(DLLFunc_ClientPutInServer, ENTITY)
return dllfunc(DLLFunc_ClientPutInServer, ENTITY);
stock DF_ClientCommand(const ENTITY)
return dllfunc(DLLFunc_ClientCommand, ENTITY)
return dllfunc(DLLFunc_ClientCommand, ENTITY);
stock DF_ServerDeactivate()
return dllfunc(DLLFunc_ServerDeactivate)
return dllfunc(DLLFunc_ServerDeactivate);
stock DF_PlayerPreThink(const ENTITY)
return dllfunc(DLLFunc_PlayerPreThink, ENTITY)
return dllfunc(DLLFunc_PlayerPreThink, ENTITY);
stock DF_PlayerPostThink(const ENTITY)
return dllfunc(DLLFunc_PlayerPostThink, ENTITY)
return dllfunc(DLLFunc_PlayerPostThink, ENTITY);
stock DF_StartFrame()
return dllfunc(DLLFunc_StartFrame)
return dllfunc(DLLFunc_StartFrame);
stock DF_ParmsNewLevel()
return dllfunc(DLLFunc_ParmsNewLevel)
return dllfunc(DLLFunc_ParmsNewLevel);
stock DF_ParmsChangeLevel()
return dllfunc(DLLFunc_ParmsChangeLevel)
return dllfunc(DLLFunc_ParmsChangeLevel);
stock DF_GetGameDescription()
return dllfunc(DLLFunc_GetGameDescription)
return dllfunc(DLLFunc_GetGameDescription);
stock DF_SpectatorConnect(const ENTITY)
return dllfunc(DLLFunc_SpectatorConnect, ENTITY)
return dllfunc(DLLFunc_SpectatorConnect, ENTITY);
stock DF_SpectatorDisconnect(const ENTITY)
return dllfunc(DLLFunc_SpectatorDisconnect, ENTITY)
return dllfunc(DLLFunc_SpectatorDisconnect, ENTITY);
stock DF_SpectatorThink(const ENTITY)
return dllfunc(DLLFunc_SpectatorThink, ENTITY)
return dllfunc(DLLFunc_SpectatorThink, ENTITY);
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[])
return dllfunc(DLLFunc_PM_FindTextureType, name)
return dllfunc(DLLFunc_PM_FindTextureType, name);
stock DF_RegisterEncoders()
return dllfunc(DLLFunc_RegisterEncoders)
return dllfunc(DLLFunc_RegisterEncoders);
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()
return dllfunc(DLLFunc_CreateInstBaselines)
return dllfunc(DLLFunc_CreateInstBaselines);
stock DF_pfnAllowLagCompensation()
return dllfunc(DLLFunc_pfnAllowLagCompensation)
return dllfunc(DLLFunc_pfnAllowLagCompensation);
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)
return dllfunc(DLLFunc_ClientUserInfoChanged, IDPLAYER)
return dllfunc(DLLFunc_ClientUserInfoChanged, IDPLAYER);
stock DF_UpdateClientData(const ENTITY, sendweapons, const cd = 0)
return dllfunc(DLLFunc_UpdateClientData, ENTITY, sendweapons, cd)
stock DF_AddToFullPack(const STATE = 0, 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)
return dllfunc(DLLFunc_CmdStart, PLAYER, CMD, randomSeed)
stock DF_UpdateClientData(const ENTITY, sendweapons, const cd/* = 0*/)
return dllfunc(DLLFunc_UpdateClientData, ENTITY, sendweapons, cd);
stock DF_AddToFullPack(const STATE/* = 0*/, 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)
return dllfunc(DLLFunc_CmdStart, PLAYER, CMD, randomSeed);
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])
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.
* The output angle may be in radians, degrees, or grades. */
native Float:floatatan(Float:angle, radix);
native Float:floatacos(Float:angle, radix);
native Float:floatasin(Float:angle, radix);
native Float:floatatan2(Float:x, Float:y, radix);
native Float:floatatan(Float:angle, {anglemode,_}:radix);
native Float:floatacos(Float:angle, {anglemode,_}:radix);
native Float:floatasin(Float:angle, {anglemode,_}:radix);
native Float:floatatan2(Float:x, Float:y, {anglemode,_}:radix);
#pragma rational Float
@ -102,7 +102,7 @@ stock Float:operator--(Float:oper)
return oper-1.0;
stock Float:operator-(Float:oper)
return oper^Float:((-1)^((-1)/2)); /* IEEE values are sign/magnitude */
return oper^Float:cellmin; /* IEEE values are sign/magnitude */
stock Float:operator*(Float:oper1, oper2)
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);
/* Move player to origin. */
native set_user_origin(index, origin[3]);
native set_user_origin(index, const origin[3]);
/* Sets player rendering mode. */
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
*/
#if defined _geoip_included
#if defined geoip_included
#endinput
#endif
#define _geoip_included
@ -20,10 +20,10 @@
//IP address can contain ports, the ports will be stripped out
//get a two character country code (eg US, CA etc)
native geoip_code2(ip[], ccode[3]);
native geoip_code2(const ip[], ccode[3]);
//get a three character country code (eg USA, cAN etc)
native geoip_code3(ip[], result[4]);
native geoip_code3(const ip[], result[4]);
//get a full country name. max name is 45 chars
native geoip_country(ip[], result[], len=45);
native geoip_country(const ip[], result[], len=45);

View File

@ -323,6 +323,8 @@ enum
// write_coord(position.z)
// write_short(model index)
// write_byte(scale / 10)
// write_byte(size)
// write_byte(brightness)
#define TE_BEAMRING 24 // Connect a beam ring to two entities
// write_byte(TE_BEAMRING)
@ -362,7 +364,6 @@ enum
// write_byte(red)
// write_byte(green)
// write_byte(blue)
// write_byte(brightness)
// write_byte(life in 10's)
// write_byte(decay rate in 10's)
@ -648,7 +649,7 @@ enum
#define TE_PLAYERSPRITES 121 // Sprites emit from a player's bounding box (ONLY use for players!)
// write_byte(TE_PLAYERSPRITES)
// write_byte(playernum)
// write_short(playernum)
// write_short(sprite modelindex)
// write_byte(count)
// 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. */
stock make_deathmsg(killer, victim, headshot, weapon[])
stock make_deathmsg(killer, victim, headshot, const weapon[])
{
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0);
write_byte(killer);

View File

@ -16,7 +16,7 @@
* You may generate menu, smoke, shockwaves, thunderlights,
* intermission and many many others messages.
* See HL SDK for more examples. */
native message_begin(dest, msg_type, origin[3] = {0,0,0}, player = 0);
native message_begin(dest, msg_type, const origin[3] = {0,0,0}, player = 0);
native message_end();
native write_byte(x);
native write_char(x);
@ -25,7 +25,7 @@ native write_long(x);
native write_entity(x);
native write_angle(x);
native write_coord(x);
native write_string(x[]);
native write_string(const x[]);
/* These are the same as above, except that the messages sent
* are also sent to all other plugins and Metamod plugins.
@ -35,7 +35,7 @@ native write_string(x[]);
* could cause infinite recursion or something just as bad.
* NOTE! These natives are experimental.
*/
native emessage_begin(dest, msg_type, origin[3] = {0,0,0}, player = 0);
native emessage_begin(dest, msg_type, const origin[3] = {0,0,0}, player = 0);
native emessage_end();
native ewrite_byte(x);
native ewrite_char(x);
@ -44,7 +44,7 @@ native ewrite_long(x);
native ewrite_entity(x);
native ewrite_angle(x);
native ewrite_coord(x);
native ewrite_string(x[]);
native ewrite_string(const x[]);
/* Sets/Gets what engine messages are blocked. */
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
* 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. */
native register_message(iMsgId, szFunction[]);
native register_message(iMsgId, const szFunction[]);
/* 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.
@ -81,7 +81,7 @@ native get_msg_arg_string(argn, szReturn[], iLength);
/* sets the value of argn. */
native set_msg_arg_int(argn, argtype, iValue);
native set_msg_arg_float(argn, argtype, Float:fValue);
native set_msg_arg_string(argn, szString[]);
native set_msg_arg_string(argn, const szString[]);
/* Gets the origin of a message */
native get_msg_origin(Float:_Origin[3]);
native get_msg_origin(const Float:_Origin[3]);

View File

@ -31,12 +31,12 @@ forward client_built(idPlayer,idStructure,type,impulse);
/* Returns if the map's combat or not. */
native ns_is_combat();
/* 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,szMsg[180],ah=0)
/* 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. */
native ns_popup(target,const szMsg[180],ah=0);
/* Sets a player model. Omit the second parameter to return to default.
Note: This does *not* change back on death, team switch, gestations, etc. */
native ns_set_player_model(id,szModel[]="");
native ns_set_player_model(id,const szModel[]="");
/* Sets a player's skin. Omit second parameter to return to default.
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:
The index of the #th matching structure is returned.
*/
native ns_get_build(classname[],builtOnly=1,Number=0);
native ns_get_build(const classname[],builtOnly=1,Number=0);
/* 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. */

View File

@ -15,249 +15,251 @@
#include <ns> // ns specifics
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 */
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)
return get_pdata_int(index, offset, linuxdiff)
return get_pdata_int(index, offset, linuxdiff);
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)
{
return get_pdata_float(index, offset, linuxdiff)
return get_pdata_float(index, offset, linuxdiff);
}
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[])
return engfunc(EngFunc_AllocString,value)
return engfunc(EngFunc_AllocString,value);
stock string(value, ret[])
{
new szString[128] // gah...
engfunc(EngFunc_SzFromIndex,value,szString,127)
copy(ret,szString,127)
new szString[128];
engfunc(EngFunc_SzFromIndex,value,szString,127);
copy(ret,127,szString);
}
stock gpgobals_time()
return halflife_time()
return floatround(halflife_time());
stock Float:get_range(ida, idb)
return entity_range(ida, idb)
return entity_range(ida, idb);
stock supercede()
return 0
return 0;
stock register_clientkill()
return 0
return 0;
stock register_changelvl()
return 0
return 0;
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[])
return register_message(get_user_msgid(msgName), cmd)
return register_message(get_user_msgid(msgName), cmd);
stock register_playback(event, cmd[])
return 0
return 0;
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)
return ns_has_weapon(index, weapon, setweapon)
return ns_has_weapon(index, weapon, setweapon);
stock gpglobals_v(type, Float:ret[3])
{
new v_type=0
new v_type=0;
switch (type)
{
case 1:
v_type = GL_v_forward
v_type = GL_v_forward;
case 2:
v_type = GL_v_right
v_type = GL_v_right;
case 3:
v_type = GL_v_up
v_type = GL_v_up;
}
if (!v_type)
return 0
return get_global_vector(v_type, ret)
return 0;
return get_global_vector(v_type, ret);
}
stock pev_i(_index,_field)
return pev(_index,_field)
return pev(_index,_field);
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)
{
new Float:f
pev(_index,_field,f)
return f
new Float:f;
pev(_index,_field,f);
return f;
}
stock set_pev_f(_index,_field,Float:_val)
return set_pev(_index,_field,_val)
return set_pev(_index,_field,_val);
stock msg_args()
return get_msg_args()
return get_msg_args();
stock Float:msg_loc(vec)
{
new Float:Ret[3]
get_msg_origin(Ret)
new Float:Ret[3];
get_msg_origin(Ret);
if (vec < 0 || vec > 3)
return float(0)
return float(0);
else
return Ret[vec]
return Ret[vec];
return 0.0; // make compiler happy!
}
stock msg_dest()
return 0
return 0;
stock msg_type()
return 0
return 0;
stock msg_name()
return 0
return 0;
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)
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)
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)
return get_msg_arg_type(value)
return get_msg_argtype(value);
stock msg_strdata(value)
return 0
return 0;
stock msg_data(value, ...)
{
return (0*value)
return (0*value);
}
stock get_filename(szFile[], len=-1)
{
new 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
new 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;
}
stock get_speedchange(id)
return ns_get_speedchange(id)
return ns_get_speedchange(id);
stock set_speedchange(id, speed)
return ns_set_speedchange(id,speed)
return ns_set_speedchange(id,speed);
stock get_maxspeed(id)
return ns_get_maxspeed(id)
return ns_get_maxspeed(id);
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)
return ns_set_player_skin(id, skin)
return ns_set_player_skin(id, skin);
stock set_player_body(id, body=-1)
return ns_set_player_body(id, body)
return ns_set_player_body(id, body);
stock ns2amx_version()
return 0
return 0;
stock set_kvhandled()
return 0
return 0;
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)
return ns_set_weap_reserve(id, Weapon, Value)
return ns_set_weap_reserve(id, Weapon, Value);
stock ns2amx_giveitem(id,svClassname[])
return ns_give_item(id, svClassname)
return ns_give_item(id, svClassname);
stock ns2amx_moveto(idMoved,idDest)
{
new Float:origin[3]
entity_get_vector(idDest, EV_VEC_origin,origin)
entity_set_origin(idMoved, origin)
return 1
new Float:origin[3];
entity_get_vector(idDest, EV_VEC_origin,origin);
entity_set_origin(idMoved, origin);
return 1;
}
/* Returns whether or not the player has the MASK_DIGESTING flag set. */
stock ns2amx_isdigesting(id)
return ns_get_mask(id,MASK_DIGESTING)
return ns_get_mask(id,MASK_DIGESTING);
/* Returns total # of active hives. */
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. */
stock ns2amx_inrange(ida,idb,range)
{
if (entity_range(ida,idb) <= range)
return 1
return 0
return 1;
return 0;
}
stock ns2amx_nspopup(id,svMessage[190]) {
new szMessage[180]
copy(szMessage,179,svMessage)
return ns_popup(id, szMessage)
new szMessage[180];
copy(szMessage,179,svMessage);
return ns_popup(id, szMessage);
}
stock ns2amx_setres(id,value)
return ns_set_res(id, float(value))
return ns_set_res(id, float(value));
stock ns2amx_getenergy(id)
return floatround(ns_get_energy(id))
return floatround(ns_get_energy(id));
stock ns2amx_setenergy(id,energy)
return ns_set_energy(id, float(energy))
return ns_set_energy(id, float(energy));
stock ns2amx_getjpfuel(id)
return floatround(ns_get_jpfuel(id))
return floatround(ns_get_jpfuel(id));
stock ns2amx_setjpfuel(id,fuel)
return ns_set_jpfuel(id, float(fuel))
return ns_set_jpfuel(id, float(fuel));
stock get_mask(id,mask)
return ns_get_mask(id, mask)
return ns_get_mask(id, mask);
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)
{
if (pev(id,pev_iuser4) & mask)
return 1
return 0
return 1;
return 0;
}
stock get_res(id)
return floatround(ns_get_res(id))
return floatround(ns_get_res(id));
stock get_class(id)
return ns_get_class(id)
return ns_get_class(id);
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
* 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) */
native nvault_set(vault, const key[], const value[]);

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