16 Commits

Author SHA1 Message Date
6066c7510d Tagged 1.76a 2006-09-26 03:44:09 +00:00
c2695a8cd8 updated version # 2006-09-26 00:25:01 +00:00
5ded9eef2a Bumped version numbers to 1.76a 2006-09-25 23:48:07 +00:00
44617778c7 Fixed bug am40911 (round kill stats persisting for spectators) 2006-09-25 23:04:33 +00:00
647d226764 synchronized more hud messages as per am45020 2006-09-25 17:34:33 +00:00
f086273d2b Attempt at accuracy improvement for is_in_viewcone with 3D calculation (am44838) 2006-09-22 15:11:51 +00:00
afde57b27e fixed bug am45088 (studio icon left on desktop after uninstall) 2006-09-22 14:49:04 +00:00
c4453a9593 fixed tense error in English 2006-09-22 14:46:38 +00:00
020b3a5963 test fix for bug am44973 (knife headshots) 2006-09-22 03:47:04 +00:00
3720810b61 fixed bug am44694 (is_user_alive() on TFC connect failing) 2006-09-21 23:33:05 +00:00
98e20e0fc7 Fixed translation errors from am45015 2006-09-21 17:43:16 +00:00
e72aff5c14 Fixed bug am44956 (extra plugin file lists not working) 2006-09-21 17:18:04 +00:00
63bc8885c9 committed fix for bug am45017 (phrase not translated) 2006-09-21 17:01:21 +00:00
ff8fd747c5 Fixed bug am44964 (thread crash on bad database) 2006-09-21 16:54:14 +00:00
98278b7bb5 small bug fix, bumped version to 1.76a 2006-09-20 15:12:49 +00:00
09df281556 Fixed am44998 2006-09-20 02:50:58 +00:00
26 changed files with 150 additions and 56 deletions

View File

@ -542,14 +542,27 @@ static cell AMX_NATIVE_CALL is_user_hltv(AMX *amx, cell *params) /* 1 param */
return 0;
}
extern bool g_bmod_tfc;
static cell AMX_NATIVE_CALL is_user_alive(AMX *amx, cell *params) /* 1 param */
{
int index = params[1];
if (index < 1 || index > gpGlobals->maxClients)
{
return 0;
}
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
if (g_bmod_tfc)
{
edict_t *e = pPlayer->pEdict;
if (e->v.flags & FL_SPECTATOR ||
(!e->v.team || !e->v.playerclass))
{
return 0;
}
}
return ((pPlayer->ingame && pPlayer->IsAlive()) ? 1 : 0);
}

View File

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

View File

@ -96,6 +96,7 @@ String g_log_dir;
String g_mod_name;
XVars g_xvars;
bool g_bmod_tfc;
bool g_bmod_cstrike;
bool g_bmod_dod;
bool g_dontprecache;
@ -315,6 +316,20 @@ const char* get_localinfo(const char* name, const char* def)
return b;
}
const char* get_localinfo_r(const char *name, const char *def, char buffer[], size_t maxlength)
{
const char* b = LOCALINFO((char*)name);
if (b == 0 || *b == 0)
{
SET_LOCALINFO((char*)name, (char*)(b = def));
}
snprintf(buffer, maxlength, "%s", b);
return buffer;
}
// Very first point at map load
// Load AMX modules for new native functions
// Initialize AMX stuff and load it's plugins from plugins.ini list
@ -367,14 +382,17 @@ int C_Spawn(edict_t *pent)
get_localinfo("amx_logdir", "addons/amxmodx/logs");
char map_pluginsfile_path[256];
char configs_dir[256];
// ###### Load modules
loadModules(get_localinfo("amxx_modules", "addons/amxmodx/configs/modules.ini"), PT_ANYTIME);
get_localinfo_r("amxx_configsdir", "addons/amxmodx/configs", configs_dir, sizeof(configs_dir)-1);
g_plugins.CALMFromFile(get_localinfo("amxx_plugins", "addons/amxmodx/configs/plugins.ini"));
LoadExtraPluginsToPCALM(get_localinfo("amxx_configsdir", "addons/amxmodx/configs"));
LoadExtraPluginsToPCALM(configs_dir);
snprintf(map_pluginsfile_path, sizeof(map_pluginsfile_path)-1,
"%s/maps/plugins-%s.ini",
get_localinfo("amxx_configsdir", "addons/amxmodx/configs"),
configs_dir,
STRING(gpGlobals->mapname));
g_plugins.CALMFromFile(map_pluginsfile_path);
@ -415,7 +433,7 @@ int C_Spawn(edict_t *pent)
// ###### Load AMX Mod X plugins
g_plugins.loadPluginsFromFile(get_localinfo("amxx_plugins", "addons/amxmodx/configs/plugins.ini"));
LoadExtraPluginsFromDir(get_localinfo("amxx_configsdir", "addons/amxmodx/configs"));
LoadExtraPluginsFromDir(configs_dir);
g_plugins.loadPluginsFromFile(map_pluginsfile_path, false);
g_plugins.Finalize();
g_plugins.InvalidateCache();
@ -1571,6 +1589,7 @@ C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *inte
} else {
g_bmod_cstrike = false;
g_bmod_dod = !stricmp(g_mod_name.c_str(), "dod");
g_bmod_tfc = !stricmp(g_mod_name.c_str(), "tfc");
}
meta_engfuncs.pfnCmd_Argc = C_Cmd_Argc;

