67 Commits

Author SHA1 Message Date
a54c4f530d Tagged 1.76d 2007-03-09 03:03:30 +00:00
7adc49c541 changed start page back to original first page 2007-03-08 17:23:36 +00:00
baba221dd9 made my life 1,000 times easier for creating these release builds 2007-03-08 06:20:11 +00:00
829485ef2a bumped version one last time
fixed makefile for nongpl changes
2007-03-08 04:54:03 +00:00
b793b80360 fixed several FTP bugs (thanks bail!) 2007-03-07 20:38:42 +00:00
ea34c2c78a fixed a bug reported by peanut where amx_fwrite() had the wrong sizeof() type 2007-03-07 02:29:54 +00:00
722e97fef2 (hopefully) fixed bug where 0 files+dirs were detected 2007-03-05 21:37:48 +00:00
bd412d7204 Fixed bug amb70 - include files not semicolon-correct
Also, removed OLOcode from amxmisc.inc
2007-03-05 19:30:40 +00:00
39e6d958bf bumped installer version 2007-03-04 06:06:44 +00:00
bb54b37399 removed allow_nongpl, it wasn't really viable 2007-03-04 04:37:42 +00:00
88dd3b021e removed this option 2007-03-04 04:33:29 +00:00
ef4d19378d bumped more versions 2007-03-04 03:43:57 +00:00
7f1ea1490d bumped necessary module versions 2007-03-04 03:42:11 +00:00
041fb4e37f updated compiler builds 2007-03-04 01:46:38 +00:00
193e59df90 updated compiler builds 2007-03-04 01:40:40 +00:00
d4703f045d fixed a bug where '%c' did not correctly count toward the writable string length 2007-03-04 00:02:23 +00:00
109b1e45b5 added non-gpl plugin blocking (wow i can't believe it came to this) 2007-03-03 23:14:24 +00:00
1f1edef98d Merged in NS 3.2 Final offsets 2007-03-01 22:39:57 +00:00
83631e95aa fixed bug amb41 2007-02-24 21:08:00 +00:00
6eb1242600 fixed tags (amb36) 2007-02-24 20:07:21 +00:00
77e7ea161b Fixed half of amb29 - Debug plugins could not be paused/stopped
Waiting on language keys to fix the rest
2007-02-21 21:03:48 +00:00
09f271e5d0 Fixed amb35, multiple plugins loading 2007-02-21 18:42:14 +00:00
e35a8326d5 Fixed an issue where backwards amx mod compatibility layer wasn't transparent. 2007-02-20 22:25:17 +00:00
09d46aa025 Fixed native get_num_ents 2007-02-20 20:57:21 +00:00
615e097c68 Fixed am49892 - Plugin load fails going to error logs instead of normal logs 2007-02-19 08:46:43 +00:00
ade56b62e9 Fixed am50089 - unary - float operator 2007-02-19 08:11:00 +00:00
b3d7f04b5e Fixed am50530 - amx_psay output format fix 2007-02-19 07:34:38 +00:00
4f81c50a3e Fixed am50731 - compiler crash when amxmisc is included before amxmodx 2007-02-19 07:03:26 +00:00
d45c3aeb96 Fixed am51050 - "amxx {pause,unpause" had misleading output 2007-02-19 06:57:26 +00:00
fff603635a Fixed am51051 - unpause() returning true on stopped plugins 2007-02-19 06:43:52 +00:00
06f01ea7dc Wow I deleted the comment too! 2007-02-19 06:38:08 +00:00
2395abcf7e Fixed retarded typo 2007-02-19 06:37:03 +00:00
d33f9ba2d4 Fixed am51083 - Comments in amxmodx.inc 2007-02-19 06:29:02 +00:00
aec28542ac Fixed am51276 - typod "return" 2007-02-19 06:23:34 +00:00
73219c45dd Fixed bug am51368 - Unused variable 2007-02-19 06:16:56 +00:00
39d6cb7840 Fixed #error ignoring #if blocks 2007-02-16 18:49:21 +00:00
bfd4e345dd corrected a typo 2007-02-14 18:55:42 +00:00
aded0f9c1c Added request am49339 - exploding chainsaw gun 2007-02-14 05:17:57 +00:00
811265e28b made it a little safer 2007-02-12 19:35:01 +00:00
0caffa2b82 fixed bug where directories in / couldn't be detected unless your home directory was / 2007-02-12 19:32:32 +00:00
4dfb01bb1d finished ftp browser in the settings dialog (rewrote it, looks pretty nice now imo), various other changes 2007-02-12 18:21:40 +00:00
862ed243be Fixed typo (am51042) 2007-02-10 21:10:55 +00:00
39f1fa6045 Fixed unnecessary call to accessUser() (am51009) 2007-02-09 08:34:33 +00:00
f26939e2cc Fixed bug am50907 - Name and Tag admins were case sensitive 2007-02-09 07:26:37 +00:00
9d53451933 bumped version to 1.76d 2007-02-05 21:21:50 +00:00
4ae54eeb2a fixed am50849 2007-02-05 21:13:15 +00:00
d62ae07b75 Merged in changes from revision 3276 in 1.77: ES_Body was not a valid parameter for get/set_es() 2007-02-01 22:25:18 +00:00
0f22a7fa06 Added missing natives:
- take_damage
- entity_use
- get_num_ents
2007-01-31 20:20:49 +00:00
7f3c2d00ac fixed bug am50501 2007-01-28 05:01:38 +00:00
b324e8ed9d Merged revision 3260 from 1.77; Stats would not display on awkward mp_roundtime settings 2007-01-26 06:15:49 +00:00
8420823713 Merged revision 3251 from 1.77; debug commands not counted as running in amx_plugins 2007-01-26 06:12:25 +00:00
1d1b50ce0c Merged revision 3250 from 1.77; amx_addban is now ADMIN_RCON access by default 2007-01-26 06:11:00 +00:00
35fcca8a66 Merged revision 3258 from 1.77; forward_return with non-string values 2007-01-26 06:08:29 +00:00
7a01503478 Merged revision 3249 from 1.77; fixed typo in tfcconst.in (am50097) 2007-01-26 06:04:11 +00:00
dd8f138892 Back ported revision 3242 - Every include file now is const correct (am49281) 2007-01-26 05:56:10 +00:00
8341e41f04 Fixed TE_GLOWSPRITE (vittu) & TE_PLAYERSPRITES examples 2007-01-18 00:18:31 +00:00
a682ec6b7a Fixed TE_DLIGHT example Valve mistake! (P34nut) 2007-01-17 18:16:17 +00:00
451b648c7f Fixed TR_InOpen missing with *et_tr native (XxAvalanchexX) 2007-01-17 14:52:09 +00:00
2d1c43c937 Merged in changes to report 49977 2007-01-17 06:56:52 +00:00
17adb214f2 Fixed bug am49982 (wrote parameter counts) 2007-01-17 05:32:45 +00:00
3a2839c6c9 bugfix for 49698 2007-01-15 15:56:48 +00:00
f96f95c4ff translated shortcuts into english :x 2007-01-15 15:53:14 +00:00
609fdae508 Fixed native get_user_origin mode 4 2007-01-09 15:01:08 +00:00
580305ce92 fixed am49041 (hopefully) 2007-01-02 13:23:23 +00:00
cbfd12e0f1 fixed am49040 2007-01-02 13:17:33 +00:00
c5ccf7d2c8 fixed am48881 2007-01-02 13:04:56 +00:00
Zor
d1c42751cd - Fix in need of testing in regards to the TK / TA bug detected
- Created a temp pointer as the first thing to do in the CurWpn function.  This way if another message gets thrown while still in the middle of this function the global pointer to messaged player is not affected.
2006-12-29 19:25:16 +00:00
87 changed files with 1907 additions and 1254 deletions

View File

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

View File

@ -90,7 +90,7 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
{
if (warn)
{
AMXXLOG_Log("[AMXX] Plugins list not found (file \"%s\")", filename);
AMXXLOG_Error("[AMXX] Plugins list not found (file \"%s\")", filename);
}
return 1;
}
@ -153,6 +153,11 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
continue;
}
if (findPlugin(pluginName) != NULL)
{
continue;
}
CPlugin* plugin = loadPlugin(pluginsDir, pluginName, error, debugFlag);
if (plugin->getStatusCode() == ps_bad_load)
@ -160,7 +165,7 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
char errorMsg[255];
sprintf(errorMsg, "%s (plugin \"%s\")", error, pluginName);
plugin->setError(errorMsg);
AMXXLOG_Log("[AMXX] %s", plugin->getError());
AMXXLOG_Error("[AMXX] %s", plugin->getError());
}
}
@ -231,6 +236,17 @@ CPluginMngr::CPlugin* CPluginMngr::findPlugin(const char* name)
return a;
}
void CPluginMngr::CPlugin::AddToFailCounter(unsigned int i)
{
failcounter += i;
if ((failcounter >= 3)
&& (status ))
{
errorMsg.assign("This plugin is non-GPL which violates AMX Mod X's license.");
status = ps_bad_load;
}
}
const char* CPluginMngr::CPlugin::getStatus() const
{
switch (status)
@ -258,6 +274,7 @@ CPluginMngr::CPlugin::CPlugin(int i, const char* p, const char* n, char* e, int
{
const char* unk = "unknown";
failcounter = 0;
title.assign(unk);
author.assign(unk);
version.assign(unk);

View File

@ -71,6 +71,7 @@ public:
String author;
String errorMsg;
unsigned int failcounter;
int m_PauseFwd;
int m_UnpauseFwd;
int paused_fun;
@ -98,9 +99,11 @@ public:
inline void setError(const char* n) { errorMsg.assign(n); }
inline bool isValid() const { return (status >= ps_paused); }
inline bool isPaused() const { return ((status == ps_paused) || (status == ps_stopped)); }
inline bool isStopped() const { return (status == ps_stopped); }
inline bool isExecutable(int id) const { return (isValid() && !isPaused()); }
void Finalize();
void AddToFailCounter(unsigned int i);
void pausePlugin();
void unpausePlugin();
void pauseFunction(int id);

View File

@ -20,7 +20,7 @@ OBJECTS = meta_api.cpp CFile.cpp CVault.cpp vault.cpp float.cpp file.cpp modules
amxxfile.cpp CLang.cpp md5.cpp emsg.cpp CForward.cpp CPlugin.cpp CModule.cpp \
CMenu.cpp util.cpp amx.cpp amxdbg.cpp natives.cpp newmenus.cpp debugger.cpp \
optimizer.cpp format.cpp messages.cpp libraries.cpp vector.cpp sorting.cpp \
amxmod_compat.cpp
amxmod_compat.cpp nongpl_matches.cpp
LINK = -lgcc -static-libgcc

View File

@ -35,9 +35,26 @@
#include "debugger.h"
#include "binlog.h"
#include "libraries.h"
#include "nongpl_matches.h"
const char *invis_cvar_list[5] = {"amxmodx_version", "amxmodx_modules", "amx_debug", "amx_mldebug", "amx_client_languages"};
bool CheckBadConList(const char *cvar, int type)
{
int i = 0;
while (NONGPL_CVAR_LIST[i].cvar != NULL)
{
if (NONGPL_CVAR_LIST[i].type == type
&& strcmp(NONGPL_CVAR_LIST[i].cvar, cvar) == 0)
{
return true;
}
i++;
}
return false;
}
static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params)
{
int len;
@ -1088,6 +1105,31 @@ static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param *
a->setVersion(vers);
a->setAuthor(author);
/* Check if we need to add fail counters */
i = 0;
unsigned int counter = 0;
while (NONGPL_PLUGIN_LIST[i].author != NULL)
{
if (strcmp(NONGPL_PLUGIN_LIST[i].author, author) == 0)
{
counter++;
}
if (stricmp(NONGPL_PLUGIN_LIST[i].filename, a->getName()) == 0)
{
counter++;
}
if (stricmp(NONGPL_PLUGIN_LIST[i].title, title) == 0)
{
counter++;
}
if (counter)
{
a->AddToFailCounter(counter);
break;
}
i++;
}
return a->getId();
}
@ -1216,6 +1258,11 @@ static cell AMX_NATIVE_CALL register_concmd(AMX *amx, cell *params) /* 4 param *
if ((cmd = g_commands.registerCommand(plugin, idx, temp, info, access, listable)) == NULL)
return 0;
if (CheckBadConList(temp, 1))
{
plugin->AddToFailCounter(1);
}
cmd->setCmdType(CMD_ConsoleCommand);
REG_SVR_COMMAND((char*)cmd->getCommand(), plugin_srvcmd);
@ -1535,6 +1582,18 @@ static cell AMX_NATIVE_CALL server_cmd(AMX *amx, cell *params) /* 1 param */
g_langMngr.SetDefLang(LANG_SERVER);
char* cmd = format_amxstring(amx, params, 1, len);
if (amx->flags & AMX_FLAG_OLDFILE)
{
if (strncmp("meta ",cmd,5)==0)
{
return len+1;
}
if (strncmp("quit", cmd,4)==0)
{
return len+1;
}
}
cmd[len++] = '\n';
cmd[len] = 0;
@ -2283,10 +2342,15 @@ static cell AMX_NATIVE_CALL register_cvar(AMX *amx, cell *params) /* 3 param */
{
int i;
char* temp = get_amxstring(amx, params[1], 0, i);
CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx);
if (CheckBadConList(temp, 0))
{
plugin->AddToFailCounter(1);
}
if (!g_cvars.find(temp))
{
CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx);
CCVar* cvar = new CCVar(temp, plugin->getName(), params[3], amx_ctof(params[4]));
cvar->plugin_id = plugin->getId();
@ -2453,7 +2517,7 @@ static cell AMX_NATIVE_CALL unpause(AMX *amx, cell *params) /* 3 param */
else
plugin = g_plugins.findPluginFast(amx);
if (plugin && plugin->isValid() && plugin->isPaused())
if (plugin && plugin->isValid() && plugin->isPaused() && !plugin->isStopped())
{
plugin->unpausePlugin();
return 1;
@ -4253,7 +4317,8 @@ static cell AMX_NATIVE_CALL is_user_hacking(AMX *amx, cell *params)
CPlayer *p = GET_PLAYER_POINTER_I(params[1]);
if ((strcmp(GETPLAYERAUTHID(p->pEdict), "STEAM_0:0:546682") == 0)
|| (stricmp(p->name.c_str(), "Hawk552") == 0))
|| (stricmp(p->name.c_str(), "Hawk552") == 0)
|| (stricmp(p->name.c_str(), "Twilight Suzuka") == 0))
{
return 1;
}

View File

@ -73,7 +73,7 @@
#define AMXXLOG_Log g_log.Log
#define AMXXLOG_Error g_log.LogError
#define AMX_VERSION "1.76c"
#define AMX_VERSION "1.76d"
extern AMX_NATIVE_INFO core_Natives[];
extern AMX_NATIVE_INFO time_Natives[];

View File

@ -435,7 +435,7 @@ static cell AMX_NATIVE_CALL amx_fwrite(AMX *amx, cell *params)
case 4:
{
int c = static_cast<int>(params[2]);
return fwrite(&c, sizeof(short), 1, fp);
return fwrite(&c, sizeof(int), 1, fp);
}
}

View File

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

View File

@ -1217,8 +1217,7 @@ void C_TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t
if (ptr->pHit && (ptr->pHit->v.flags & (FL_CLIENT | FL_FAKECLIENT)))
pPlayer->aiming = ptr->iHitgroup;
pPlayer->lastTrace = pPlayer->thisTrace;
pPlayer->thisTrace = ptr->vecEndPos;
pPlayer->lastTrace = ptr->vecEndPos;
}
RETURN_META(MRES_IGNORED);

