Compare commits
1 Commits
amxmodx-0.
...
amxmodx-0.
Author | SHA1 | Date | |
---|---|---|---|
e3fce14045 |
@ -174,7 +174,6 @@ void CSPForward::Set(int func, AMX *amx, int numParams, const ForwardParam *para
|
||||
m_NumParams = numParams;
|
||||
memcpy((void *)m_ParamTypes, paramTypes, numParams * sizeof(ForwardParam));
|
||||
m_HasFunc = true;
|
||||
isFree = false;
|
||||
}
|
||||
|
||||
void CSPForward::Set(const char *funcName, AMX *amx, int numParams, const ForwardParam *paramTypes)
|
||||
@ -183,13 +182,10 @@ void CSPForward::Set(const char *funcName, AMX *amx, int numParams, const Forwar
|
||||
m_NumParams = numParams;
|
||||
memcpy((void *)m_ParamTypes, paramTypes, numParams * sizeof(ForwardParam));
|
||||
m_HasFunc = (amx_FindPublic(amx, funcName, &m_Func) == AMX_ERR_NONE);
|
||||
isFree = false;
|
||||
}
|
||||
|
||||
cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
|
||||
{
|
||||
if (isFree)
|
||||
return 0;
|
||||
const int STRINGEX_MAXLENGTH = 128;
|
||||
|
||||
cell realParams[FORWARD_MAX_PARAMS];
|
||||
@ -290,13 +286,11 @@ int CForwardMngr::registerSPForward(int func, AMX *amx, int numParams, const For
|
||||
{
|
||||
int retVal = (m_SPForwards.size() << 1) | 1;
|
||||
CSPForward *pForward;
|
||||
if (!m_FreeSPForwards.empty())
|
||||
if (m_FreeSPForwards.size())
|
||||
{
|
||||
pForward = m_SPForwards[m_FreeSPForwards.front() >> 1];
|
||||
pForward = m_SPForwards[m_FreeSPForwards.back()];
|
||||
m_FreeSPForwards.pop_back();
|
||||
pForward->Set(func, amx, numParams, paramTypes);
|
||||
if (pForward->getFuncsNum() == 0)
|
||||
return -1;
|
||||
m_FreeSPForwards.pop();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -304,13 +298,12 @@ int CForwardMngr::registerSPForward(int func, AMX *amx, int numParams, const For
|
||||
if (!pForward)
|
||||
return -1;
|
||||
pForward->Set(func, amx, numParams, paramTypes);
|
||||
m_SPForwards.push_back(pForward);
|
||||
}
|
||||
if (pForward->getFuncsNum() == 0)
|
||||
{
|
||||
unregisterSPForward(retVal);
|
||||
return -1;
|
||||
delete pForward;
|
||||
}
|
||||
|
||||
m_SPForwards.push_back(pForward);
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
@ -319,14 +312,12 @@ int CForwardMngr::registerSPForward(const char *funcName, AMX *amx, int numParam
|
||||
{
|
||||
int retVal = (m_SPForwards.size() << 1) | 1;
|
||||
CSPForward *pForward;
|
||||
if (!m_FreeSPForwards.empty())
|
||||
if (m_FreeSPForwards.size())
|
||||
{
|
||||
retVal = m_FreeSPForwards.front();
|
||||
retVal = m_FreeSPForwards.back();
|
||||
m_FreeSPForwards.pop_back();
|
||||
pForward = m_SPForwards[retVal>>1]; // >>1 because unregisterSPForward pushes the id which contains the sp flag
|
||||
pForward->Set(funcName, amx, numParams, paramTypes);
|
||||
if (pForward->getFuncsNum() == 0)
|
||||
return -1;
|
||||
m_FreeSPForwards.pop();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -334,11 +325,6 @@ int CForwardMngr::registerSPForward(const char *funcName, AMX *amx, int numParam
|
||||
if (!pForward)
|
||||
return -1;
|
||||
pForward->Set(funcName, amx, numParams, paramTypes);
|
||||
if (pForward->getFuncsNum() == 0)
|
||||
{
|
||||
delete pForward;
|
||||
return -1;
|
||||
}
|
||||
m_SPForwards.push_back(pForward);
|
||||
}
|
||||
return retVal;
|
||||
@ -385,8 +371,7 @@ void CForwardMngr::clear()
|
||||
|
||||
m_Forwards.clear();
|
||||
m_SPForwards.clear();
|
||||
while (!m_FreeSPForwards.empty())
|
||||
m_FreeSPForwards.pop();
|
||||
m_FreeSPForwards.clear();
|
||||
m_TmpArraysNum = 0;
|
||||
}
|
||||
|
||||
@ -397,13 +382,7 @@ bool CForwardMngr::isSPForward(int id) const
|
||||
|
||||
void CForwardMngr::unregisterSPForward(int id)
|
||||
{
|
||||
//make sure the id is valid
|
||||
if ( !isIdValid(id) || m_SPForwards.at(id >> 1)->isFree )
|
||||
return;
|
||||
|
||||
m_SPForwards.at(id >> 1)->isFree = true;
|
||||
|
||||
m_FreeSPForwards.push(id);
|
||||
m_FreeSPForwards.push_back(id);
|
||||
}
|
||||
|
||||
int registerForward(const char *funcName, ForwardExecType et, ...)
|
||||
|
@ -125,8 +125,6 @@ class CSPForward
|
||||
AMX *m_Amx;
|
||||
int m_Func;
|
||||
bool m_HasFunc;
|
||||
public:
|
||||
bool isFree;
|
||||
public:
|
||||
CSPForward() { m_HasFunc = false; }
|
||||
void Set(const char *funcName, AMX *amx, int numParams, const ForwardParam * paramTypes);
|
||||
@ -153,7 +151,7 @@ class CForwardMngr
|
||||
{
|
||||
typedef CVector<CForward*> ForwardVec;
|
||||
typedef CVector<CSPForward*> SPForwardVec;
|
||||
typedef CQueue<int> FreeSPVec; // Free SP Forwards
|
||||
typedef CVector<int> FreeSPVec; // Free SP Forwards
|
||||
|
||||
ForwardVec m_Forwards;
|
||||
|
||||
|
@ -47,6 +47,15 @@
|
||||
#define FFHL_VERSION 4
|
||||
#define FFHL_MIN_VERSION 4
|
||||
|
||||
#define NEXT_PARAM() \
|
||||
if (parm > paramCount) \
|
||||
{ \
|
||||
strcpy(outbuf, ""); \
|
||||
len = 0; \
|
||||
AMXXLOG_Log("[AMXX] Plugin did not format a string correctly (parameter %d (total %d), line %d, \"%s\")", parm, paramCount, amx->curline, g_plugins.findPluginFast(amx)->getName()); \
|
||||
return outbuf; \
|
||||
}
|
||||
|
||||
/*version history:
|
||||
* 1 (BAILOPAN) - Simplest form possible, no reverse
|
||||
* 2 (BAILOPAN) - One language per file with full reverse
|
||||
@ -504,15 +513,6 @@ int CLangMngr::GetKeyEntry(String &key)
|
||||
return outbuf; }
|
||||
#define CHECK_OUTPTR(offset) CHECK_PTR(outptr+offset, outbuf, sizeof(outbuf))
|
||||
#define ZEROTERM(buf) buf[(sizeof(buf)/sizeof(buf[0]))-1]=0;
|
||||
#define NEXT_PARAM() \
|
||||
if (parm > paramCount) \
|
||||
{ \
|
||||
strcpy(outbuf, ""); \
|
||||
len = 0; \
|
||||
AMXXLOG_Log("[AMXX] Plugin did not format a string correctly (parameter %d (total %d), line %d, \"%s\")", parm, paramCount, amx->curline, g_plugins.findPluginFast(amx)->getName()); \
|
||||
return outbuf; \
|
||||
}
|
||||
|
||||
char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
{
|
||||
// number of parameters ( for NEXT_PARAM macro )
|
||||
@ -522,11 +522,19 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
char *outptr = outbuf;
|
||||
cell *src = get_amxaddr(amx, params[parm++]);
|
||||
|
||||
enum State
|
||||
{
|
||||
S_Normal,
|
||||
S_PercentSign,
|
||||
};
|
||||
|
||||
State curState = S_Normal;
|
||||
while (*src)
|
||||
{
|
||||
if (*src == '%')
|
||||
if (*src == '%' && curState == S_Normal)
|
||||
curState = S_PercentSign;
|
||||
else if (curState == S_PercentSign)
|
||||
{
|
||||
++src;
|
||||
if (*src=='L')
|
||||
{
|
||||
cell langName = params[parm]; // "en" case (langName contains the address to the string)
|
||||
@ -584,7 +592,7 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
if (*def == '%')
|
||||
{
|
||||
++def;
|
||||
static char format[32];
|
||||
char format[32];
|
||||
format[0] = '%';
|
||||
char *ptr = format+1;
|
||||
while (ptr-format<sizeof(format) && !isalpha(*ptr++ = *def++))
|
||||
@ -596,7 +604,7 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
{
|
||||
case 's':
|
||||
{
|
||||
static char tmpString[4096];
|
||||
char tmpString[4096];
|
||||
char *tmpPtr = tmpString;
|
||||
NEXT_PARAM();
|
||||
cell *tmpCell = get_amxaddr(amx, params[parm++]);
|
||||
@ -618,7 +626,6 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
}
|
||||
case 'i':
|
||||
case 'd':
|
||||
case 'c':
|
||||
{
|
||||
NEXT_PARAM();
|
||||
sprintf(outptr, format, (int)*get_amxaddr(amx, params[parm++]));
|
||||
@ -668,10 +675,11 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
}
|
||||
else
|
||||
{
|
||||
static char tmpString[4096];
|
||||
char tmpString[4096];
|
||||
char *tmpPtr = tmpString;
|
||||
int tmpLen = 0;
|
||||
static char format[32] = {'%'};
|
||||
char format[32];
|
||||
format[0] = '%';
|
||||
char *ptr = format+1;
|
||||
if (*src != '%')
|
||||
{
|
||||
@ -702,7 +710,6 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
}
|
||||
case 'i':
|
||||
case 'd':
|
||||
case 'c':
|
||||
{
|
||||
NEXT_PARAM();
|
||||
sprintf(outptr, format, (int)*get_amxaddr(amx, params[parm++]));
|
||||
@ -721,6 +728,7 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
*outptr++ = '%';
|
||||
}
|
||||
}
|
||||
curState = S_Normal;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -735,200 +743,6 @@ char * CLangMngr::FormatAmxString(AMX *amx, cell *params, int parm, int &len)
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
const char *CLangMngr::Format(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
const char *retVal = FormatString(fmt, ap);
|
||||
va_end(ap);
|
||||
return retVal;
|
||||
}
|
||||
|
||||
#undef CHECK_PTR
|
||||
#undef CHECK_OUTPR
|
||||
#undef ZEROTERM
|
||||
#undef NEXT_PARAM
|
||||
|
||||
#define CHECK_PTR(ptr, start, bufsize) if ((ptr) - (start) >= (bufsize)) { \
|
||||
AMXXLOG_Log("[AMXX] Buffer overflow in formatting"); \
|
||||
outbuf[0] = 0; \
|
||||
return outbuf; }
|
||||
#define CHECK_OUTPTR(offset) CHECK_PTR(outptr+offset, outbuf, sizeof(outbuf))
|
||||
#define ZEROTERM(buf) buf[(sizeof(buf)/sizeof(buf[0]))-1]=0;
|
||||
#define NEXT_PARAM()
|
||||
|
||||
char *CLangMngr::FormatString(const char *fmt, va_list &ap)
|
||||
{
|
||||
// the output buffer
|
||||
static char outbuf[4096];
|
||||
char *outptr = outbuf;
|
||||
const char *src = fmt;
|
||||
|
||||
while (*src)
|
||||
{
|
||||
if (*src == '%')
|
||||
{
|
||||
++src;
|
||||
if (*src=='L')
|
||||
{
|
||||
NEXT_PARAM();
|
||||
const char *pAmxLangName = va_arg(ap, const char*);
|
||||
const char *cpLangName=NULL;
|
||||
// Handle player ids (1-32) and server language
|
||||
if (pAmxLangName == (const char *)LANG_PLAYER) // LANG_PLAYER
|
||||
{
|
||||
if ((int)CVAR_GET_FLOAT("amx_client_languages"))
|
||||
{
|
||||
cpLangName = g_vault.get("server_language");
|
||||
} else {
|
||||
cpLangName = ENTITY_KEYVALUE(GET_PLAYER_POINTER_I(m_CurGlobId)->pEdict, "lang");
|
||||
}
|
||||
} else if (pAmxLangName == (const char *)LANG_SERVER) { // LANG_SERVER
|
||||
cpLangName = g_vault.get("server_language");
|
||||
} else if (pAmxLangName >= (const char *)1 && pAmxLangName <= (const char *)32) { // Direct Client Id
|
||||
if ((int)CVAR_GET_FLOAT("amx_client_languages"))
|
||||
{
|
||||
cpLangName = g_vault.get("server_language");
|
||||
} else {
|
||||
cpLangName = ENTITY_KEYVALUE(GET_PLAYER_POINTER_I((int)pAmxLangName)->pEdict, "lang");
|
||||
}
|
||||
} else { // Language Name
|
||||
int tmplen = 0;
|
||||
cpLangName = pAmxLangName;
|
||||
}
|
||||
if (!cpLangName || strlen(cpLangName) < 1)
|
||||
cpLangName = "en";
|
||||
int tmplen = 0;
|
||||
const char *key = va_arg(ap, const char *);
|
||||
const char *def = GetDef(cpLangName, key);
|
||||
if (def == NULL)
|
||||
{
|
||||
if (pAmxLangName != LANG_SERVER)
|
||||
{
|
||||
def = GetDef(g_vault.get("server_language"), key);
|
||||
}
|
||||
if (strcmp(cpLangName, "en")!=0 && strcmp(g_vault.get("server_language"), "en")!=0)
|
||||
{
|
||||
def = GetDef("en", key);
|
||||
}
|
||||
if (!def)
|
||||
{
|
||||
static char buf[512];
|
||||
CHECK_PTR((char*)(buf+17+strlen(key)), buf, sizeof(buf));
|
||||
sprintf(buf, "ML_LNOTFOUND: %s", key);
|
||||
def = buf;
|
||||
}
|
||||
}
|
||||
while (*def)
|
||||
{
|
||||
if (*def == '%')
|
||||
{
|
||||
++def;
|
||||
static char format[32];
|
||||
format[0] = '%';
|
||||
char *ptr = format+1;
|
||||
while (ptr-format<sizeof(format) && !isalpha(*ptr++ = *def++))
|
||||
/*nothing*/;
|
||||
ZEROTERM(format);
|
||||
|
||||
*ptr = 0;
|
||||
vsprintf(outptr, format, ap);
|
||||
// vsprintf doesnt alter the ap, increment here
|
||||
switch (*(ptr-1))
|
||||
{
|
||||
case 'f':
|
||||
va_arg(ap, double);
|
||||
break;
|
||||
case 's':
|
||||
va_arg(ap, char *);
|
||||
break;
|
||||
case 'c':
|
||||
case 'd':
|
||||
case 'i':
|
||||
default: // default: assume int-like parameter
|
||||
va_arg(ap, int);
|
||||
break;
|
||||
}
|
||||
outptr += strlen(outptr);
|
||||
}
|
||||
else if (*def == '^')
|
||||
{
|
||||
++def;
|
||||
switch (*def)
|
||||
{
|
||||
case 'n':
|
||||
CHECK_OUTPTR(1);
|
||||
*outptr++ = '\n';
|
||||
break;
|
||||
case 't':
|
||||
CHECK_OUTPTR(1);
|
||||
*outptr++ = '\t';
|
||||
break;
|
||||
case '^':
|
||||
CHECK_OUTPTR(1);
|
||||
*outptr++ = '^';
|
||||
break;
|
||||
default:
|
||||
CHECK_OUTPTR(2);
|
||||
*outptr++ = '^';
|
||||
*outptr++ = *def;
|
||||
break;
|
||||
}
|
||||
++def;
|
||||
}
|
||||
else
|
||||
{
|
||||
CHECK_OUTPTR(1);
|
||||
*outptr++ = *def++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
static char format[32] = {'%'};
|
||||
char *ptr = format+1;
|
||||
if (*src != '%')
|
||||
{
|
||||
while (*src != 0 && ptr-format<sizeof(format) && !isalpha(*ptr++ = *src++))
|
||||
/*nothing*/;
|
||||
*ptr = 0;
|
||||
ZEROTERM(format);
|
||||
--src;
|
||||
vsprintf(outptr, format, ap);
|
||||
// vsprintf doesnt alter the ap, increment here
|
||||
switch (*(ptr-1))
|
||||
{
|
||||
case 'f':
|
||||
va_arg(ap, double);
|
||||
break;
|
||||
case 's':
|
||||
va_arg(ap, char *);
|
||||
break;
|
||||
case 'c':
|
||||
case 'd':
|
||||
case 'i':
|
||||
default: // default: assume int-like parameter
|
||||
va_arg(ap, int);
|
||||
break;
|
||||
}
|
||||
outptr += strlen(outptr);
|
||||
} else {
|
||||
CHECK_OUTPTR(1);
|
||||
*outptr++ = '%';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CHECK_OUTPTR(1);
|
||||
*outptr++ = *src;
|
||||
}
|
||||
++src;
|
||||
}
|
||||
CHECK_OUTPTR(1);
|
||||
*outptr++ = 0;
|
||||
return outbuf;
|
||||
}
|
||||
void CLangMngr::MergeDefinitions(const char *lang, CQueue<sKeyDef*> &tmpVec)
|
||||
{
|
||||
CLang * language = GetLang(lang);
|
||||
|
@ -171,7 +171,6 @@ public:
|
||||
const char *Format(const char *src, ...);
|
||||
// Format a string for an AMX plugin
|
||||
char *FormatAmxString(AMX *amx, cell *params, int parm, int &len);
|
||||
char *FormatString(const char *fmt, va_list &ap);
|
||||
// Save
|
||||
bool Save(const char *filename);
|
||||
// Load
|
||||
|
@ -126,9 +126,8 @@ pfnmodule_engine_g engModuleFunc = {
|
||||
// class CModule
|
||||
// *****************************************************
|
||||
|
||||
CModule::CModule(const char* fname)
|
||||
CModule::CModule(const char* fname) : m_Filename(fname)
|
||||
{
|
||||
m_Filename.assign(fname);
|
||||
clear(false);
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ public:
|
||||
inline module_info_s* getInfo() const { return m_InfoOld; } // old
|
||||
inline const amxx_module_info_s* getInfoNew() const { return &m_InfoNew; } // new
|
||||
inline int getStatusValue() { return m_Status; }
|
||||
inline bool operator==( const char* fname ) { return !strcmp( m_Filename.c_str() , fname ); }
|
||||
inline bool operator==( void* fname ) { return !strcmp( m_Filename.c_str() , (char*)fname ); }
|
||||
inline bool isReloadable() { return m_Amxx ? ((m_Status == MODULE_LOADED) && (m_InfoNew.reload != 0)) : ( (m_Status==MODULE_LOADED) && (m_InfoOld->type==RELOAD_MODULE)); }
|
||||
inline bool isAmxx() const { return m_Amxx; }
|
||||
inline const char *getMissingFunc() const { return m_MissingFunc; }
|
||||
|
@ -34,11 +34,11 @@
|
||||
#include "CForward.h"
|
||||
#include "CFile.h"
|
||||
|
||||
CPluginMngr::CPlugin* CPluginMngr::loadPlugin(const char* path, const char* name, char* error, int debug) {
|
||||
CPluginMngr::CPlugin* CPluginMngr::loadPlugin(const char* path, const char* name, char* error) {
|
||||
CPlugin** a = &head;
|
||||
while( *a ) a = &(*a)->next;
|
||||
*a = new CPlugin( pCounter++ ,path,name,error, debug);
|
||||
return (*a);
|
||||
*a = new CPlugin( pCounter++ ,path,name,error);
|
||||
return *error ? 0 : *a;
|
||||
}
|
||||
|
||||
void CPluginMngr::unloadPlugin( CPlugin** a ) {
|
||||
@ -59,35 +59,20 @@ int CPluginMngr::loadPluginsFromFile( const char* filename )
|
||||
}
|
||||
|
||||
// Find now folder
|
||||
char pluginName[256], line[256], error[256], debug[256];
|
||||
int debugFlag = 0;
|
||||
char pluginName[256], line[256], error[256];
|
||||
const char *pluginsDir = get_localinfo("amxx_pluginsdir", "addons/amxmodx/plugins");
|
||||
|
||||
|
||||
while ( fp.getline(line , 255 ) )
|
||||
{
|
||||
*pluginName = 0;
|
||||
*debug = 0;
|
||||
debugFlag = 0;
|
||||
sscanf(line,"%s %s",pluginName, debug);
|
||||
sscanf(line,"%s",pluginName);
|
||||
if (!isalnum(*pluginName)) continue;
|
||||
|
||||
#ifdef JIT
|
||||
if (isalnum(*debug) && strcmp(debug, "debug") == 0)
|
||||
{
|
||||
debugFlag = 1;
|
||||
}
|
||||
#endif
|
||||
CPlugin* plugin = loadPlugin( pluginsDir , pluginName , error );
|
||||
|
||||
CPlugin* plugin = loadPlugin( pluginsDir , pluginName , error, debugFlag);
|
||||
|
||||
if (plugin->getStatusCode() == ps_bad_load)
|
||||
{
|
||||
char errorMsg[255];
|
||||
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
|
||||
plugin->setError(errorMsg);
|
||||
AMXXLOG_Log("[AMXX] %s", plugin->getError());
|
||||
}
|
||||
if (!plugin)
|
||||
AMXXLOG_Log("[AMXX] %s (plugin \"%s\")", error, pluginName );
|
||||
}
|
||||
|
||||
return pCounter;
|
||||
@ -102,6 +87,10 @@ void CPluginMngr::clear() {
|
||||
CPluginMngr::CPlugin* CPluginMngr::findPluginFast(AMX *amx)
|
||||
{
|
||||
return (CPlugin*)(amx->userdata[3]);
|
||||
/*CPlugin*a = head;
|
||||
while ( a && &a->amx != amx )
|
||||
a=a->next;
|
||||
return a;*/
|
||||
}
|
||||
|
||||
CPluginMngr::CPlugin* CPluginMngr::findPlugin(AMX *amx) {
|
||||
@ -139,20 +128,16 @@ const char* CPluginMngr::CPlugin::getStatus() const {
|
||||
return "error";
|
||||
}
|
||||
|
||||
CPluginMngr::CPlugin::CPlugin(int i, const char* p,const char* n, char* e, int d) : name(n), title(n) {
|
||||
CPluginMngr::CPlugin::CPlugin(int i, const char* p,const char* n, char* e) : name(n), title(n) {
|
||||
const char* unk = "unknown";
|
||||
title.assign(unk);
|
||||
author.assign(unk);
|
||||
version.assign(unk);
|
||||
char* path = build_pathname("%s/%s",p,n);
|
||||
code = 0;
|
||||
int err = load_amxscript(&amx,&code,path,e, d);
|
||||
if ( err == AMX_ERR_NONE )
|
||||
{
|
||||
status = ps_running;
|
||||
} else {
|
||||
status = ps_bad_load;
|
||||
}
|
||||
int err = load_amxscript(&amx,&code,path,e );
|
||||
if ( err == AMX_ERR_NONE ) status = ps_running;
|
||||
else status = ps_bad_load;
|
||||
amx.userdata[3] = this;
|
||||
paused_fun = 0;
|
||||
next = 0;
|
||||
|
@ -63,12 +63,11 @@ public:
|
||||
String version;
|
||||
String title;
|
||||
String author;
|
||||
String errorMsg;
|
||||
int paused_fun;
|
||||
int status;
|
||||
CPlugin* next;
|
||||
int id;
|
||||
CPlugin(int i , const char* p,const char* n, char* e, int d);
|
||||
CPlugin(int i , const char* p,const char* n, char* e);
|
||||
~CPlugin( );
|
||||
|
||||
public:
|
||||
@ -77,14 +76,11 @@ public:
|
||||
inline const char* getVersion() { return version.c_str();}
|
||||
inline const char* getTitle() { return title.c_str();}
|
||||
inline const char* getAuthor() { return author.c_str();}
|
||||
inline const char* getError() { return errorMsg.c_str();}
|
||||
inline int getStatusCode() { return status; }
|
||||
inline int getId() const { return id; }
|
||||
inline AMX* getAMX() { return &amx; }
|
||||
inline void setTitle( const char* n ) { title.assign(n); }
|
||||
inline void setAuthor( const char* n ) { author.assign(n); }
|
||||
inline void setVersion( const char* n ) { version.assign(n); }
|
||||
inline void setError( const char* n ) { errorMsg.assign(n); }
|
||||
inline bool isValid() const { return ((status != ps_bad_load) && (status != ps_locked)); }
|
||||
inline bool isPaused() const { return ( (status == ps_paused) || (status == ps_stopped)); }
|
||||
inline bool isFunctionPaused( int id ) const { return (paused_fun & (1<<id)) ? true : false; }
|
||||
@ -108,7 +104,7 @@ public:
|
||||
|
||||
// Interface
|
||||
|
||||
CPlugin* loadPlugin(const char* path, const char* name, char* error, int debug);
|
||||
CPlugin* loadPlugin(const char* path, const char* name, char* error);
|
||||
void unloadPlugin( CPlugin** a );
|
||||
int loadPluginsFromFile( const char* filename );
|
||||
CPlugin* findPluginFast(AMX *amx);
|
||||
|
@ -71,7 +71,7 @@ public:
|
||||
|
||||
void append(const char *t)
|
||||
{
|
||||
Grow(cSize + strlen(t) + 1);
|
||||
Grow(cSize + strlen(t));
|
||||
strcat(v, t);
|
||||
cSize = strlen(v);
|
||||
}
|
||||
|
@ -32,8 +32,6 @@
|
||||
#ifndef __CVECTOR_H__
|
||||
#define __CVECTOR_H__
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
// Vector
|
||||
template <class T> class CVector
|
||||
{
|
||||
@ -286,7 +284,7 @@ public:
|
||||
iterator iterAt(size_t pos)
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
return iterator(m_Data + pos);
|
||||
}
|
||||
|
||||
@ -333,7 +331,7 @@ public:
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[pos];
|
||||
}
|
||||
@ -342,7 +340,7 @@ public:
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[pos];
|
||||
}
|
||||
@ -361,7 +359,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[0];
|
||||
}
|
||||
@ -370,7 +368,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[0];
|
||||
}
|
||||
@ -379,7 +377,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[m_CurrentUsedSize - 1];
|
||||
}
|
||||
@ -388,7 +386,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[m_CurrentUsedSize - 1];
|
||||
}
|
||||
|
@ -101,6 +101,15 @@
|
||||
; to compute the destination address: It searches backwards now.
|
||||
; 1999/07/08 MP - initial revision
|
||||
|
||||
|
||||
; Controls generation of LINE op-codes: 0 - no, all other values - yes
|
||||
; Beware that, if set to 1, this makes the compiled code slower by a factor of
|
||||
; up to 3!
|
||||
;
|
||||
; GWMV: to generate LINE opcode, %define ALLOWOPLINE
|
||||
;
|
||||
%undef ALLOWOPLINE
|
||||
|
||||
;
|
||||
; If this is set to 1 the JIT generates relocatable code for case tables, too.
|
||||
; If set to 0, a faster variant for switch (using absolute addresses) is
|
||||
@ -155,9 +164,8 @@ _alt: resd 1
|
||||
_reset_stk: resd 1
|
||||
_reset_hea: resd 1
|
||||
_syscall_d: resd 1
|
||||
; the two fields below are for the JIT
|
||||
; they are included in the non-JIT version for AMX Mod X
|
||||
; this is to make sure that the structs match universally!
|
||||
; the two fields below are for the JIT; they do not exist in
|
||||
; the non-JIT version of the abstract machine
|
||||
_reloc_size: resd 1 ; memory block for relocations
|
||||
_code_size: resd 1 ; memory size of the native code
|
||||
endstruc
|
||||
@ -222,7 +230,6 @@ DBG_SYMTAG equ 9
|
||||
|
||||
AMX_FLAG_CHAR16 equ 0001h ; characters are 16-bit
|
||||
AMX_FLAG_DEBUG equ 0002h ; symbolic info. available
|
||||
AMX_FLAG_LINEOPS equ 0020h ; line ops should be parsed [load time only flag] - ~dvander
|
||||
AMX_FLAG_BROWSE equ 4000h
|
||||
AMX_FLAG_RELOC equ 8000h ; jump/call addresses relocated
|
||||
|
||||
@ -784,7 +791,7 @@ OP_ALIGN_PRI:
|
||||
CHECKCODESIZE j_align_pri
|
||||
|
||||
OP_ALIGN_ALT:
|
||||
;nop
|
||||
;nop;
|
||||
mov eax,4
|
||||
sub eax,[ebx+4]
|
||||
mov dword [j_align_alt+1],eax
|
||||
@ -1727,29 +1734,13 @@ OP_FILE: ;opcode is simply ignored
|
||||
|
||||
OP_LINE:
|
||||
;nop;
|
||||
;~dvander - opline is now variable on compile time :]
|
||||
;save registers
|
||||
push eax
|
||||
push ebp
|
||||
;get .amx flags
|
||||
mov ebp,[amxhead]
|
||||
mov eax,[ebp+_h_flags]
|
||||
;check to see if the flag has line ops
|
||||
and eax,AMX_FLAG_LINEOPS
|
||||
cmp eax,AMX_FLAG_LINEOPS
|
||||
;restore registers
|
||||
pop ebp
|
||||
pop eax
|
||||
;if so, skip down to debug compiler
|
||||
je _go_debug
|
||||
|
||||
%ifndef ALLOWOPLINE
|
||||
mov [ebx],edi ; no line number support: ignore opcode
|
||||
add ebx,12 ; move on to next opcode
|
||||
cmp ebx,[end_code]
|
||||
jae code_gen_done
|
||||
jmp dword [ebx] ; go on with the next opcode
|
||||
|
||||
_go_debug:
|
||||
%else
|
||||
putval j_line+6
|
||||
mov eax,[ebx+8]
|
||||
mov [j_line_sm],eax
|
||||
@ -1759,6 +1750,7 @@ _go_debug:
|
||||
DD 0 ; space for curline
|
||||
j_line_sm DD 0 ; space for curfile
|
||||
CHECKCODESIZE j_line
|
||||
%endif
|
||||
|
||||
OP_SYMBOL: ;ignored
|
||||
mov [ebx],edi
|
||||
|
10
amxmodx/JIT/jits.def
Executable file
10
amxmodx/JIT/jits.def
Executable file
@ -0,0 +1,10 @@
|
||||
LIBRARY jits
|
||||
DESCRIPTION "JIT for AMX Mod X"
|
||||
EXPORTS
|
||||
asm_runJIT @1
|
||||
getMaxCodeSize @2
|
||||
amx_exec_asm @3
|
||||
amx_opcodelist @4
|
||||
SECTIONS
|
||||
.data READ WRITE
|
||||
.code EXECUTE
|
BIN
amxmodx/JIT/jits.exp
Executable file
BIN
amxmodx/JIT/jits.exp
Executable file
Binary file not shown.
BIN
amxmodx/JIT/jits.lib
Executable file
BIN
amxmodx/JIT/jits.lib
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -12,38 +12,25 @@
|
||||
# amd64 - compile for AMD64 (impiles no jit)
|
||||
# proc=ix86 - assumed not amd64
|
||||
# clean - clean the specifications above
|
||||
# asm - for ASM implementation
|
||||
# !! TODO - add memory mananger support
|
||||
# lineop - for JIT only, uses slow version
|
||||
|
||||
$PROJECT = "amxmodx_mm";
|
||||
$sdk = "../hlsdk/SourceCode";
|
||||
$mm = "../metamod/metamod";
|
||||
$gccf = "gcc";
|
||||
$ccf = "cc";
|
||||
$amd64_lstdc = "-lstdc++";
|
||||
|
||||
@CPP_SOURCE_FILES = ("meta_api.cpp", "CFile.cpp", "CVault.cpp", "vault.cpp", "float.cpp", "file.cpp", "modules.cpp", "CMisc.cpp", "CTask.cpp", "string.cpp", "amxmodx.cpp", "CEvent.cpp", "CCmd.cpp", "CLogEvent.cpp", "srvcmd.cpp", "strptime.cpp", "amxcore.cpp", "amxtime.cpp", "power.cpp", "amxxlog.cpp", "fakemeta.cpp", "amxxfile.cpp", "CLang.cpp", "md5.cpp", "emsg.cpp", "CForward.cpp", "CPlugin.cpp", "CModule.cpp", "CMenu.cpp", "util.cpp");
|
||||
@CPP_SOURCE_FILES = ("meta_api.cpp", "CFile.cpp", "CVault.cpp", "vault.cpp", "float.cpp", "file.cpp", "modules.cpp", "CMisc.cpp", "CTask.cpp", "string.cpp", "amxmodx.cpp", "CEvent.cpp", "CCmd.cpp", "CLogEvent.cpp", "srvcmd.cpp", "strptime.cpp", "amxcore.cpp", "amxtime.cpp", "power.cpp", "amxxlog.cpp", "fakemeta.cpp", "MMGR/MMGR.cpp", "amxxfile.cpp", "CLang.cpp", "md5.cpp", "emsg.cpp", "CForward.cpp", "CPlugin.cpp", "CModule.cpp", "CMenu.cpp", "util.cpp");
|
||||
|
||||
@C_SOURCE_FILES = ();
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
while ($cmd = shift)
|
||||
{
|
||||
if ($cmd =~ /asm/)
|
||||
{
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
die "You cannot compile the ASM core with AMD64 yet.\n";
|
||||
} else {
|
||||
$OPTIONS{"asm"} = 1;
|
||||
}
|
||||
}
|
||||
if ($cmd =~ /jit/)
|
||||
{
|
||||
if ($OPTIONS{"amd64"})
|
||||
@ -53,9 +40,9 @@ while ($cmd = shift)
|
||||
$OPTIONS{"jit"} = 1;
|
||||
}
|
||||
} elsif ($cmd =~ /amd64/) {
|
||||
if ($OPTIONS{"jit"} || $OPTIONS{"asm"})
|
||||
if ($OPTIONS{"jit"})
|
||||
{
|
||||
die "You cannot compile the JIT or ASM and AMD64 yet.\n";
|
||||
die "You cannot compile the JIT and AMD64 yet.\n";
|
||||
} else {
|
||||
$OPTIONS{"amd64"} = 1;
|
||||
}
|
||||
@ -71,22 +58,14 @@ while ($cmd = shift)
|
||||
}
|
||||
} elsif ($cmd =~ /clean/) {
|
||||
$OPTIONS{"clean"} = 1;
|
||||
} elsif ($cmd =~ /lineop/) {
|
||||
$OPTIONS{"lineop"} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$gcc = `$gccf --version`;
|
||||
if ($gcc =~ /2\.9/)
|
||||
{
|
||||
#if ($OPTIONS{"jit"})
|
||||
#{
|
||||
# push(@CPP_SOURCE_FILES, "amx.cpp");
|
||||
# $OPT{"opt"} .= " -malign-loops=2 -malign-jumps=2 -malign-functions=2";
|
||||
# } else {
|
||||
`ln -s amx.cpp amx.c`;
|
||||
push(@C_SOURCE_FILES, "amx.c");
|
||||
# }
|
||||
push(@CPP_SOURCE_FILES, "amx.cpp");
|
||||
$OPT{"opt"} .= " -malign-loops=2 -malign-jumps=2 -malign-functions=2";
|
||||
} else {
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
@ -117,7 +96,7 @@ if ($OPTIONS{"debug"})
|
||||
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
$cflags = " -m64 -DSMALL_CELL_SIZE=64 -DHAVE_I64 $cflags";
|
||||
$cflags .= " -m64 -DSMALL_CELL_SIZE=64 -DHAVE_I64 $cflags";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"jit"})
|
||||
@ -125,11 +104,6 @@ if ($OPTIONS{"jit"})
|
||||
$cflags .= " -DJIT";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"asm"})
|
||||
{
|
||||
$cflags .= " -DASM32";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"debug"})
|
||||
{
|
||||
$outdir = "bin.debug";
|
||||
@ -156,6 +130,8 @@ if ($OPTIONS{"amd64"})
|
||||
if ($OPTIONS{"clean"})
|
||||
{
|
||||
`rm $outdir/*.o`;
|
||||
`rm $outdir/MMGR/*.o`;
|
||||
`rm $outdir/minilzo/*.o`;
|
||||
`rm $outdir/$bin`;
|
||||
die("Project cleaned.\n");
|
||||
}
|
||||
@ -177,32 +153,25 @@ for ($i=0; $i<=$#C_SOURCE_FILES; $i++)
|
||||
}
|
||||
if ($OPTIONS{"jit"})
|
||||
{
|
||||
if ($OPTIONS{"lineop"}) {
|
||||
push(@LINK, "JIT/jits-lineop.o");
|
||||
} else {
|
||||
push(@LINK, "JIT/jits.o");
|
||||
}
|
||||
}
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
push(@LINK, "zlib/libz64.a");
|
||||
push(@LINK, $amd64_lstdc);
|
||||
} else {
|
||||
push(@LINK, "zlib/libz.a");
|
||||
}
|
||||
if ($OPTIONS{"asm"})
|
||||
{
|
||||
push(@LINK, "amxexecn.o");
|
||||
}
|
||||
|
||||
if (!(-d $outdir))
|
||||
{
|
||||
mkdir($outdir);
|
||||
}
|
||||
if (!(-d "$outdir/MMGR"))
|
||||
{
|
||||
mkdir("$outdir/MMGR");
|
||||
}
|
||||
if (!(-d "$outdir/JIT"))
|
||||
{
|
||||
mkdir("$outdir/JIT");
|
||||
}
|
||||
if (!(-d "$outdir/minilzo"))
|
||||
{
|
||||
mkdir("$outdir/minilzo");
|
||||
}
|
||||
|
||||
$inc = $OPTIONS{"include"};
|
||||
|
||||
@ -219,7 +188,6 @@ for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
$ofile_time = (stat($ofile))[9];
|
||||
if ($file_time > $ofile_time)
|
||||
{
|
||||
`rm $ofile`;
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
||||
}
|
||||
@ -251,6 +219,6 @@ for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
}
|
||||
}
|
||||
|
||||
$gcc = "$gccf $cflags -shared -ldl -lm @LINK -o $outdir/$bin";
|
||||
$gcc = "$gccf $cflags -Lzlib/ -shared -ldl -lstdc++ @LINK -lm -lz -o $outdir/$bin";
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
||||
|
@ -480,13 +480,8 @@ int AMXAPI amx_Debug(AMX *amx)
|
||||
}
|
||||
|
||||
#if defined JIT
|
||||
#if defined WIN32 || defined __cplusplus
|
||||
extern "C" int AMXAPI getMaxCodeSize(void);
|
||||
extern "C" int AMXAPI asm_runJIT(void *sourceAMXbase, void *jumparray, void *compiledAMXbase);
|
||||
#else
|
||||
extern int AMXAPI getMaxCodeSize(void);
|
||||
extern int AMXAPI asm_runJIT(void *sourceAMXbase, void *jumparray, void *compiledAMXbase);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if SMALL_CELL_SIZE==16
|
||||
@ -1607,40 +1602,6 @@ int AMXAPI amx_Register(AMX *amx, AMX_NATIVE_INFO *list, int number)
|
||||
} /* for */
|
||||
return err;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL null_native(AMX *amx, cell *params)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void amx_NullNativeTable(AMX *amx)
|
||||
{
|
||||
AMX_FUNCSTUB *func;
|
||||
AMX_HEADER *hdr;
|
||||
int i, numnatives;
|
||||
|
||||
hdr=(AMX_HEADER *)amx->base;
|
||||
if (hdr == NULL)
|
||||
return;
|
||||
if (hdr->magic!=AMX_MAGIC)
|
||||
return;
|
||||
|
||||
numnatives = NUMENTRIES(hdr, natives, libraries);
|
||||
|
||||
func=GETENTRY(hdr, natives, 0);
|
||||
|
||||
for (i=0; i<numnatives; i++)
|
||||
{
|
||||
if (strcmp(GETENTRYNAME(hdr,func), "require_module")==0)
|
||||
{
|
||||
func->address = NULL;
|
||||
} else {
|
||||
func->address = (ucell)null_native;
|
||||
}
|
||||
func=(AMX_FUNCSTUB*)((unsigned char*)func+hdr->defsize);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* AMX_REGISTER || AMX_EXEC || AMX_INIT */
|
||||
|
||||
#if defined AMX_NATIVEINFO
|
||||
@ -2767,25 +2728,16 @@ static void *amx_opcodelist_nodebug[] = {
|
||||
#endif
|
||||
#elif defined __GNUC__
|
||||
/* force "cdecl" by adding an "attribute" to the declaration */
|
||||
#if defined __cplusplus
|
||||
extern "C" cell amx_exec_asm(cell *regs,cell *retval,cell stp,cell hea) __attribute__((cdecl));
|
||||
#else
|
||||
extern cell amx_exec_asm(cell *regs,cell *retval,cell stp,cell hea) __attribute__((cdecl));
|
||||
#endif
|
||||
#else
|
||||
/* force "cdecl" by specifying it as a "function class" with the "__cdecl" keyword */
|
||||
extern "C" cell __cdecl amx_exec_asm(cell *regs,cell *retval,cell stp,cell hea);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined ASM32 || defined JIT
|
||||
#if defined WIN32 || defined __cplusplus
|
||||
extern "C" void *amx_opcodelist[];
|
||||
extern "C" void *amx_opcodelist_nodebug[];
|
||||
#else
|
||||
extern void *amx_opcodelist[];
|
||||
extern void *amx_opcodelist_nodebug[];
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int AMXAPI amx_Exec(AMX *amx, cell *retval, int index, int numparams, ...)
|
||||
|
@ -217,9 +217,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
/* The AMX_HEADER structure is both the memory format as the file format. The
|
||||
@ -293,7 +295,6 @@ enum {
|
||||
#define AMX_FLAG_COMPACT 0x04 /* compact encoding */
|
||||
#define AMX_FLAG_BIGENDIAN 0x08 /* big endian encoding */
|
||||
#define AMX_FLAG_NOCHECKS 0x10 /* no array bounds checking */
|
||||
#define AMX_FLAG_LINEOPS 0x20 /* line ops are parsed by the JIT [loadtime only flag] */
|
||||
#define AMX_FLAG_BROWSE 0x4000 /* browsing/relocating or executing */
|
||||
#define AMX_FLAG_RELOC 0x8000 /* jump/call addresses relocated */
|
||||
|
||||
@ -382,7 +383,7 @@ int AMXAPI amx_StrLen(cell *cstring, int *length);
|
||||
int AMXAPI amx_UTF8Get(const char *string, const char **endptr, cell *value);
|
||||
int AMXAPI amx_UTF8Put(char *string, char **endptr, int maxchars, cell value);
|
||||
int AMXAPI amx_UTF8Check(const char *string);
|
||||
void amx_NullNativeTable(AMX *amx);
|
||||
|
||||
|
||||
#if !defined AMX_NO_ALIGN
|
||||
#if defined __linux__
|
||||
|
2102
amxmodx/amxexecn.asm
2102
amxmodx/amxexecn.asm
File diff suppressed because it is too large
Load Diff
@ -70,8 +70,8 @@ static cell AMX_NATIVE_CALL emit_sound(AMX *amx, cell *params) /* 7 param */
|
||||
|
||||
int len;
|
||||
char* szSample = get_amxstring(amx,params[3],0,len);
|
||||
REAL vol = amx_ctof(params[4]);
|
||||
REAL att = amx_ctof(params[5]);
|
||||
float vol = *(REAL *)((void *)¶ms[4]);
|
||||
float att = *(REAL *)((void *)¶ms[5]);
|
||||
int channel = params[2];
|
||||
int pitch = params[7];
|
||||
int flags = params[6];
|
||||
@ -273,13 +273,13 @@ static cell AMX_NATIVE_CALL set_hudmessage(AMX *amx, cell *params) /* 11 param
|
||||
g_hudset.r1 = params[1];
|
||||
g_hudset.g1 = params[2];
|
||||
g_hudset.b1 = params[3];
|
||||
g_hudset.x = amx_ctof(params[4]);
|
||||
g_hudset.y = amx_ctof(params[5]);
|
||||
g_hudset.x = *(REAL *)((void *)¶ms[4]);
|
||||
g_hudset.y = *(REAL *)((void *)¶ms[5]);
|
||||
g_hudset.effect = params[6];
|
||||
g_hudset.fxTime = amx_ctof(params[7]);
|
||||
g_hudset.holdTime = amx_ctof(params[8]);
|
||||
g_hudset.fadeinTime = amx_ctof(params[9]);
|
||||
g_hudset.fadeoutTime = amx_ctof(params[10]);
|
||||
g_hudset.fxTime = *(REAL *)((void *)¶ms[7]);
|
||||
g_hudset.holdTime = *(REAL *)((void *)¶ms[8]);
|
||||
g_hudset.fadeinTime = *(REAL *)((void *)¶ms[9]);
|
||||
g_hudset.fadeoutTime = *(REAL *)((void *)¶ms[10]);
|
||||
g_hudset.channel = params[11];
|
||||
return 1;
|
||||
}
|
||||
@ -1159,13 +1159,13 @@ static cell AMX_NATIVE_CALL get_cvar_float(AMX *amx, cell *params) /* 1 param */
|
||||
{
|
||||
int ilen;
|
||||
REAL pFloat = CVAR_GET_FLOAT(get_amxstring(amx,params[1],0,ilen));
|
||||
return amx_ftoc(pFloat);
|
||||
return *(cell*)((void *)&pFloat);
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL set_cvar_float(AMX *amx, cell *params) /* 2 param */
|
||||
{
|
||||
int ilen;
|
||||
CVAR_SET_FLOAT(get_amxstring(amx,params[1],0,ilen), amx_ctof(params[2]));
|
||||
CVAR_SET_FLOAT(get_amxstring(amx,params[1],0,ilen),*(REAL *)((void *)¶ms[2]));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1584,7 +1584,7 @@ static cell AMX_NATIVE_CALL get_maxplayers(AMX *amx, cell *params)
|
||||
static cell AMX_NATIVE_CALL get_gametime(AMX *amx, cell *params)
|
||||
{
|
||||
REAL pFloat = gpGlobals->time;
|
||||
return amx_ftoc(pFloat);
|
||||
return *(cell*)((void *)&pFloat);
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL get_mapname(AMX *amx, cell *params) /* 2 param */
|
||||
@ -1689,7 +1689,7 @@ static cell AMX_NATIVE_CALL set_task(AMX *amx, cell *params) /* 2 param */
|
||||
return 0;
|
||||
}
|
||||
|
||||
float base = amx_ctof(params[1]);
|
||||
float base = *(REAL *)((void *)¶ms[1]);
|
||||
|
||||
if ( base < 0.1 )
|
||||
base = 0.1;
|
||||
@ -1732,7 +1732,7 @@ static cell AMX_NATIVE_CALL register_cvar(AMX *amx, cell *params) /* 3 param */
|
||||
{
|
||||
CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx);
|
||||
CCVar* cvar = new CCVar( temp , plugin->getName() , params[3] ,
|
||||
amx_ctof(params[4]) );
|
||||
*(REAL *)((void *)¶ms[4]) );
|
||||
|
||||
if ( cvar == 0 )
|
||||
return 0;
|
||||
@ -2015,10 +2015,10 @@ static cell AMX_NATIVE_CALL get_distance(AMX *amx, cell *params) /* 2 param */
|
||||
|
||||
static cell AMX_NATIVE_CALL random_float(AMX *amx, cell *params) /* 2 param */
|
||||
{
|
||||
float one = amx_ctof(params[1]);
|
||||
float two = amx_ctof(params[2]);
|
||||
float one = *(REAL *)((void *)¶ms[1]);
|
||||
float two = *(REAL *)((void *)¶ms[2]);
|
||||
REAL fRnd = RANDOM_FLOAT(one,two);
|
||||
return amx_ftoc(fRnd);
|
||||
return *(cell*)((void *)&fRnd);
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL random_num(AMX *amx, cell *params) /* 2 param */
|
||||
@ -2257,7 +2257,7 @@ static cell AMX_NATIVE_CALL is_module_loaded(AMX *amx, cell *params)
|
||||
int len;
|
||||
char *name = get_amxstring(amx, params[1], 0, len);
|
||||
int id = 0;
|
||||
for (CList<CModule,const char *>::iterator iter = g_modules.begin(); iter; ++iter)
|
||||
for (CList<CModule>::iterator iter = g_modules.begin(); iter; ++iter)
|
||||
{
|
||||
if (stricmp((*iter).getName(), name) == 0)
|
||||
return id;
|
||||
@ -2290,7 +2290,7 @@ static cell AMX_NATIVE_CALL get_modulesnum(AMX *amx, cell *params)
|
||||
// native get_module(id, name[], nameLen, author[], authorLen, version[], versionLen, &status);
|
||||
static cell AMX_NATIVE_CALL get_module(AMX *amx, cell *params)
|
||||
{
|
||||
CList<CModule,const char *>::iterator moduleIter;
|
||||
CList<CModule>::iterator moduleIter;
|
||||
|
||||
// find the module
|
||||
int i = params[1];
|
||||
@ -2473,7 +2473,7 @@ static cell AMX_NATIVE_CALL callfunc_end(AMX *amx, cell *params)
|
||||
|
||||
// native callfunc_push_int(value);
|
||||
// native callfunc_push_float(Float: value);
|
||||
static cell AMX_NATIVE_CALL callfunc_push_byval(AMX *amx, cell *params)
|
||||
static cell callfunc_push_byval(AMX *amx, cell *params)
|
||||
{
|
||||
CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx);
|
||||
if (!g_CallFunc_Plugin)
|
||||
@ -2499,7 +2499,7 @@ static cell AMX_NATIVE_CALL callfunc_push_byval(AMX *amx, cell *params)
|
||||
|
||||
// native callfunc_push_intref(&value);
|
||||
// native callfunc_push_floatref(Float: &value);
|
||||
static cell AMX_NATIVE_CALL callfunc_push_byref(AMX *amx, cell *params)
|
||||
static cell callfunc_push_byref(AMX *amx, cell *params)
|
||||
{
|
||||
CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx);
|
||||
if (!g_CallFunc_Plugin)
|
||||
@ -2557,7 +2557,7 @@ static cell AMX_NATIVE_CALL callfunc_push_byref(AMX *amx, cell *params)
|
||||
}
|
||||
|
||||
// native callfunc_push_str(value[]);
|
||||
static cell AMX_NATIVE_CALL callfunc_push_str(AMX *amx, cell *params)
|
||||
static cell callfunc_push_str(AMX *amx, cell *params)
|
||||
{
|
||||
CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx);
|
||||
if (!g_CallFunc_Plugin)
|
||||
@ -2618,20 +2618,20 @@ static cell AMX_NATIVE_CALL callfunc_push_str(AMX *amx, cell *params)
|
||||
}
|
||||
|
||||
// get_langsnum();
|
||||
static cell AMX_NATIVE_CALL get_langsnum(AMX *amx, cell *params)
|
||||
static cell get_langsnum(AMX *amx, cell *params)
|
||||
{
|
||||
return g_langMngr.GetLangsNum();
|
||||
}
|
||||
|
||||
// get_lang(id, name[(at least 3)]);
|
||||
static cell AMX_NATIVE_CALL get_lang(AMX *amx, cell *params)
|
||||
static cell get_lang(AMX *amx, cell *params)
|
||||
{
|
||||
set_amxstring(amx, params[2], g_langMngr.GetLangName(params[1]), 2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// register_dictionary(const filename[]);
|
||||
static cell AMX_NATIVE_CALL register_dictionary(AMX *amx, cell *params)
|
||||
static cell register_dictionary(AMX *amx, cell *params)
|
||||
{
|
||||
int len;
|
||||
int result = g_langMngr.MergeDefinitionFile(build_pathname("%s/lang/%s",
|
||||
@ -2639,33 +2639,13 @@ static cell AMX_NATIVE_CALL register_dictionary(AMX *amx, cell *params)
|
||||
return result;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL plugin_flags(AMX *amx, cell *params)
|
||||
{
|
||||
AMX_HEADER *hdr;
|
||||
hdr = (AMX_HEADER *)amx->base;
|
||||
return hdr->flags;
|
||||
}
|
||||
|
||||
// lang_exists(const name[]);
|
||||
static cell AMX_NATIVE_CALL lang_exists(AMX *amx, cell *params)
|
||||
static cell lang_exists(AMX *amx, cell *params)
|
||||
{
|
||||
int len = 0;
|
||||
return g_langMngr.LangExists(get_amxstring(amx, params[1], 1, len)) ? 1 : 0;
|
||||
}
|
||||
|
||||
cell AMX_NATIVE_CALL require_module(AMX *amx, cell *params)
|
||||
{
|
||||
int len = 0;
|
||||
|
||||
String s;
|
||||
|
||||
s.assign(get_amxstring(amx, params[1], 0, len));
|
||||
|
||||
CurModuleList.push(s);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
AMX_NATIVE_INFO amxmod_Natives[] = {
|
||||
{ "client_cmd", client_cmd },
|
||||
{ "client_print", client_print },
|
||||
@ -2765,7 +2745,6 @@ AMX_NATIVE_INFO amxmod_Natives[] = {
|
||||
{ "register_logevent",register_logevent},
|
||||
{ "register_menucmd", register_menucmd },
|
||||
{ "register_menuid", register_menuid },
|
||||
{ "require_module", require_module },
|
||||
{ "register_plugin", register_plugin },
|
||||
{ "register_srvcmd", register_srvcmd },
|
||||
{ "remove_cvar_flags", remove_cvar_flags },
|
||||
@ -2823,6 +2802,5 @@ AMX_NATIVE_INFO amxmod_Natives[] = {
|
||||
{ "lang_exists", lang_exists },
|
||||
{ "md5", amx_md5 },
|
||||
{ "md5_file", amx_md5_file },
|
||||
{ "plugin_flags", plugin_flags},
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
@ -140,7 +140,7 @@ extern CList<CCVar> g_cvars;
|
||||
extern CList<ForceObject> g_forcemodels;
|
||||
extern CList<ForceObject> g_forcesounds;
|
||||
extern CList<ForceObject> g_forcegeneric;
|
||||
extern CList<CModule,const char *> g_modules;
|
||||
extern CList<CModule> g_modules;
|
||||
extern CList<CPlayer*> g_auth;
|
||||
extern EventsMngr g_events;
|
||||
extern Grenades g_grenades;
|
||||
@ -157,6 +157,7 @@ extern XVars g_xvars;
|
||||
extern bool g_bmod_cstrike;
|
||||
extern bool g_bmod_dod;
|
||||
extern bool g_dontprecache;
|
||||
extern bool g_initialized;
|
||||
extern int g_srvindex;
|
||||
extern cvar_t* amxmodx_version;
|
||||
extern cvar_t* hostname;
|
||||
@ -242,7 +243,7 @@ AMX* get_amxscript(int, void**,const char**);
|
||||
const char* get_amxscriptname(AMX* amx);
|
||||
char* get_amxstring(AMX *amx,cell amx_addr,int id,int& len);
|
||||
int amxstring_len(cell* cstr);
|
||||
int load_amxscript(AMX* amx, void** program, const char* path, char error[64], int debug);
|
||||
int load_amxscript(AMX* amx, void** program, const char* path, char error[64]);
|
||||
int set_amxnatives(AMX* amx,char error[64]);
|
||||
int set_amxstring(AMX *amx,cell amx_addr,const char *source,int max);
|
||||
int unload_amxscript(AMX* amx,void** program);
|
||||
@ -254,7 +255,6 @@ void* alloc_amxmemory(void**, int size);
|
||||
void free_amxmemory(void **ptr);
|
||||
// get_localinfo
|
||||
const char* get_localinfo( const char* name , const char* def );
|
||||
cell AMX_NATIVE_CALL require_module(AMX *amx, cell *params);
|
||||
|
||||
enum ModuleCallReason
|
||||
{
|
||||
@ -267,7 +267,6 @@ enum ModuleCallReason
|
||||
extern ModuleCallReason g_ModuleCallReason; // modules.cpp
|
||||
extern CModule *g_CurrentlyCalledModule; // modules.cpp
|
||||
extern const char *g_LastRequestedFunc; // modules.cpp
|
||||
extern CQueue<String> CurModuleList;
|
||||
|
||||
void *Module_ReqFnptr(const char *funcName); // modules.cpp
|
||||
|
||||
|
@ -40,10 +40,6 @@
|
||||
#endif
|
||||
#include "amxmodx.h"
|
||||
|
||||
#ifndef __linux__
|
||||
#define vsnprintf _vsnprintf
|
||||
#endif
|
||||
|
||||
CLog::CLog()
|
||||
{
|
||||
m_LogType = 0;
|
||||
@ -162,7 +158,7 @@ void CLog::Log(const char *fmt, ...)
|
||||
|
||||
va_list arglst;
|
||||
va_start(arglst, fmt);
|
||||
vsnprintf(msg, 3071, fmt, arglst);
|
||||
vsprintf(msg, fmt, arglst);
|
||||
va_end(arglst);
|
||||
|
||||
FILE *pF;
|
||||
@ -207,7 +203,7 @@ void CLog::Log(const char *fmt, ...)
|
||||
char msg[3072];
|
||||
va_list arglst;
|
||||
va_start(arglst, fmt);
|
||||
vsnprintf(msg, 3071, fmt, arglst);
|
||||
vsprintf(msg, fmt, arglst);
|
||||
va_end(arglst);
|
||||
ALERT(at_logged, "%s\n", msg);
|
||||
}
|
||||
|
@ -57,7 +57,6 @@ void (*function)(void*);
|
||||
void (*endfunction)(void*);
|
||||
|
||||
CLog g_log;
|
||||
CQueue<String> CurModuleList;
|
||||
CForwardMngr g_forwards;
|
||||
CList<CPlayer*> g_auth;
|
||||
CList<CCVar> g_cvars;
|
||||
@ -82,6 +81,7 @@ bool g_bmod_dod;
|
||||
bool g_dontprecache;
|
||||
bool g_forcedmodules;
|
||||
bool g_forcedsounds;
|
||||
bool g_initialized;
|
||||
fakecmd_t g_fakecmd;
|
||||
float g_game_restarting;
|
||||
float g_game_timeleft;
|
||||
@ -105,7 +105,6 @@ int g_srvindex;
|
||||
|
||||
cvar_t init_amxmodx_version = {"amxmodx_version", "", FCVAR_SERVER | FCVAR_SPONLY};
|
||||
cvar_t init_amxmodx_modules = {"amxmodx_modules", "", FCVAR_SPONLY};
|
||||
cvar_t init_amxmodx_debug = {"amx_debug", "", FCVAR_SPONLY};
|
||||
cvar_t* amxmodx_version = NULL;
|
||||
cvar_t* amxmodx_modules = NULL;
|
||||
cvar_t* hostname = NULL;
|
||||
@ -200,6 +199,10 @@ const char* get_localinfo( const char* name , const char* def )
|
||||
// Initialize AMX stuff and load it's plugins from plugins.ini list
|
||||
// Call precache forward function from plugins
|
||||
int C_Spawn( edict_t *pent ) {
|
||||
|
||||
if ( g_initialized ) RETURN_META_VALUE(MRES_IGNORED, 0);
|
||||
|
||||
g_initialized = true;
|
||||
g_forcedmodules = false;
|
||||
g_forcedsounds = false;
|
||||
|
||||
@ -208,7 +211,6 @@ int C_Spawn( edict_t *pent ) {
|
||||
hostname = CVAR_GET_POINTER("hostname");
|
||||
mp_timelimit = CVAR_GET_POINTER("mp_timelimit");
|
||||
|
||||
g_forwards.clear();
|
||||
|
||||
g_log.MapChange();
|
||||
|
||||
@ -297,9 +299,6 @@ int C_Spawn( edict_t *pent ) {
|
||||
}
|
||||
|
||||
|
||||
// HACKHACK:
|
||||
// Make sure this function wont be called anymore
|
||||
g_FakeMeta.m_Plugins.begin()->GetDllFuncTable().pfnSpawn = NULL;
|
||||
RETURN_META_VALUE(MRES_IGNORED, 0);
|
||||
}
|
||||
|
||||
@ -441,12 +440,10 @@ void C_ServerDeactivate() {
|
||||
// However leave AMX modules which are loaded only once
|
||||
void C_ServerDeactivate_Post() {
|
||||
|
||||
// HACKHACK:
|
||||
// Make sure the spawn function will be called again
|
||||
// pft that's not really a hack
|
||||
g_FakeMeta.m_Plugins.begin()->GetDllFuncTable().pfnSpawn = C_Spawn;
|
||||
g_initialized = false;
|
||||
|
||||
detachReloadModules();
|
||||
|
||||
g_auth.clear();
|
||||
g_forwards.clear();
|
||||
g_commands.clear();
|
||||
@ -464,13 +461,6 @@ void C_ServerDeactivate_Post() {
|
||||
g_langMngr.Save(build_pathname("%s/languages.dat", get_localinfo("amxx_datadir", "addons/amxmodx/data")));
|
||||
g_langMngr.SaveCache(build_pathname("%s/dictionary.cache", get_localinfo("amxx_datadir", "addons/amxmodx/data")));
|
||||
g_langMngr.Clear();
|
||||
|
||||
//clear module name cache
|
||||
while (!CurModuleList.empty())
|
||||
{
|
||||
CurModuleList.pop();
|
||||
}
|
||||
|
||||
// last memreport
|
||||
#ifdef MEMORY_TEST
|
||||
if (g_memreport_enabled)
|
||||
@ -1040,7 +1030,6 @@ C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, m
|
||||
gpGamedllFuncs=pGamedllFuncs;
|
||||
CVAR_REGISTER(&init_amxmodx_version);
|
||||
CVAR_REGISTER(&init_amxmodx_modules);
|
||||
CVAR_REGISTER(&init_amxmodx_debug);
|
||||
amxmodx_version = CVAR_GET_POINTER(init_amxmodx_version.name);
|
||||
REG_SVR_COMMAND("amxx",amx_command);
|
||||
|
||||
@ -1238,6 +1227,15 @@ C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *inte
|
||||
meta_engfuncs.pfnChangeLevel = C_ChangeLevel;
|
||||
|
||||
return g_FakeMeta.GetEngineFunctions(pengfuncsFromEngine, interfaceVersion, &meta_engfuncs);
|
||||
/*
|
||||
if(*interfaceVersion!=ENGINE_INTERFACE_VERSION) {
|
||||
LOG_ERROR(PLID, "GetEngineFunctions version mismatch; requested=%d ours=%d", *interfaceVersion, ENGINE_INTERFACE_VERSION);
|
||||
*interfaceVersion = ENGINE_INTERFACE_VERSION;
|
||||
return(FALSE);
|
||||
}
|
||||
memcpy(pengfuncsFromEngine, &meta_engfuncs, sizeof(enginefuncs_t));
|
||||
return(TRUE);
|
||||
*/
|
||||
}
|
||||
|
||||
enginefuncs_t meta_engfuncs_post;
|
||||
@ -1280,6 +1278,15 @@ C_DLLEXPORT int GetEngineFunctions_Post(enginefuncs_t *pengfuncsFromEngine, int
|
||||
++iter;
|
||||
}
|
||||
return g_FakeMeta.GetEngineFunctions_Post(pengfuncsFromEngine, interfaceVersion, &meta_engfuncs_post);
|
||||
/*
|
||||
if(*interfaceVersion!=ENGINE_INTERFACE_VERSION) {
|
||||
LOG_ERROR(PLID, "GetEngineFunctions_Post version mismatch; requested=%d ours=%d", *interfaceVersion, ENGINE_INTERFACE_VERSION);
|
||||
*interfaceVersion = ENGINE_INTERFACE_VERSION;
|
||||
return(FALSE);
|
||||
}
|
||||
memcpy(pengfuncsFromEngine, &meta_engfuncs_post, sizeof(enginefuncs_t));
|
||||
return(TRUE);
|
||||
*/
|
||||
}
|
||||
|
||||
NEW_DLL_FUNCTIONS gNewDLLFunctionTable;
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include "CFile.h"
|
||||
#include "amxxfile.h"
|
||||
|
||||
CList<CModule,const char*> g_modules;
|
||||
CList<CModule> g_modules;
|
||||
CList<CScript,AMX*> g_loadedscripts;
|
||||
|
||||
CModule *g_CurrentlyCalledModule = NULL; // The module we are in at the moment; NULL otherwise
|
||||
@ -44,6 +44,7 @@ ModuleCallReason g_ModuleCallReason;
|
||||
|
||||
extern const char* no_function; // stupid work around
|
||||
|
||||
|
||||
void report_error( int code, char* fmt, ... )
|
||||
{
|
||||
va_list argptr;
|
||||
@ -87,7 +88,7 @@ void free_amxmemory(void **ptr)
|
||||
*ptr = 0;
|
||||
}
|
||||
|
||||
int load_amxscript(AMX *amx, void **program, const char *filename, char error[64], int debug)
|
||||
int load_amxscript(AMX *amx, void **program, const char *filename, char error[64])
|
||||
{
|
||||
*error = 0;
|
||||
CAmxxReader reader(filename, SMALL_CELL_SIZE / 8);
|
||||
@ -148,14 +149,6 @@ int load_amxscript(AMX *amx, void **program, const char *filename, char error[64
|
||||
return (amx->error = AMX_ERR_FORMAT);
|
||||
}
|
||||
|
||||
#ifdef JIT
|
||||
if ( ((int)CVAR_GET_FLOAT("amx_debug") == 2 || (debug && (int)CVAR_GET_FLOAT("amx_debug"))) )
|
||||
{
|
||||
//automatic debug mode
|
||||
hdr->flags |= AMX_FLAG_LINEOPS;
|
||||
}
|
||||
#endif
|
||||
|
||||
int err;
|
||||
memset(amx, 0, sizeof(*amx));
|
||||
if ((err = amx_Init( amx, *program )) != AMX_ERR_NONE)
|
||||
@ -164,6 +157,7 @@ int load_amxscript(AMX *amx, void **program, const char *filename, char error[64
|
||||
return (amx->error = AMX_ERR_INIT);
|
||||
}
|
||||
|
||||
|
||||
#ifdef JIT
|
||||
void *np = new char[ amx->code_size ];
|
||||
void *rt = new char[ amx->reloc_size ];
|
||||
@ -213,96 +207,9 @@ int load_amxscript(AMX *amx, void **program, const char *filename, char error[64
|
||||
return set_amxnatives(amx,error);
|
||||
}
|
||||
|
||||
const char *StrCaseStr(const char *as, const char *bs)
|
||||
{
|
||||
static char a[256];
|
||||
static char b[256];
|
||||
unsigned int i = 0;
|
||||
unsigned int len = strlen(as);
|
||||
|
||||
if (len > 254)
|
||||
len = 254;
|
||||
|
||||
for (i=0; i<len; i++)
|
||||
{
|
||||
a[i] = tolower(as[i]);
|
||||
}
|
||||
a[len] = 0;
|
||||
|
||||
len = strlen(bs);
|
||||
|
||||
if (len > 254)
|
||||
len = 254;
|
||||
|
||||
for (i=0; i<len; i++)
|
||||
{
|
||||
b[i] = tolower(bs[i]);
|
||||
}
|
||||
b[len] = 0;
|
||||
|
||||
return strstr(a,b);
|
||||
}
|
||||
|
||||
//BAILOPAN
|
||||
int CheckModules(AMX *amx, char error[64])
|
||||
{
|
||||
int idx = 0, flag = -1;
|
||||
if (amx_FindPublic(amx, "plugin_modules", &idx) == AMX_ERR_NONE)
|
||||
{
|
||||
cell retVal = 0;
|
||||
int err = 0;
|
||||
if ( (err = amx_Exec(amx, &retVal, idx, 0)) == AMX_ERR_NONE )
|
||||
{
|
||||
unsigned int i = 0;
|
||||
while (!CurModuleList.empty())
|
||||
{
|
||||
if (!flag)
|
||||
{
|
||||
CurModuleList.pop();
|
||||
continue;
|
||||
}
|
||||
//assume module is not found
|
||||
flag = 0;
|
||||
for (CList<CModule,const char *>::iterator pMod = g_modules.begin(); pMod; ++pMod)
|
||||
{
|
||||
if (strcmpi(CurModuleList.front().c_str(), "dbi") == 0)
|
||||
{
|
||||
if (StrCaseStr( (*pMod).getName(), "sql") || strstr( (*pMod).getName(), "dbi" ))
|
||||
{
|
||||
// the module checks in
|
||||
flag = 1;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (strcmpi( (*pMod).getName(), CurModuleList.front().c_str() ) == 0)
|
||||
{
|
||||
flag = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//module was not found
|
||||
if (!flag)
|
||||
{
|
||||
sprintf(error, "Module \"%s\" required for plugin. Check modules.ini.", CurModuleList.front().c_str());
|
||||
}
|
||||
CurModuleList.pop();
|
||||
}
|
||||
} else {
|
||||
AMXXLOG_Log("[AMXX] Run time error %d on line %ld during module check.", err, amx->curline);
|
||||
//could not execute
|
||||
return -1; //bad! very bad!
|
||||
}
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
int set_amxnatives(AMX* amx,char error[64])
|
||||
{
|
||||
for ( CList<CModule,const char *>::iterator a = g_modules.begin(); a ; ++a )
|
||||
for ( CList<CModule>::iterator a = g_modules.begin(); a ; ++a )
|
||||
{
|
||||
for( CList<AMX_NATIVE_INFO*>::iterator cc =
|
||||
(*a).m_Natives.begin(); cc; ++cc )
|
||||
@ -319,29 +226,14 @@ int set_amxnatives(AMX* amx,char error[64])
|
||||
|
||||
if ( amx_Register(amx, core_Natives, -1) != AMX_ERR_NONE )
|
||||
{
|
||||
//HACKHACK - if we get here, nullify the plugin's native table
|
||||
//then reregister the one native we need
|
||||
// - BAILOPAN
|
||||
String save;
|
||||
save.assign(no_function);
|
||||
amx_NullNativeTable(amx);
|
||||
AMX_NATIVE_INFO p[] = {
|
||||
{ "require_module", require_module },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
amx_Register(amx, p, -1);
|
||||
if (CheckModules(amx, error) == -1 || *error == 0)
|
||||
{
|
||||
sprintf(error,"Plugin uses an unknown function (name \"%s\") - check your modules.ini.",save.c_str());
|
||||
}
|
||||
sprintf(error,"Function not found (name \"%s\")",no_function);
|
||||
return (amx->error = AMX_ERR_NATIVE);
|
||||
}
|
||||
|
||||
CheckModules(amx, error);
|
||||
|
||||
return AMX_ERR_NONE;
|
||||
}
|
||||
|
||||
|
||||
int unload_amxscript(AMX* amx, void** program)
|
||||
{
|
||||
CList<CScript,AMX*>::iterator a = g_loadedscripts.find( amx );
|
||||
@ -440,7 +332,7 @@ char* build_pathname_addons(char *fmt, ... )
|
||||
|
||||
int add_amxnatives(module_info_s* info,AMX_NATIVE_INFO*natives)
|
||||
{
|
||||
CList<CModule,const char *>::iterator a = g_modules.begin();
|
||||
CList<CModule>::iterator a = g_modules.begin();
|
||||
|
||||
while ( a )
|
||||
{
|
||||
@ -472,109 +364,9 @@ bool validFile(const char* file)
|
||||
#endif
|
||||
}
|
||||
|
||||
void ConvertModuleName(const char *pathString, String &path)
|
||||
{
|
||||
#if SMALL_CELL_SIZE==64
|
||||
char *ptr = strstr(pathString, "i386");
|
||||
if (ptr)
|
||||
{
|
||||
//attempt to fix the binary name
|
||||
*ptr = 0;
|
||||
path.assign(pathString);
|
||||
path.append("amd64.so");
|
||||
} else {
|
||||
ptr = strstr(pathString, ".dll");
|
||||
if (ptr)
|
||||
{
|
||||
*ptr = 0;
|
||||
path.assign(pathString);
|
||||
path.append("_amd64.so");
|
||||
} else {
|
||||
ptr = strstr(pathString, ".so");
|
||||
if (ptr)
|
||||
{
|
||||
path.assign(pathString);
|
||||
} else {
|
||||
//no extension at all
|
||||
path.assign(pathString);
|
||||
path.append("_amd64.so");
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#ifdef __linux__
|
||||
char *ptr = strstr(pathString, "amd64");
|
||||
if (ptr)
|
||||
{
|
||||
//attempt to fix the binary name
|
||||
*ptr = 0;
|
||||
path.assign(pathString);
|
||||
path.append("i386.so");
|
||||
} else {
|
||||
ptr = strstr(pathString, ".dll");
|
||||
if (ptr)
|
||||
{
|
||||
*ptr = 0;
|
||||
path.assign(pathString);
|
||||
path.append("_i386.so");
|
||||
} else {
|
||||
//check to see if this file even has an extension
|
||||
ptr = strstr(pathString, ".so");
|
||||
if (ptr)
|
||||
{
|
||||
path.assign(pathString);
|
||||
} else {
|
||||
path.assign(pathString);
|
||||
path.append("_i386.so");
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
char *ptr = strstr(pathString, ".dll");
|
||||
if (ptr)
|
||||
{
|
||||
path.assign(pathString);
|
||||
} else {
|
||||
//prevent this from loading .so too
|
||||
ptr = strstr(pathString, ".so");
|
||||
if (ptr)
|
||||
{
|
||||
int i = 0, len = strlen(pathString), c = -1;
|
||||
for (i=len-1; i>=0; i--)
|
||||
{
|
||||
//cut off at first _
|
||||
if (pathString[i] == '_')
|
||||
{
|
||||
//make sure this is a valid _
|
||||
if (i == len-1 || strncmp(&(pathString[i+1]), "amxx", 4) == 0)
|
||||
break;
|
||||
c = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
*ptr = 0;
|
||||
if (c == -1)
|
||||
{
|
||||
path.assign(pathString);
|
||||
path.append(".dll");
|
||||
} else {
|
||||
ptr = (char *)&(pathString[c]);
|
||||
*ptr = 0;
|
||||
path.assign(pathString);
|
||||
path.append(".dll");
|
||||
}
|
||||
} else {
|
||||
path.assign(pathString);
|
||||
path.append(".dll");
|
||||
}
|
||||
}
|
||||
#endif //__linux__
|
||||
#endif //SMALL_CELL_SIZE==64
|
||||
}
|
||||
|
||||
int loadModules(const char* filename)
|
||||
{
|
||||
FILE *fp = fopen(build_pathname("%s",filename), "rt");
|
||||
File fp( build_pathname("%s",filename), "r" );
|
||||
|
||||
if ( !fp )
|
||||
{
|
||||
@ -582,40 +374,23 @@ int loadModules(const char* filename)
|
||||
return 0;
|
||||
}
|
||||
|
||||
char moduleName[256];
|
||||
char pathString[512];
|
||||
String line;
|
||||
char line[256], moduleName[256];
|
||||
int loaded = 0;
|
||||
|
||||
String path;
|
||||
|
||||
while (!feof(fp))
|
||||
while ( fp.getline( line , 255 ) )
|
||||
{
|
||||
if (!line._fread(fp) || line.size() < 1)
|
||||
continue;
|
||||
line.trim();
|
||||
*moduleName = 0;
|
||||
if (sscanf(line.c_str(),"%s",moduleName) == EOF)
|
||||
continue;
|
||||
if (moduleName[0] == ';')
|
||||
sscanf(line,"%s",moduleName);
|
||||
if (!isalnum(*moduleName) || !validFile(moduleName) )
|
||||
continue;
|
||||
|
||||
char* pathname = build_pathname("%s/%s", get_localinfo("amxx_modulesdir", "addons/amxmodx/modules"), line);
|
||||
|
||||
char* pathname = build_pathname("%s/%s", get_localinfo("amxx_modulesdir", "addons/amxmodx/modules"), moduleName);
|
||||
strcpy(pathString, pathname);
|
||||
|
||||
path.assign("");
|
||||
|
||||
ConvertModuleName(pathString, path);
|
||||
|
||||
if (!validFile(path.c_str()))
|
||||
continue;
|
||||
|
||||
CList<CModule,const char *>::iterator a = g_modules.find( path.c_str() );
|
||||
CList<CModule>::iterator a = g_modules.find( pathname );
|
||||
|
||||
if ( a ) continue; // already loaded
|
||||
|
||||
CModule* cc = new CModule( path.c_str() );
|
||||
CModule* cc = new CModule( pathname );
|
||||
|
||||
if ( cc == 0 ) return loaded;
|
||||
|
||||
@ -623,45 +398,42 @@ int loadModules(const char* filename)
|
||||
|
||||
switch( cc->getStatusValue() ) {
|
||||
case MODULE_BADLOAD:
|
||||
report_error( 1 , "[AMXX] Module is not a valid library (file \"%s\")", path.c_str());
|
||||
report_error( 1 , "[AMXX] Module is not a valid library (file \"%s\")",pathname );
|
||||
break;
|
||||
case MODULE_NOINFO:
|
||||
report_error( 1 ,"[AMXX] Couldn't find info. about module (file \"%s\")", path.c_str());
|
||||
report_error( 1 ,"[AMXX] Couldn't find info. about module (file \"%s\")",pathname );
|
||||
break;
|
||||
case MODULE_NOQUERY:
|
||||
report_error( 1 , "[AMXX] Couldn't find \"AMX_Query\" or \"AMXX_Query\" (file \"%s\")", path.c_str());
|
||||
report_error( 1 , "[AMXX] Couldn't find \"AMX_Query\" or \"AMXX_Query\" (file \"%s\")", pathname );
|
||||
break;
|
||||
case MODULE_NOATTACH:
|
||||
report_error( 1 , "[AMXX] Couldn't find \"%s\" (file \"%s\")", cc->isAmxx() ? "AMXX_Attach" : "AMX_Attach", path.c_str());
|
||||
report_error( 1 , "[AMXX] Couldn't find \"%s\" (file \"%s\")", cc->isAmxx() ? "AMXX_Attach" : "AMX_Attach", pathname );
|
||||
break;
|
||||
case MODULE_OLD:
|
||||
report_error( 1 , "[AMXX] Module has a different interface version (file \"%s\")",path.c_str());
|
||||
report_error( 1 , "[AMXX] Module has a different interface version (file \"%s\")",pathname );
|
||||
break;
|
||||
case MODULE_NEWER:
|
||||
report_error(1, "[AMXX] Module has a newer interface version (file \"%s\"). Please download a new amxmodx.", path.c_str());
|
||||
report_error(1, "[AMXX] Module has a newer interface version (file \"%s\"). Please download a new amxmodx.", pathname);
|
||||
break;
|
||||
case MODULE_INTERROR:
|
||||
report_error(1, "[AMXX] Internal error during module load (file \"%s\")", path.c_str());
|
||||
report_error(1, "[AMXX] Internal error during module load (file \"%s\")", pathname);
|
||||
break;
|
||||
case MODULE_NOT64BIT:
|
||||
report_error(1, "[AMXX] Module \"%s\" is not 64 bit compatible.", path.c_str());
|
||||
report_error(1, "[AMXX] Module \"%s\" is not 64 bit compatible.", pathname);
|
||||
break;
|
||||
default:
|
||||
++loaded;
|
||||
}
|
||||
|
||||
g_modules.put( cc );
|
||||
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
|
||||
return loaded;
|
||||
}
|
||||
|
||||
void detachModules()
|
||||
{
|
||||
CList<CModule,const char *>::iterator a = g_modules.begin();
|
||||
CList<CModule>::iterator a = g_modules.begin();
|
||||
|
||||
while ( a )
|
||||
{
|
||||
@ -672,7 +444,7 @@ void detachModules()
|
||||
|
||||
void detachReloadModules()
|
||||
{
|
||||
CList<CModule,const char *>::iterator a = g_modules.begin();
|
||||
CList<CModule>::iterator a = g_modules.begin();
|
||||
|
||||
while ( a )
|
||||
{
|
||||
@ -690,7 +462,7 @@ void detachReloadModules()
|
||||
|
||||
void attachModules()
|
||||
{
|
||||
CList<CModule,const char *>::iterator a = g_modules.begin();
|
||||
CList<CModule>::iterator a = g_modules.begin();
|
||||
|
||||
while ( a )
|
||||
{
|
||||
@ -742,7 +514,6 @@ void attachMetaModModules(PLUG_LOADTIME now, const char* filename)
|
||||
}
|
||||
|
||||
char line[256], moduleName[256];
|
||||
String modPath, mmPath;
|
||||
DLHANDLE module;
|
||||
|
||||
while ( fp.getline( line , 255 ) )
|
||||
@ -750,34 +521,12 @@ void attachMetaModModules(PLUG_LOADTIME now, const char* filename)
|
||||
*moduleName = 0;
|
||||
sscanf(line,"%s",moduleName);
|
||||
|
||||
if (!isalnum(*moduleName))
|
||||
if (!isalnum(*moduleName) || !validFile(moduleName) )
|
||||
continue;
|
||||
|
||||
char* pathname = build_pathname("%s/%s", get_localinfo("amxx_modulesdir", "addons/amxmodx/modules"), line);
|
||||
char* mmpathname = build_pathname_addons("%s/%s", get_localinfo("amxx_modulesdir", "addons/amxmodx/modules"), line);
|
||||
|
||||
ConvertModuleName(pathname, modPath);
|
||||
ConvertModuleName(mmpathname, mmPath);
|
||||
|
||||
CList<CFakeMeta::CFakeMetaPlugin>::iterator iter = g_FakeMeta.m_Plugins.begin();
|
||||
|
||||
//prevent double loading
|
||||
int foundFlag = 0;
|
||||
|
||||
while (iter)
|
||||
{
|
||||
if ( strcmp( (*iter).GetPath(), mmPath.c_str() ) == 0 )
|
||||
{
|
||||
foundFlag = 1;
|
||||
break;
|
||||
}
|
||||
++iter;
|
||||
}
|
||||
|
||||
if (foundFlag)
|
||||
continue;
|
||||
|
||||
module = DLLOAD( modPath.c_str() ); // link dll
|
||||
char* pathname = build_pathname("%s/%s", get_localinfo("amxx_modulesdir", "addons/amxx/modules"), line);
|
||||
char* mmpathname = build_pathname_addons("%s/%s", get_localinfo("amxx_modulesdir", "addons/amxx/modules"), line);
|
||||
module = DLLOAD( pathname ); // link dll
|
||||
|
||||
if ( module )
|
||||
{
|
||||
@ -786,7 +535,7 @@ void attachMetaModModules(PLUG_LOADTIME now, const char* filename)
|
||||
|
||||
if ( a )
|
||||
{
|
||||
g_FakeMeta.AddPlugin(mmPath.c_str());
|
||||
g_FakeMeta.AddPlugin(mmpathname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -799,7 +548,7 @@ void attachMetaModModules(PLUG_LOADTIME now, const char* filename)
|
||||
// Get the number of running modules
|
||||
int countModules(CountModulesMode mode)
|
||||
{
|
||||
CList<CModule,const char *>::iterator iter;
|
||||
CList<CModule>::iterator iter;
|
||||
int num;
|
||||
switch (mode)
|
||||
{
|
||||
@ -832,7 +581,7 @@ int countModules(CountModulesMode mode)
|
||||
// Call all modules' AMXX_PluginsLoaded functions
|
||||
void modules_callPluginsLoaded()
|
||||
{
|
||||
CList<CModule,const char *>::iterator iter = g_modules.begin();
|
||||
CList<CModule>::iterator iter = g_modules.begin();
|
||||
while (iter)
|
||||
{
|
||||
(*iter).CallPluginsLoaded();
|
||||
@ -844,7 +593,7 @@ void modules_callPluginsLoaded()
|
||||
|
||||
int MNF_AddNatives(AMX_NATIVE_INFO* natives)
|
||||
{
|
||||
CList<CModule,const char *>::iterator a = g_modules.begin();
|
||||
CList<CModule>::iterator a = g_modules.begin();
|
||||
|
||||
if (!g_CurrentlyCalledModule || g_ModuleCallReason != ModuleCall_Attach)
|
||||
return FALSE; // may only be called from attach
|
||||
@ -1115,39 +864,6 @@ void MNF_MergeDefinitionFile(const char *file)
|
||||
g_langMngr.MergeDefinitionFile(file);
|
||||
}
|
||||
|
||||
edict_t* MNF_GetPlayerEdict(int id)
|
||||
{
|
||||
if (id < 1 || id > gpGlobals->maxClients)
|
||||
return NULL;
|
||||
return (GET_PLAYER_POINTER_I(id)->pEdict);
|
||||
}
|
||||
|
||||
const char *MNF_Format(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
const char *retVal = g_langMngr.FormatString(fmt, ap);
|
||||
va_end(ap);
|
||||
return retVal;
|
||||
}
|
||||
|
||||
#ifndef MEMORY_TEST
|
||||
void *MNF_Allocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, const unsigned int allocationType, const size_t reportedSize)
|
||||
{
|
||||
return malloc(reportedSize);
|
||||
}
|
||||
|
||||
void *MNF_Reallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, const unsigned int reallocationType, const size_t reportedSize, void *reportedAddress)
|
||||
{
|
||||
return realloc(reportedAddress, reportedSize);
|
||||
}
|
||||
|
||||
void MNF_Deallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, const unsigned int deallocationType, void *reportedAddress)
|
||||
{
|
||||
free(reportedAddress);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Fnptr Request function for the new interface
|
||||
const char *g_LastRequestedFunc = NULL;
|
||||
#define REGISTER_FUNC(name, func) { name, (void*)func },
|
||||
@ -1166,7 +882,6 @@ void *Module_ReqFnptr(const char *funcName)
|
||||
REGISTER_FUNC("GetModname", MNF_GetModname)
|
||||
REGISTER_FUNC("Log", MNF_Log)
|
||||
REGISTER_FUNC("MergeDefinitionFile", MNF_MergeDefinitionFile)
|
||||
REGISTER_FUNC("Format", MNF_Format)
|
||||
|
||||
// Amx scripts loading / unloading / managing
|
||||
REGISTER_FUNC("GetAmxScript", MNF_GetAmxScript)
|
||||
@ -1223,7 +938,6 @@ void *Module_ReqFnptr(const char *funcName)
|
||||
REGISTER_FUNC("IsPlayerHLTV", MNF_IsPlayerHLTV)
|
||||
REGISTER_FUNC("GetPlayerArmor", MNF_GetPlayerArmor)
|
||||
REGISTER_FUNC("GetPlayerHealth", MNF_GetPlayerHealth)
|
||||
REGISTER_FUNC("GetPlayerEdict", MNF_GetPlayerEdict)
|
||||
REGISTER_FUNC("CellToReal", MNF_CellToReal)
|
||||
REGISTER_FUNC("RealToCell", MNF_RealToCell)
|
||||
|
||||
@ -1231,10 +945,6 @@ void *Module_ReqFnptr(const char *funcName)
|
||||
REGISTER_FUNC("Allocator", m_allocator)
|
||||
REGISTER_FUNC("Deallocator", m_deallocator)
|
||||
REGISTER_FUNC("Reallocator", m_reallocator)
|
||||
#else
|
||||
REGISTER_FUNC("Allocator", MNF_Allocator)
|
||||
REGISTER_FUNC("Deallocator", MNF_Deallocator)
|
||||
REGISTER_FUNC("Reallocator", MNF_Reallocator)
|
||||
#endif // MEMORY_TEST
|
||||
|
||||
REGISTER_FUNC("Haha_HiddenStuff", MNF_HiddenStuff)
|
||||
|
@ -144,7 +144,7 @@ struct pfnmodule_engine_g {
|
||||
const char* (*pfnget_amxscriptname)(AMX* amx); // amx
|
||||
char* (*pfnget_amxstring)(AMX*,cell,int, int&); // amx, src, buffer (0-3), len
|
||||
void (*pfnget_modname)(char*); // modname
|
||||
int (*pfnload_amxscript)(AMX*, void**, const char*, char[64], int); // amx, code, path, error info
|
||||
int (*pfnload_amxscript)(AMX*, void**, const char*, char[64]); // amx, code, path, error info
|
||||
void (*pfnprint_console)(char*, ...); // format, ....
|
||||
void (*pfnreport_error)(int code, char*, ... );
|
||||
int (*pfnset_amxnatives)(AMX*,char[64]); // amx, error info
|
||||
|
@ -386,7 +386,7 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386"
|
||||
AdditionalDependencies="..\jit\jits.obj ..\zlib\zlib.lib"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib ..\jit\jits.lib ..\zlib\zlib.lib"
|
||||
OutputFile="jitrelease/amxmodx_mm.dll"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
|
@ -2480,8 +2480,6 @@ PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
PFN_FORMAT g_fn_Format;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2526,7 +2524,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
|
||||
REQFUNC("Log", g_fn_Log, PFN_LOG);
|
||||
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
|
||||
REQFUNC("Format", g_fn_Format, PFN_FORMAT);
|
||||
|
||||
// Amx scripts
|
||||
REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT);
|
||||
@ -2582,7 +2579,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2677,14 +2673,11 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
MF_AmxExecv(0, 0, 0, 0, 0);
|
||||
MF_AmxFindPublic(0, 0, 0);
|
||||
MF_AmxAllot(0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0);
|
||||
MF_UnloadAmxScript(0, 0);
|
||||
MF_RegisterSPForward(0, 0, 0, 0, 0, 0);
|
||||
MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0);
|
||||
MF_UnregisterSPForward(0);
|
||||
MF_GetPlayerFrags(0);
|
||||
MF_GetPlayerEdict(0);
|
||||
MF_Format("", 4, "str");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2801,7 +2794,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2814,7 +2807,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2828,7 +2821,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2840,7 +2833,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1944,12 +1946,6 @@ typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/);
|
||||
#ifdef USE_METAMOD
|
||||
typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#else
|
||||
typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#endif
|
||||
|
||||
typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
const unsigned int /*type*/, const size_t /*size*/);
|
||||
typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
@ -1961,7 +1957,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -1969,7 +1965,6 @@ typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*pa
|
||||
typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/);
|
||||
typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/);
|
||||
typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||
|
||||
extern PFN_ADD_NATIVES g_fn_AddNatives;
|
||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||
@ -2024,8 +2019,6 @@ extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
extern PFN_FORMAT g_fn_Format;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2075,8 +2068,6 @@ int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
edict_t* MF_GetPlayerEdict (int id) { }
|
||||
const char * MF_Format (const char *fmt, ...) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2132,8 +2123,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
|
||||
#define MF_Format g_fn_Format;
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2178,4 +2167,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -62,18 +62,6 @@ void amx_command(){
|
||||
++a;
|
||||
}
|
||||
|
||||
a = g_plugins.begin();
|
||||
|
||||
while (a)
|
||||
{
|
||||
if ( (*a).getStatusCode() == ps_bad_load )
|
||||
{
|
||||
//error
|
||||
print_srvconsole("Load fails: %s\n", (*a).getError());
|
||||
}
|
||||
++a;
|
||||
}
|
||||
|
||||
print_srvconsole( "%d plugins, %d running\n",plugins,running );
|
||||
|
||||
}
|
||||
@ -150,15 +138,7 @@ void amx_command(){
|
||||
print_srvconsole( "%s %s\n", Plugin_info.name, Plugin_info.version);
|
||||
print_srvconsole( "author: %s (%s)\n", Plugin_info.author, Plugin_info.url);
|
||||
print_srvconsole( "compiled: %s\n", __DATE__ ", " __TIME__);
|
||||
#ifdef JIT
|
||||
print_srvconsole( "Core mode: JIT\n");
|
||||
#else
|
||||
#ifdef ASM32
|
||||
print_srvconsole( "Core mode: ASM\n");
|
||||
#else
|
||||
print_srvconsole( "Core mode: Normal\n");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
else if (!strcmp(cmd,"modules"))
|
||||
{
|
||||
@ -169,7 +149,7 @@ void amx_command(){
|
||||
int running = 0;
|
||||
int modules = 0;
|
||||
|
||||
CList<CModule,const char *>::iterator a = g_modules.begin();
|
||||
CList<CModule>::iterator a = g_modules.begin();
|
||||
|
||||
while ( a )
|
||||
{
|
||||
@ -185,6 +165,12 @@ void amx_command(){
|
||||
}
|
||||
|
||||
print_srvconsole( "%d modules, %d correct\n",modules,running);
|
||||
} else if (!strcmp(cmd, "jit")) {
|
||||
#ifdef JIT
|
||||
print_srvconsole("Using the JIT.\n");
|
||||
#else
|
||||
print_srvconsole("Not using the JIT.\n");
|
||||
#endif
|
||||
} else if (!strcmp(cmd, "gpl"))
|
||||
{
|
||||
print_srvconsole("AMX Mod X\n");
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1,176 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
#(C)2004 AMX Mod X Development Team
|
||||
# by David "BAILOPAN" Anderson
|
||||
|
||||
# output will occur in bin.x.proc
|
||||
# where x is debug or opt and proc is ix86 or amd64
|
||||
# You must use this script from the project src dir
|
||||
|
||||
#options =
|
||||
# debug - enable gdb debugging
|
||||
# amd64 - compile for AMD64
|
||||
# proc=ix86 - assumed not amd64
|
||||
# clean - clean the specifications above
|
||||
|
||||
$PROJECT = "sasm";
|
||||
$gccf = "gcc";
|
||||
|
||||
@CPP_SOURCE_FILES = ("amx_compiler.cpp", "amx_data.cpp", "amx_define.cpp", "amx_error.cpp", "amx_label.cpp", "amx_macro.cpp", "amx_natives.cpp", "amx_proc.cpp", "amx_parser.cpp", "amx_symbol.cpp", "amxasm.cpp", "cexpr.cpp");
|
||||
|
||||
@C_SOURCE_FILES = ();
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "";
|
||||
|
||||
while ($cmd = shift)
|
||||
{
|
||||
if ($cmd =~ /amd64/) {
|
||||
$OPTIONS{"amd64"} = 1;
|
||||
} elsif ($cmd =~ /debug/) {
|
||||
$OPTIONS{"debug"} = 1;
|
||||
} elsif ($cmd =~ /proc=i(\d)86/) {
|
||||
$proc = $1;
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
die "You cannot compile for i".$proc."86 and AMD64.\n";
|
||||
} else {
|
||||
$OPTIONS{"proc"} = "i".$proc."86";
|
||||
}
|
||||
} elsif ($cmd =~ /clean/) {
|
||||
$OPTIONS{"clean"} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$gcc = `$gccf --version`;
|
||||
if ($gcc =~ /2\.9/)
|
||||
{
|
||||
$OPT{"opt"} .= " -malign-loops=2 -malign-jumps=2 -malign-functions=2";
|
||||
} else {
|
||||
$OPT{"opt"} .= " -falign-loops=2 -falign-jumps=2 -falign-functions=2";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"debug"})
|
||||
{
|
||||
$cflags = $OPT{"debug"};
|
||||
} else {
|
||||
if (!$OPTIONS{"amd64"})
|
||||
{
|
||||
$proc = $OPTIONS{"proc"};
|
||||
if (!$proc)
|
||||
{
|
||||
$proc = 3;
|
||||
}
|
||||
$cflags = "-march=i".$proc."86 ".$OPT{"opt"};
|
||||
} else {
|
||||
$cflags = $OPT{"opt"};
|
||||
}
|
||||
}
|
||||
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
$cflags .= " -m64 -DHAVE_I64 -DSMALL_CELL_SIZE=64 $cflags";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"debug"})
|
||||
{
|
||||
$outdir = "bin.debug";
|
||||
} else {
|
||||
$outdir = "bin.opt";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
$outdir .= ".amd64";
|
||||
$bin = $PROJECT."_amd64.so";
|
||||
} else {
|
||||
$proc = $OPTIONS{"proc"};
|
||||
if ($proc)
|
||||
{
|
||||
$outdir .= ".i".$proc."86";
|
||||
$bin = $PROJECT."_i".$proc."86.so";
|
||||
} else {
|
||||
$outdir .= ".i386";
|
||||
$bin = $PROJECT."_i386.so";
|
||||
}
|
||||
}
|
||||
|
||||
unlink("$outdir/$bin");
|
||||
if ($OPTIONS{"clean"})
|
||||
{
|
||||
`rm $outdir/*.o`;
|
||||
die("Project cleaned.\n");
|
||||
}
|
||||
|
||||
#create the dirs
|
||||
#build link list
|
||||
my @LINK;
|
||||
for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
{
|
||||
$file = $CPP_SOURCE_FILES[$i];
|
||||
$file =~ s/\.cpp/\.o/;
|
||||
push(@LINK, $outdir."/".$file);
|
||||
}
|
||||
for ($i=0; $i<=$#C_SOURCE_FILES; $i++)
|
||||
{
|
||||
$file = $C_SOURCE_FILES[$i];
|
||||
$file =~ s/\.c/\.o/;
|
||||
push(@LINK, $outdir."/".$file);
|
||||
}
|
||||
|
||||
if (!(-d $outdir))
|
||||
{
|
||||
mkdir($outdir);
|
||||
}
|
||||
|
||||
$inc = $OPTIONS{"include"};
|
||||
|
||||
for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
{
|
||||
$file = $CPP_SOURCE_FILES[$i];
|
||||
$ofile = $file;
|
||||
$ofile =~ s/\.cpp/\.o/;
|
||||
$ofile = "$outdir/$ofile";
|
||||
$gcc = "$gccf $cflags -Dstrcmpi=strcasecmp -fPIC $inc -c $file -o $ofile";
|
||||
if (-e $ofile)
|
||||
{
|
||||
$file_time = (stat($file))[9];
|
||||
$ofile_time = (stat($ofile))[9];
|
||||
if ($file_time > $ofile_time)
|
||||
{
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
||||
}
|
||||
} else {
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
||||
}
|
||||
}
|
||||
|
||||
for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
{
|
||||
$file = $C_SOURCE_FILES[$i];
|
||||
$ofile = $file;
|
||||
$ofile =~ s/\.c/\.o/;
|
||||
$ofile = "$outdir/$ofile";
|
||||
$gcc = "cc $cflags -Dstrcmpi=strcasecmp -fPIC $inc -c $file -o $ofile";
|
||||
if (-e $ofile)
|
||||
{
|
||||
$file_time = (stat($file))[9];
|
||||
$ofile_time = (stat($file))[9];
|
||||
if ($file_time > $ofile_time)
|
||||
{
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
||||
}
|
||||
} else {
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
||||
}
|
||||
}
|
||||
|
||||
$gcc = "$gccf $cflags -shared -lstdc++ -ldl -lm @LINK -o $outdir/$bin";
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
@ -70,10 +70,3 @@ amx_extendmap_step 15
|
||||
|
||||
//If you set this to 0, clients cannot chose their language
|
||||
amx_client_languages 1
|
||||
|
||||
// Plugin Debug mode
|
||||
// 0 - No debugging (garbage line numbers)
|
||||
// 1 - Plugins with "debug" option in plugins.ini are put into debug mode
|
||||
// 2 - All plugins are put in debug mode
|
||||
// Note - debug mode will affect JIT performance
|
||||
amx_debug 1
|
@ -86,10 +86,3 @@ amx_statsx_freeze -2.0
|
||||
|
||||
//If you set this to 0, clients cannot chose their language
|
||||
amx_client_languages 1
|
||||
|
||||
// Plugin Debug mode
|
||||
// 0 - No debugging (garbage line numbers)
|
||||
// 1 - Plugins with "debug" option in plugins.ini are put into debug mode
|
||||
// 2 - All plugins are put in debug mode
|
||||
// Note - debug mode will affect JIT performance
|
||||
amx_debug 1
|
@ -19,7 +19,7 @@ mapsmenu.amxx ; maps menu (vote, changelevel)
|
||||
|
||||
; Chat / Messages
|
||||
adminchat.amxx ; console chat commands
|
||||
antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
;antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
scrollmsg.amxx ; displays a scrolling message
|
||||
imessage.amxx ; displays information messages
|
||||
adminvote.amxx ; vote commands
|
||||
|
@ -19,7 +19,7 @@ mapsmenu.amxx ; maps menu (vote, changelevel)
|
||||
|
||||
; Chat / Messages
|
||||
adminchat.amxx ; console chat commands
|
||||
antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
;antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
scrollmsg.amxx ; displays a scrolling message
|
||||
imessage.amxx ; displays information messages
|
||||
adminvote.amxx ; vote commands
|
||||
|
@ -73,10 +73,3 @@ amx_mapnum_ignore 0
|
||||
|
||||
//If you set this to 0, clients cannot chose their language
|
||||
amx_client_languages 1
|
||||
|
||||
// Plugin Debug mode
|
||||
// 0 - No debugging (garbage line numbers)
|
||||
// 1 - Plugins with "debug" option in plugins.ini are put into debug mode
|
||||
// 2 - All plugins are put in debug mode
|
||||
// Note - debug mode will affect JIT performance
|
||||
amx_debug 1
|
@ -19,7 +19,7 @@ mapsmenu.amxx ; maps menu (vote, changelevel)
|
||||
|
||||
; Chat / Messages
|
||||
adminchat.amxx ; console chat commands
|
||||
antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
;antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
scrollmsg.amxx ; displays a scrolling message
|
||||
imessage.amxx ; displays information messages
|
||||
adminvote.amxx ; vote commands
|
||||
|
@ -19,7 +19,7 @@ mapsmenu.amxx ; maps menu (vote, changelevel)
|
||||
|
||||
; Chat / Messages
|
||||
adminchat.amxx ; console chat commands
|
||||
antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
;antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
scrollmsg.amxx ; displays a scrolling message
|
||||
imessage.amxx ; displays information messages
|
||||
adminvote.amxx ; vote commands
|
||||
|
@ -19,7 +19,7 @@ mapsmenu.amxx ; maps menu (vote, changelevel)
|
||||
|
||||
; Chat / Messages
|
||||
adminchat.amxx ; console chat commands
|
||||
antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
;antiflood.amxx ; prevent clients from chat-flooding the server
|
||||
scrollmsg.amxx ; displays a scrolling message
|
||||
imessage.amxx ; displays information messages
|
||||
adminvote.amxx ; vote commands
|
||||
|
@ -130,7 +130,7 @@ void RankSystem::clear(){
|
||||
|
||||
bool RankSystem::loadCalc(const char* filename, char* error)
|
||||
{
|
||||
if ((MF_LoadAmxScript(&calc.amx,&calc.code,filename,error,0)!=AMX_ERR_NONE)||
|
||||
if ((MF_LoadAmxScript(&calc.amx,&calc.code,filename,error)!=AMX_ERR_NONE)||
|
||||
(MF_AmxAllot(&calc.amx, 8 , &calc.amxAddr1, &calc.physAddr1)!=AMX_ERR_NONE)||
|
||||
(MF_AmxAllot(&calc.amx, 8 , &calc.amxAddr2, &calc.physAddr2)!=AMX_ERR_NONE)||
|
||||
(MF_AmxFindPublic(&calc.amx,"get_score",&calc.func)!=AMX_ERR_NONE)){
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
|
@ -2479,9 +2479,6 @@ PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
PFN_FORMAT g_fn_Format;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2526,7 +2523,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
|
||||
REQFUNC("Log", g_fn_Log, PFN_LOG);
|
||||
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
|
||||
REQFUNC("Format", g_fn_Format, PFN_FORMAT);
|
||||
|
||||
// Amx scripts
|
||||
REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT);
|
||||
@ -2534,7 +2530,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME);
|
||||
REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT);
|
||||
REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT);
|
||||
REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME);
|
||||
|
||||
// String / mem in amx scripts support
|
||||
REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING);
|
||||
@ -2581,8 +2576,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV);
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2677,14 +2670,11 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
MF_AmxExecv(0, 0, 0, 0, 0);
|
||||
MF_AmxFindPublic(0, 0, 0);
|
||||
MF_AmxAllot(0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0);
|
||||
MF_UnloadAmxScript(0, 0);
|
||||
MF_RegisterSPForward(0, 0, 0, 0, 0, 0);
|
||||
MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0);
|
||||
MF_UnregisterSPForward(0);
|
||||
MF_GetPlayerFrags(0);
|
||||
MF_GetPlayerEdict(0);
|
||||
MF_Format("", 4, "str");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2801,7 +2791,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2814,7 +2804,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2828,7 +2818,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2840,7 +2830,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1944,12 +1945,6 @@ typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/);
|
||||
#ifdef USE_METAMOD
|
||||
typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#else
|
||||
typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#endif
|
||||
|
||||
typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
const unsigned int /*type*/, const size_t /*size*/);
|
||||
typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
@ -1961,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -1969,7 +1964,6 @@ typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*pa
|
||||
typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/);
|
||||
typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/);
|
||||
typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||
|
||||
extern PFN_ADD_NATIVES g_fn_AddNatives;
|
||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||
@ -2023,9 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
extern PFN_FORMAT g_fn_Format;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2074,9 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
edict_t* MF_GetPlayerEdict (int id) { }
|
||||
const char * MF_Format (const char *fmt, ...) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2131,9 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
|
||||
#define MF_Format g_fn_Format;
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2178,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define __MODULECONFIG_H__
|
||||
|
||||
// Module info
|
||||
#define MODULE_NAME "CSStats"
|
||||
#define MODULE_NAME "CS Stats"
|
||||
#define MODULE_VERSION "0.20"
|
||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||
#define MODULE_URL "http://www.amxmodx.org"
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
@ -73,7 +73,7 @@ if ($OPTIONS{"debug"})
|
||||
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
$cflags = " -m64 -DSMALL_CELL_SIZE=64 $cflags";
|
||||
$cflags .= "-m64 -DSMALL_CELLSIZE=64 $cflags";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"debug"})
|
||||
|
@ -2479,9 +2479,6 @@ PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
PFN_FORMAT g_fn_Format;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2526,7 +2523,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
|
||||
REQFUNC("Log", g_fn_Log, PFN_LOG);
|
||||
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
|
||||
REQFUNC("Format", g_fn_Format, PFN_FORMAT);
|
||||
|
||||
// Amx scripts
|
||||
REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT);
|
||||
@ -2534,7 +2530,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME);
|
||||
REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT);
|
||||
REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT);
|
||||
REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME);
|
||||
|
||||
// String / mem in amx scripts support
|
||||
REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING);
|
||||
@ -2581,8 +2576,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV);
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2677,14 +2670,11 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
MF_AmxExecv(0, 0, 0, 0, 0);
|
||||
MF_AmxFindPublic(0, 0, 0);
|
||||
MF_AmxAllot(0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0);
|
||||
MF_UnloadAmxScript(0, 0);
|
||||
MF_RegisterSPForward(0, 0, 0, 0, 0, 0);
|
||||
MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0);
|
||||
MF_UnregisterSPForward(0);
|
||||
MF_GetPlayerFrags(0);
|
||||
MF_GetPlayerEdict(0);
|
||||
MF_Format("", 4, "str");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2801,7 +2791,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2814,7 +2804,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2828,7 +2818,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2840,7 +2830,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1944,12 +1945,6 @@ typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/);
|
||||
#ifdef USE_METAMOD
|
||||
typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#else
|
||||
typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#endif
|
||||
|
||||
typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
const unsigned int /*type*/, const size_t /*size*/);
|
||||
typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
@ -1961,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -1969,7 +1964,6 @@ typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*pa
|
||||
typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/);
|
||||
typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/);
|
||||
typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||
|
||||
extern PFN_ADD_NATIVES g_fn_AddNatives;
|
||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||
@ -2023,9 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
extern PFN_FORMAT g_fn_Format;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2074,9 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
edict_t* MF_GetPlayerEdict (int id) { }
|
||||
const char * MF_Format (const char *fmt, ...) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2131,9 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
|
||||
#define MF_Format g_fn_Format;
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2178,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
|
@ -274,9 +274,9 @@ static cell AMX_NATIVE_CALL set_user_ammo(AMX *amx, cell *params){
|
||||
case DODW_KAR:
|
||||
case DODW_SCOPED_KAR:
|
||||
case DODW_ENFIELD:
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 54+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 283+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 315+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 56+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 281+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 313+LINUXOFFSET ) = params[3];
|
||||
break;
|
||||
|
||||
//57,286,318
|
||||
@ -284,9 +284,9 @@ static cell AMX_NATIVE_CALL set_user_ammo(AMX *amx, cell *params){
|
||||
case DODW_BAR:
|
||||
case DODW_FG42:
|
||||
case DODW_BREN:
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 57+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 286+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 318+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 56+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 281+LINUXOFFSET ) = params[3];
|
||||
*( (int*)pPlayer->pEdict->pvPrivateData + 313+LINUXOFFSET ) = params[3];
|
||||
break;
|
||||
|
||||
//56,281,313
|
||||
@ -386,7 +386,7 @@ static cell AMX_NATIVE_CALL get_user_ammo(AMX *amx, cell *params){
|
||||
case DODW_KAR:
|
||||
case DODW_SCOPED_KAR:
|
||||
case DODW_ENFIELD:
|
||||
return *( (int*)pPlayer->pEdict->pvPrivateData + 54+LINUXOFFSET );
|
||||
return *( (int*)pPlayer->pEdict->pvPrivateData + 56+LINUXOFFSET );
|
||||
break;
|
||||
|
||||
//55,285,317
|
||||
|
@ -2479,9 +2479,6 @@ PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
PFN_FORMAT g_fn_Format;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2526,7 +2523,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
|
||||
REQFUNC("Log", g_fn_Log, PFN_LOG);
|
||||
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
|
||||
REQFUNC("Format", g_fn_Format, PFN_FORMAT);
|
||||
|
||||
// Amx scripts
|
||||
REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT);
|
||||
@ -2534,7 +2530,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME);
|
||||
REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT);
|
||||
REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT);
|
||||
REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME);
|
||||
|
||||
// String / mem in amx scripts support
|
||||
REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING);
|
||||
@ -2581,8 +2576,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV);
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2677,14 +2670,11 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
MF_AmxExecv(0, 0, 0, 0, 0);
|
||||
MF_AmxFindPublic(0, 0, 0);
|
||||
MF_AmxAllot(0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0);
|
||||
MF_UnloadAmxScript(0, 0);
|
||||
MF_RegisterSPForward(0, 0, 0, 0, 0, 0);
|
||||
MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0);
|
||||
MF_UnregisterSPForward(0);
|
||||
MF_GetPlayerFrags(0);
|
||||
MF_GetPlayerEdict(0);
|
||||
MF_Format("", 4, "str");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2801,7 +2791,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2814,7 +2804,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2828,7 +2818,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2840,7 +2830,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1944,12 +1945,6 @@ typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/);
|
||||
#ifdef USE_METAMOD
|
||||
typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#else
|
||||
typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#endif
|
||||
|
||||
typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
const unsigned int /*type*/, const size_t /*size*/);
|
||||
typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
@ -1961,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -1969,7 +1964,6 @@ typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*pa
|
||||
typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/);
|
||||
typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/);
|
||||
typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||
|
||||
extern PFN_ADD_NATIVES g_fn_AddNatives;
|
||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||
@ -2023,9 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
extern PFN_FORMAT g_fn_Format;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2074,9 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
edict_t* MF_GetPlayerEdict (int id) { }
|
||||
const char * MF_Format (const char *fmt, ...) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2131,9 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
|
||||
#define MF_Format g_fn_Format;
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2178,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define __MODULECONFIG_H__
|
||||
|
||||
// Module info
|
||||
#define MODULE_NAME "DoD Fun"
|
||||
#define MODULE_NAME "Day of Defeat Fun"
|
||||
#define MODULE_VERSION "0.1"
|
||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||
#define MODULE_URL "http://www.amxmodx.org"
|
||||
|
@ -367,14 +367,6 @@ void Forward::exec(int p1,int p2,int p3,int p4,int p5){
|
||||
}
|
||||
}
|
||||
|
||||
void Forward::exec(int p1,int p2,int p3){
|
||||
AmxCall* a = head;
|
||||
while ( a ){
|
||||
MF_AmxExec(a->amx, NULL, a->iFunctionIdx, 3,p1, p2, p3);
|
||||
a = a->next;
|
||||
}
|
||||
}
|
||||
|
||||
void Forward::exec(int p1,int p2){
|
||||
AmxCall* a = head;
|
||||
while ( a ){
|
||||
|
@ -74,14 +74,11 @@ public:
|
||||
int current;
|
||||
int wpnModel;
|
||||
|
||||
float savedScore;
|
||||
int lastScore;
|
||||
int sendScore;
|
||||
int savedScore;
|
||||
|
||||
bool ingame;
|
||||
bool bot;
|
||||
float clearStats;
|
||||
float clearRound;
|
||||
|
||||
struct PlayerWeapon : public Stats {
|
||||
char* name;
|
||||
@ -181,7 +178,6 @@ public:
|
||||
void put( AMX *a , int i );
|
||||
void exec(int p1,int p2,int p3,int p4,int p5,int p6);
|
||||
void exec(int p1,int p2,int p3,int p4,int p5);
|
||||
void exec(int p1,int p2,int p3);
|
||||
void exec(int p1,int p2);
|
||||
};
|
||||
#endif
|
||||
|
@ -147,7 +147,7 @@ void RankSystem::clear(){
|
||||
|
||||
bool RankSystem::loadCalc(const char* filename, char* error)
|
||||
{
|
||||
if ((MF_LoadAmxScript(&calc.amx,&calc.code,filename,error,0)!=AMX_ERR_NONE)||
|
||||
if ((MF_LoadAmxScript(&calc.amx,&calc.code,filename,error)!=AMX_ERR_NONE)||
|
||||
(MF_AmxAllot(&calc.amx, 8 , &calc.amxAddr1, &calc.physAddr1)!=AMX_ERR_NONE)||
|
||||
(MF_AmxAllot(&calc.amx, 8 , &calc.amxAddr2, &calc.physAddr2)!=AMX_ERR_NONE)||
|
||||
(MF_AmxFindPublic(&calc.amx,"get_score",&calc.func)!=AMX_ERR_NONE)){
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
|
@ -205,19 +205,11 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward
|
||||
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
break;
|
||||
case 2:
|
||||
if( MF_AmxFindPublic(amx, "client_score", &iFunctionIndex) == AMX_ERR_NONE )
|
||||
g_score_info.put( amx , iFunctionIndex );
|
||||
else
|
||||
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
break;
|
||||
default:
|
||||
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -2479,9 +2479,6 @@ PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
PFN_FORMAT g_fn_Format;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2526,7 +2523,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
|
||||
REQFUNC("Log", g_fn_Log, PFN_LOG);
|
||||
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
|
||||
REQFUNC("Format", g_fn_Format, PFN_FORMAT);
|
||||
|
||||
// Amx scripts
|
||||
REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT);
|
||||
@ -2534,7 +2530,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME);
|
||||
REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT);
|
||||
REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT);
|
||||
REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME);
|
||||
|
||||
// String / mem in amx scripts support
|
||||
REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING);
|
||||
@ -2581,8 +2576,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV);
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2677,14 +2670,11 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
MF_AmxExecv(0, 0, 0, 0, 0);
|
||||
MF_AmxFindPublic(0, 0, 0);
|
||||
MF_AmxAllot(0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0);
|
||||
MF_UnloadAmxScript(0, 0);
|
||||
MF_RegisterSPForward(0, 0, 0, 0, 0, 0);
|
||||
MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0);
|
||||
MF_UnregisterSPForward(0);
|
||||
MF_GetPlayerFrags(0);
|
||||
MF_GetPlayerEdict(0);
|
||||
MF_Format("", 4, "str");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2801,7 +2791,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2814,7 +2804,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2828,7 +2818,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2840,7 +2830,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1944,12 +1945,6 @@ typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/);
|
||||
#ifdef USE_METAMOD
|
||||
typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#else
|
||||
typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#endif
|
||||
|
||||
typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
const unsigned int /*type*/, const size_t /*size*/);
|
||||
typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
@ -1961,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -1969,7 +1964,6 @@ typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*pa
|
||||
typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/);
|
||||
typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/);
|
||||
typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||
|
||||
extern PFN_ADD_NATIVES g_fn_AddNatives;
|
||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||
@ -2023,9 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
extern PFN_FORMAT g_fn_Format;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2074,9 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
edict_t* MF_GetPlayerEdict (int id) { }
|
||||
const char * MF_Format (const char *fmt, ...) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2131,9 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
|
||||
#define MF_Format g_fn_Format;
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2178,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -81,13 +81,11 @@ extern int gmsgPTeam;
|
||||
|
||||
extern Forward g_death_info;
|
||||
extern Forward g_damage_info;
|
||||
extern Forward g_score_info;
|
||||
|
||||
#else
|
||||
|
||||
extern int iFDamage;
|
||||
extern int iFDeath;
|
||||
extern int iFScore;
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -51,13 +51,11 @@ int AxisScore;
|
||||
|
||||
Forward g_death_info;
|
||||
Forward g_damage_info;
|
||||
Forward g_score_info;
|
||||
|
||||
#else
|
||||
|
||||
int iFDamage;
|
||||
int iFDeath;
|
||||
int iFScore;
|
||||
|
||||
#endif
|
||||
|
||||
@ -154,32 +152,16 @@ void PlayerPreThink_Post( edict_t *pEntity ) {
|
||||
return;
|
||||
|
||||
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
||||
if ( !pPlayer->ingame )
|
||||
return;
|
||||
|
||||
if (pPlayer->clearStats && pPlayer->clearStats < gpGlobals->time){
|
||||
if (pPlayer->clearStats && pPlayer->clearStats < gpGlobals->time && pPlayer->ingame){
|
||||
|
||||
if ( !ignoreBots(pEntity) ){
|
||||
pPlayer->clearStats = 0.0f;
|
||||
pPlayer->rank->updatePosition( &pPlayer->life );
|
||||
pPlayer->restartStats(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (pPlayer->clearRound && pPlayer->clearRound < gpGlobals->time){
|
||||
pPlayer->clearRound = 0.0f;
|
||||
memset(&pPlayer->round,0,sizeof(pPlayer->round));
|
||||
memset(pPlayer->weaponsRnd,0,sizeof(pPlayer->weaponsRnd));
|
||||
}
|
||||
|
||||
if (pPlayer->sendScore && pPlayer->sendScore < gpGlobals->time){
|
||||
pPlayer->sendScore = 0.0f;
|
||||
#ifdef FORWARD_OLD_SYSTEM
|
||||
g_score_info.exec( pPlayer->index, pPlayer->lastScore, pPlayer->savedScore );
|
||||
#else
|
||||
MF_ExecuteForward( iFScore,pPlayer->index, pPlayer->lastScore, pPlayer->savedScore );
|
||||
#endif
|
||||
}
|
||||
|
||||
RETURN_META(MRES_IGNORED);
|
||||
}
|
||||
|
||||
@ -201,7 +183,6 @@ void ServerDeactivate() {
|
||||
|
||||
g_damage_info.clear();
|
||||
g_death_info.clear();
|
||||
g_score_info.clear();
|
||||
|
||||
#endif
|
||||
|
||||
@ -417,7 +398,7 @@ void OnAmxxDetach() {
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define __MODULECONFIG_H__
|
||||
|
||||
// Module info
|
||||
#define MODULE_NAME "DoDX"
|
||||
#define MODULE_NAME "Day of Defeat X"
|
||||
#define MODULE_VERSION "0.20"
|
||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
|
||||
#define MODULE_URL "http://www.amxmodx.org"
|
||||
|
@ -42,7 +42,8 @@ void Client_RoundState(void* mValue){
|
||||
for (int i=1;i<=gpGlobals->maxClients;i++){
|
||||
CPlayer *pPlayer = GET_PLAYER_POINTER_I(i);
|
||||
if (pPlayer->ingame) {
|
||||
pPlayer->clearRound = gpGlobals->time + 0.25f;
|
||||
memset(&pPlayer->round,0,sizeof(pPlayer->round));
|
||||
memset(pPlayer->weaponsRnd,0,sizeof(pPlayer->weaponsRnd));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -69,18 +70,18 @@ void Client_TeamScore(void* mValue){
|
||||
|
||||
void Client_ObjScore(void* mValue){
|
||||
static CPlayer *pPlayer;
|
||||
static int score;
|
||||
static int TMScore; //total map score :-)
|
||||
switch(mState++){
|
||||
case 0:
|
||||
pPlayer = GET_PLAYER_POINTER_I(*(int*)mValue);
|
||||
break;
|
||||
case 1:
|
||||
score = *(int*)mValue;
|
||||
if ( (pPlayer->lastScore = score - pPlayer->savedScore) && isModuleActive() ){
|
||||
pPlayer->updateScore(pPlayer->current,pPlayer->lastScore);
|
||||
pPlayer->sendScore = gpGlobals->time + 0.25f;
|
||||
TMScore = *(int*)mValue;
|
||||
int score = TMScore - pPlayer->savedScore;
|
||||
if ( score && isModuleActive() ){
|
||||
pPlayer->updateScore(pPlayer->current,score);
|
||||
}
|
||||
pPlayer->savedScore = score;
|
||||
pPlayer->savedScore = TMScore;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -33,67 +33,30 @@
|
||||
#define _INCLUDE_CSTRING_H
|
||||
|
||||
//by David "BAILOPAN" Anderson
|
||||
class String
|
||||
class CString
|
||||
{
|
||||
public:
|
||||
String()
|
||||
{
|
||||
v = NULL;
|
||||
mSize = 0;
|
||||
cSize = 0;
|
||||
Grow(2);
|
||||
assign("");
|
||||
}
|
||||
CString() { v = NULL; mSize = 0; }
|
||||
~CString() { if (v) delete [] v; }
|
||||
|
||||
~String()
|
||||
{
|
||||
if (v)
|
||||
delete [] v;
|
||||
}
|
||||
|
||||
String(const char *src)
|
||||
{
|
||||
v = NULL;
|
||||
mSize = 0;
|
||||
cSize = 0; assign(src);
|
||||
}
|
||||
|
||||
String(String &src)
|
||||
{
|
||||
v = NULL;
|
||||
mSize = 0;
|
||||
cSize = 0;
|
||||
assign(src.c_str());
|
||||
}
|
||||
//added these for amxx
|
||||
CString(const char *src) { v = NULL; mSize = 0; assign(src); }
|
||||
CString(CString &src) { v = NULL; mSize = 0; assign(src.c_str()); }
|
||||
|
||||
const char *c_str() { return v?v:""; }
|
||||
const char *c_str() const { return v?v:""; }
|
||||
|
||||
void append(const char *t)
|
||||
{
|
||||
Grow(cSize + strlen(t));
|
||||
Grow(strlen(v) + strlen(t));
|
||||
strcat(v, t);
|
||||
cSize = strlen(v);
|
||||
}
|
||||
|
||||
void append(const char c)
|
||||
{
|
||||
Grow(cSize + 2);
|
||||
v[cSize] = c;
|
||||
v[++cSize] = 0;
|
||||
}
|
||||
|
||||
void append(String &d)
|
||||
void append(CString &d)
|
||||
{
|
||||
const char *t = d.c_str();
|
||||
Grow(cSize + strlen(t));
|
||||
Grow(strlen(v) + strlen(t));
|
||||
strcat(v, t);
|
||||
cSize = strlen(v);
|
||||
}
|
||||
|
||||
void assign(const String &src)
|
||||
{
|
||||
assign(src.c_str());
|
||||
}
|
||||
|
||||
void assign(const char *d)
|
||||
@ -101,27 +64,20 @@ public:
|
||||
if (!d)
|
||||
{
|
||||
Grow(1);
|
||||
cSize = 0;
|
||||
strcpy(v, "");
|
||||
return;
|
||||
}
|
||||
Grow(strlen(d));
|
||||
if (v)
|
||||
{
|
||||
strcpy(v, d);
|
||||
cSize = strlen(v);
|
||||
} else {
|
||||
cSize = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
if (v)
|
||||
{
|
||||
v[0] = 0;
|
||||
cSize = 0;
|
||||
}
|
||||
delete [] v;
|
||||
v = NULL;
|
||||
mSize = 0;
|
||||
}
|
||||
|
||||
int compare (const char *d)
|
||||
@ -144,7 +100,7 @@ public:
|
||||
//Added this for amxx inclusion
|
||||
bool empty()
|
||||
{
|
||||
if (!v || !cSize)
|
||||
if (!v || !mSize)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@ -154,239 +110,20 @@ public:
|
||||
{
|
||||
if (!v)
|
||||
return 0;
|
||||
return cSize;
|
||||
}
|
||||
|
||||
const char * _fread(FILE *fp)
|
||||
{
|
||||
Grow(512);
|
||||
char * ret = fgets(v, 511, fp);
|
||||
cSize = strlen(v);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int find(const char c, int index = 0)
|
||||
{
|
||||
if (!v)
|
||||
return npos;
|
||||
if (index >= (int)cSize || index < 0)
|
||||
return npos;
|
||||
unsigned int i = 0;
|
||||
for (i=index; i<cSize; i++)
|
||||
{
|
||||
if (v[i] == c)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return npos;
|
||||
}
|
||||
|
||||
bool is_space(int c)
|
||||
{
|
||||
if (c == '\f' || c == '\n' ||
|
||||
c == '\t' || c == '\r' ||
|
||||
c == 'v' || c == ' ')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void trim()
|
||||
{
|
||||
if (!v)
|
||||
return;
|
||||
unsigned int i = 0;
|
||||
unsigned int j = 0;
|
||||
|
||||
if (cSize == 1)
|
||||
{
|
||||
if (is_space(v[i]))
|
||||
{
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char c0 = v[0];
|
||||
|
||||
if (is_space(c0))
|
||||
{
|
||||
for (i=0; i<cSize; i++)
|
||||
{
|
||||
if (!is_space(v[i]) || (is_space(v[i]) && ((unsigned char)i==cSize-1)))
|
||||
{
|
||||
erase(0, i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cSize = strlen(v);
|
||||
|
||||
if (cSize < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_space(v[cSize-1]))
|
||||
{
|
||||
for (i=cSize-1; i>=0; i--)
|
||||
{
|
||||
if (!is_space(v[i])
|
||||
|| (is_space(v[i]) && i==0))
|
||||
{
|
||||
erase(i+1, j);
|
||||
break;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
if (cSize == 1)
|
||||
{
|
||||
if (is_space(v[0]))
|
||||
{
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String & erase(unsigned int start, int num = npos)
|
||||
{
|
||||
if (!v)
|
||||
return (*this);
|
||||
unsigned int i = 0;
|
||||
//check for bounds
|
||||
if (num == npos || start+num > cSize-num+1)
|
||||
num = cSize - start;
|
||||
//do the erasing
|
||||
bool copyflag = false;
|
||||
for (i=0; i<cSize; i++)
|
||||
{
|
||||
if (i>=start && i<start+num)
|
||||
{
|
||||
if (i+num < cSize)
|
||||
{
|
||||
v[i] = v[i+num];
|
||||
} else {
|
||||
v[i] = 0;
|
||||
}
|
||||
copyflag = true;
|
||||
} else if (copyflag) {
|
||||
if (i+num < cSize)
|
||||
{
|
||||
v[i] = v[i+num];
|
||||
} else {
|
||||
v[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
cSize -= num;
|
||||
v[cSize] = 0;
|
||||
|
||||
return (*this);
|
||||
}
|
||||
|
||||
String substr(unsigned int index, int num = npos)
|
||||
{
|
||||
String ns;
|
||||
|
||||
if (index >= cSize || !v)
|
||||
return ns;
|
||||
|
||||
if (num == npos)
|
||||
{
|
||||
num = cSize - index;
|
||||
} else if (index+num >= cSize) {
|
||||
num = cSize - index;
|
||||
}
|
||||
|
||||
unsigned int i = 0, j=0;
|
||||
char *s = new char[cSize+1];
|
||||
|
||||
for (i=index; i<index+num; i++)
|
||||
{
|
||||
s[j++] = v[i];
|
||||
}
|
||||
s[j] = 0;
|
||||
|
||||
ns.assign(s);
|
||||
|
||||
delete [] s;
|
||||
|
||||
return ns;
|
||||
}
|
||||
|
||||
void toLower()
|
||||
{
|
||||
if (!v)
|
||||
return;
|
||||
unsigned int i = 0;
|
||||
for (i=0; i<cSize; i++)
|
||||
{
|
||||
if (v[i] >= 65 && v[i] <= 90)
|
||||
v[i] |= 32;
|
||||
}
|
||||
}
|
||||
|
||||
String & operator = (const String &src)
|
||||
{
|
||||
assign(src);
|
||||
return *this;
|
||||
}
|
||||
|
||||
String & operator = (const char *src)
|
||||
{
|
||||
assign(src);
|
||||
return *this;
|
||||
|
||||
}
|
||||
|
||||
char operator [] (unsigned int index)
|
||||
{
|
||||
if (index > cSize)
|
||||
{
|
||||
return -1;
|
||||
} else {
|
||||
return v[index];
|
||||
}
|
||||
}
|
||||
|
||||
int at(int a)
|
||||
{
|
||||
if (a < 0 || a >= (int)cSize)
|
||||
return -1;
|
||||
|
||||
return v[a];
|
||||
}
|
||||
|
||||
bool at(int at, char c)
|
||||
{
|
||||
if (at < 0 || at >= (int)cSize)
|
||||
return false;
|
||||
|
||||
v[at] = c;
|
||||
|
||||
return true;
|
||||
return strlen(v);
|
||||
}
|
||||
|
||||
private:
|
||||
void Grow(unsigned int d)
|
||||
void Grow(int d)
|
||||
{
|
||||
if (d<1)
|
||||
return;
|
||||
if (d > mSize)
|
||||
{
|
||||
mSize = d + 16; // allocate a buffer
|
||||
char *t = new char[d+1];
|
||||
if (v) {
|
||||
strcpy(t, v);
|
||||
t[cSize] = 0;
|
||||
t[strlen(v)] = 0;
|
||||
delete [] v;
|
||||
}
|
||||
v = t;
|
||||
@ -395,10 +132,8 @@ private:
|
||||
}
|
||||
|
||||
char *v;
|
||||
unsigned int mSize;
|
||||
unsigned int cSize;
|
||||
public:
|
||||
static const int npos = -1;
|
||||
int mSize;
|
||||
};
|
||||
|
||||
#endif //_INCLUDE_CSTRING_H
|
||||
|
||||
|
@ -32,8 +32,6 @@
|
||||
#ifndef __CVECTOR_H__
|
||||
#define __CVECTOR_H__
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
// Vector
|
||||
template <class T> class CVector
|
||||
{
|
||||
@ -286,7 +284,7 @@ public:
|
||||
iterator iterAt(size_t pos)
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
return iterator(m_Data + pos);
|
||||
}
|
||||
|
||||
@ -333,7 +331,7 @@ public:
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[pos];
|
||||
}
|
||||
@ -342,7 +340,7 @@ public:
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[pos];
|
||||
}
|
||||
@ -361,7 +359,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[0];
|
||||
}
|
||||
@ -370,7 +368,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[0];
|
||||
}
|
||||
@ -379,7 +377,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[m_CurrentUsedSize - 1];
|
||||
}
|
||||
@ -388,7 +386,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[m_CurrentUsedSize - 1];
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
@ -73,7 +73,7 @@ if ($OPTIONS{"debug"})
|
||||
|
||||
if ($OPTIONS{"amd64"})
|
||||
{
|
||||
$cflags = " -m64 -DSMALL_CELL_SIZE=64 $cflags";
|
||||
$cflags .= "-m64 -DSMALL_CELLSIZE=64 $cflags";
|
||||
}
|
||||
|
||||
if ($OPTIONS{"debug"})
|
||||
@ -139,7 +139,7 @@ for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
if (-e $ofile)
|
||||
{
|
||||
$file_time = (stat($file))[9];
|
||||
$ofile_time = (stat($ofile))[9];
|
||||
$ofile_time = (stat($file))[9];
|
||||
if ($file_time > $ofile_time)
|
||||
{
|
||||
print "$gcc\n";
|
||||
@ -161,7 +161,7 @@ for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
if (-e $ofile)
|
||||
{
|
||||
$file_time = (stat($file))[9];
|
||||
$ofile_time = (stat($ofile))[9];
|
||||
$ofile_time = (stat($file))[9];
|
||||
if ($file_time > $ofile_time)
|
||||
{
|
||||
print "$gcc\n";
|
||||
@ -173,6 +173,6 @@ for ($i=0; $i<=$#CPP_SOURCE_FILES; $i++)
|
||||
}
|
||||
}
|
||||
|
||||
$gcc = "$gccf $cflags -shared -fPIC -ldl -lm -o $outdir/$bin @LINK";
|
||||
$gcc = "$gccf $cflags -shared -ldl -lm @LINK -o $outdir/$bin";
|
||||
print "$gcc\n";
|
||||
`$gcc`;
|
||||
|
@ -22,7 +22,7 @@ void EngineError(AMX *amx, char *fmt, ...)
|
||||
MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
|
||||
}
|
||||
|
||||
void ClearHooks()
|
||||
void OnAmxxDetach()
|
||||
{
|
||||
register unsigned int i = 0;
|
||||
for (i=0; i<256; i++) {
|
||||
@ -228,8 +228,6 @@ void ServerDeactivate()
|
||||
g_pFunctionTable->pfnStartFrame=NULL; // "server_frame","ServerFrame"
|
||||
g_pFunctionTable->pfnTouch=NULL; // "pfn_touch","vexd_pfntouch"
|
||||
|
||||
ClearHooks();
|
||||
|
||||
RETURN_META(MRES_IGNORED);
|
||||
}
|
||||
|
||||
@ -238,11 +236,8 @@ void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
|
||||
for(int f = 1; f <= gpGlobals->maxClients;f++)
|
||||
g_player_edicts[f]=pEdictList + f;
|
||||
Msg.clear();
|
||||
register int i = 0, j = 0;
|
||||
register int i = 0;
|
||||
for (i=0; i<256; i++) {
|
||||
for (j=0; j<msgHooks[i].size(); j++)
|
||||
if (msgHooks[i].at(j) != -1)
|
||||
MF_UnregisterSPForward(msgHooks[i].at(j));
|
||||
msgHooks[i].clear();
|
||||
msgBlocks[i] = 0;
|
||||
}
|
||||
|
@ -2800,7 +2800,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2813,7 +2813,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2827,7 +2827,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2839,7 +2839,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -2016,7 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2065,7 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2120,7 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2165,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -28,15 +28,14 @@ static cell AMX_NATIVE_CALL register_think(AMX *amx, cell *params)
|
||||
|
||||
EntClass *p = new EntClass;
|
||||
const char *clsname = MF_GetAmxString(amx, params[1], 0, &len);
|
||||
p->Class.assign(clsname);
|
||||
p->Class = new char[strlen(clsname)+1];
|
||||
strcpy(p->Class, clsname);
|
||||
|
||||
p->Forward = MF_RegisterSPForwardByName(amx, MF_GetAmxString(amx, params[2], 0, &len), FP_CELL, FP_DONE);
|
||||
|
||||
Thinks.push_back(p);
|
||||
|
||||
if (!g_pFunctionTable->pfnThink)
|
||||
g_pFunctionTable->pfnThink=Think;
|
||||
|
||||
return p->Forward;
|
||||
}
|
||||
|
||||
@ -47,13 +46,11 @@ static cell AMX_NATIVE_CALL register_impulse(AMX *amx, cell *params)
|
||||
Impulse *p = new Impulse;
|
||||
p->Check = params[1];
|
||||
|
||||
p->Forward = MF_RegisterSPForwardByName(amx, MF_GetAmxString(amx, params[2], 0, &len), FP_CELL, FP_CELL, FP_DONE);
|
||||
p->Forward = MF_RegisterSPForwardByName(amx, MF_GetAmxString(amx, params[2], 0, &len), FP_CELL, FP_DONE);
|
||||
|
||||
Impulses.push_back(p);
|
||||
|
||||
if (!g_pFunctionTable->pfnCmdStart)
|
||||
g_pFunctionTable->pfnCmdStart=CmdStart;
|
||||
|
||||
return p->Forward;
|
||||
}
|
||||
|
||||
@ -67,21 +64,22 @@ static cell AMX_NATIVE_CALL register_touch(AMX *amx, cell *params)
|
||||
Touch *p = new Touch;
|
||||
|
||||
if (!strlen(Toucher) || strcmp(Toucher, "*")==0) {
|
||||
p->Toucher.assign("");
|
||||
p->Toucher = 0;
|
||||
} else {
|
||||
p->Toucher.assign(Toucher);
|
||||
p->Toucher = new char[strlen(Toucher)+1];
|
||||
strcpy(p->Toucher, Toucher);
|
||||
}
|
||||
if (!strlen(Touched) || strcmp(Touched, "*")==0) {
|
||||
p->Touched.assign("");
|
||||
p->Touched = 0;
|
||||
} else {
|
||||
p->Touched.assign(Touched);
|
||||
p->Touched = new char[strlen(Touched)+1];
|
||||
strcpy(p->Touched, Touched);
|
||||
}
|
||||
|
||||
p->Forward = MF_RegisterSPForwardByName(amx, MF_GetAmxString(amx, params[3], 2, &len), FP_CELL, FP_CELL, FP_DONE);
|
||||
|
||||
Touches.push_back(p);
|
||||
|
||||
if (!g_pFunctionTable->pfnTouch)
|
||||
g_pFunctionTable->pfnTouch=pfnTouch;
|
||||
|
||||
return p->Forward;
|
||||
@ -325,7 +323,7 @@ static cell AMX_NATIVE_CALL set_speak(AMX *amx, cell *params) {
|
||||
int iIndex = params[1];
|
||||
int iNewSpeakFlags = params[2];
|
||||
|
||||
if (iIndex> gpGlobals->maxClients || !is_ent_valid(iIndex)) {
|
||||
if (iIndex> 32 || !is_ent_valid(iIndex)) {
|
||||
EngineError(amx, "Invalid player %d", iIndex);
|
||||
return 0;
|
||||
}
|
||||
@ -338,7 +336,7 @@ static cell AMX_NATIVE_CALL set_speak(AMX *amx, cell *params) {
|
||||
static cell AMX_NATIVE_CALL get_speak(AMX *amx, cell *params) {
|
||||
int iIndex = params[1];
|
||||
|
||||
if (!is_ent_valid(iIndex) || iIndex > gpGlobals->maxClients) {
|
||||
if (!is_ent_valid(iIndex) || iIndex > 32) {
|
||||
EngineError(amx, "Invalid player %d", iIndex);
|
||||
return 0;
|
||||
}
|
||||
@ -409,7 +407,7 @@ static cell AMX_NATIVE_CALL attach_view(AMX *amx, cell *params)
|
||||
int iIndex = params[1];
|
||||
int iTargetIndex = params[2];
|
||||
|
||||
if (iIndex > gpGlobals->maxClients || !is_ent_valid(iIndex)) {
|
||||
if (iIndex > 32 || !is_ent_valid(iIndex)) {
|
||||
EngineError(amx, "Invalid player %d", iIndex);
|
||||
return 0;
|
||||
}
|
||||
@ -431,7 +429,7 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
||||
int iIndex = params[1];
|
||||
int iCameraType = params[2];
|
||||
|
||||
if (iIndex > gpGlobals->maxClients || !is_ent_valid(iIndex)) {
|
||||
if (iIndex > 32 || !is_ent_valid(iIndex)) {
|
||||
EngineError(amx, "Invalid player %d", iIndex);
|
||||
return 0;
|
||||
}
|
||||
|
@ -120,11 +120,6 @@ struct GlobalInfo {
|
||||
class Impulse
|
||||
{
|
||||
public:
|
||||
~Impulse()
|
||||
{
|
||||
if (Forward != -1)
|
||||
MF_UnregisterSPForward(Forward);
|
||||
}
|
||||
int Forward;
|
||||
int Check;
|
||||
};
|
||||
@ -133,12 +128,18 @@ class Touch
|
||||
{
|
||||
public:
|
||||
int Forward;
|
||||
String Toucher;
|
||||
String Touched;
|
||||
char *Toucher;
|
||||
char *Touched;
|
||||
~Touch()
|
||||
{
|
||||
if (Forward != -1)
|
||||
MF_UnregisterSPForward(Forward);
|
||||
if (Toucher) {
|
||||
delete [] Toucher;
|
||||
Toucher = 0;
|
||||
}
|
||||
if (Touched) {
|
||||
delete [] Touched;
|
||||
Touched = 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -146,11 +147,13 @@ class EntClass
|
||||
{
|
||||
public:
|
||||
int Forward;
|
||||
String Class;
|
||||
char *Class;
|
||||
~EntClass()
|
||||
{
|
||||
if (Forward != -1)
|
||||
MF_UnregisterSPForward(Forward);
|
||||
if (Class) {
|
||||
delete [] Class;
|
||||
Class = 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1364,9 +1364,14 @@ static cell AMX_NATIVE_CALL find_ent_in_sphere(AMX *amx, cell *params)
|
||||
{
|
||||
int idx = params[1];
|
||||
|
||||
if (!is_ent_valid(idx)) {
|
||||
EngineError(amx, "Invalid Entity %d", idx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
edict_t *pEnt = INDEXENT2(idx);
|
||||
cell *cAddr = MF_GetAmxAddr(amx, params[2]);
|
||||
float origin[3] = {
|
||||
REAL origin[3] = {
|
||||
amx_ctof(cAddr[0]),
|
||||
amx_ctof(cAddr[1]),
|
||||
amx_ctof(cAddr[2])
|
||||
@ -1521,8 +1526,8 @@ static cell AMX_NATIVE_CALL find_ent_by_owner(AMX *amx, cell *params) // native
|
||||
{
|
||||
int iEnt = params[1];
|
||||
int oEnt = params[3];
|
||||
// Check index to start searching at, 0 must be possible for iEnt.
|
||||
if (!is_ent_valid(oEnt)) {
|
||||
// Check index to start searching at, 0 must be possible.
|
||||
if (!is_ent_valid(iEnt) || !is_ent_valid(oEnt)) {
|
||||
EngineError(amx, "Invalid Entity");
|
||||
return 0;
|
||||
}
|
||||
@ -1625,8 +1630,6 @@ AMX_NATIVE_INFO ent_Natives[] = {
|
||||
{"find_ent_by_owner", find_ent_by_owner},
|
||||
{"get_grenade_id", get_grenade_id},
|
||||
|
||||
{"get_keyvalue", get_keyvalue },
|
||||
|
||||
{"copy_keyvalue", copy_keyvalue},
|
||||
|
||||
{NULL, NULL},
|
||||
|
@ -129,7 +129,7 @@ void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int
|
||||
{
|
||||
if (Impulses[i]->Check == g_cmd->impulse)
|
||||
{
|
||||
retVal = MF_ExecuteForward(Impulses[i]->Forward, ENTINDEX(pEntity),origImpulse);
|
||||
retVal = MF_ExecuteForward(Impulses[i]->Forward, ENTINDEX(pEntity));
|
||||
if (retVal & 2 /*PLUGIN_HANDLED_MAIN*/)
|
||||
{
|
||||
g_cmd->impulse=0;
|
||||
@ -148,8 +148,7 @@ void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
}
|
||||
if (res == MRES_SUPERCEDE)
|
||||
g_cmd->impulse=0;
|
||||
|
||||
RETURN_META(res);
|
||||
}
|
||||
|
||||
@ -229,31 +228,31 @@ void pfnTouch(edict_t *pToucher, edict_t *pTouched)
|
||||
META_RES res=MRES_IGNORED;
|
||||
for (i=0; i<Touches.size(); i++)
|
||||
{
|
||||
if (Touches[i]->Toucher.size() == 0)
|
||||
if (Touches[i]->Toucher == 0)
|
||||
{
|
||||
if (Touches[i]->Touched.size() == 0)
|
||||
if (Touches[i]->Touched == 0)
|
||||
{
|
||||
retVal = MF_ExecuteForward(Touches[i]->Forward, ENTINDEX(pToucher), ENTINDEX(pTouched));
|
||||
if (retVal & 2/*PLUGIN_HANDLED_MAIN*/)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
else if (retVal)
|
||||
res=MRES_SUPERCEDE;
|
||||
} else if (Touches[i]->Touched.compare(ptdClass)==0) {
|
||||
} else if (fstrcmp(Touches[i]->Touched, ptdClass)) {
|
||||
retVal = MF_ExecuteForward(Touches[i]->Forward, ENTINDEX(pToucher), ENTINDEX(pTouched));
|
||||
if (retVal & 2/*PLUGIN_HANDLED_MAIN*/)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
else if (retVal)
|
||||
res=MRES_SUPERCEDE;
|
||||
}
|
||||
} else if (Touches[i]->Toucher.compare(ptrClass)==0) {
|
||||
if (Touches[i]->Touched.size() == 0)
|
||||
} else if (fstrcmp(Touches[i]->Toucher, ptrClass)) {
|
||||
if (Touches[i]->Touched == 0)
|
||||
{
|
||||
retVal = MF_ExecuteForward(Touches[i]->Forward, ENTINDEX(pToucher), ENTINDEX(pTouched));
|
||||
if (retVal & 2/*PLUGIN_HANDLED_MAIN*/)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
else if (retVal)
|
||||
res=MRES_SUPERCEDE;
|
||||
} else if (Touches[i]->Touched.compare(ptdClass)==0) {
|
||||
} else if (fstrcmp(Touches[i]->Touched, ptdClass)) {
|
||||
retVal = MF_ExecuteForward(Touches[i]->Forward, ENTINDEX(pToucher), ENTINDEX(pTouched));
|
||||
if (retVal & 2/*PLUGIN_HANDLED_MAIN*/)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
@ -267,8 +266,7 @@ void pfnTouch(edict_t *pToucher, edict_t *pTouched)
|
||||
retVal = MF_ExecuteForward(pfnTouchForward, ENTINDEX(pToucher), ENTINDEX(pTouched));
|
||||
if (retVal)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
if (VexdTouchForward != -1) {
|
||||
} else if (VexdTouchForward != -1) {
|
||||
retVal = MF_ExecuteForward(VexdTouchForward, ENTINDEX(pToucher), ENTINDEX(pTouched));
|
||||
if (retVal)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
@ -285,7 +283,7 @@ void Think(edict_t *pent)
|
||||
int retVal=0;
|
||||
for (i=0; i<Thinks.size(); i++)
|
||||
{
|
||||
if (Thinks[i]->Class.compare(cls)==0)
|
||||
if (fstrcmp(cls, Thinks[i]->Class))
|
||||
{
|
||||
retVal=MF_ExecuteForward(Thinks[i]->Forward, ENTINDEX(pent));
|
||||
if (retVal & 2/*PLUGIN_HANDLED_MAIN*/)
|
||||
|
@ -36,7 +36,7 @@ public:
|
||||
|
||||
int type;
|
||||
REAL fData;
|
||||
String cData;
|
||||
CString cData;
|
||||
int iData;
|
||||
};
|
||||
|
||||
|
@ -32,8 +32,6 @@
|
||||
#ifndef __CVECTOR_H__
|
||||
#define __CVECTOR_H__
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
// Vector
|
||||
template <class T> class CVector
|
||||
{
|
||||
@ -78,7 +76,7 @@ template <class T> class CVector
|
||||
delete [] m_Data;
|
||||
}
|
||||
if (m_Size < size)
|
||||
m_CurrentSize = size;
|
||||
m_CurrentUsedSize = size;
|
||||
m_Data = newData;
|
||||
m_Size = size;
|
||||
return true;
|
||||
@ -286,7 +284,7 @@ public:
|
||||
iterator iterAt(size_t pos)
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
return iterator(m_Data + pos);
|
||||
}
|
||||
|
||||
@ -333,7 +331,7 @@ public:
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[pos];
|
||||
}
|
||||
@ -342,7 +340,7 @@ public:
|
||||
{
|
||||
if (pos > m_CurrentUsedSize)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[pos];
|
||||
}
|
||||
@ -361,7 +359,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[0];
|
||||
}
|
||||
@ -370,7 +368,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[0];
|
||||
}
|
||||
@ -379,7 +377,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[m_CurrentUsedSize - 1];
|
||||
}
|
||||
@ -388,7 +386,7 @@ public:
|
||||
{
|
||||
if (m_CurrentUsedSize < 1)
|
||||
{
|
||||
assert(0);
|
||||
ASSERT(0);
|
||||
}
|
||||
return m_Data[m_CurrentUsedSize - 1];
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
|
@ -211,13 +211,6 @@ static cell AMX_NATIVE_CALL dllfunc(AMX *amx,cell *params)
|
||||
CHECK_ENTITY(index);
|
||||
iparam1 = gpMetaUtilFuncs->pfnCallGameEntity(PLID,STRING(ALLOC_STRING(temp)),VARS(INDEXENT2(index)));
|
||||
return iparam1;
|
||||
case DLLFunc_ClientUserInfoChanged: // void ) (edict_t *pEntity, char *infobuffer)
|
||||
index = cRet[0];
|
||||
CHECK_ENTITY(index);
|
||||
gpGamedllFuncs->dllapi_table->pfnClientUserInfoChanged(INDEXENT2(index),(*g_engfuncs.pfnGetInfoKeyBuffer)(INDEXENT2(index)));
|
||||
return 1;
|
||||
|
||||
|
||||
default:
|
||||
MF_Log("Unknown dllfunc entry.");
|
||||
MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
|
||||
|
@ -48,8 +48,7 @@ enum
|
||||
DLLFunc_CreateInstancedBaselines, // void ) ( void );
|
||||
DLLFunc_pfnAllowLagCompensation, // int )( void );
|
||||
// I know this does not fit with DLLFUNC(), but I dont want another native just for it.
|
||||
MetaFunc_CallGameEntity, // bool (plid_t plid, const char *entStr,entvars_t *pev);
|
||||
DLLFunc_ClientUserInfoChanged // void ) (edict_t *pEntity, char *infobuffer)
|
||||
MetaFunc_CallGameEntity // bool (plid_t plid, const char *entStr,entvars_t *pev);
|
||||
};
|
||||
|
||||
#endif //_INCLUDE_DLLFUNC_H
|
||||
|
@ -962,6 +962,7 @@ static cell AMX_NATIVE_CALL engfunc(AMX *amx, cell *params)
|
||||
temp2 = MF_GetAmxString(amx,params[4],1,&len);
|
||||
(*g_engfuncs.pfnSetClientKeyValue)(index,(*g_engfuncs.pfnGetInfoKeyBuffer)(INDEXENT2(index)),temp,temp2);
|
||||
return 1;
|
||||
|
||||
default:
|
||||
LOG_CONSOLE(PLID,"[NS2AMX] Unknown engfunc type provided.");
|
||||
return 0;
|
||||
|
@ -175,9 +175,6 @@
|
||||
<File
|
||||
RelativePath=".\forward.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\forwardmacros.h">
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
|
@ -4,7 +4,7 @@
|
||||
static cell AMX_NATIVE_CALL amx_pev(AMX *amx,cell *params)
|
||||
{
|
||||
int index=params[1];
|
||||
if (index >= 1 && index <= gpGlobals->maxClients)
|
||||
if (index >= 1 && index <= 32)
|
||||
{
|
||||
if (!MF_IsPlayerIngame(index))
|
||||
{
|
||||
@ -12,7 +12,7 @@ static cell AMX_NATIVE_CALL amx_pev(AMX *amx,cell *params)
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
if (index > gpGlobals->maxEntities || index < 1)
|
||||
if (index > gpGlobals->maxEntities)
|
||||
{
|
||||
MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
@ -176,9 +176,6 @@ static cell AMX_NATIVE_CALL amx_pev(AMX *amx,cell *params)
|
||||
case idealpitch:
|
||||
fReturn = pPlayer->v.idealpitch;
|
||||
break;
|
||||
case ideal_yaw:
|
||||
fReturn = pPlayer->v.ideal_yaw;
|
||||
break;
|
||||
case pitch_speed:
|
||||
fReturn = pPlayer->v.pitch_speed;
|
||||
break;
|
||||
@ -767,8 +764,6 @@ static cell AMX_NATIVE_CALL amx_set_pev(AMX *amx, cell *params)
|
||||
case idealpitch:
|
||||
pPlayer->v.idealpitch = fValue;
|
||||
return 1;
|
||||
case ideal_yaw:
|
||||
pPlayer->v.ideal_yaw = fValue;
|
||||
case pitch_speed:
|
||||
pPlayer->v.pitch_speed = fValue;
|
||||
return 1;
|
||||
|
@ -43,7 +43,6 @@ enum pev_pointers
|
||||
impacttime,
|
||||
starttime,
|
||||
idealpitch,
|
||||
ideal_yaw,
|
||||
pitch_speed,
|
||||
yaw_speed,
|
||||
ltime,
|
||||
|
@ -2802,7 +2802,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2815,7 +2815,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2829,7 +2829,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2841,7 +2841,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1955,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -2016,7 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2065,7 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2120,7 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2165,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
|
@ -2479,9 +2479,6 @@ PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
PFN_FORMAT g_fn_Format;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2526,7 +2523,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
|
||||
REQFUNC("Log", g_fn_Log, PFN_LOG);
|
||||
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
|
||||
REQFUNC("Format", g_fn_Format, PFN_FORMAT);
|
||||
|
||||
// Amx scripts
|
||||
REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT);
|
||||
@ -2534,7 +2530,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME);
|
||||
REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT);
|
||||
REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT);
|
||||
REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME);
|
||||
|
||||
// String / mem in amx scripts support
|
||||
REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING);
|
||||
@ -2581,8 +2576,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV);
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2677,14 +2670,11 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
MF_AmxExecv(0, 0, 0, 0, 0);
|
||||
MF_AmxFindPublic(0, 0, 0);
|
||||
MF_AmxAllot(0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0);
|
||||
MF_UnloadAmxScript(0, 0);
|
||||
MF_RegisterSPForward(0, 0, 0, 0, 0, 0);
|
||||
MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0);
|
||||
MF_UnregisterSPForward(0);
|
||||
MF_GetPlayerFrags(0);
|
||||
MF_GetPlayerEdict(0);
|
||||
MF_Format("", 4, "str");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2801,7 +2791,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2814,7 +2804,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2828,7 +2818,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2840,7 +2830,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1944,12 +1945,6 @@ typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/);
|
||||
#ifdef USE_METAMOD
|
||||
typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#else
|
||||
typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#endif
|
||||
|
||||
typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
const unsigned int /*type*/, const size_t /*size*/);
|
||||
typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
@ -1961,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -1969,7 +1964,6 @@ typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*pa
|
||||
typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/);
|
||||
typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/);
|
||||
typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||
|
||||
extern PFN_ADD_NATIVES g_fn_AddNatives;
|
||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||
@ -2023,9 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
extern PFN_FORMAT g_fn_Format;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2074,9 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
edict_t* MF_GetPlayerEdict (int id) { }
|
||||
const char * MF_Format (const char *fmt, ...) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2131,9 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
|
||||
#define MF_Format g_fn_Format;
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2178,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
Binary file not shown.
@ -25,7 +25,7 @@ $ccf = "cc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls -I$geoip";
|
||||
|
||||
|
@ -2479,9 +2479,6 @@ PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
PFN_FORMAT g_fn_Format;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2526,7 +2523,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
|
||||
REQFUNC("Log", g_fn_Log, PFN_LOG);
|
||||
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
|
||||
REQFUNC("Format", g_fn_Format, PFN_FORMAT);
|
||||
|
||||
// Amx scripts
|
||||
REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT);
|
||||
@ -2534,7 +2530,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME);
|
||||
REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT);
|
||||
REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT);
|
||||
REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME);
|
||||
|
||||
// String / mem in amx scripts support
|
||||
REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING);
|
||||
@ -2581,8 +2576,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV);
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2677,14 +2670,11 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
MF_AmxExecv(0, 0, 0, 0, 0);
|
||||
MF_AmxFindPublic(0, 0, 0);
|
||||
MF_AmxAllot(0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0, 0);
|
||||
MF_LoadAmxScript(0, 0, 0, 0);
|
||||
MF_UnloadAmxScript(0, 0);
|
||||
MF_RegisterSPForward(0, 0, 0, 0, 0, 0);
|
||||
MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0);
|
||||
MF_UnregisterSPForward(0);
|
||||
MF_GetPlayerFrags(0);
|
||||
MF_GetPlayerEdict(0);
|
||||
MF_Format("", 4, "str");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2801,7 +2791,7 @@ void *operator new(size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void *operator new[](size_t reportedSize)
|
||||
@ -2814,7 +2804,7 @@ void *operator new[](size_t reportedSize)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
// Microsoft memory tracking operators
|
||||
@ -2828,7 +2818,7 @@ void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine)
|
||||
{
|
||||
@ -2840,7 +2830,7 @@ void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine
|
||||
return ptr;
|
||||
|
||||
// allocation failed
|
||||
return NULL;
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
void operator delete(void *reportedAddress)
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1944,12 +1945,6 @@ typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/);
|
||||
#ifdef USE_METAMOD
|
||||
typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#else
|
||||
typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/);
|
||||
#endif
|
||||
|
||||
typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
const unsigned int /*type*/, const size_t /*size*/);
|
||||
typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/,
|
||||
@ -1961,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -1969,7 +1964,6 @@ typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*pa
|
||||
typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/);
|
||||
typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/);
|
||||
typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||
|
||||
extern PFN_ADD_NATIVES g_fn_AddNatives;
|
||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||
@ -2023,9 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
|
||||
extern PFN_FORMAT g_fn_Format;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2074,9 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
edict_t* MF_GetPlayerEdict (int id) { }
|
||||
const char * MF_Format (const char *fmt, ...) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2131,9 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
|
||||
#define MF_Format g_fn_Format;
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2178,4 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -2479,7 +2479,6 @@ PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
|
||||
// *** Exports ***
|
||||
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
|
||||
@ -2531,7 +2530,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME);
|
||||
REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT);
|
||||
REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT);
|
||||
REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME);
|
||||
|
||||
// String / mem in amx scripts support
|
||||
REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING);
|
||||
@ -2578,7 +2576,6 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
|
||||
REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV);
|
||||
REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR);
|
||||
REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH);
|
||||
REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS);
|
||||
|
||||
// Memory
|
||||
REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR);
|
||||
@ -2681,8 +2678,6 @@ void ValidateMacros_DontCallThis_Smiley()
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MEMORY_TEST
|
||||
|
||||
/************* MEMORY *************/
|
||||
// undef all defined macros
|
||||
#undef new
|
||||
@ -2854,8 +2849,6 @@ void operator delete[](void *reportedAddress)
|
||||
Mem_Deallocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_delete_array, reportedAddress);
|
||||
}
|
||||
|
||||
#endif //MEMORY_TEST
|
||||
|
||||
/************* stuff from dlls/util.cpp *************/
|
||||
// must come here because cbase.h declares it's own operator new
|
||||
|
||||
|
@ -204,9 +204,11 @@ typedef struct tagAMX {
|
||||
cell reset_stk PACKED;
|
||||
cell reset_hea PACKED;
|
||||
cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */
|
||||
#if defined JIT
|
||||
/* support variables for the JIT */
|
||||
int reloc_size PACKED; /* required temporary buffer for relocations */
|
||||
long code_size PACKED; /* estimated memory footprint of the native code */
|
||||
#endif
|
||||
} AMX;
|
||||
|
||||
enum {
|
||||
@ -1932,7 +1934,6 @@ typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/);
|
||||
typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
|
||||
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
|
||||
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
|
||||
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
|
||||
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
|
||||
@ -1955,7 +1956,7 @@ typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*in
|
||||
typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/);
|
||||
typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */);
|
||||
typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/);
|
||||
typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/);
|
||||
typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/);
|
||||
typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/);
|
||||
@ -2016,7 +2017,6 @@ extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName;
|
||||
extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward;
|
||||
extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File;
|
||||
extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
|
||||
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
|
||||
|
||||
#ifdef MAY_NEVER_BE_DEFINED
|
||||
// Function prototypes for intellisense and similar systems
|
||||
@ -2065,7 +2065,6 @@ cell amx_ftoc (float x) { }
|
||||
int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { }
|
||||
int MF_RegisterSPForward (AMX * amx, int func, ...) { }
|
||||
void MF_UnregisterSPForward (int id) { }
|
||||
int MF_GetPlayerFlags (int id) { }
|
||||
#endif // MAY_NEVER_BE_DEFINED
|
||||
|
||||
#define MF_AddNatives g_fn_AddNatives
|
||||
@ -2120,9 +2119,6 @@ void MF_Log(const char *fmt, ...);
|
||||
#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName
|
||||
#define MF_RegisterSPForward g_fn_RegisterSPForward
|
||||
#define MF_UnregisterSPForward g_fn_UnregisterSPForward
|
||||
#define MF_GetPlayerFlags g_fn_GetPlayerFlags
|
||||
|
||||
#ifdef MEMORY_TEST
|
||||
|
||||
/*** Memory ***/
|
||||
void *operator new(size_t reportedSize);
|
||||
@ -2167,6 +2163,5 @@ void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, cons
|
||||
#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)
|
||||
#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)
|
||||
|
||||
#endif //MEMORY_TEST
|
||||
|
||||
#endif // #ifndef __AMXXMODULE_H__
|
||||
|
@ -9,18 +9,10 @@ void CPlayer::PreThink()
|
||||
Connect();
|
||||
bot=true;
|
||||
}
|
||||
if (olddeadflag && pev->deadflag == 0 && SpawnForward != -1)
|
||||
MF_ExecuteForward(SpawnForward,index());
|
||||
|
||||
if (oldteam != pev->team && TeamForward != -1)
|
||||
MF_ExecuteForward(TeamForward,index(),pev->team,oldteam);
|
||||
|
||||
int tClass = GetClass();
|
||||
if (tClass != iclass)
|
||||
ChangeClass(tClass);
|
||||
oldimpulse=pev->impulse;
|
||||
olddeadflag = pev->deadflag;
|
||||
oldteam = pev->team;
|
||||
}
|
||||
void CPlayer::PreThink_Post()
|
||||
{
|
||||
@ -42,8 +34,7 @@ void CPlayer::PostThink_Post()
|
||||
}
|
||||
void CPlayer::ChangeClass(int newclass)
|
||||
{
|
||||
if (ChangeclassForward != -1)
|
||||
MF_ExecuteForward(ChangeclassForward, index(), newclass, iclass, oldimpulse);
|
||||
MF_ExecuteForward(ChangeclassForward, index, newclass, iclass, oldimpulse);
|
||||
iclass=newclass;
|
||||
}
|
||||
|
||||
@ -84,7 +75,6 @@ void CPlayer::Connect()
|
||||
{
|
||||
connected=true;
|
||||
bot=false;
|
||||
|
||||
Reset();
|
||||
}
|
||||
void CPlayer::Disconnect()
|
||||
@ -105,7 +95,4 @@ void CPlayer::Reset()
|
||||
this->body=0;
|
||||
this->fov=0.0;
|
||||
this->foved=false;
|
||||
olddeadflag=0;
|
||||
oldteam=0;
|
||||
|
||||
}
|
@ -19,9 +19,7 @@ public:
|
||||
edict_t *edict;
|
||||
entvars_t *pev;
|
||||
int oldimpulse; // Store the previous impulse.
|
||||
int olddeadflag;
|
||||
int oldteam;
|
||||
int index() { return ENTINDEX(pev->pContainingEntity); };
|
||||
int index;
|
||||
|
||||
bool connected;
|
||||
REAL fov;
|
||||
|
@ -23,7 +23,7 @@ $gccf = "gcc";
|
||||
my %OPTIONS, %OPT;
|
||||
|
||||
$OPT{"debug"} = "-g -ggdb";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\" -fno-exceptions -fno-rtti";
|
||||
$OPT{"opt"} = "-O2 -ffast-math -funroll-loops -fomit-frame-pointer -s -DNDEBUG -Wall -Wno-unknown-pragmas -DOPT_TYPE=\"optimized\"";
|
||||
|
||||
$OPTIONS{"include"} = "-I$sdk -I. -I$mm -I$sdk/engine -I$sdk/common -I$sdk/pm_shared -I$sdk/dlls";
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
// These are natives directly from NS2AMX
|
||||
|
||||
|
||||
static cell AMX_NATIVE_CALL ns_has_weapon(AMX *amx,cell *params)
|
||||
{
|
||||
CHECK_ENTITY(params[1]);
|
||||
@ -42,7 +43,7 @@ static cell AMX_NATIVE_CALL ns_get_spawnpoints(AMX *amx, cell *params)
|
||||
vec3_t vRet;
|
||||
if (params[2] == 0)
|
||||
{
|
||||
return (int)ns_spawnpoints.getnum(params[1]);
|
||||
return ns_spawnpoints.getnum(params[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -322,59 +323,8 @@ static cell AMX_NATIVE_CALL ns_giveitem(AMX *amx, cell *params)
|
||||
|
||||
return 1;
|
||||
}
|
||||
static cell AMX_NATIVE_CALL ns_user_kill(AMX *amx, cell *params)
|
||||
{
|
||||
int index = params[1];
|
||||
if (index<1||index>gpGlobals->maxClients)
|
||||
return 0;
|
||||
|
||||
edict_t *e=INDEXENT2(index);
|
||||
if (e->v.iuser3 == 2 /* Commander class*/)
|
||||
return 0;
|
||||
|
||||
if (MF_IsPlayerIngame(index) && MF_IsPlayerAlive(index))
|
||||
{
|
||||
float bef = e->v.frags;
|
||||
edict_t *pEntity = CREATE_NAMED_ENTITY(MAKE_STRING("trigger_hurt"));
|
||||
if (pEntity)
|
||||
{
|
||||
KeyValueData kvd;
|
||||
kvd.szClassName="trigger_hurt";
|
||||
kvd.szKeyName="classname";
|
||||
kvd.szValue="trigger_hurt";
|
||||
kvd.fHandled=0;
|
||||
MDLL_KeyValue(pEntity,&kvd);
|
||||
kvd.szClassName="trigger_hurt";
|
||||
kvd.szKeyName="dmg";
|
||||
kvd.szValue="20000.0";
|
||||
kvd.fHandled=0;
|
||||
MDLL_KeyValue(pEntity,&kvd);
|
||||
kvd.szClassName="trigger_hurt";
|
||||
kvd.szKeyName="damagetype";
|
||||
kvd.szValue="1";
|
||||
kvd.fHandled=0;
|
||||
MDLL_KeyValue(pEntity,&kvd);
|
||||
kvd.szClassName="trigger_hurt";
|
||||
kvd.szKeyName="origin";
|
||||
kvd.szValue="8192 8192 8192";
|
||||
kvd.fHandled=0;
|
||||
MDLL_KeyValue(pEntity,&kvd);
|
||||
MDLL_Spawn(pEntity);
|
||||
pEntity->v.classname=MAKE_STRING("slay");
|
||||
MDLL_Touch(pEntity,e);
|
||||
REMOVE_ENTITY(pEntity);
|
||||
}
|
||||
if (params[2]) e->v.frags = bef;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
AMX_NATIVE_INFO ns_misc_natives[] = {
|
||||
///////////////////
|
||||
{ "user_kill", ns_user_kill },
|
||||
|
||||
|
||||
{ "ns_get_build", ns_get_build },
|
||||
|
||||
{ "ns_set_player_model", ns_set_player_model },
|
||||
|
@ -3,33 +3,33 @@
|
||||
int get_private(edict_t *pEntity, int woffset,int loffset)
|
||||
{
|
||||
#ifdef __linux__
|
||||
return *(int*)((char*)(pEntity->pvPrivateData)+loffset);
|
||||
return *((int *)pEntity->pvPrivateData + loffset);
|
||||
#else
|
||||
return *(int*)((char*)(pEntity->pvPrivateData)+woffset);
|
||||
return *((int *)pEntity->pvPrivateData + woffset);
|
||||
#endif
|
||||
}
|
||||
REAL get_private_f(edict_t *pEntity, int woffset, int loffset)
|
||||
{
|
||||
#ifdef __linux__
|
||||
return *(REAL*)((char*)(pEntity->pvPrivateData)+loffset);
|
||||
return *((REAL *)pEntity->pvPrivateData + loffset);
|
||||
#else
|
||||
return *(REAL*)((char*)(pEntity->pvPrivateData)+woffset);
|
||||
return *((REAL *)pEntity->pvPrivateData + woffset);
|
||||
#endif
|
||||
}
|
||||
void set_private(edict_t *pEntity, int woffset, int loffset, int value)
|
||||
{
|
||||
#ifdef __linux__
|
||||
*(int*)((char*)(pEntity->pvPrivateData)+loffset) = value;
|
||||
*((int *)pEntity->pvPrivateData + loffset) = value;
|
||||
#else
|
||||
*(int*)((char*)(pEntity->pvPrivateData)+woffset) = value;
|
||||
*((int *)pEntity->pvPrivateData + woffset) = value;
|
||||
#endif
|
||||
}
|
||||
void set_private(edict_t *pEntity, int woffset, int loffset, REAL value)
|
||||
{
|
||||
#ifdef __linux__
|
||||
*(REAL*)((char*)(pEntity->pvPrivateData)+loffset) = value;
|
||||
*((REAL *)pEntity->pvPrivateData + loffset) = value;
|
||||
#else
|
||||
*(REAL*)((char*)(pEntity->pvPrivateData)+woffset) = value;
|
||||
*((REAL *)pEntity->pvPrivateData + woffset) = value;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -299,33 +299,21 @@ static cell AMX_NATIVE_CALL ns_set_deaths(AMX *amx, cell *params)
|
||||
set_private(player->edict,OFFSET_WIN_DEATHS,OFFSET_LIN_DEATHS,(int)params[2]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL ns_get_struct_owner(AMX *amx, cell *params)
|
||||
static cell AMX_NATIVE_CALL ns_get_icon(AMX *amx, cell *params)
|
||||
{
|
||||
int id = params[1];
|
||||
if (id <= gpGlobals->maxClients || id >= gpGlobals->maxEntities)
|
||||
if (id < 1 || id > gpGlobals->maxClients)
|
||||
return 0;
|
||||
edict_t *pEntity = INDEXENT2(id);
|
||||
if (!pEntity)
|
||||
return 0;
|
||||
if (pEntity->pvPrivateData == NULL)
|
||||
return 0;
|
||||
return get_private(pEntity,OFFSET_WIN_STRUCTOWNER,OFFSET_LIN_STRUCTOWNER);
|
||||
CPlayer *player = GET_PLAYER_I(id);
|
||||
return get_private(player->edict,OFFSET_WIN_ICON,OFFSET_LIN_ICON);
|
||||
}
|
||||
static cell AMX_NATIVE_CALL ns_set_struct_owner(AMX *amx, cell *params)
|
||||
static cell AMX_NATIVE_CALL ns_set_icon(AMX *amx, cell *params)
|
||||
{
|
||||
int id = params[1];
|
||||
int ido = params[2];
|
||||
if (id <= gpGlobals->maxClients || id >= gpGlobals->maxEntities)
|
||||
if (id < 1 || id > gpGlobals->maxClients)
|
||||
return 0;
|
||||
if (ido > gpGlobals->maxClients || ido < -1)
|
||||
return 0;
|
||||
edict_t *pEntity = INDEXENT2(id);
|
||||
if (!pEntity)
|
||||
return 0;
|
||||
if (pEntity->pvPrivateData == NULL)
|
||||
return 0;
|
||||
set_private(pEntity,OFFSET_WIN_STRUCTOWNER,OFFSET_LIN_STRUCTOWNER,ido);
|
||||
CPlayer *player = GET_PLAYER_I(id);
|
||||
set_private(player->edict,OFFSET_WIN_ICON,OFFSET_LIN_ICON,(int)params[2]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -358,12 +346,12 @@ AMX_NATIVE_INFO ns_pdata_natives[] = {
|
||||
{ "ns_get_deaths", ns_get_deaths },
|
||||
{ "ns_set_deaths", ns_set_deaths },
|
||||
|
||||
{ "ns_get_icon", ns_get_icon },
|
||||
{ "ns_set_icon", ns_set_icon },
|
||||
|
||||
{ "ns_get_hive_trait", ns_get_hive_trait },
|
||||
{ "ns_set_hive_trait", ns_set_hive_trait },
|
||||
|
||||
{ "ns_get_struct_owner", ns_get_struct_owner },
|
||||
{ "ns_set_struct_owner", ns_set_struct_owner },
|
||||
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user