View File

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

View File

@ -6,4 +6,3 @@ ShowStats ;HUD-stats default
SayRankStats ;Say /rankstats
SayRank ;Say /rank
SayTop15 ;Say /top15
ShowStats ;HUD-stats default

View File

@ -11,6 +11,7 @@
#define CSW_HEGRENADE 4
#define CSW_C4 6
#define CSW_SMOKEGRENADE 9
#define CSW_KNIFE 29
#define CSW_FLASHBANG 25
// *****************************************************

View File

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

View File

@ -43,7 +43,6 @@ int gmsgResetHUD;
int gmsgAmmoX;
int gmsgScoreInfo;
int gmsgAmmoPickup;
int gmsgSendAudio;
int gmsgTextMsg;
int gmsgBarTime;
@ -62,26 +61,27 @@ cvar_t* csstats_pause;
cvar_t init_csstats_rankbots ={"csstats_rankbots","1"};
cvar_t init_csstats_pause = {"csstats_pause","0"};
struct sUserMsg {
struct sUserMsg
{
const char* name;
int* id;
funEventCall func;
bool endmsg;
} g_user_msg[] = {
{ "CurWeapon" , &gmsgCurWeapon , Client_CurWeapon, false },
{ "Damage" , &gmsgDamage,Client_Damage, false },
{ "Damage" , &gmsgDamageEnd, Client_Damage_End, true },
{ "WeaponList" , &gmsgWeaponList, Client_WeaponList, false },
{ "ResetHUD" , &gmsgResetHUD,Client_ResetHUD, true },
{ "AmmoX" , &gmsgAmmoX, Client_AmmoX , false },
{ "ScoreInfo" , &gmsgScoreInfo, Client_ScoreInfo, false },
{ "AmmoPickup" , &gmsgAmmoPickup, Client_AmmoPickup , false },
{"CurWeapon", &gmsgCurWeapon, Client_CurWeapon, false},
{"Damage", &gmsgDamage, Client_Damage, false},
{"Damage", &gmsgDamageEnd, Client_Damage_End, true},
{"WeaponList", &gmsgWeaponList, Client_WeaponList, false},
{"ResetHUD", &gmsgResetHUD, Client_ResetHUD, true},
{"AmmoX", &gmsgAmmoX, Client_AmmoX, false},
{"ScoreInfo", &gmsgScoreInfo, Client_ScoreInfo, false},
{"AmmoPickup", &gmsgAmmoPickup, Client_AmmoPickup, false},
{"SendAudio", &gmsgSendAudio, Client_SendAudio, false},
{"TextMsg", &gmsgTextMsg, Client_TextMsg, false},
{"BarTime", &gmsgBarTime, Client_BarTime, false},
{"DeathMsg", &gmsgDeathMsg, Client_DeathMsg, false},
{ "SendAudio" , &gmsgSendAudio , Client_SendAudio , false },
{ "TextMsg" , &gmsgTextMsg , Client_TextMsg , false },
{ "BarTime" , &gmsgBarTime , Client_BarTime , false },
{ 0 , 0,0,false }
{0, 0, 0, false}
};
int RegUserMsg_Post(const char *pszName, int iSize)
@ -330,10 +330,20 @@ void EmitSound_Post(edict_t *entity, int channel, const char *sample, /*int*/flo
RETURN_META(MRES_IGNORED);
}
void TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *e, TraceResult *ptr) {
if (ptr->pHit&&(ptr->pHit->v.flags& (FL_CLIENT | FL_FAKECLIENT) )&&
e&&(e->v.flags& (FL_CLIENT | FL_FAKECLIENT) )&&ptr->iHitgroup)
GET_PLAYER_POINTER(e)->aiming = ptr->iHitgroup;
void TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *e, TraceResult *ptr)
{
if (ptr->pHit && (ptr->pHit->v.flags & (FL_CLIENT|FL_FAKECLIENT))
&& e
&& (e->v.flags & (FL_CLIENT|FL_FAKECLIENT))
&& ptr->iHitgroup)
{
CPlayer *pPlayer = GET_PLAYER_POINTER(e);
if (pPlayer->current != CSW_KNIFE)
{
pPlayer->aiming = ptr->iHitgroup;
}
}
RETURN_META(MRES_IGNORED);
}