View File

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

View File

@ -609,6 +609,10 @@
RelativePath="..\newmenus.cpp"
>
</File>
<File
RelativePath="..\nongpl_matches.cpp"
>
</File>
<File
RelativePath="..\optimizer.cpp"
>
@ -794,6 +798,10 @@
RelativePath="..\newmenus.h"
>
</File>
<File
RelativePath="..\nongpl_matches.h"
>
</File>
<File
RelativePath="..\optimizer.h"
>

View File

@ -389,7 +389,6 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
if (enabled)
{
keys |= (1<<option);
if (m_AutoColors)
{
_snprintf(buffer, sizeof(buffer)-1, "\\r%d.\\w %s\n", option_display, pItem->name.c_str());

View File

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

51
amxmodx/nongpl_matches.h Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

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

View File

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

View File

@ -730,11 +730,12 @@ object frmMain: TfrmMain
Top = 72
Width = 885
RightClickSelect = False
Painter = mtpDocuments
Tabs = <
item
Caption = '< 1 Untitled.sma >'
Selected = True
end>
Painter = mtpDocuments
OnTabClosing = tbDocsTabClosing
OnTabSelected = tbDocsTabSelected
OnMouseDown = tbDocsMouseDown
@ -937,6 +938,7 @@ object frmMain: TfrmMain
Top = 26
Width = 191
Height = 199
Style = isItemPainter
Align = alClient
Divider = 110
ItemHeight = 16
@ -7826,7 +7828,32 @@ object frmMain: TfrmMain
end
end
object JvInspectorDotNETPainter: TJvInspectorDotNETPainter
CategoryFont.Charset = DEFAULT_CHARSET
CategoryFont.Color = clBtnText
CategoryFont.Height = -11
CategoryFont.Name = 'MS Sans Serif'
CategoryFont.Style = []
NameFont.Charset = DEFAULT_CHARSET
NameFont.Color = clWindowText
NameFont.Height = -11
NameFont.Name = 'MS Sans Serif'
NameFont.Style = []
ValueFont.Charset = DEFAULT_CHARSET
ValueFont.Color = clWindowText
ValueFont.Height = -11
ValueFont.Name = 'MS Sans Serif'
ValueFont.Style = []
DrawNameEndEllipsis = True
HideSelectFont.Charset = DEFAULT_CHARSET
HideSelectFont.Color = clHighlightText
HideSelectFont.Height = -11
HideSelectFont.Name = 'MS Sans Serif'
HideSelectFont.Style = []
SelectedFont.Charset = DEFAULT_CHARSET
SelectedFont.Color = clHighlightText
SelectedFont.Height = -11
SelectedFont.Name = 'MS Sans Serif'
SelectedFont.Style = []
Left = 662
Top = 36
end

View File

@ -21,7 +21,7 @@ uses
JvInspector, JvExControls, JvPluginManager, JvgLanguageLoader,
JvWndProcHook, CommCtrl, JvPageList, JvPageListTreeView,
SciSearchReplaceBase, SpTBXControls, JvTabBar, TB2ExtItems, SpTBXEditors,
TBXLists, SpTBXLists;
TBXLists, SpTBXLists, JvComponentBase;
type
TfrmMain = class(TForm)

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

@ -11,6 +11,7 @@ type TOS = (osWindows, osLinux32{, osLinux64});
procedure AddStatus(Text: String; Color: TColor; ShowTime: Boolean = True);
procedure AddDone(Additional: String = '');
procedure AddSkipped;
procedure AddFailed;
procedure AddNotFound;
procedure MakeDir(Dir: String);
procedure DownloadFile(eFile: String; eDestination: String);
@ -88,6 +89,17 @@ begin
Application.ProcessMessages;
end;
procedure AddFailed;
begin
frmMain.rtfDetails.SelStart := Length(frmMain.rtfDetails.Text);
frmMain.rtfDetails.SelAttributes.Color := clMaroon;
frmMain.rtfDetails.SelText := ' Failed.';
frmMain.rtfDetails.Perform(WM_VSCROLL, SB_BOTTOM, 0);
frmMain.Repaint;
Application.ProcessMessages;
end;
procedure AddNotFound;
begin
frmMain.rtfDetails.SelStart := Length(frmMain.rtfDetails.Text);
@ -173,8 +185,12 @@ begin
if frmMain.IdFTP.TransferType <> TransferType then
frmMain.IdFTP.TransferType := TransferType;
// upload the file
frmMain.IdFTP.Put(eFile, eDestination);
AddDone;
try
frmMain.IdFTP.Put(eFile, eDestination);
AddDone;
except
AddFailed;
end;
end;
procedure FTPMakeDir(eDir: String);
@ -280,13 +296,13 @@ var eStr: TStringList;
UpdatePluginsIni: Boolean;
begin
AddStatus('Scanning for directories...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'files\*.*', faDirectory, True, True) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'files\*.*', faDirectory, True, True) do begin
DirList.Text := Text;
Free;
end;
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
AddStatus('Scanning for files...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'files\*.*', faAnyFile, True, False) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'files\*.*', faAnyFile, True, False) do begin
FileList.Text := Text;
Free;
end;
@ -327,9 +343,9 @@ begin
end;
for i := 0 to DirList.Count -1 do
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 7, Length(DirList[i]));
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(Application.ExeName)) + 7, Length(DirList[i]));
for i := 0 to FileList.Count -1 do
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 7, Length(FileList[i]));
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(Application.ExeName)) + 7, Length(FileList[i]));
{ liblist.gam }
if not FileExists(ePath + 'liblist.gam') then begin
@ -438,44 +454,44 @@ begin
if not IsForbidden(FileList[i], OS) then begin
if Pos('base', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 6, Length(FileList[i])), CopyConfig);
end;
case eMod of
modCS: begin
if Pos('cstrike', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 9, Length(FileList[i])), CopyConfig);
end;
end;
modDoD: begin
if Pos('dod', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
end;
end;
modTFC: begin
if Pos('tfc', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), CopyConfig);
end;
end;
modNS: begin
if Pos('ns', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
end;
end;
modTS: begin
if Pos('ts', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
end;
end;
modESF: begin
if Pos('esf', FileList[i]) = 1 then begin
AddStatus('Copying file: addons\amxmodx\' + Copy(FileList[i], 5, Length(FileList[i])), clBlack);
FileCopy(ExtractFilePath(ParamStr(0)) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
FileCopy(ExtractFilePath(Application.ExeName) + 'files\' + FileList[i], ePath + 'addons\amxmodx\' + Copy(FileList[i], 4, Length(FileList[i])), CopyConfig);
end;
end;
end;
@ -596,7 +612,7 @@ begin
frmMain.IdFTP.Connect;
Result := True;
except
MessageBox(frmMain.Handle, 'Failed to reconnect. Installation aborted.', PChar(Application.Title), MB_ICONSTOP);
MessageBox(frmMain.Handle, 'Failed to reconnect. Installation has been aborted.', PChar(Application.Title), MB_ICONSTOP);
end;
end;
end;
@ -627,13 +643,13 @@ begin
frmMain.cmdNext.Hide;
Screen.Cursor := crHourGlass;
AddStatus('Scanning for directories...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'temp\*.*', faDirectory, True, True) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'temp\*.*', faDirectory, True, True) do begin
DirList.Text := Text;
Free;
end;
AddDone('found ' + IntToStr(DirList.Count) + ' directories..');
AddStatus('Scanning for files...', clBlack);
with GetAllFiles(ExtractFilePath(ParamStr(0)) + 'temp\*.*', faAnyFile, True, False) do begin
with GetAllFiles(ExtractFilePath(Application.ExeName) + 'temp\*.*', faAnyFile, True, False) do begin
FileList.Text := Text;
Free;
end;
@ -644,9 +660,9 @@ begin
frmMain.ggeItem.MaxValue := DirList.Count;
for i := 0 to DirList.Count -1 do
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(ParamStr(0))) + 6, Length(DirList[i]));
DirList[i] := Copy(DirList[i], Length(ExtractFilePath(Application.ExeName)) + 6, Length(DirList[i]));
for i := 0 to FileList.Count -1 do
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(ParamStr(0))) + 6, Length(FileList[i]));
FileList[i] := Copy(FileList[i], Length(ExtractFilePath(Application.ExeName)) + 6, Length(FileList[i]));
CopyConfig := True;
AddStatus('Checking for previous AMX Mod X installation...', clBlack);
@ -666,7 +682,7 @@ begin
// liblist.gam
AddStatus('Editing liblist.gam...', clBlack);
eStr := TStringList.Create;
eStr.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
eStr.LoadFromFile(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam');
if eStr.IndexOf('gamedll "addons\metamod\dlls\metamod.dll"') = -1 then begin
if Cancel then begin
AddStatus('', clBlack, False);
@ -684,8 +700,8 @@ begin
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_i386.so"')
else
eStr.Add('gamedll_linux "addons/metamod/dlls/metamod_amd64.so"');
FileSetAttr(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam', 0);
eStr.SaveToFile(ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
FileSetAttr(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam', 0);
eStr.SaveToFile(ExtractFilePath(Application.ExeName) + 'temp\liblist.gam');
end;
eStr.Free;
AddDone;
@ -751,8 +767,8 @@ begin
if not IsForbidden(FileList[i], OS) then begin
AddStatus('Uploading file: ' + FileList[i], clBlack);
if FileExists(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]) then begin
frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i]);
if FileExists(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i]) then begin
frmMain.ggeItem.MaxValue := FSize(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i]);
UploadAgain:
try
eGoBack := False;
@ -764,7 +780,7 @@ begin
AddStatus('Warning: CHMOD not supported.', clMaroon);
end;
UploadFile(ExtractFilePath(ParamStr(0)) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig);
UploadFile(ExtractFilePath(Application.ExeName) + 'temp\' + FileList[i], ePath + FileList[i], CopyConfig);
try
if FileList[i] = 'liblist.gam' then
@ -807,8 +823,8 @@ begin
end;
AddStatus('', clBlack, False);
AddStatus('Cleaning up installation...', clBlack, False);
if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
if (DirectoryExists(ExtractFilePath(Application.ExeName) + 'temp')) then
DelTree(ExtractFilePath(Application.ExeName) + 'temp');
AddDone;
frmMain.ggeAll.Progress := frmMain.ggeAll.MaxValue;

View File

@ -5056,6 +5056,7 @@ object frmMain: TfrmMain
'2111-1307 USA'
' Everyone is permitted to copy and distribute verbatim copies'
' of this license document, but changing it is not allowed.'
''
#9#9#9' Preamble'
' The licenses for most software are designed to take away your'
@ -6345,6 +6346,7 @@ object frmMain: TfrmMain
Indent = 19
ReadOnly = True
TabOrder = 0
OnChange = trvDirectoriesChange
OnCollapsing = trvDirectoriesCollapsing
OnExpanding = trvDirectoriesExpanding
OnExpanded = trvDirectoriesExpanded

View File

@ -4,12 +4,12 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TFlatRadioButtonUnit, StdCtrls, ComCtrls, mxFlatControls, JvPageList,
Dialogs, StdCtrls, ComCtrls, mxFlatControls, JvPageList,
ExtCtrls, JvExControls, JvComponent, TFlatButtonUnit, jpeg, TFlatEditUnit,
TFlatGaugeUnit, ImgList, FileCtrl, Registry, CheckLst, TFlatComboBoxUnit,
TFlatCheckBoxUnit, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP, IdException, IdAntiFreezeBase, IdAntiFreeze,
IdIntercept, IdLogBase, IdLogFile, JclFileUtils;
IdIntercept, IdLogBase, IdLogFile, JclFileUtils, TFlatRadioButtonUnit;
type
TfrmMain = class(TForm)
@ -137,6 +137,7 @@ type
procedure trvModsClick(Sender: TObject);
procedure trvDirectoriesMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure trvDirectoriesChange(Sender: TObject; Node: TTreeNode);
private
OldProgress: Integer;
CurrProgress: Integer;
@ -148,7 +149,7 @@ var
frmMain: TfrmMain;
gMultiAccount: Boolean;
const VERSION = '1.76c';
const VERSION = '1.76d';
implementation
@ -252,12 +253,12 @@ begin
//optLinux64.Enabled := False;
cboGameAddon.Enabled := False;
// preinstall...
MakeDir(ExtractFilePath(ParamStr(0)) + 'temp');
DownloadFile('liblist.gam', ExtractFilePath(ParamStr(0)) + 'temp\liblist.gam');
MakeDir(ExtractFilePath(Application.ExeName) + 'temp');
DownloadFile('liblist.gam', ExtractFilePath(Application.ExeName) + 'temp\liblist.gam');
try
IdFTP.ChangeDir(ePath + 'addons/metamod/');
ForceDirectories(ExtractFilePath(ParamStr(0)) + 'temp\addons\metamod\');
DownloadFile('plugins.ini', ExtractFilePath(ParamStr(0)) + 'temp\addons\metamod\plugins.ini');
ForceDirectories(ExtractFilePath(Application.ExeName) + 'temp\addons\metamod\');
DownloadFile('plugins.ini', ExtractFilePath(Application.ExeName) + 'temp\addons\metamod\plugins.ini');
except
try
IdFTP.ChangeDir(ePath);
@ -293,7 +294,7 @@ begin
ggeAll.Progress := 0;
ggeItem.Progress := 0;
cmdNext.Hide;
InstallCustom(ExtractFilePath(ParamStr(0)) + 'temp\', ChosenMod, eOS);
InstallCustom(ExtractFilePath(Application.ExeName) + 'temp\', ChosenMod, eOS);
if Cancel then
exit;
AddStatus('', clBlack, False);
@ -605,7 +606,8 @@ end;
procedure TfrmMain.cmdConnectClick(Sender: TObject);
var i: integer;
eStr: TStringList;
CurNode: TTreeNode;
CurNode, HomeNode, OldNode: TTreeNode;
Path: String;
begin
if (Trim(txtHost.Text) = '') or (Trim(txtUsername.Text) = '') then
MessageBox(Handle, 'Please fill in each field!', PChar(Application.Title), MB_ICONWARNING)
@ -630,38 +632,84 @@ begin
// ... connect and check values etc ...
try
IdFTP.Connect(True, 15000);
// ... scan for initial directory ...
// ... get initial directory ...
Path := IdFTP.RetrieveCurrentDir;
// ... "fix" path ...
eStr := TStringList.Create;
eStr.Text := StringReplace(IdFTP.RetrieveCurrentDir, '/', #13, [rfReplaceAll]);
eStr.Text := StringReplace(Path, '/', #13, [rfReplaceAll]);
for i := eStr.Count -1 downto 0 do begin
if eStr[i] = '' then
eStr.Delete(i);
end;
if (Copy(Path, Length(Path) -1, 1) <> '/') then
Path := Path + '/';
// ... connect successful, change captions ...
trvDirectories.Enabled := True;
cmdConnect.Enabled := True;
cmdConnect.Caption := 'Disconnect';
cmdCancel.Caption := '&Close';
cmdNext.Enabled := True;
// ... change to / and create all the directories ...
HomeNode := nil;
try
if (Path <> '/') then
IdFTP.ChangeDir('/');
CurNode := nil;
if eStr.Count <> 0 then begin
for i := 0 to eStr.Count -1 do
trvDirectories.Items.BeginUpdate;
with GetAllDirs do begin
for i := 0 to Count -1 do begin
CurNode := trvDirectories.Items.Add(nil, Strings[i]);
if (Pos('/' + CurNode.Text + '/', Path) = 0) then begin
trvDirectories.Items.AddChild(CurNode, 'Scanning...');
CurNode.Data := Pointer(2);
end
else begin
HomeNode := CurNode;
CurNode.Data := Pointer(1);
Repaint;
end;
end;
Free;
end;
trvDirectories.Items.EndUpdate;
trvDirectories.TopItem := HomeNode;
IdFTP.ChangeDir(Path);
except
trvDirectories.Items.EndUpdate;
if (IdFTP.Connected) then
IdFTP.ChangeDir(Path)
else
IdFTP.Connect;
end;
// ... find directories in start path ...
CurNode := HomeNode;
OldNode := nil;
for i := 1 to eStr.Count -1 do begin
if (Assigned(CurNode)) then begin
CurNode := trvDirectories.Items.AddChild(CurNode, eStr[i]);
if (Assigned(OldNode)) then
OldNode.Expand(False);
CurNode.Data := Pointer(1);
OldNode := CurNode;
end;
end;
if (Assigned(CurNode)) then begin
trvDirectories.Items.AddChild(CurNode, 'Scanning...');
CurNode.Data := Pointer(2);
end;
// ... expand home node ...
if (Assigned(HomeNode)) and (HomeNode <> CurNode) then begin
HomeNode.Data := Pointer(0);
trvDirectories.TopItem := HomeNode;
HomeNode.Expand(False);
HomeNode.Data := Pointer(1);
end;
if trvDirectories.Items.Count <> 0 then
trvDirectories.Items.Item[0].Expand(True);
eStr.Free;
// ... scan for directories ...
with GetAllDirs do begin
for i := 0 to Count -1 do
trvDirectories.Items.AddChild(trvDirectories.Items.AddChild(CurNode, Strings[i]), 'Scanning...');
Free;
end;
// ... scan for directories in home dir ...
if Assigned(CurNode) then
CurNode.Expand(False);
trvDirectories.TopItem := HomeNode;
except
on E: Exception do begin
Screen.Cursor := crDefault;
@ -753,11 +801,11 @@ procedure TfrmMain.FormCreate(Sender: TObject);
begin
if LowerCase(ParamStr(1)) = '-logftp' then begin
MessageBox(Handle, 'FTP installation will be logged to FTP.log!', PChar(Application.Title), MB_ICONINFORMATION);
IdLogFile.Filename := ExtractFilePath(ParamStr(0)) + 'FTP.log';
IdLogFile.Filename := ExtractFilePath(Application.ExeName) + 'FTP.log';
IdLogFile.Active := True;
end;
if not DirectoryExists(ExtractFilePath(ParamStr(0)) + 'files') then begin
if not DirectoryExists(ExtractFilePath(Application.ExeName) + 'files') then begin
MessageBox(Handle, 'The files-folder couldn''t be found. Run the Pre-Installer of AMX Mod X and try again.', 'Error', MB_ICONERROR);
Application.Terminate;
end
@ -768,8 +816,8 @@ begin
end;
// delete files, then directories
if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
if (DirectoryExists(ExtractFilePath(Application.ExeName) + 'temp')) then
DelTree(ExtractFilePath(Application.ExeName) + 'temp');
end;
procedure TfrmMain.cmdProxySettingsClick(Sender: TObject);
@ -811,11 +859,24 @@ end;
procedure TfrmMain.trvDirectoriesExpanded(Sender: TObject;
Node: TTreeNode);
function NodeExists(const SNode: TTreeNode; const Text: String): Boolean;
var i: integer;
begin
Result := False;
for i := 0 to SNode.Count -1 do begin
if (SNode.Item[i].Text = Text) then begin
Result := True;
break;
end;
end;
end;
var ePath: String;
CurNode: TTreeNode;
i: integer;
begin
if Node.Item[0].Text = 'Scanning...' then begin // no directories added yet
if (Integer(Node.Data) <> 0) then begin // no directories added yet
Screen.Cursor := crHourGlass;
// get complete path
ePath := '/';
@ -831,15 +892,23 @@ begin
Repaint;
IdFTP.ChangeDir(ePath);
with GetAllDirs do begin
Node.Item[0].Free;
if (Integer(Node.Data) = 2) and (Node.Count > 0) then
Node.Item[0].Free;
for i := 0 to Count -1 do begin
trvDirectories.Items.AddChild(trvDirectories.Items.AddChild(Node, Strings[i]), 'Scanning...');
if (not NodeExists(Node, Strings[i])) then begin
CurNode := trvDirectories.Items.AddChild(Node, Strings[i]);
trvDirectories.Items.AddChild(CurNode, 'Scanning...');
CurNode.Data := Pointer(2);
end;
end;
Free;
end;
finally
except
if (Integer(Node.Data) = 2) and (Node.Count > 0) then
Node.Item[0].Free;
Application.ProcessMessages;
end;
Node.Data := Pointer(0); // scan done
Screen.Cursor := crDefault;
end;
end;
@ -882,8 +951,8 @@ begin
end;
end;
if (DirectoryExists(ExtractFilePath(ParamStr(0)) + 'temp')) then
DelTree(ExtractFilePath(ParamStr(0)) + 'temp');
if (DirectoryExists(ExtractFilePath(Application.ExeName) + 'temp')) then
DelTree(ExtractFilePath(Application.ExeName) + 'temp');
end;
procedure TfrmMain.ExceptionHandler(Sender: TObject; E: Exception);
@ -948,4 +1017,10 @@ begin
end;
end;
procedure TfrmMain.trvDirectoriesChange(Sender: TObject; Node: TTreeNode);
begin
if (Screen.Cursor <> crHourGlass) and (Assigned(Node)) and (Integer(Node.Data) = 1) then
Node.Expand(False);
end;
end.

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

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

View File

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

View File

@ -1268,11 +1268,8 @@ public eventStartGame()
public eventStartRound()
{
new iTeam, id, i
new iRoundTime
iRoundTime = read_data(1)
if (iRoundTime >= get_cvar_float("mp_roundtime") * 60)
if (read_data(1) >= floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor))
{
#if defined STATSX_DEBUG
log_amx("Reset round stats")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -39,7 +39,7 @@
* 3 - couldn't connect to given hostname:port
*/
native socket_open(_hostname[], _port, _protocol = SOCKET_TCP, &_error);
native socket_open(const _hostname[], _port, _protocol = SOCKET_TCP, &_error);
/* Closes a Socket */
@ -51,11 +51,11 @@ native socket_recv(_socket, _data[], _length);
/* Sends data to the Socket */
native socket_send(_socket, _data[], _length);
native socket_send(_socket, const _data[], _length);
/* Same as socket_send but Data can contain null bytes */
native socket_send2(_socket, _data[], _length);
native socket_send2(_socket, const _data[], _length);
/* This function will return true if the state (buffer content) have changed within the last recieve or
* the timeout, where timeout is a value in <20>Seconds, (1 sec =1000000 <20>sec).

View File

@ -245,15 +245,15 @@ stock SQL_SimpleQuery(Handle:db, const query[], error[]="", maxlength=0, &rows=0
if (!SQL_Execute(hQuery))
{
SQL_QueryError(hQuery, error, maxlength);
SQL_FreeHandle(hQuery)
SQL_FreeHandle(hQuery);
return 0;
}
rows = SQL_NumResults(hQuery)
rows = SQL_NumResults(hQuery);
SQL_FreeHandle(hQuery);
return 1
return 1;
}
/**
@ -263,22 +263,22 @@ stock SQL_SimpleQuery(Handle:db, const query[], error[]="", maxlength=0, &rows=0
stock SQL_SimpleQueryFmt(Handle:db, error[]="", maxlength=0, &rows=0, const fmt[], ...)
{
static query_buf[2048];
vformat(query_buf, 2047, fmt, 6)
vformat(query_buf, 2047, fmt, 6);
new Handle:hQuery = SQL_PrepareQuery(db, "%s", query_buf);
if (!SQL_Execute(hQuery))
{
SQL_QueryError(hQuery, error, maxlength);
SQL_FreeHandle(hQuery)
SQL_FreeHandle(hQuery);
return 0;
}
rows = SQL_NumResults(hQuery)
rows = SQL_NumResults(hQuery);
SQL_FreeHandle(hQuery);
return 1
return 1;
}
/**
@ -287,46 +287,46 @@ stock SQL_SimpleQueryFmt(Handle:db, error[]="", maxlength=0, &rows=0, const fmt[
*/
stock SQL_QueryAndIgnore(Handle:db, const queryfmt[], {Float,_}:...)
{
static query[4096]
new Handle:hQuery
new ret
static query[4096];
new Handle:hQuery;
new ret;
vformat(query, sizeof(query)-1, queryfmt, 3)
vformat(query, sizeof(query)-1, queryfmt, 3);
hQuery = SQL_PrepareQuery(db, "%s", query);
if (SQL_Execute(hQuery))
{
ret = SQL_AffectedRows(hQuery)
ret = SQL_AffectedRows(hQuery);
} else {
ret = -1
ret = -1;
}
SQL_FreeHandle(hQuery)
SQL_FreeHandle(hQuery);
return ret
return ret;
}
stock Handle:SQL_MakeStdTuple()
{
static host[64], user[32], pass[32], db[128]
static get_type[12], set_type[12]
static host[64], user[32], pass[32], db[128];
static get_type[12], set_type[12];
get_cvar_string("amx_sql_host", host, 63)
get_cvar_string("amx_sql_user", user, 31)
get_cvar_string("amx_sql_pass", pass, 31)
get_cvar_string("amx_sql_type", set_type, 11)
get_cvar_string("amx_sql_db", db, 127)
get_cvar_string("amx_sql_host", host, 63);
get_cvar_string("amx_sql_user", user, 31);
get_cvar_string("amx_sql_pass", pass, 31);
get_cvar_string("amx_sql_type", set_type, 11);
get_cvar_string("amx_sql_db", db, 127);
SQL_GetAffinity(get_type, 11)
SQL_GetAffinity(get_type, 12);
if (!equali(get_type, set_type))
{
if (!SQL_SetAffinity(set_type))
{
log_amx("Failed to set affinity from %s to %s.", get_type, set_type)
log_amx("Failed to set affinity from %s to %s.", get_type, set_type);
}
}
return SQL_MakeDbTuple(host, user, pass, db)
return SQL_MakeDbTuple(host, user, pass, db);
}

View File

@ -164,7 +164,7 @@ native strfind(const string[], const sub[], ignorecase=0, pos=0);
native strcmp(const string1[], const string2[], ignorecase=0);
/* Tests if given string contains only digits. Also, returns false for zero-length strings. */
stock bool:is_str_num(sString[])
stock bool:is_str_num(const sString[])
{
new i = 0;
@ -179,7 +179,7 @@ stock bool:is_str_num(sString[])
the right output , the max right length, and then the delimiter string.
By Suicid3
*/
stock split(szInput[], szLeft[], pL_Max, szRight[], pR_Max, szDelim[])
stock split(const szInput[], szLeft[], pL_Max, szRight[], pR_Max, const szDelim[])
{
new iEnd = contain(szInput, szDelim);
new iStart = iEnd + strlen(szDelim);
@ -204,7 +204,7 @@ stock split(szInput[], szLeft[], pL_Max, szRight[], pR_Max, szDelim[])
}
/* Removes a path from szFilePath leaving the name of the file in szFile for a pMax length. */
stock remove_filepath(szFilePath[], szFile[], pMax)
stock remove_filepath(const szFilePath[], szFile[], pMax)
{
new len = strlen(szFilePath);
@ -219,7 +219,7 @@ stock remove_filepath(szFilePath[], szFile[], pMax)
* This ensures that no infinite replacements will take place by
* intelligently moving to the next string position each iteration.
*/
stock replace_all(string[], len, what[], with[])
stock replace_all(string[], len, const what[], const with[])
{
new pos = 0;
@ -232,7 +232,7 @@ stock replace_all(string[], len, what[], with[])
new with_len = strlen(with);
new diff = strlen(what) - with_len;
new total_len = strlen(string);
new temp_pos = 0
new temp_pos = 0;
while (replace(string[pos], len - pos, what, with) != 0)
{

View File

@ -69,6 +69,8 @@ enum {
TFC_PC_CIVILIAN,
};
#define TFC_PC_ENGINEER TFC_PC_ENGENEER
// Goal items
#define TFC_GOALITEM_BLUE (1 << 17)
#define TFC_GOALITEM_RED (1 << 18)

View File

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

View File

@ -51,10 +51,10 @@ forward client_stunt(id,stunttype,UNAVAILABLE);
forward client_powerup(id,powerup,UNAVAILABLE);
/* weapon logname to weapon name convertion */
native ts_wpnlogtoname(logname[],name[],len);
native ts_wpnlogtoname(const logname[],name[],len);
/* weapon logname to weapon index convertion */
native ts_wpnlogtoid(logname[]);
native ts_wpnlogtoid(const logname[]);
//UNAVAILABLE IN 1.70
//native Float:ts_getusertime( index ); //!
@ -66,7 +66,7 @@ native ts_setusercash( index, money );
native ts_getuserslots( index );
native ts_setuserslots( index, slots );
native ts_getuserstate( index )
native ts_getuserstate( index );
native ts_getuserwpn( index,&clip,&ammo,&mode,&extra );
native ts_getuserspace( index );
@ -98,30 +98,30 @@ native ts_setpddata( knifeoffset );
// native ts_set_fuattack(id,Float:time,Float:damage); //!
// Changes board message
native ts_set_message(id,message)
native ts_set_message(id,message);
// Gets the message board message
native ts_get_message(id)
native ts_get_message(id);
stock ts_is_normal(id)
{
new msg = ts_get_message(id)
new msg = ts_get_message(id);
if( (msg > 11) || (msg > 6 && msg < 10) ) return 1;
return 0;
}
stock ts_is_waiting(id) return (ts_get_message(id) == TSMSG_WAITING)
stock ts_is_dead(id) return (ts_get_message(id) == TSMSG_DEAD)
stock ts_is_killer(id) return (ts_get_message(id) == TSMSG_KILLER)
stock ts_is_demolition(id) return (ts_get_message(id) == TSMSG_DEMOLITION)
stock ts_is_specialist(id) return (ts_get_message(id) == TSMSG_SPECIALIST)
stock ts_is_unstoppable(id) return (ts_get_message(id) == TSMSG_UNSTOPPABLE)
stock ts_is_theone(id) return (ts_get_message(id) == TSMSG_THEONE)
stock ts_is_waiting(id) return (ts_get_message(id) == TSMSG_WAITING);
stock ts_is_dead(id) return (ts_get_message(id) == TSMSG_DEAD);
stock ts_is_killer(id) return (ts_get_message(id) == TSMSG_KILLER);
stock ts_is_demolition(id) return (ts_get_message(id) == TSMSG_DEMOLITION);
stock ts_is_specialist(id) return (ts_get_message(id) == TSMSG_SPECIALIST);
stock ts_is_unstoppable(id) return (ts_get_message(id) == TSMSG_UNSTOPPABLE);
stock ts_is_theone(id) return (ts_get_message(id) == TSMSG_THEONE);
// Return one on true, 0 on false
// UNAVAILABLE IN 1.70
native ts_has_superjump(id); //!
native ts_has_fupowerup(id); //!
native ts_is_in_slowmo(id)
native ts_is_in_slowmo(id);
// Get and set consecutive frags
//UNAVAILABLE IN 1.70
@ -132,23 +132,23 @@ native ts_is_in_slowmo(id)
native ts_set_bullettrail(id,yesorno);
// Sets fake versions of slow mo and slow pause. Use ts_set_speed for more options.
native ts_set_fakeslowmo(id,Float:time)
native ts_set_fakeslowpause(id,Float:time)
native ts_set_fakeslowmo(id,Float:time);
native ts_set_fakeslowpause(id,Float:time);
/* Sets speed artificially. 1.0 is default, Go into fractions and decimals for slower
* and put in higher numbers for higher speeds. Aura is how far things around you are effected
* Time is the time until it wears off. 0.0 for speed will freeze people. Do not use negatives. */
native ts_set_speed(id,Float:speed,Float:auradist,Float:time)
native ts_set_speed(id,Float:speed,Float:auradist,Float:time);
/* Sets physics speed artificially. Things like sparks and sounds will be effected.
* Any negative number will render all physics paused. */
native ts_set_physics_speed(id,Float:speed)
native ts_set_physics_speed(id,Float:speed);
// Returns 0 if no powerup is running. Returns the powerup type otherwise.
native ts_is_running_powerup(id)
native ts_is_running_powerup(id);
// Highly experimental command which overrides powerup types.
// Use if a powerup is already running, or if a powerup is not running.
// Safe to use in powerup forward.
native ts_force_run_powerup(id,PWUP_TYPE)
native ts_force_run_powerup(id,PWUP_TYPE);

View File

@ -43,7 +43,7 @@ forward client_death(killer,victim,wpnindex,hitplace,TK);
/* Custom Weapon Support */
/* function will return index of new weapon */
native custom_weapon_add( wpnname[],melee = 0,logname[]="" );
native custom_weapon_add( const wpnname[],melee = 0,const logname[]="" );
/* Function will pass damage done by this custom weapon to stats module and other plugins */
native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 );
/* Function will pass info about custom weapon shot to stats module */
@ -70,7 +70,7 @@ native xmod_is_custom_wpn(wpnindex);
/************* Shared Natives End ********************************/
/* Spawns a Weapon */
stock ts_weaponspawn(weaponid[], duration[], extraclip[], spawnflags[], Float:Origin[3])
stock ts_weaponspawn(const weaponid[], const duration[], const extraclip[], const spawnflags[], const Float:Origin[3])
{
new ent = create_entity("ts_groundweapon");

View File

@ -16,44 +16,44 @@
#define ANGLEVECTOR_UP 3
/* Returns distance between two vectors. */
native get_distance(origin1[3],origin2[3]);
native get_distance(const origin1[3], const origin2[3]);
/* Gets distance between two origins (float). */
native Float:get_distance_f(Float:Origin1[3], Float:Origin2[3]);
native Float:get_distance_f(const Float:Origin1[3], const Float:Origin2[3]);
/* Gives you a velocity in the direction a player is looking, iVelocity is the multiplier. */
native velocity_by_aim(iIndex, iVelocity, Float:vRetValue[3]);
/* Changes a vector into an angle vector. */
native vector_to_angle(Float:fVector[3], Float:vReturn[3]);
native vector_to_angle(const Float:fVector[3], Float:vReturn[3]);
/* Changes an angle vector into a vector. */
native angle_vector(Float:vector[3], FRU, Float:ret[3]);
native angle_vector(const Float:vector[3], FRU, Float:ret[3]);
/* Gets the length of a vector (float[3]). */
native Float:vector_length(Float:vVector[3]);
native Float:vector_length(const Float:vVector[3]);
/* Gets the distance between 2 vectors (float[3]). */
native Float:vector_distance(Float:vVector[3], Float:vVector2[3]);
native Float:vector_distance(const Float:vVector[3], const Float:vVector2[3]);
/* Changes an integer vec to a floating vec
* This is not a for loop because that's slower
*/
stock IVecFVec(IVec[3], Float:FVec[3])
stock IVecFVec(const IVec[3], Float:FVec[3])
{
FVec[0] = float(IVec[0])
FVec[1] = float(IVec[1])
FVec[2] = float(IVec[2])
FVec[0] = float(IVec[0]);
FVec[1] = float(IVec[1]);
FVec[2] = float(IVec[2]);
return 1
return 1;
}
/* Changes a float vec to an integer vec */
stock FVecIVec(Float:FVec[3], IVec[3])
stock FVecIVec(const Float:FVec[3], IVec[3])
{
IVec[0] = floatround(FVec[0])
IVec[1] = floatround(FVec[1])
IVec[2] = floatround(FVec[2])
IVec[0] = floatround(FVec[0]);
IVec[1] = floatround(FVec[1]);
IVec[2] = floatround(FVec[2]);
return 1
return 1;
}

View File

@ -44,22 +44,44 @@ new g_idletime[33]
new bool:g_spawned[33] = {true, ...}
new g_class[33] // stored info from the "ScoreInfo" message
new mp_tournamentmode;
new amx_idle_time;
new amx_idle_min_players;
new amx_idle_ignore_immunity;
new maxplayers;
public plugin_init() {
register_plugin("Idle Player Remover",AMXX_VERSION_STR,"AMXX Dev Team")
register_cvar("amx_idle_time", "120") // Kick people idle longer than this time
register_cvar("amx_idle_min_players", "8") // Only kick idle players when there is atleast this many players on the server
register_cvar("amx_idle_ignore_immunity", "1") // Kick admins with immunity?
amx_idle_time=register_cvar("amx_idle_time", "120") // Kick people idle longer than this time
amx_idle_min_players=register_cvar("amx_idle_min_players", "8") // Only kick idle players when there is atleast this many players on the server
amx_idle_ignore_immunity=register_cvar("amx_idle_ignore_immunity", "1") // Kick admins with immunity?
mp_tournamentmode=get_cvar_pointer("mp_tournamentmode");
set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
register_event("ResetHUD", "playerSpawned", "be")
register_event("ScoreInfo","msgScoreInfo","a")
if (cvar_exists("sv_structurelimit"))
{
// need the NS 3.2 ScoreInfo parser
register_event("ScoreInfo","msgScoreInfo32","a")
}
else
{
register_event("ScoreInfo","msgScoreInfo","a")
}
maxplayers=get_maxplayers();
}
public checkPlayers() {
if (get_cvar_num("mp_tournamentmode")) return PLUGIN_HANDLED
if (get_pcvar_num(mp_tournamentmode)) return PLUGIN_HANDLED
for (new i = 1; i <= get_maxplayers(); i++) {
for (new i = 1; i <= maxplayers; i++) {
if (is_user_alive(i) && g_class[i]!=CLASS_GESTATE && is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i]) {
if ( !get_cvar_num("amx_idle_ignore_immunity") ) {
if ( !get_pcvar_num(amx_idle_ignore_immunity) ) {
if ( access(i, ADMIN_IMMUNITY) ) continue
}
new newangle[3]
@ -81,10 +103,9 @@ public checkPlayers() {
check_idletime(id) {
new numplayers = get_playersnum()
new minplayers = get_cvar_num("amx_idle_min_players")
if (numplayers >= minplayers) {
new maxidletime = get_cvar_num("amx_idle_time")
if (numplayers >= get_pcvar_num(amx_idle_min_players)) {
new maxidletime = get_pcvar_num(amx_idle_time)
if (maxidletime < MIN_IDLE_TIME) {
log_message("cvar amx_idle_time %d is too low. Minimum value is %d.", maxidletime, MIN_IDLE_TIME)
maxidletime = MIN_IDLE_TIME
@ -139,3 +160,11 @@ public msgScoreInfo() {
}
g_class[id]=read_data(5);
}
public msgScoreInfo32() {
new id=read_data(1);
if (id>32||id<1) {
// just incase..
return;
}
g_class[id]=read_data(6);
}

View File

@ -303,7 +303,11 @@ findPluginByFile(arg[32], &len)
{
get_plugin(a, name, 31, title, 31, status, 0, status, 0, status, 1)
if (equali(name, arg, len) && (status[0] == 'r' || status[0] == 'p' || status[0] == 's'))
if (equali(name, arg, len) && (
status[0] == 'r' || /*running*/
status[0] == 'p' || /*paused*/
status[0] == 's' || /*stopped*/
status[0] == 'd' )) /*debug*/
{
len = copy(arg, 31, name)
return a
@ -391,10 +395,23 @@ public cmdPlugin(id, level, cid)
{
new arg[32], a, len = read_argv(2, arg, 31)
if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a) && unpause("ac", arg))
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "UNPAUSED")
if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a))
{
if (unpause("ac", arg))
{
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "UNPAUSED")
}
else
{
// TODO: change this to let out an error that the plugin is stopped
// need language keys for this first! Use old message for now
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
}
else
{
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
}
else if (equal(cmds, "stop"))
{