View File

@ -5,7 +5,7 @@
// Module info
#define MODULE_NAME "CSX"
#define MODULE_VERSION "1.76"
#define MODULE_VERSION "1.76a"
#define MODULE_AUTHOR "AMX Mod X Dev Team"
#define MODULE_URL "http://www.amxmodx.org/"
#define MODULE_LOGTAG "CSX"
@ -367,7 +367,7 @@
#define FN_TraceLine_Post TraceLine_Post
// #define FN_TraceToss_Post TraceToss_Post
// #define FN_TraceMonsterHull_Post TraceMonsterHull_Post
// #define FN_TraceHull_Post TraceHull_Post
// #define FN_TraceHull_Post TraceHull_Post
// #define FN_TraceModel_Post TraceModel_Post
// #define FN_TraceTexture_Post TraceTexture_Post
// #define FN_TraceSphere_Post TraceSphere_Post

View File

@ -88,10 +88,10 @@ void Client_AmmoPickup(void*);
void Client_Damage_End(void*);
void Client_ScoreInfo(void*);
void Client_ResetHUD(void*);
void Client_SendAudio(void*);
void Client_TextMsg(void*);
void Client_BarTime(void*);
void Client_DeathMsg(void*);
bool ignoreBots (edict_t *pEnt, edict_t *pOther = NULL );
bool isModuleActive();

View File

@ -17,6 +17,44 @@ void Client_ResetHUD(void* mValue){
}
}
void Client_DeathMsg(void *mValue)
{
static int killer_id;
static int victim_id;
static int is_headshot;
const char *name;
switch (mState++)
{
case 0:
{
killer_id = *(int *)mValue;
break;
}
case 1:
{
victim_id = *(int *)mValue;
break;
}
case 2:
{
is_headshot = *(int *)mValue;
break;
}
case 3:
{
name = (const char *)mValue;
if (killer_id
&& (strcmp(name, "knife") == 0))
{
CPlayer *pPlayer = GET_PLAYER_POINTER_I(killer_id);
pPlayer->aiming = is_headshot ? 1 : 0;
}
break;
}
}
}
void Client_WeaponList(void* mValue){
static int wpnList;
static int iSlot;

View File

@ -798,7 +798,7 @@ static cell AMX_NATIVE_CALL in_view_cone(AMX *amx, cell *params)
CHECK_ENTITY(src);
Vector2D vec2LOS;
Vector vecLOS;
float flDot;
edict_t *pEdictSrc = INDEXENT(src);
@ -811,12 +811,12 @@ static cell AMX_NATIVE_CALL in_view_cone(AMX *amx, cell *params)
Vector origin(vecOrigin[0], vecOrigin[1], vecOrigin[2]);
MAKE_VECTORS(pEdictSrc->v.angles);
MAKE_VECTORS(pEdictSrc->v.v_angle);
vec2LOS = (origin - pEdictSrc->v.origin).Make2D();
vec2LOS = vec2LOS.Normalize();
vecLOS = origin - (pEdictSrc->v.origin + pEdictSrc->v.view_ofs);
vecLOS = vecLOS.Normalize();
flDot = DotProduct(vec2LOS, gpGlobals->v_forward.Make2D());
flDot = DotProduct(vecLOS, gpGlobals->v_forward);
if (flDot >= cos(pEdictSrc->v.fov * (M_PI / 360)))
return 1;

View File

@ -15,7 +15,7 @@
* to add multiple entries.
*/
#define MODULE_NAME "MySQL"
#define MODULE_VERSION "1.76"
#define MODULE_VERSION "1.76a"
#define MODULE_AUTHOR "AMX Mod X Dev Team"
#define MODULE_URL "http://www.amxmodx.org/"
#define MODULE_LOGTAG "MySQL"

View File

@ -175,7 +175,10 @@ void MysqlThread::RunThread(IThreadHandle *pHandle)
m_qrInfo.amxinfo.pQuery = pQuery;
m_qrInfo.amxinfo.info.rs = &m_atomicResult;
} else {
pQuery->FreeHandle();
if (pQuery)
{
pQuery->FreeHandle();
}
pQuery = NULL;
}

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.76"
!define PRODUCT_VERSION "1.76a"
!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"
@ -841,7 +841,7 @@ Section Uninstall
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
Delete "$DESKTOP\AMX Mod X Editor.lnk"
Delete "$DESKTOP\AMX Mod X Studio.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\AMXX Studio.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Documentation.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\AMX Mod X.lnk"

Binary file not shown.

View File

@ -766,7 +766,7 @@ begin
try
if FileList[i] = 'liblist.gam' then
frmMain.IdFTP.Size('CHMOD 444 liblist.gam');
frmMain.IdFTP.Site('CHMOD 444 liblist.gam');
except
AddStatus('Warning: CHMOD not supported.', clMaroon);
end;

View File

@ -148,7 +148,7 @@ var
frmMain: TfrmMain;
gMultiAccount: Boolean;
const VERSION = '1.76';
const VERSION = '1.76a';
implementation

View File

@ -82,6 +82,7 @@ new g_announce_sync
new g_status_sync
new g_left_sync
new g_bottom_sync
new g_he_sync
new g_MultiKillMsg[7][] =
{
@ -197,6 +198,7 @@ public plugin_init()
g_status_sync = CreateHudSyncObj()
g_left_sync = CreateHudSyncObj()
g_bottom_sync = CreateHudSyncObj()
g_he_sync = CreateHudSyncObj()
}
public plugin_cfg()
@ -402,7 +404,7 @@ public client_death(killer, victim, wpnindex, hitplace, TK)
get_user_name(victim, victim_name, 31)
set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
show_hudmessage(0, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
}
if (KnifeKillSound)
@ -421,10 +423,10 @@ public client_death(killer, victim, wpnindex, hitplace, TK)
if (!selfkill)
{
if (GrenadeKill)
show_hudmessage(0, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
}
else if (GrenadeSuicide)
show_hudmessage(0, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
}
if (headshot && (HeadShotKill || HeadShotKillSound))

View File

@ -1420,7 +1420,15 @@ kill_stats(id)
// Bail out if user stats timer is non-zero,
// ie function already called.
if (g_fzShowUserStatsTime[id] > 0.0)
{
return
}
new team = get_user_team(id)
if (team < 1 || team > 2)
{
return
}
// Flag kill stats displayed for this player.
g_fzShowUserStatsTime[id] = get_gametime()
@ -1546,7 +1554,9 @@ endround_stats()
id = iaPlayers[iPlayer]
if (g_fzShowUserStatsTime[id] == 0.0)
{
kill_stats(id)
}
}
g_sAwardAndScore[0] = 0

View File

@ -11,9 +11,9 @@
#endif
#define _amxconst_included
#define AMXX_VERSION 1.76
#define AMXX_VERSION 1.761
#define AMXX_VERSION_NUM 176
stock const AMXX_VERSION_STR[]="1.76"
stock const AMXX_VERSION_STR[]="1.76a"
#define M_PI 3.1415926535

View File

@ -12,7 +12,7 @@ BAN = ban
KICK = kick
NO_ACC_COM = You have no access to that command
USAGE = Usage
MORE_CL_MATCHT = here are more clients matching to your argument
MORE_CL_MATCHT = There is more than one client matching your argument
CL_NOT_FOUND = Client with that name or userid not found
CLIENT_IMM = Client "%s" has immunity
CANT_PERF_DEAD = That action can't be performed on dead client "%s"
@ -34,7 +34,7 @@ BAN = ban
KICK = kick
NO_ACC_COM = Du hast nicht genuegend Rechte, um diesen Befehl auszufuehren!
USAGE = Anwendung
MORE_CL_MATCHT = hier sind mehrere Spieler, auf die deine Angaben zutreffen
MORE_CL_MATCHT = Es gibt mehrere Spieler, auf die deine Angaben zutreffen
CL_NOT_FOUND = Spieler mit diesem Namen oder dieser UserID nicht gefunden
CLIENT_IMM = Spieler "%s" hat Immnuitaet
CANT_PERF_DEAD = Diese Aktion kann nicht am toten Spieler "%s" ausgefuehrt werden.
@ -166,7 +166,7 @@ BAN = ban
KICK = kick
NO_ACC_COM = Nie mozesz uzyc tej komendy
USAGE = Uzycie
MORE_CL_MATCHT = tutaj jest wiecej klientow pasujacych do twojego wyboru
MORE_CL_MATCHT = Istnieje kilku graczy pasujacych do podanego wzorca
CL_NOT_FOUND = Nie znaleziono klienta z tym nickiem lub ID
CLIENT_IMM = Klient "%s" ma immunitet
CANT_PERF_DEAD = Nie mozesz tego wykonac na martwym kliencie "%s"
@ -210,7 +210,7 @@ BAN = banear
KICK = expulsar
NO_ACC_COM = No tienes acceso a este comando
USAGE = Uso
MORE_CL_MATCHT = aqui hay mas clientes que coinciden con tu argumento
MORE_CL_MATCHT = Hay mas de un cliente que coincide con tu argumento
CL_NOT_FOUND = No se encontro ningun cliente con ese nombre o ese identificador
CLIENT_IMM = El cliente "%s" tiene inmunidad
CANT_PERF_DEAD = Esta accion no se puede aplicar a un cliente muerto "%s"

View File

@ -303,7 +303,6 @@ COM_STATS_ADD = ^tadd <nimi> <muuttuja> - Lisaa tilastoja listaan
NO_STATS = Tilastopluginit eivat ole asennettuna talla palvelimellar^n
SAVE_CONF = Tallenna saadot
[ls]
NO_OPTION = C0|_|ld|\|'t f!|\|d 0pt!0|\|(s) w!th s|_|(h v4r!4bl3 (|\|4m3 "%s")
STATS_CONF_SAVED = $t4tz0|2 (0|\|f!g|_|r4t!0|\| s4v3d s|_|((3ssf|_|lly

View File

@ -22,7 +22,7 @@ BEST_SCORE = Best score
KILL_S = kill(s)
TOTAL = Total
SHOT_S = shot(s)
HITS_YOU_IN = %s hits you in
HITS_YOU_IN = %s hit you in
KILLED_BY_WITH = Killed by %s with %s @ %0.0fm
NO_HITS = no hits
YOU_NO_KILLER = You have no killer...

View File

@ -89,7 +89,6 @@ TELE_MENU = Teleportvalikko
CUR_LOC = Nykyinen sijainti
SAVE_LOC = Tallenna sijainti
[ls]
ADMIN_TELEPORT_1 = l33t s3rv3r 0P: h4x3d %s t0 n3w ISP
ADMIN_TELEPORT_2 = l33t s3rv3r 0P %s: h4x3d %s t0 n3w ISP

View File

@ -353,7 +353,7 @@ public actionVoteMapMenu(id, key)
}
keys |= (1<<8)
len += format(menuBody[len], 511, "^n9. None^n")
len += format(menuBody[len], 511, "^n9. %L^n", id, "NONE")
} else {
len = format(menuBody, 511, g_coloredMenus ? "\y%L^n%s?^n\w^n1. %L^n2. %L^n" : "%L^n%s?^n^n1. %L^n2. %L^n", id, "CHANGE_MAP_TO", g_mapName[g_voteSelected[id][0]], id, "YES", id, "NO")
keys = MENU_KEY_1|MENU_KEY_2