diff --git a/amxmodx/CCmd.cpp b/amxmodx/CCmd.cpp index be2396b6..d4fb80b2 100755 --- a/amxmodx/CCmd.cpp +++ b/amxmodx/CCmd.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "CCmd.h" // ***************************************************** diff --git a/amxmodx/CEvent.cpp b/amxmodx/CEvent.cpp index 66b18c0b..027ccb8f 100755 --- a/amxmodx/CEvent.cpp +++ b/amxmodx/CEvent.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "CEvent.h" // ***************************************************** diff --git a/amxmodx/CForward.cpp b/amxmodx/CForward.cpp index 0312b050..80b40993 100755 --- a/amxmodx/CForward.cpp +++ b/amxmodx/CForward.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "CForward.h" void CForwardMngr::registerForward( CPluginMngr::CPlugin* p, int func , int type ){ diff --git a/amxmodx/CLogEvent.cpp b/amxmodx/CLogEvent.cpp index 1de7172b..9be95e2b 100755 --- a/amxmodx/CLogEvent.cpp +++ b/amxmodx/CLogEvent.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "CLogEvent.h" // ***************************************************** diff --git a/amxmodx/CMenu.cpp b/amxmodx/CMenu.cpp index 9adece33..72056d94 100755 --- a/amxmodx/CMenu.cpp +++ b/amxmodx/CMenu.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "CMenu.h" // ***************************************************** diff --git a/amxmodx/CMisc.cpp b/amxmodx/CMisc.cpp index 3e2f8c8d..f5697ed0 100755 --- a/amxmodx/CMisc.cpp +++ b/amxmodx/CMisc.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" // ***************************************************** // class CPlayer diff --git a/amxmodx/CModule.cpp b/amxmodx/CModule.cpp index 0f71f075..7ce191e0 100755 --- a/amxmodx/CModule.cpp +++ b/amxmodx/CModule.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #ifndef FAR // PM: Test: FAR #define FAR diff --git a/amxmodx/CPlugin.cpp b/amxmodx/CPlugin.cpp index 9b94d85e..953e6d8d 100755 --- a/amxmodx/CPlugin.cpp +++ b/amxmodx/CPlugin.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "CPlugin.h" #include "CForward.h" #include "CFile.h" diff --git a/amxmodx/CTask.cpp b/amxmodx/CTask.cpp index eefa29d0..41da3cd6 100755 --- a/amxmodx/CTask.cpp +++ b/amxmodx/CTask.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "CTask.h" diff --git a/amxmodx/amxmodx.cpp b/amxmodx/amxmodx.cpp new file mode 100755 index 00000000..301a0fcd --- /dev/null +++ b/amxmodx/amxmodx.cpp @@ -0,0 +1,2562 @@ +/* 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. +*/ + +#include +#include +#include +#include "amxmodx.h" +#include + +static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params) +{ + int len; + char* sName = get_amxstring(amx,params[1],0,len); + cell ptr; + + for ( CPluginMngr::iterator a = g_plugins.begin(); a ; ++a ) + { + if ( (*a).isValid() && amx_FindPubVar( (*a).getAMX() , sName , &ptr ) == AMX_ERR_NONE ) + return g_xvars.put( (*a).getAMX() , get_amxaddr( (*a).getAMX() , ptr ) ); + } + return -1; +} + +static cell AMX_NATIVE_CALL get_xvar_num(AMX *amx, cell *params) +{ + return g_xvars.getValue(params[1]); +} + +static cell AMX_NATIVE_CALL set_xvar_num(AMX *amx, cell *params) +{ + if ( g_xvars.setValue( params[1] , params[2] ) ){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + return 1; +} + +static cell AMX_NATIVE_CALL xvar_exists(AMX *amx, cell *params) +{ + return (get_xvar_id( amx , params ) != -1) ? 1 : 0; +} + +static cell AMX_NATIVE_CALL emit_sound(AMX *amx, cell *params) /* 7 param */ +{ + + int len; + char* szSample = get_amxstring(amx,params[3],0,len); + float vol = *(float *)((void *)¶ms[4]); + float att = *(float *)((void *)¶ms[5]); + int channel = params[2]; + int pitch = params[7]; + int flags = params[6]; + + if (params[1] == 0) { + for(int i = 1; i <= gpGlobals->maxClients ; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (pPlayer->ingame) + EMIT_SOUND_DYN2(pPlayer->pEdict,channel, szSample, vol, att,flags , pitch); + } + } + else + { + edict_t* pEdict = INDEXENT(params[1]); + if (!FNullEnt(pEdict)) + EMIT_SOUND_DYN2(pEdict,channel , szSample, vol, att, flags, pitch); + } + + return 1; +} + +static cell AMX_NATIVE_CALL server_print(AMX *amx, cell *params) /* 1 param */ +{ + int len; + char* message = format_amxstring(amx,params,1,len); + if ( len > 254 ) len = 254; + message[len++]='\n'; + message[len]=0; + SERVER_PRINT( message ); + return len; +} + +static cell AMX_NATIVE_CALL engclient_print(AMX *amx, cell *params) /* 3 param */ +{ + int len; + char* message = format_amxstring(amx,params,3,len); + message[len++]='\n'; + message[len]=0; + if (params[1] == 0) { + for(int i = 1; i <= gpGlobals->maxClients ; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (pPlayer->ingame) + CLIENT_PRINT(pPlayer->pEdict, (PRINT_TYPE)(int)params[2] , message ); + } + } + else { + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame) + CLIENT_PRINT(pPlayer->pEdict, (PRINT_TYPE)(int)params[2] , message ); + } + return len; +} + +static cell AMX_NATIVE_CALL console_cmd(AMX *amx, cell *params) /* 2 param */ +{ + int len; + char* cmd = format_amxstring(amx,params,2,len); + cmd[len++]='\n'; + cmd[len]=0; + + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + SERVER_COMMAND( cmd ); + } + else{ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if ( !pPlayer->bot && pPlayer->initialized ) CLIENT_COMMAND(pPlayer->pEdict, cmd ); + } + + return len; +} + +static cell AMX_NATIVE_CALL console_print(AMX *amx, cell *params) /* 2 param */ +{ + int len; + char* message = format_amxstring(amx,params,2,len); + if ( len > 254 ) len = 254; + message[len++]='\n'; + message[len]=0; + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + SERVER_PRINT( message ); + } + else { + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame) + UTIL_ClientPrint(pPlayer->pEdict, 2 , message ); + } + return len; +} + + +static cell AMX_NATIVE_CALL client_print(AMX *amx, cell *params) /* 3 param */ +{ + int len; + char* message = format_amxstring(amx,params,3,len); + message[len++]='\n'; + message[len]=0; + if (params[1] == 0) { + UTIL_ClientPrint(NULL, params[2] , message ); + } + else { + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame) + UTIL_ClientPrint(pPlayer->pEdict, params[2] , message ); + } + return len; +} + +static cell AMX_NATIVE_CALL show_motd(AMX *amx, cell *params) /* 2 param */ +{ + int ilen; + const char* szHead = get_amxstring(amx,params[3],0,ilen); + if ( !ilen ) szHead = hostname->string; + char* szBody = get_amxstring(amx,params[2],1,ilen); + int iFile = 0; + char* sToShow;// = szBody; + if (ilen<128) sToShow = (char*)LOAD_FILE_FOR_ME( szBody , &iFile ); + if (!iFile) + sToShow = szBody; + else + ilen = iFile; + if (params[1] == 0) { + for(int i = 1; i <= gpGlobals->maxClients; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (pPlayer->ingame) + UTIL_ShowMOTD(pPlayer->pEdict, sToShow , ilen, szHead); + } + } + else { + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + if (iFile) FREE_FILE(sToShow); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame) + UTIL_ShowMOTD(pPlayer->pEdict, sToShow,ilen, szHead ); + } + if (iFile) FREE_FILE(sToShow); + return 1; +} + +static cell AMX_NATIVE_CALL set_hudmessage(AMX *amx, cell *params) /* 11 param */ +{ + g_hudset.a1 = 0; + g_hudset.a2 = 0; + g_hudset.r2 = 255; + g_hudset.g2 = 255; + g_hudset.b2 = 250; + g_hudset.r1 = params[1]; + g_hudset.g1 = params[2]; + g_hudset.b1 = params[3]; + g_hudset.x = *(float *)((void *)¶ms[4]); + g_hudset.y = *(float *)((void *)¶ms[5]); + g_hudset.effect = params[6]; + g_hudset.fxTime = *(float *)((void *)¶ms[7]); + g_hudset.holdTime = *(float *)((void *)¶ms[8]); + g_hudset.fadeinTime = *(float *)((void *)¶ms[9]); + g_hudset.fadeoutTime = *(float *)((void *)¶ms[10]); + g_hudset.channel = params[11]; + return 1; +} + +static cell AMX_NATIVE_CALL show_hudmessage(AMX *amx, cell *params) /* 2 param */ +{ + int len; + char* message = UTIL_SplitHudMessage( format_amxstring(amx,params,2,len) ); + if (params[1] == 0) { + UTIL_HudMessage(NULL, g_hudset, message ); + } + else { + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame) + UTIL_HudMessage(pPlayer->pEdict, g_hudset, message ); + } + return len; +} + +static cell AMX_NATIVE_CALL get_user_name(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + return set_amxstring(amx,params[2],(index<1||index>gpGlobals->maxClients) ? + hostname->string : g_players[index].name.str() , params[3]); +} + +static cell AMX_NATIVE_CALL get_user_index(AMX *amx, cell *params) /* 1 param */ +{ + int i; + char* sptemp = get_amxstring(amx,params[1],0,i); + for(i = 1; i <= gpGlobals->maxClients; ++i) { + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if ( strcmp(pPlayer->name.str(), sptemp) == 0 ) + return i; + } + + return 0; +} + +static cell AMX_NATIVE_CALL is_dedicated_server(AMX *amx, cell *params) +{ + return (IS_DEDICATED_SERVER() ? 1 : 0); +} + +static cell AMX_NATIVE_CALL is_linux_server(AMX *amx, cell *params) +{ +#ifdef __linux__ + return 1; +#else + return 0; +#endif +} + +static cell AMX_NATIVE_CALL is_map_valid(AMX *amx, cell *params) /* 1 param */ +{ + int ilen; + return (IS_MAP_VALID(get_amxstring(amx,params[1],0,ilen)) ? 1 : 0); +} + +static cell AMX_NATIVE_CALL is_user_connected(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); + return (pPlayer->ingame ? 1 : 0); +} + +static cell AMX_NATIVE_CALL is_user_connecting(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); + return ( !pPlayer->ingame && pPlayer->initialized + && (GETPLAYERUSERID(pPlayer->pEdict)>0) ) ? 1 : 0; +} + +static cell AMX_NATIVE_CALL is_user_bot(AMX *amx, cell *params) /* 1 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients) + return 0; + return (GET_PLAYER_POINTER_I(index)->bot ? 1 : 0); +} + + +static cell AMX_NATIVE_CALL is_user_hltv(AMX *amx, cell *params) /* 1 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients) + return 0; + return ((GET_PLAYER_POINTER_I(index)->pEdict->v.flags & FL_PROXY) ? 1 : 0); +} + +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); + return ((pPlayer->ingame && pPlayer->IsAlive()) ? 1 : 0); +} + +static cell AMX_NATIVE_CALL get_user_frags(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); + return (cell)(pPlayer->ingame ? pPlayer->pEdict->v.frags : 0); +} + +static cell AMX_NATIVE_CALL get_user_deaths(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); + return (cell)(pPlayer->ingame ? pPlayer->deaths : 0); +} + + +static cell AMX_NATIVE_CALL get_user_armor(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); + return (cell)(pPlayer->ingame ? pPlayer->pEdict->v.armorvalue : 0); +} + +static cell AMX_NATIVE_CALL get_user_health(AMX *amx, cell *params) /* param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients) + return 0; + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + return (cell)(pPlayer->ingame ? pPlayer->pEdict->v.health : 0); +} + +static cell AMX_NATIVE_CALL get_user_userid(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); + return pPlayer->initialized ? GETPLAYERUSERID(pPlayer->pEdict) : -1; +} + + +static cell AMX_NATIVE_CALL get_user_authid(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + const char* authid = 0; + if (index>0&&index<=gpGlobals->maxClients) + authid = GETPLAYERAUTHID(g_players[index].pEdict); + return set_amxstring(amx,params[2], authid ? authid : "" ,params[3]); +} + +static cell AMX_NATIVE_CALL is_user_authorized(AMX *amx, cell *params) +{ + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients) + return 0; + return GET_PLAYER_POINTER_I(index)->authorized; +} + +static cell AMX_NATIVE_CALL get_weaponname(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index < 1 || index >= MAX_WEAPONS ){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + return set_amxstring(amx,params[2],g_weaponsData[index].fullName.str(),params[3]); +} + +static cell AMX_NATIVE_CALL get_user_weapons(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + cell *cpNum = get_amxaddr(amx,params[3]); + cell *cpIds = get_amxaddr(amx,params[2]); + int weapons = pPlayer->pEdict->v.weapons & ~(1<<31); // don't count last element + for(int i = 1; i < MAX_WEAPONS; ++i){ + if (weapons & (1< gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + int mode = params[3]; + cell *cpOrigin = get_amxaddr(amx,params[2]); + if (mode == 4) { + cpOrigin[0] = (long int)pPlayer->lastHit.x; + cpOrigin[1] = (long int)pPlayer->lastHit.y; + cpOrigin[2] = (long int)pPlayer->lastHit.z; + return 1; + } + edict_t* edict = pPlayer->pEdict; + Vector pos = edict->v.origin; + if (mode && mode!=2) + pos = pos + edict->v.view_ofs; + if (mode > 1) { + Vector v_forward; + ANGLEVECTORS( edict->v.v_angle , v_forward, NULL, NULL ); + TraceResult trEnd; + Vector v_dest = pos + v_forward * 9999; + TRACE_LINE( pos , v_dest, 0 , edict, &trEnd ); + pos = (trEnd.flFraction < 1.0) ? trEnd.vecEndPos : Vector(0,0,0); + } + cpOrigin[0] = (long int)pos.x; + cpOrigin[1] = (long int)pos.y; + cpOrigin[2] = (long int)pos.z; + return 1; + } + return 0; +} + +static cell AMX_NATIVE_CALL get_user_ip(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + char *ptr; + char szIp[32]; + strcpy(szIp,(index<1||index>gpGlobals->maxClients)? + CVAR_GET_STRING("net_address"):g_players[index].ip.str()); + if (params[4] && (ptr = strstr(szIp,":"))!=0) + *ptr = '\0'; + return set_amxstring(amx,params[2],szIp,params[3]); +} + +static cell AMX_NATIVE_CALL get_user_attacker(AMX *amx, cell *params) /* 2 param */ +{ + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + edict_t *enemy = NULL; + if (pPlayer->ingame){ + enemy = pPlayer->pEdict->v.dmg_inflictor; + if (!FNullEnt(enemy)) { + int weapon = 0; + if (enemy->v.flags & (FL_CLIENT | FL_FAKECLIENT) ){ + pPlayer = GET_PLAYER_POINTER(enemy); + weapon = pPlayer->current; + } + else if( g_grenades.find( enemy, &pPlayer, weapon ) ) + enemy = pPlayer->pEdict; + else + enemy = NULL; + + if (enemy){ + switch(*params/sizeof(cell)){ + case 3: *get_amxaddr(amx,params[3]) = pPlayer->aiming; + case 2: *get_amxaddr(amx,params[2]) = weapon; + } + } + } + } + return (enemy ? pPlayer->index : 0); +} + +static cell AMX_NATIVE_CALL get_user_weapon(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + int wpn = pPlayer->current; + cell *cpTemp = get_amxaddr(amx,params[2]); + *cpTemp = pPlayer->weapons[wpn].clip; + cpTemp = get_amxaddr(amx,params[3]); + *cpTemp = pPlayer->weapons[wpn].ammo; + return wpn; + } + return 0; +} + +static cell AMX_NATIVE_CALL get_user_ammo(AMX *amx, cell *params) /* 4 param */ +{ + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + int wpn = params[2]; + if (wpn < 1 || wpn >= MAX_WEAPONS ){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + cell *cpTemp = get_amxaddr(amx,params[3]); + *cpTemp = pPlayer->weapons[wpn].clip; + cpTemp = get_amxaddr(amx,params[4]); + *cpTemp = pPlayer->weapons[wpn].ammo; + return 1; + } + return 0; +} + +static cell AMX_NATIVE_CALL get_user_team(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients) + return -1; + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + if ( params[3] ) + set_amxstring(amx,params[2],pPlayer->team.str(),params[3]); + return pPlayer->teamId; + } + return -1; +} + +static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */ +{ + int ilen; + char* sMenu = get_amxstring(amx,params[3],0,ilen); + int menuid = g_menucmds.findMenuId( sMenu, amx ); + int keys = params[2]; + int time = params[4]; + if (params[1] == 0) { + for(int i = 1; i <= gpGlobals->maxClients; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (pPlayer->ingame){ + pPlayer->keys = keys; + pPlayer->menu = menuid; + UTIL_ShowMenu(pPlayer->pEdict, keys, time, sMenu, ilen ); + } + } + } + else { + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + pPlayer->keys = keys; + pPlayer->menu = menuid; + UTIL_ShowMenu(pPlayer->pEdict, keys, time, sMenu, ilen ); + } + } + return 1; +} + + + +static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param */ +{ + CPluginMngr::CPlugin* a = g_plugins.findPluginFast( amx ); + int i; + a->setTitle( get_amxstring(amx,params[1],0,i) ); + a->setVersion( get_amxstring(amx,params[2],0,i) ); + a->setAuthor( get_amxstring(amx,params[3],0,i) ); + return 1; +} + +static cell AMX_NATIVE_CALL register_menucmd(AMX *amx, cell *params) /* 3 param */ +{ + CPluginMngr::CPlugin* plugin = g_plugins.findPluginFast( amx ); + int ilen, idx; + char* sptemp = get_amxstring(amx,params[3],0,ilen); + + if(amx_FindPublic(amx, sptemp ,&idx)!=AMX_ERR_NONE) { + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")",sptemp,plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + + g_menucmds.registerMenuCmd( plugin , params[1] , params[2] , idx ); + + return 1; +} + +static cell AMX_NATIVE_CALL get_plugin(AMX *amx, cell *params) /* 11 param */ +{ + CPluginMngr::CPlugin* a; + + if ( params[1]<0 ) + a = g_plugins.findPluginFast( amx ); + else + a = g_plugins.findPlugin( (int)params[1] ); + + if (a){ + set_amxstring(amx,params[2],a->getName(),params[3]); + set_amxstring(amx,params[4],a->getTitle(),params[5]); + set_amxstring(amx,params[6],a->getVersion(),params[7]); + set_amxstring(amx,params[8],a->getAuthor(),params[9]); + set_amxstring(amx,params[10],a->getStatus(),params[11]); + return a->getId(); + } + return -1; +} + +static cell AMX_NATIVE_CALL get_pluginsnum(AMX *amx, cell *params) +{ + return g_plugins.getPluginsNum(); +} + + + +static cell AMX_NATIVE_CALL register_concmd(AMX *amx, cell *params) /* 4 param */ +{ + CPluginMngr::CPlugin* plugin = g_plugins.findPluginFast( amx ); + int i, idx = 0; + char* temp = get_amxstring(amx,params[2],0, i ); + if(amx_FindPublic(amx, temp ,&idx)!=AMX_ERR_NONE) { + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")",temp,plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + temp = get_amxstring(amx,params[1],0, i ); + char* info = get_amxstring(amx,params[4],1, i ); + CmdMngr::Command* cmd; + int access = params[3]; + bool listable = true; + if ( access < 0 ) { // is access is -1 then hide from listing + access = 0; + listable = false; + } + if ( (cmd = g_commands.registerCommand( plugin , idx , temp , info , access ,listable )) == NULL) + return 0; + cmd->setCmdType( CMD_ConsoleCommand ); + + REG_SVR_COMMAND( (char*)cmd->getCommand() , plugin_srvcmd ); + return 1; +} + +static cell AMX_NATIVE_CALL register_clcmd(AMX *amx, cell *params) /* 4 param */ +{ + CPluginMngr::CPlugin* plugin = g_plugins.findPluginFast( amx ); + int i, idx = 0; + char* temp = get_amxstring(amx,params[2],0, i ); + if(amx_FindPublic(amx, temp ,&idx)!=AMX_ERR_NONE) { + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")",temp,plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + temp = get_amxstring(amx,params[1],0, i ); + char* info = get_amxstring(amx,params[4],1, i ); + CmdMngr::Command* cmd; + int access = params[3]; + bool listable = true; + if ( access < 0 ) { // is access is -1 then hide from listing + access = 0; + listable = false; + } + if ( (cmd = g_commands.registerCommand(plugin , idx , temp , info , access , listable )) == NULL) + return 0; + cmd->setCmdType( CMD_ClientCommand ); + return 1; +} + +static cell AMX_NATIVE_CALL register_srvcmd(AMX *amx, cell *params) /* 2 param */ +{ + CPluginMngr::CPlugin* plugin = g_plugins.findPluginFast( amx ); + int i, idx = 0; + char* temp = get_amxstring(amx,params[2],0, i ); + if(amx_FindPublic(amx, temp ,&idx)!=AMX_ERR_NONE) { + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")",temp,plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return NULL; + } + temp = get_amxstring(amx,params[1],0, i ); + char* info = get_amxstring(amx,params[4],1, i ); + CmdMngr::Command* cmd; + int access = params[3]; + bool listable = true; + if ( access < 0 ) { // is access is -1 then hide from listing + access = 0; + listable = false; + } + if ( (cmd = g_commands.registerCommand(plugin ,idx , temp , info ,access,listable )) == NULL) + return 0; + cmd->setCmdType( CMD_ServerCommand ); + REG_SVR_COMMAND( (char*)cmd->getCommand() , plugin_srvcmd ); + return 0; +} + +static cell AMX_NATIVE_CALL get_concmd(AMX *amx, cell *params) /* 7 param */ +{ + int who = params[8]; + + if ( who > 0 ) // id of player - client command + who = CMD_ClientCommand; + else if ( who == 0 ) // server + who = CMD_ServerCommand; + else // -1 parameter - all commands + who = CMD_ConsoleCommand; + + CmdMngr::Command* cmd = g_commands.getCmd(params[1] ,who , params[7] ); + + if ( cmd == 0 ) return 0; + set_amxstring(amx,params[2], cmd->getCmdLine() ,params[3]); + set_amxstring(amx,params[5], cmd->getCmdInfo() ,params[6]); + cell *cpFlags = get_amxaddr(amx,params[4]); + *cpFlags = cmd->getFlags(); + return 1; +} + +static cell AMX_NATIVE_CALL get_clcmd(AMX *amx, cell *params) /* 7 param */ +{ + CmdMngr::Command* cmd = g_commands.getCmd(params[1] ,CMD_ClientCommand , params[7]); + if ( cmd == 0 ) return 0; + set_amxstring(amx,params[2], cmd->getCmdLine() ,params[3]); + set_amxstring(amx,params[5], cmd->getCmdInfo() ,params[6]); + cell *cpFlags = get_amxaddr(amx,params[4]); + *cpFlags = cmd->getFlags(); + + return 1; +} + +static cell AMX_NATIVE_CALL get_srvcmd(AMX *amx, cell *params) +{ + CmdMngr::Command* cmd = g_commands.getCmd(params[1] ,CMD_ServerCommand , params[7] ); + if ( cmd == 0 ) return 0; + set_amxstring(amx,params[2], cmd->getCmdLine() ,params[3]); + set_amxstring(amx,params[5], cmd->getCmdInfo() ,params[6]); + cell *cpFlags = get_amxaddr(amx,params[4]); + *cpFlags = cmd->getFlags(); + return 1; +} + +static cell AMX_NATIVE_CALL get_srvcmdsnum(AMX *amx, cell *params) +{ + return g_commands.getCmdNum( CMD_ServerCommand , params[1] ); +} + +static cell AMX_NATIVE_CALL get_clcmdsnum(AMX *amx, cell *params) /* 1 param */ +{ + return g_commands.getCmdNum( CMD_ClientCommand , params[1] ); +} + +static cell AMX_NATIVE_CALL get_concmdsnum(AMX *amx, cell *params) /* 1 param */ +{ + int who = params[2]; + if ( who > 0 ) + return g_commands.getCmdNum( CMD_ClientCommand , params[1] ); + if ( who == 0 ) + return g_commands.getCmdNum( CMD_ServerCommand , params[1] ); + return g_commands.getCmdNum( CMD_ConsoleCommand , params[1] ); +} + + +static cell AMX_NATIVE_CALL register_event(AMX *amx, cell *params) /* 2 param */ +{ + CPluginMngr::CPlugin* plugin = g_plugins.findPluginFast( amx ); + + int len, pos, iFunction; + + char* sTemp = get_amxstring(amx,params[1],0,len); + + if ( (pos = g_events.getEventId( sTemp )) == 0 ) { + UTIL_Log("[AMXX] Invalid event (name \"%s\") (plugin \"%s\")", sTemp , plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + + sTemp = get_amxstring(amx,params[2],0,len); + + if ( amx_FindPublic(amx, sTemp , &iFunction) != AMX_ERR_NONE){ + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")",sTemp,plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + + int numparam = *params/sizeof(cell); + + int flags = 0; + + if ( numparam > 2) + flags = UTIL_ReadFlags( get_amxstring(amx,params[3],0,len) ); + + EventsMngr::ClEvent* a = + g_events.registerEvent( plugin , iFunction , flags , pos ); + + if ( a == 0 ) return 0; + + for(int i = 4; i <= numparam; ++i) + a->registerFilter( get_amxstring(amx,params[i],0,len) ); + + return 1; +} + +static cell AMX_NATIVE_CALL user_kill(AMX *amx, cell *params) /* 2 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients) + return 0; + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame && pPlayer->IsAlive()){ + int bef = pPlayer->pEdict->v.frags; + MDLL_ClientKill(pPlayer->pEdict); + if (params[2]) pPlayer->pEdict->v.frags = bef; + return 1; + } + + return 0; +} + +static cell AMX_NATIVE_CALL user_slap(AMX *amx, cell *params) /* 2 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients) + return 0; + int power = abs((int)params[2]); + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame && pPlayer->IsAlive()){ + if (pPlayer->pEdict->v.health <= power) { + int bef = pPlayer->pEdict->v.frags; + MDLL_ClientKill(pPlayer->pEdict); + pPlayer->pEdict->v.frags = bef; + } + else { + edict_t *pEdict = pPlayer->pEdict; + int numparam = *params/sizeof(cell); + if (numparam<3 || params[3]) { + pEdict->v.velocity.x += RANDOM_LONG(-600,600); + pEdict->v.velocity.y += RANDOM_LONG(-180,180); + pEdict->v.velocity.z += RANDOM_LONG(100,200); + } + else { + Vector v_forward, v_right; + ANGLEVECTORS( pEdict->v.angles, v_forward, v_right, NULL ); + pEdict->v.velocity = pEdict->v.velocity + v_forward * 220 + Vector(0,0,200); + } + pEdict->v.punchangle.x = RANDOM_LONG(-10,10); + pEdict->v.punchangle.y = RANDOM_LONG(-10,10); + pEdict->v.health -= power; + int armor = (int)pEdict->v.armorvalue; + armor -= power; + if (armor < 0) armor = 0; + pEdict->v.armorvalue = armor; + pEdict->v.dmg_inflictor = pEdict; + if (g_bmod_cstrike){ + static const char *cs_sound[4] = { + "player/bhit_flesh-3.wav", + "player/bhit_flesh-2.wav", + "player/pl_die1.wav", + "player/pl_pain6.wav" }; + EMIT_SOUND_DYN2(pEdict, CHAN_VOICE, cs_sound[RANDOM_LONG(0,3)], 1.0, ATTN_NORM, 0, PITCH_NORM); + } + else{ + static const char *bit_sound[3] = { + "weapons/cbar_hitbod1.wav", + "weapons/cbar_hitbod2.wav", + "weapons/cbar_hitbod3.wav" }; + EMIT_SOUND_DYN2(pEdict, CHAN_VOICE, bit_sound[RANDOM_LONG(0,2)], 1.0, ATTN_NORM, 0, PITCH_NORM); + } + } + return 1; + } + + return 0; +} + +static cell AMX_NATIVE_CALL server_cmd(AMX *amx, cell *params) /* 1 param */ +{ + int len; + char* cmd = format_amxstring(amx,params,1,len); + cmd[len++]='\n'; + cmd[len]=0; + SERVER_COMMAND( cmd ); + return len; +} + +static cell AMX_NATIVE_CALL client_cmd(AMX *amx, cell *params) /* 2 param */ +{ + int len; + char* cmd = format_amxstring(amx,params,2,len); + cmd[len++]='\n'; + cmd[len]=0; + + if (params[1] == 0) { + for(int i = 1; i <= gpGlobals->maxClients; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (!pPlayer->bot && pPlayer->initialized /*&& pPlayer->ingame*/ ) + CLIENT_COMMAND(pPlayer->pEdict, cmd ); + } + } + else { + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if ( !pPlayer->bot && pPlayer->initialized /*&& pPlayer->ingame*/ ) + CLIENT_COMMAND(pPlayer->pEdict, cmd ); + } + return len; +} + +static cell AMX_NATIVE_CALL get_cvar_string(AMX *amx, cell *params) /* 3 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + return set_amxstring(amx,params[2],CVAR_GET_STRING(sptemp),params[3]); +} + +static cell AMX_NATIVE_CALL get_cvar_float(AMX *amx, cell *params) /* 1 param */ +{ + int ilen; + float pFloat = CVAR_GET_FLOAT(get_amxstring(amx,params[1],0,ilen)); + return *(cell*)((void *)&pFloat); +} + +static cell AMX_NATIVE_CALL set_cvar_float(AMX *amx, cell *params) /* 2 param */ +{ + int ilen; + CVAR_SET_FLOAT(get_amxstring(amx,params[1],0,ilen),*(float *)((void *)¶ms[2])); + return 1; +} + +static cell AMX_NATIVE_CALL get_cvar_num(AMX *amx, cell *params) /* 1 param */ +{ + int ilen; + return (int)CVAR_GET_FLOAT(get_amxstring(amx,params[1],0,ilen)); +} + +static cell AMX_NATIVE_CALL set_cvar_num(AMX *amx, cell *params) /* 2 param */ +{ + int ilen; + CVAR_SET_FLOAT(get_amxstring(amx,params[1],0,ilen),(float)params[2]); + return 1; +} + +static cell AMX_NATIVE_CALL set_cvar_string(AMX *amx, cell *params) /* 2 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + char* szValue = get_amxstring(amx,params[2],1,ilen); + CVAR_SET_STRING(sptemp,szValue); + return 1; +} + +static cell AMX_NATIVE_CALL message_begin(AMX *amx, cell *params) /* 4 param */ +{ + int numparam = *params/sizeof(cell); + Vector vecOrigin; + cell *cpOrigin; + switch (params[1]){ + case MSG_BROADCAST: + case MSG_ALL: + case MSG_SPEC: + MESSAGE_BEGIN( params[1], params[2],NULL ); + break; + case MSG_PVS: case MSG_PAS: + if (numparam < 3) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + cpOrigin = get_amxaddr(amx,params[3]); + vecOrigin.x = *cpOrigin; + vecOrigin.y = *(cpOrigin+1); + vecOrigin.z = *(cpOrigin+2); + MESSAGE_BEGIN( params[1], params[2] , vecOrigin ); + break; + case MSG_ONE: + if (numparam < 4) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + MESSAGE_BEGIN( MSG_ONE, params[2], NULL, INDEXENT(params[4]) ); + break; + } + + return 1; +} + +static cell AMX_NATIVE_CALL message_end(AMX *amx, cell *params) +{ + MESSAGE_END(); + return 1; +} + +static cell AMX_NATIVE_CALL write_byte(AMX *amx, cell *params) /* 1 param */ +{ + WRITE_BYTE( params[1] ); + return 1; +} + +static cell AMX_NATIVE_CALL write_char(AMX *amx, cell *params) /* 1 param */ +{ + WRITE_CHAR( params[1] ); + return 1; +} + +static cell AMX_NATIVE_CALL write_short(AMX *amx, cell *params) /* 1 param */ +{ + WRITE_SHORT( params[1] ); + return 1; +} + +static cell AMX_NATIVE_CALL write_long(AMX *amx, cell *params) /* 1 param */ +{ + WRITE_LONG( params[1] ); + return 1; +} + +static cell AMX_NATIVE_CALL write_entity(AMX *amx, cell *params) /* 1 param */ +{ + WRITE_ENTITY( params[1] ); + return 1; +} + +static cell AMX_NATIVE_CALL write_angle(AMX *amx, cell *params) /* 1 param */ +{ + WRITE_ANGLE( params[1] ); + return 1; +} + +static cell AMX_NATIVE_CALL write_coord(AMX *amx, cell *params) /* 1 param */ +{ + WRITE_COORD( params[1] ); + return 1; +} + +static cell AMX_NATIVE_CALL write_string(AMX *amx, cell *params) /* 1 param */ +{ + int a; + WRITE_STRING( get_amxstring(amx,params[1],3,a) ); + return 1; +} + +static cell AMX_NATIVE_CALL log_message(AMX *amx, cell *params) /* 1 param */ +{ + int len; + char* message = format_amxstring(amx,params,1,len); + message[len++]='\n'; + message[len]=0; + ALERT( at_logged, "%s", message ); + return len; +} + +static cell AMX_NATIVE_CALL log_to_file(AMX *amx, cell *params) /* 1 param */ +{ + int ilen; + char* szFile = get_amxstring(amx,params[1],0,ilen); + FILE*fp; + const char* filename = build_pathname("%s/%s",g_log_dir.str(),szFile); + bool first_time = true; + if ((fp=fopen(filename,"r"))!=NULL){ + first_time = false; + fclose(fp); + } + if ((fp=fopen(filename,"a")) == NULL){ + //amx_RaiseError(amx,AMX_ERR_NATIVE); + //would cause too much troubles in old plugins + return 0; + } + char date[32]; + time_t td; time(&td); + strftime(date,31,"%m/%d/%Y - %H:%M:%S",localtime(&td)); + int len; + char* message = format_amxstring(amx,params,2,len); + message[len++]='\n'; + message[len]=0; + if ( first_time ){ + char game_dir[512]; + GET_GAME_DIR(game_dir); + filename = build_pathname("%s/%s",g_log_dir.str(),szFile); + fprintf(fp,"L %s: Log file started (file \"%s\") (game \"%s\") (amx \"%s\")\n", + date,filename,g_mod_name.str(),Plugin_info.version); + print_srvconsole("L %s: Log file started (file \"%s\") (game \"%s\") (amx \"%s\")\n", + date,filename,g_mod_name.str(),Plugin_info.version); + } + fprintf(fp,"L %s: %s",date,message); + print_srvconsole("L %s: %s",date,message); + fclose(fp); + return 1; +} + +static cell AMX_NATIVE_CALL num_to_word(AMX *amx, cell *params) /* 3 param */ +{ + char sptemp[512]; + UTIL_IntToString(params[1], sptemp); + return set_amxstring(amx,params[2],sptemp,params[3]); +} + + +static cell AMX_NATIVE_CALL get_timeleft(AMX *amx, cell *params) +{ + float flCvarTimeLimit = mp_timelimit->value; + + if (flCvarTimeLimit) { + int iReturn = (int)((g_game_timeleft + flCvarTimeLimit * 60.0) - gpGlobals->time); + return (iReturn < 0) ? 0 : iReturn; + } + + return 0; +} + +static cell AMX_NATIVE_CALL get_time(AMX *amx, cell *params) /* 3 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + time_t td = time(NULL); + tm* lt = localtime(&td); + if ( lt == 0 ) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + char szDate[512]; + strftime(szDate,511,sptemp, lt ); + return set_amxstring(amx,params[2],szDate,params[3]); +} + +static cell AMX_NATIVE_CALL format_time(AMX *amx, cell *params) /* 3 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[3],0,ilen); + time_t tim = params[4]; + time_t td = ( tim != -1 ) ? tim : time(NULL); + tm* lt = localtime(&td); + if ( lt == 0 ) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + char szDate[512]; + strftime(szDate,511,sptemp, lt ); + return set_amxstring(amx,params[1],szDate,params[2]); + +} + +static cell AMX_NATIVE_CALL parse_time(AMX *amx, cell *params) /* 3 param */ +{ + int ilen; + char* sTime = get_amxstring(amx,params[1],1,ilen); + char* sFormat = get_amxstring(amx,params[2],0,ilen); + tm* mytime; + time_t td; + if ( params[3] == -1 ) { + td = time(NULL); + mytime = localtime(&td); + if ( mytime == 0 ){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + strptime (sTime,sFormat,mytime , 0 ); + } + else { + td = params[3]; + mytime = localtime(&td); + if ( mytime == 0 ){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + strptime (sTime,sFormat,mytime , 1 ); + } + return mktime(mytime); +} + +static cell AMX_NATIVE_CALL get_systime(AMX *amx, cell *params) /* 3 param */ +{ + time_t td = time(NULL); + td += params[1]; + return td; +} + +static cell AMX_NATIVE_CALL read_datanum(AMX *amx, cell *params) /* 0 param */ +{ + return g_events.getArgNum(); +} + +static cell AMX_NATIVE_CALL read_data(AMX *amx, cell *params) /* 3 param */ +{ + switch( *params/sizeof(cell) ) { + case 1: + return g_events.getArgInteger( params[1] ); + case 3: + return set_amxstring(amx,params[2], g_events.getArgString( params[1] ),*get_amxaddr(amx,params[3])); + default: + cell *fCell = get_amxaddr(amx,params[2]); + float *pFloat = (float *)((void *)fCell); + *pFloat = g_events.getArgFloat( params[1] ); + return (int)(*pFloat); + } +} + +static cell AMX_NATIVE_CALL get_playersnum(AMX *amx, cell *params) +{ + if (!params[1]) + return g_players_num; + + int a = 0; + for(int i = 1; i <= gpGlobals->maxClients; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if ( pPlayer->initialized && (GETPLAYERUSERID(pPlayer->pEdict) > 0) ) + ++a; + } + + return a; +} + +static cell AMX_NATIVE_CALL get_players(AMX *amx, cell *params) /* 4 param */ +{ + int iNum = 0; + int ilen; + char* sptemp = get_amxstring(amx,params[3],0,ilen); + int flags = UTIL_ReadFlags(sptemp); + + cell *aPlayers = get_amxaddr(amx,params[1]); + cell *iMax = get_amxaddr(amx,params[2]); + + int team; + + if (flags & 48) { + sptemp = get_amxstring(amx,params[4],0,ilen); + + if ( flags & 16 ) { + if (flags & 64) + team = g_teamsIds.findTeamId( sptemp ); + else + team = g_teamsIds.findTeamIdCase( sptemp ); + } + } + + for(int i = 1; i <= gpGlobals->maxClients; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (pPlayer->ingame){ + if (pPlayer->IsAlive() ? (flags & 2) : (flags & 1)) + continue; + if (pPlayer->bot ? (flags & 4) : (flags & 8)) + continue; + if ((flags & 16) && (pPlayer->teamId != team) ) + continue; + /*if ( flags & 16 ) { + if (flags & 64){ + if (strcmpi(pPlayer->team.str(),sptemp)) + continue; + } + else if (strcmp(pPlayer->team.str(),sptemp)) + continue; + }*/ + if (flags & 32){ + if (flags & 64){ + if (stristr(pPlayer->name.str(),sptemp)==NULL) + continue; + } + else if (strstr(pPlayer->name.str(),sptemp)==NULL) + continue; + } + aPlayers[iNum++] = i; + } + } + + *iMax = iNum; + return 1; +} + +static cell AMX_NATIVE_CALL find_player(AMX *amx, cell *params) /* 1 param */ +{ + int ilen, userid = 0; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + int flags = UTIL_ReadFlags(sptemp); + if (flags&31) + sptemp = get_amxstring(amx,params[2],0,ilen); + else if (flags&1024) + userid = *get_amxaddr(amx,params[2]); + // a b c d e f g h i j k l + int result = 0; + for(int i = 1; i <= gpGlobals->maxClients; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (pPlayer->ingame){ + if (pPlayer->IsAlive()?(flags&64):(flags&32)) + continue; + if (pPlayer->bot?(flags&128):(flags&256)) + continue; + if (flags&1){ + if (flags&2048) { + if (strcmpi(pPlayer->name.str(),sptemp)) + continue; + } + else if (strcmp(pPlayer->name.str(),sptemp)) + continue; + } + if (flags&2){ + if (flags&2048) { + if (stristr(pPlayer->name.str(),sptemp)==NULL) + continue; + } + else if (strstr(pPlayer->name.str(),sptemp)==NULL) + continue; + } + if (flags&4){ + const char* authid = GETPLAYERAUTHID(pPlayer->pEdict); + if (!authid || strcmp(authid,sptemp)) + continue; + } + if (flags&1024){ + if (userid != GETPLAYERUSERID(pPlayer->pEdict)) + continue; + } + if (flags&8){ + if (strncmp(pPlayer->ip.str(),sptemp,ilen)) + continue; + } + if (flags&16){ + if (flags&2048) { + if (strcmpi(pPlayer->team.str(),sptemp)) + continue; + } + else if (strcmp(pPlayer->team.str(),sptemp)) + continue; + } + result = i; + if ((flags&512)==0) + break; + } + } + + return result; +} + +static cell AMX_NATIVE_CALL get_maxplayers(AMX *amx, cell *params) +{ + return gpGlobals->maxClients; +} + +static cell AMX_NATIVE_CALL get_gametime(AMX *amx, cell *params) +{ + float pFloat = gpGlobals->time; + return *(cell*)((void *)&pFloat); +} + +static cell AMX_NATIVE_CALL get_mapname(AMX *amx, cell *params) /* 2 param */ +{ + return set_amxstring(amx,params[1],STRING(gpGlobals->mapname),params[2]); +} + +static cell AMX_NATIVE_CALL get_modname(AMX *amx, cell *params) /* 2 param */ +{ + return set_amxstring(amx,params[1],g_mod_name.str(),params[2]); +} + + +static cell AMX_NATIVE_CALL get_localinfo(AMX *amx, cell *params) /* 3 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + return set_amxstring(amx,params[2],LOCALINFO(sptemp),params[3]); +} + +static cell AMX_NATIVE_CALL set_localinfo(AMX *amx, cell *params) /* 2 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + char* szValue = get_amxstring(amx,params[2],1,ilen); + SET_LOCALINFO(sptemp,szValue); + return 1; +} + +static cell AMX_NATIVE_CALL get_user_info(AMX *amx, cell *params) /* 4 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + int ilen; + char* sptemp = get_amxstring(amx,params[2],0,ilen); + return set_amxstring(amx,params[3],ENTITY_KEYVALUE(pPlayer->pEdict,sptemp ),params[4]); + return 1; +} + +static cell AMX_NATIVE_CALL set_user_info(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + int ilen; + char* sptemp = get_amxstring(amx,params[2],0,ilen); + char* szValue = get_amxstring(amx,params[3],1,ilen); + ENTITY_SET_KEYVALUE(pPlayer->pEdict,sptemp,szValue); + return 1; +} + +static cell AMX_NATIVE_CALL read_argc(AMX *amx, cell *params) +{ + return CMD_ARGC(); +} + +static cell AMX_NATIVE_CALL read_argv(AMX *amx, cell *params) /* 3 param */ +{ + return set_amxstring(amx,params[2], /*( params[1] < 0 || + params[1] >= CMD_ARGC() ) ? "" : */CMD_ARGV(params[1]) , params[3]); +} + +static cell AMX_NATIVE_CALL read_args(AMX *amx, cell *params) /* 2 param */ +{ + const char* sValue = CMD_ARGS(); + return set_amxstring(amx,params[1],sValue ? sValue : "",params[2]); +} + +static cell AMX_NATIVE_CALL get_user_msgid(AMX *amx, cell *params) /* 1 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + return GET_USER_MSG_ID(PLID, sptemp , NULL ); +} + +static cell AMX_NATIVE_CALL set_task(AMX *amx, cell *params) /* 2 param */ +{ + + CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx); + + int a, iFunc; + + char* stemp = get_amxstring(amx,params[2],1, a ); + + if (amx_FindPublic(amx, stemp , &iFunc) != AMX_ERR_NONE){ + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")",stemp,plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + + float base = *(float *)((void *)¶ms[1]); + + if ( base < 0.1 ) + base = 0.1; + + char* temp = get_amxstring(amx,params[6],0,a); + + g_tasksMngr.registerTask( plugin , + iFunc , UTIL_ReadFlags(temp), params[3], base , + gpGlobals->time + base , params[5] , + get_amxaddr(amx,params[4]) , params[7] ); + + return 1; +} + +static cell AMX_NATIVE_CALL remove_task(AMX *amx, cell *params) /* 1 param */ +{ + return g_tasksMngr.removeTasks( params[1] , params[2] ? 0 : amx ); +} + +static cell AMX_NATIVE_CALL task_exists(AMX *amx, cell *params) /* 1 param */ +{ + return g_tasksMngr.taskExists( params[1] , params[2] ? 0 : amx ); +} + +static cell AMX_NATIVE_CALL cvar_exists(AMX *amx, cell *params) /* 1 param */ +{ + int ilen; + return (CVAR_GET_POINTER(get_amxstring(amx,params[1],0,ilen))?1:0); +} + +static cell AMX_NATIVE_CALL register_cvar(AMX *amx, cell *params) /* 3 param */ +{ + int i; + char* temp = get_amxstring(amx,params[1],0,i); + + if ( !g_cvars.find( temp ) ) + { + CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx); + CCVar* cvar = new CCVar( temp , plugin->getName() , params[3] , + *(float *)((void *)¶ms[4]) ); + + if ( cvar == 0 ) + return 0; + + g_cvars.put( cvar ); + + if ( CVAR_GET_POINTER(temp) == 0 ) + CVAR_REGISTER( cvar->getCvar() ); + + CVAR_SET_STRING( temp ,get_amxstring(amx,params[2],1,i)); + return 1; + } + + return 0; +} + +static cell AMX_NATIVE_CALL get_user_ping(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index<1||index>gpGlobals->maxClients) + return 0; + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + cell *cpPing = get_amxaddr(amx,params[2]); + cell *cpLoss = get_amxaddr(amx,params[3]); + int ping, loss; + PLAYER_CNX_STATS(pPlayer->pEdict , &ping, &loss); + *cpPing = ping; + *cpLoss = loss; + return 1; + } + return 0; +} + +static cell AMX_NATIVE_CALL get_user_time(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 (pPlayer->ingame){ + int time = (int)(gpGlobals->time - (params[2] ? pPlayer->playtime : pPlayer->time)); + return time; + } + return 0; +} + +static cell AMX_NATIVE_CALL server_exec(AMX *amx, cell *params) +{ + SERVER_EXECUTE( ); + return 1; +} + +static cell AMX_NATIVE_CALL engclient_cmd(AMX *amx, cell *params) /* 4 param */ +{ + int ilen; + const char* szCmd = get_amxstring(amx,params[2],0,ilen); + const char* sArg1 = get_amxstring(amx,params[3],1,ilen); + if ( ilen == 0 ) sArg1 = 0; + const char* sArg2 = get_amxstring(amx,params[4],2,ilen); + if ( ilen == 0 ) sArg2 = 0; + if (params[1] == 0) { + for(int i = 1; i <= gpGlobals->maxClients; ++i){ + CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); + if (pPlayer->ingame /*&& pPlayer->initialized */) + UTIL_FakeClientCommand(pPlayer->pEdict, szCmd,sArg1,sArg2); + } + } + else { + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if ( /*pPlayer->initialized && */pPlayer->ingame ) + UTIL_FakeClientCommand(pPlayer->pEdict, szCmd,sArg1,sArg2); + } + return 1; +} + +static cell AMX_NATIVE_CALL pause(AMX *amx, cell *params) /* 3 param */ +{ + int ilen; + char* temp = get_amxstring(amx,params[1],0,ilen); + int flags = UTIL_ReadFlags(temp); + + CPluginMngr::CPlugin *plugin = 0; + + if ( flags & 2 ) { // pause function + if (flags&4){ //look out side the plugin + temp = get_amxstring(amx,params[3],0,ilen); + plugin = g_plugins.findPlugin(temp); + } + else plugin = g_plugins.findPluginFast(amx); + if ( !plugin ) return 0; // plugin not found + temp = get_amxstring(amx,params[2],0,ilen); + int err, index; + if ((err = amx_FindPublic( plugin->getAMX(), temp , &index) )!= AMX_ERR_NONE){ + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")", temp,plugin->getName() ); + return 0; + } + plugin->pauseFunction( index ); + return 1; + } + else if (flags&4){ + temp = get_amxstring(amx,params[2],0,ilen); + plugin = g_plugins.findPlugin(temp); + } + else + plugin = g_plugins.findPluginFast(amx); + if ( plugin && plugin->isValid() ){ + if ( flags & 8 ) + plugin->setStatus( ps_stopped ); + else if ( flags & 16 ) + plugin->setStatus( ps_locked ); + else + plugin->pausePlugin(); + return 1; + } + return 0; +} + +static cell AMX_NATIVE_CALL unpause(AMX *amx, cell *params) /* 3 param */ +{ + + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + int flags = UTIL_ReadFlags(sptemp); + CPluginMngr::CPlugin *plugin = 0; + if (flags&2) { + if (flags&4){ + sptemp = get_amxstring(amx,params[3],0,ilen); + plugin = g_plugins.findPlugin(sptemp); + } + else + plugin = g_plugins.findPluginFast(amx); + if ( !plugin ) return 0; + sptemp = get_amxstring(amx,params[2],0,ilen); + int err, index; + if ((err = amx_FindPublic(plugin->getAMX(), sptemp , &index) )!= AMX_ERR_NONE){ + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")", sptemp,plugin->getName() ); + return 0; + } + plugin->unpauseFunction( index ); + return 1; + } + else if (flags&4){ + sptemp = get_amxstring(amx,params[2],0,ilen); + plugin = g_plugins.findPlugin(sptemp); + } + else + plugin = g_plugins.findPluginFast( amx); + if (plugin && plugin->isValid()) { + plugin->unpausePlugin(); + return 1; + } + + return 0; + +} + +static cell AMX_NATIVE_CALL read_flags(AMX *amx, cell *params) /* 1 param */ +{ + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + return UTIL_ReadFlags(sptemp); +} + +static cell AMX_NATIVE_CALL get_flags(AMX *amx, cell *params) /* 1 param */ +{ + char flags[32]; + UTIL_GetFlags( flags , params[1] ); + return set_amxstring(amx,params[2],flags,params[3]); +} + +static cell AMX_NATIVE_CALL get_user_flags(AMX *amx, cell *params) /* 2 param */ +{ + int index = params[1]; + if (index<0||index>gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + int id = params[2]; + if (id < 0) id = 0; + if (id > 31) id = 31; + return GET_PLAYER_POINTER_I(index)->flags[id]; +} + +static cell AMX_NATIVE_CALL set_user_flags(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index < 0 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + int flag = params[2]; + int id = params[3]; + if (id < 0) id = 0; + if (id > 31) id = 31; + pPlayer->flags[id] |= flag; + return 1; +} + +static cell AMX_NATIVE_CALL remove_user_flags(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index < 0 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + int flag = params[2]; + int id = params[3]; + if (id < 0) id = 0; + if (id > 31) id = 31; + pPlayer->flags[id] &= ~flag; + return 1; +} + +static cell AMX_NATIVE_CALL register_menuid(AMX *amx, cell *params) /* 1 param */ +{ + int i; + char* temp = get_amxstring(amx,params[1],0,i); + AMX* a = (*params/sizeof(cell) < 2 || params[2] ) ? 0 : amx; + return g_menucmds.registerMenuId( temp , a ); +} + +static cell AMX_NATIVE_CALL get_user_menu(AMX *amx, cell *params) /* 3 param */ +{ + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + cell *cpMenu = get_amxaddr(amx,params[2]); + cell *cpKeys = get_amxaddr(amx,params[3]); + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + if (pPlayer->ingame){ + *cpMenu = pPlayer->menu; + *cpKeys = pPlayer->keys; + return 1; + } + return 0; +} + +static cell AMX_NATIVE_CALL precache_sound(AMX *amx, cell *params) /* 1 param */ +{ + if ( g_dontprecache ) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + PRECACHE_SOUND((char*)STRING(ALLOC_STRING(sptemp))); + return 1; +} + +static cell AMX_NATIVE_CALL precache_model(AMX *amx, cell *params) /* 1 param */ +{ + if ( g_dontprecache ) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + int ilen; + char* sptemp = get_amxstring(amx,params[1],0,ilen); + return PRECACHE_MODEL((char*)STRING(ALLOC_STRING(sptemp))); +} + +static cell AMX_NATIVE_CALL get_distance(AMX *amx, cell *params) /* 2 param */ +{ + cell *cpVec1 = get_amxaddr(amx,params[1]); + cell *cpVec2 = get_amxaddr(amx,params[2]); + Vector vec1 = Vector(cpVec1[0],cpVec1[1],cpVec1[2]); + Vector vec2 = Vector(cpVec2[0],cpVec2[1],cpVec2[2]); + int iDist = (int)((vec1 - vec2).Length()); + return iDist; +} + +static cell AMX_NATIVE_CALL random_float(AMX *amx, cell *params) /* 2 param */ +{ + float one = *(float *)((void *)¶ms[1]); + float two = *(float *)((void *)¶ms[2]); + float fRnd = RANDOM_FLOAT(one,two); + return *(cell*)((void *)&fRnd); +} + +static cell AMX_NATIVE_CALL random_num(AMX *amx, cell *params) /* 2 param */ +{ + return RANDOM_LONG(params[1],params[2]); +} + +static cell AMX_NATIVE_CALL remove_quotes(AMX *amx, cell *params) /* 1 param */ +{ + cell *text = get_amxaddr(amx,params[1]); + if (*text=='\"') { + register cell *temp = text; + int len = 0; + while(*temp++) ++len; // get length + cell *src = text; + if ( src[len-1]=='\r' ) + src[--len] = 0; + if (src[--len]=='\"'){ + src[len] = 0; + temp = src+1; + while((*src++ = *temp++)) + ; + return 1; + } + } + return 0; +} + +static cell AMX_NATIVE_CALL get_user_aiming(AMX *amx, cell *params) /* 4 param */ +{ + int index = params[1]; + if (index < 1 || index > gpGlobals->maxClients){ + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); + cell *cpId = get_amxaddr(amx,params[2]); + cell *cpBody = get_amxaddr(amx,params[3]); + cell fCell; + float *pFloat = (float *)((void *)&fCell); + *pFloat = 0.0; + if (pPlayer->ingame) { + edict_t* edict = pPlayer->pEdict; + Vector v_forward; + Vector v_src = edict->v.origin + edict->v.view_ofs; + ANGLEVECTORS( edict->v.v_angle , v_forward, NULL, NULL ); + TraceResult trEnd; + Vector v_dest = v_src + v_forward * params[4]; + TRACE_LINE( v_src , v_dest, 0 , edict, &trEnd ); + *cpId = FNullEnt(trEnd.pHit) ? 0 : ENTINDEX(trEnd.pHit); + *cpBody = trEnd.iHitgroup; + if (trEnd.flFraction < 1.0) { + *pFloat = (trEnd.vecEndPos - v_src).Length(); + return fCell; + } + else { + return fCell; + } + } + *cpId = 0; + *cpBody = 0; + return fCell; +} + +static cell AMX_NATIVE_CALL remove_cvar_flags(AMX *amx, cell *params) +{ + int ilen; + char* sCvar = get_amxstring(amx,params[1],0,ilen); + if ( !strcmp(sCvar,"amx_version") || !strcmp(sCvar,"amxmodx_version") || + !strcmp(sCvar,"fun_version") || !strcmp(sCvar,"sv_cheats") ) + return 0; + cvar_t* pCvar = CVAR_GET_POINTER(sCvar); + if (pCvar) { + pCvar->flags &= ~((int)(params[2])); + return 1; + } + return 0; +} + +static cell AMX_NATIVE_CALL get_cvar_flags(AMX *amx, cell *params) +{ + int ilen; + char* sCvar = get_amxstring(amx,params[1],0,ilen); + cvar_t* pCvar = CVAR_GET_POINTER(sCvar); + return pCvar ? pCvar->flags : 0; +} + +static cell AMX_NATIVE_CALL set_cvar_flags(AMX *amx, cell *params) +{ + int ilen; + char* sCvar = get_amxstring(amx,params[1],0,ilen); + if ( !strcmp(sCvar,"amx_version") || !strcmp(sCvar,"amxmodx_version") || + !strcmp(sCvar,"fun_version") || !strcmp(sCvar,"sv_cheats") ) + return 0; + cvar_t* pCvar = CVAR_GET_POINTER(sCvar); + if (pCvar) { + pCvar->flags |= (int)(params[2]); + return 1; + } + return 0; +} + +static cell AMX_NATIVE_CALL force_unmodified(AMX *amx, cell *params) +{ + int a; + cell *cpVec1 = get_amxaddr(amx,params[2]); + cell *cpVec2 = get_amxaddr(amx,params[3]); + Vector vec1 = Vector(cpVec1[0],cpVec1[1],cpVec1[2]); + Vector vec2 = Vector(cpVec2[0],cpVec2[1],cpVec2[2]); + char* filename = get_amxstring(amx,params[4],0,a); + + ForceObject* aaa = new ForceObject(filename , (FORCE_TYPE)((int)(params[1])) , vec1 , vec2 , amx); + + if ( aaa ) + { + if ( stristr(filename,".wav") ) + g_forcesounds.put( aaa ); + else if ( stristr(filename,".mdl") ) + g_forcemodels.put( aaa ); + else + g_forcegeneric.put( aaa ); + + return 1; + } + return 0; +} + + +static cell AMX_NATIVE_CALL read_logdata(AMX *amx, cell *params) +{ + return set_amxstring(amx,params[1], g_logevents.getLogString() ,params[2]); +} + +static cell AMX_NATIVE_CALL read_logargc(AMX *amx, cell *params) +{ + return g_logevents.getLogArgNum(); +} + +static cell AMX_NATIVE_CALL read_logargv(AMX *amx, cell *params) +{ + return set_amxstring(amx,params[2],g_logevents.getLogArg(params[1]),params[3]); +} + +static cell AMX_NATIVE_CALL parse_loguser(AMX *amx, cell *params) +{ + int len; + char *text = get_amxstring(amx,params[1],0,len); + if ( len < 6 ) { // no user to parse!? + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } +/******** GET TEAM **********/ + char* end = text + --len; + *end = 0; + while ( *end!='<' && len-- ) + --end; + ++end; + cell *cPtr = get_amxaddr(amx,params[7]); + int max = params[8]; // get TEAM +// print_srvconsole("Got team: %s (Len %d)\n",end,len); + while ( max-- && *end ) + *cPtr++ = *end++; + *cPtr = 0; +/******** GET AUTHID **********/ + if ( len <= 0 ) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + end = text + --len; + *end = 0; + while ( *end!='<' && len-- ) + --end; + ++end; + cPtr = get_amxaddr(amx,params[5]); + max = params[6]; // get AUTHID + // print_srvconsole("Got auth: %s (Len %d)\n",end,len); + while ( max-- && *end ) + *cPtr++ = *end++; + *cPtr = 0; +/******** GET USERID **********/ + if ( len <= 0 ) { + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + end = text + --len; + *end = 0; + while ( *end!='<' && len-- ) + --end; +// print_srvconsole("Got userid: %s (Len %d)\n",end + 1,len); + if ( *(cPtr = get_amxaddr(amx,params[4])) != -2 ) + *cPtr = atoi( end + 1 ); +/******** GET NAME **********/ + *end = 0; + cPtr = get_amxaddr(amx,params[2]); + max = params[3]; // get NAME +// print_srvconsole("Got name: %s (Len %d)\n",text,len); + while ( max-- && *text ) + *cPtr++ = *text++; + *cPtr = 0; + return 1; +} + +static cell AMX_NATIVE_CALL register_logevent(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx); + + int a, iFunc; + + char* temp = get_amxstring(amx,params[1],0, a ); + + if (amx_FindPublic(amx, temp , &iFunc) != AMX_ERR_NONE){ + UTIL_Log("[AMXX] Function is not present (function \"%s\") (plugin \"%s\")", + temp,plugin->getName() ); + amx_RaiseError(amx,AMX_ERR_NATIVE); + return 0; + } + + LogEventsMngr::CLogEvent* r = + g_logevents.registerLogEvent( plugin , iFunc, params[2] ); + + if ( r == 0 ) return 0; + + int numparam = *params/sizeof(cell); + + for(int i = 3; i <= numparam; ++i) + r->registerFilter( get_amxstring(amx,params[i],0, a ) ); + + return 1; +} + +// native is_module_loaded(const name[]); +static cell AMX_NATIVE_CALL is_module_loaded(AMX *amx, cell *params) +{ + // param1: name + int len; + char *name = get_amxstring(amx, params[1], 0, len); + int id = 0; + for (CList::iterator iter = g_modules.begin(); iter; ++iter) + { + if (stricmp((*iter).getName(), name) == 0) + return id; + ++id; + } + return -1; +} + +// native is_plugin_loaded(const name[]); +static cell AMX_NATIVE_CALL is_plugin_loaded(AMX *amx, cell *params) +{ + // param1: name + int len; + char *name = get_amxstring(amx, params[1], 0, len); + int id = 0; + for (CPluginMngr::iterator iter = g_plugins.begin(); iter; ++iter) + { + if (stricmp((*iter).getName(), name) == 0) + return id; + ++id; + } + return -1; +} +// native get_modulesnum(); +static cell AMX_NATIVE_CALL get_modulesnum(AMX *amx, cell *params) +{ + return static_cast(g_modules.size()); +} + +// native get_module(id, name[], nameLen, author[], authorLen, version[], versionLen, &status); +static cell AMX_NATIVE_CALL get_module(AMX *amx, cell *params) +{ + CList::iterator moduleIter; + + // find the module + int i = params[1]; + for (moduleIter = g_modules.begin(); moduleIter && i; ++moduleIter) + --i; + + if (i != 0 || !moduleIter) + return -1; // not found + + // set name, author, version + module_info_s *info = (*moduleIter).getInfo(); + set_amxstring(amx, params[2], info->name, params[3]); + set_amxstring(amx, params[4], info->author, params[5]); + set_amxstring(amx, params[6], info->version, params[7]); + + // compatibility problem possible + int numParams = params[0] / sizeof(cell); + if (numParams < 8) + { + CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx); + UTIL_Log("[AMXX] get_module: call to a previous version (plugin \"%s\", line %d)", curPlugin->getName(), amx->curline); + amx_RaiseError(amx, AMX_ERR_NATIVE); + } + + // set status + cell *addr; + if (amx_GetAddr(amx, params[8], &addr) != AMX_ERR_NONE) + { + CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx); + UTIL_Log("[AMXX] get_module: invalid reference (plugin \"%s\", line %d)", curPlugin->getName(), amx->curline); + amx_RaiseError(amx, AMX_ERR_NATIVE); + } + + *addr = (cell)(*moduleIter).getStatusValue(); + + return params[1]; +} + +// native log_amx(const msg[], ...); +static cell AMX_NATIVE_CALL log_amx(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *plugin = g_plugins.findPluginFast(amx); + int len; + + UTIL_Log("[%s] %s", plugin->getName(), format_amxstring(amx, params, 1, len)); + return 0; +} + +/*********************************************************************/ +CPluginMngr::CPlugin *g_CallFunc_Plugin = NULL; // The plugin +int g_CallFunc_Func = 0; // The func + +struct CallFunc_ParamInfo +{ + unsigned char flags; // flags + cell byrefAddr; // byref address in caller plugin + cell size; // byref size +}; + +#define CALLFUNC_MAXPARAMS 64 /* Maximal params number */ +cell g_CallFunc_Params[CALLFUNC_MAXPARAMS] = {0}; // Params +CallFunc_ParamInfo g_CallFunc_ParamInfo[CALLFUNC_MAXPARAMS] = {0}; // Flags +int g_CallFunc_CurParam = 0; // Current param id + +#define CALLFUNC_FLAG_BYREF 1 /* Byref flag so that mem is released */ +#define CALLFUNC_FLAG_BYREF_REUSED 2 /* Reused byref */ + +// native callfunc_begin(const func[], const plugin[]=""); +static cell AMX_NATIVE_CALL callfunc_begin(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx); + if (g_CallFunc_Plugin) + { + // scripter's fault + UTIL_Log("[AMXX] callfunc_begin called without callfunc_end (plugin \"%s\", line %d)", curPlugin->getName(), amx->curline); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + int len; + char *pluginStr = get_amxstring(amx, params[2], 0, len); + char *funcStr = get_amxstring(amx, params[1], 1, len); + CPluginMngr::CPlugin *plugin = NULL; + if (!pluginStr || !*pluginStr) + plugin = curPlugin; + else + plugin = g_plugins.findPlugin(pluginStr); + + if (!plugin) + { + return -1; // plugin not found: -1 + } + + int func; + if (amx_FindPublic(plugin->getAMX(), funcStr, &func) != AMX_ERR_NONE) + { + return -2; // func not found: -2 + } + + // set globals + g_CallFunc_Plugin = plugin; + g_CallFunc_Func = func; + + return 1; // success: 1 +} + +// native callfunc_end(); +static cell AMX_NATIVE_CALL callfunc_end(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx); + if (!g_CallFunc_Plugin) + { + // scripter's fault + UTIL_Log("[AMXX] callfunc_end called without callfunc_begin (plugin \"%s\", line %d)", curPlugin->getName(), amx->curline); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + // call the func + cell retVal; + int err; + + // copy the globs so the called func can also use callfunc + cell gparams[CALLFUNC_MAXPARAMS]; + CallFunc_ParamInfo gparamInfo[CALLFUNC_MAXPARAMS]; + + CPluginMngr::CPlugin *plugin = g_CallFunc_Plugin; + int func = g_CallFunc_Func; + int curParam = g_CallFunc_CurParam; + + memcpy(gparams, g_CallFunc_Params, sizeof(cell) * curParam); + memcpy(gparamInfo, g_CallFunc_ParamInfo, sizeof(CallFunc_ParamInfo) * curParam); + + // cleanup + g_CallFunc_Plugin = NULL; + g_CallFunc_CurParam = 0; + + // actual call + if ((err = amx_Execv(plugin->getAMX(), &retVal, func, curParam, gparams)) != AMX_ERR_NONE) + { + UTIL_Log("[AMXX] Run time error %d on line %ld (plugin \"%s\")", err, curPlugin->getAMX()->curline, curPlugin->getName()); + return 0; + } + + // process byref params (not byref_reused) + for (int i = 0; i < curParam; ++i) + { + if (gparamInfo[i].flags & CALLFUNC_FLAG_BYREF) + { + // copy back so that references work + AMX *amxCaller = curPlugin->getAMX(); + AMX *amxCalled = plugin->getAMX(); + AMX_HEADER *hdrCaller = (AMX_HEADER *)amxCaller->base; + AMX_HEADER *hdrCalled = (AMX_HEADER *)amxCalled->base; + memcpy( /** DEST ADDR **/ + (amxCaller->data ? amxCaller->data : (amxCaller->base + hdrCaller->dat)) + gparamInfo[i].byrefAddr, + /** SOURCE ADDR **/ + (amxCalled->data ? amxCalled->data : (amxCalled->base + hdrCalled->dat)) + gparams[i], + /** SIZE **/ + gparamInfo[i].size * sizeof(cell)); + + // free memory used for params passed by reference + amx_Release(amxCalled, gparams[i]); + } + } + + return retVal; +} + +// native callfunc_push_int(value); +// native callfunc_push_float(Float: value); +static cell callfunc_push_byval(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx); + if (!g_CallFunc_Plugin) + { + // scripter's fault + UTIL_Log("[AMXX] callfunc_push_xxx called without callfunc_begin (plugin \"%s\", line %d)", curPlugin->getName(), amx->curline); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + if (g_CallFunc_CurParam == CALLFUNC_MAXPARAMS) + { + UTIL_Log("[AMXX] callfunc_push_xxx: maximal parameters num: %d", CALLFUNC_MAXPARAMS); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + g_CallFunc_ParamInfo[g_CallFunc_CurParam].flags = 0; + g_CallFunc_Params[g_CallFunc_CurParam++] = params[1]; + + return 0; +} + +// native callfunc_push_intref(&value); +// native callfunc_push_floatref(Float: &value); +static cell callfunc_push_byref(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx); + if (!g_CallFunc_Plugin) + { + // scripter's fault + UTIL_Log("[AMXX] callfunc_push_xxx called without callfunc_begin (plugin \"%s\", line %d)", curPlugin->getName(), amx->curline); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + if (g_CallFunc_CurParam == CALLFUNC_MAXPARAMS) + { + UTIL_Log("[AMXX] callfunc_push_xxx: maximal parameters num: %d", CALLFUNC_MAXPARAMS); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + // search for the address; if it is found, dont create a new copy + for (int i = 0; i < g_CallFunc_CurParam; ++i) + { + if ((g_CallFunc_ParamInfo[i].flags & CALLFUNC_FLAG_BYREF) && + (g_CallFunc_ParamInfo[i].byrefAddr == params[1])) + { + // the byrefAddr and size params should not be used; set them anyways... + g_CallFunc_ParamInfo[g_CallFunc_CurParam].flags = CALLFUNC_FLAG_BYREF_REUSED; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].byrefAddr = params[1]; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].size = 1; + g_CallFunc_Params[g_CallFunc_CurParam++] = g_CallFunc_Params[i]; + // we are done + return 0; + } + } + + // not found; create an own copy + // allocate memory + cell *phys_addr; + cell amx_addr; + amx_Allot(g_CallFunc_Plugin->getAMX(), + 1, // 1 cell + &amx_addr, + &phys_addr); + + // copy the value to the allocated memory + cell *phys_addr2; + amx_GetAddr(curPlugin->getAMX(), params[1], &phys_addr2); + *phys_addr = *phys_addr2; + + // push the address and set the reference flag so that memory is released after function call. + g_CallFunc_ParamInfo[g_CallFunc_CurParam].flags = CALLFUNC_FLAG_BYREF; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].byrefAddr = params[1]; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].size = 1; + g_CallFunc_Params[g_CallFunc_CurParam++] = amx_addr; + + return 0; +} + +// native callfunc_push_str(value[]); +static cell callfunc_push_str(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *curPlugin = g_plugins.findPluginFast(amx); + if (!g_CallFunc_Plugin) + { + // scripter's fault + UTIL_Log("[AMXX] callfunc_push_xxx called without callfunc_begin (plugin \"%s\", line %d)", curPlugin->getName(), amx->curline); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + if (g_CallFunc_CurParam == CALLFUNC_MAXPARAMS) + { + UTIL_Log("[AMXX] callfunc_push_xxx: maximal parameters num: %d", CALLFUNC_MAXPARAMS); + amx_RaiseError(amx, AMX_ERR_NATIVE); + return 0; + } + + // search for the address; if it is found, dont create a new copy + for (int i = 0; i < g_CallFunc_CurParam; ++i) + { + if ((g_CallFunc_ParamInfo[i].flags & CALLFUNC_FLAG_BYREF) && + (g_CallFunc_ParamInfo[i].byrefAddr == params[1])) + { + // the byrefAddr and size params should not be used; set them anyways... + g_CallFunc_ParamInfo[g_CallFunc_CurParam].flags = CALLFUNC_FLAG_BYREF_REUSED; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].byrefAddr = params[1]; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].size = 1; + g_CallFunc_Params[g_CallFunc_CurParam++] = g_CallFunc_Params[i]; + // we are done + return 0; + } + } + + // not found; create an own copy + // get the string and its length + int len; + char *str = get_amxstring(amx, params[1], 0, len); + // allocate enough memory for the string + cell *phys_addr; + cell amx_addr; + amx_Allot(g_CallFunc_Plugin->getAMX(), + len + 1, // length + terminator + &amx_addr, + &phys_addr); + + // copy it to the allocated memory + // we assume it's unpacked + amx_SetString(phys_addr, str, 0); + + // push the address and set the reference flag so that memory is released after function call. + g_CallFunc_ParamInfo[g_CallFunc_CurParam].flags = CALLFUNC_FLAG_BYREF; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].byrefAddr = params[1]; + g_CallFunc_ParamInfo[g_CallFunc_CurParam].size = len + 1; + g_CallFunc_Params[g_CallFunc_CurParam++] = amx_addr; + + return 0; +} + +AMX_NATIVE_INFO amxmod_Natives[] = { + { "client_cmd", client_cmd }, + { "client_print", client_print }, + { "console_cmd", console_cmd }, + { "console_print", console_print }, + { "cvar_exists", cvar_exists }, + { "emit_sound", emit_sound }, + { "engclient_cmd", engclient_cmd }, + { "engclient_print", engclient_print }, + { "find_player", find_player }, + { "force_unmodified", force_unmodified }, + { "format_time", format_time}, + { "get_clcmd", get_clcmd}, + { "get_clcmdsnum", get_clcmdsnum}, + { "get_concmd", get_concmd}, + { "get_concmdsnum", get_concmdsnum}, + { "get_cvar_flags", get_cvar_flags }, + { "get_cvar_float", get_cvar_float }, + { "get_cvar_num", get_cvar_num }, + { "get_cvar_string", get_cvar_string }, + { "get_distance", get_distance }, + { "get_flags", get_flags }, + { "get_gametime", get_gametime}, + { "get_localinfo", get_localinfo}, + { "get_mapname", get_mapname}, + { "get_maxplayers", get_maxplayers }, + { "get_modname", get_modname}, + { "get_players", get_players }, + { "get_playersnum", get_playersnum }, + { "get_plugin", get_plugin }, + { "get_pluginsnum", get_pluginsnum }, + { "get_srvcmd", get_srvcmd }, + { "get_srvcmdsnum", get_srvcmdsnum }, + { "get_systime", get_systime}, + { "get_time", get_time}, + { "get_timeleft", get_timeleft}, + { "get_user_aiming", get_user_aiming }, + { "get_user_ammo", get_user_ammo}, + { "get_user_armor", get_user_armor }, + { "get_user_attacker",get_user_attacker }, + { "get_user_authid", get_user_authid }, + { "get_user_flags", get_user_flags }, + { "get_user_frags", get_user_frags }, + { "get_user_deaths", get_user_deaths }, + { "get_user_health", get_user_health }, + { "get_user_index", get_user_index }, + { "get_user_info", get_user_info }, + { "get_user_ip", get_user_ip }, + { "get_user_menu", get_user_menu}, + { "get_user_msgid", get_user_msgid}, + { "get_user_name", get_user_name }, + { "get_user_origin", get_user_origin}, + { "get_user_ping", get_user_ping }, + { "get_user_team", get_user_team }, + { "get_user_time", get_user_time }, + { "get_user_userid", get_user_userid }, + { "get_user_weapon", get_user_weapon}, + { "get_user_weapons", get_user_weapons}, + { "get_weaponname", get_weaponname}, + { "get_xvar_float", get_xvar_num }, + { "get_xvar_id", get_xvar_id }, + { "get_xvar_num", get_xvar_num }, + { "is_dedicated_server",is_dedicated_server }, + { "is_linux_server", is_linux_server }, + { "is_user_authorized", is_user_authorized }, + { "is_map_valid", is_map_valid }, + { "is_user_alive", is_user_alive }, + { "is_user_bot", is_user_bot }, + { "is_user_connected", is_user_connected }, + { "is_user_connecting", is_user_connecting }, + { "is_user_hltv", is_user_hltv }, + { "log_message", log_message }, + { "log_to_file", log_to_file }, + { "num_to_word", num_to_word }, + { "parse_loguser", parse_loguser }, + { "parse_time", parse_time }, + { "pause", pause }, + { "precache_model", precache_model }, + { "precache_sound", precache_sound }, + { "random_float", random_float }, + { "random_num", random_num }, + { "read_argc", read_argc }, + { "read_args", read_args }, + { "read_argv", read_argv }, + { "read_data", read_data }, + { "read_datanum", read_datanum }, + { "read_flags", read_flags }, + { "read_logargc", read_logargc }, + { "read_logargv", read_logargv }, + { "read_logdata", read_logdata }, + { "register_clcmd", register_clcmd }, + { "register_concmd", register_concmd }, + { "register_cvar", register_cvar }, + { "register_event", register_event }, + { "register_logevent",register_logevent}, + { "register_menucmd", register_menucmd }, + { "register_menuid", register_menuid }, + { "register_plugin", register_plugin }, + { "register_srvcmd", register_srvcmd }, + { "remove_cvar_flags", remove_cvar_flags }, + { "remove_quotes", remove_quotes }, + { "remove_task", remove_task }, + { "remove_user_flags", remove_user_flags }, + { "server_cmd", server_cmd }, + { "server_exec", server_exec }, + { "server_print", server_print }, + { "set_cvar_flags", set_cvar_flags }, + { "set_cvar_float", set_cvar_float }, + { "set_cvar_num", set_cvar_num }, + { "set_cvar_string", set_cvar_string }, + { "set_hudmessage", set_hudmessage }, + { "set_localinfo", set_localinfo}, + { "set_task", set_task }, + { "set_user_flags", set_user_flags}, + { "set_user_info", set_user_info }, + { "set_xvar_float", set_xvar_num }, + { "set_xvar_num", set_xvar_num }, + { "show_hudmessage", show_hudmessage }, + { "show_menu", show_menu }, + { "show_motd", show_motd }, + { "task_exists", task_exists }, + { "unpause", unpause }, + { "user_kill", user_kill }, + { "user_slap", user_slap }, + { "xvar_exists", xvar_exists }, + { "is_module_loaded", is_module_loaded }, + { "is_plugin_loaded", is_plugin_loaded }, + { "get_modulesnum", get_modulesnum }, + { "get_module", get_module }, + { "log_amx", log_amx }, + { "callfunc_begin", callfunc_begin }, + { "callfunc_end", callfunc_end }, + { "callfunc_push_int", callfunc_push_byval }, + { "callfunc_push_str", callfunc_push_str }, + { "callfunc_push_float", callfunc_push_byval }, + { "callfunc_push_intrf", callfunc_push_byref }, + { "callfunc_push_floatrf", callfunc_push_byref }, + { "message_begin", message_begin }, + { "message_end", message_end }, + { "write_angle", write_angle }, + { "write_byte", write_byte }, + { "write_char", write_char }, + { "write_coord", write_coord }, + { "write_entity", write_entity }, + { "write_long", write_long }, + { "write_short", write_short }, + { "write_string", write_string }, + { NULL, NULL } +}; diff --git a/amxmodx/amxmodx.h b/amxmodx/amxmodx.h new file mode 100755 index 00000000..d77c9131 --- /dev/null +++ b/amxmodx/amxmodx.h @@ -0,0 +1,240 @@ +/* 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 AMXMODX_H +#define AMXMODX_H + +#include "modules.h" +#include "CString.h" +#include "CList.h" +#include "CPlugin.h" +#include "CMisc.h" +#include "CVault.h" +#include "CModule.h" +#include "CTask.h" +#include "CLogEvent.h" +#include "CForward.h" +#include "CCmd.h" +#include "CMenu.h" +#include "CEvent.h" + +#define AMX_VERSION "0.16" + +#ifdef __cplusplus +extern "C" { +#endif + extern AMX_NATIVE_INFO core_Natives[]; + extern AMX_NATIVE_INFO time_Natives[]; + extern AMX_NATIVE_INFO power_Natives[]; +#ifdef __cplusplus +} +#endif +extern AMX_NATIVE_INFO amxmod_Natives[]; +extern AMX_NATIVE_INFO file_Natives[]; +extern AMX_NATIVE_INFO float_Natives[]; +extern AMX_NATIVE_INFO string_Natives[]; +extern AMX_NATIVE_INFO vault_Natives[]; + + +#ifndef __linux__ +#define DLLOAD(path) (DLHANDLE)LoadLibrary(path); +#define DLPROC(m,func) GetProcAddress(m,func); +#define DLFREE(m) FreeLibrary(m); +#else +#define DLLOAD(path) (DLHANDLE)dlopen(path, RTLD_NOW); +#define DLPROC(m,func) dlsym(m,func); +#define DLFREE(m) dlclose(m); +#endif + +#ifndef __linux__ +typedef HINSTANCE DLHANDLE; +#else +typedef void* DLHANDLE; +#endif + +#ifndef GETPLAYERAUTHID +#define GETPLAYERAUTHID (*g_engfuncs.pfnGetPlayerAuthId) +#endif +#define ANGLEVECTORS (*g_engfuncs.pfnAngleVectors) +#define CLIENT_PRINT (*g_engfuncs.pfnClientPrintf) +#define CVAR_DIRECTSET (*g_engfuncs.pfnCvar_DirectSet) +#define GETCLIENTLISTENING (*g_engfuncs.pfnVoice_GetClientListening) +#define RUNPLAYERMOVE (*g_engfuncs.pfnRunPlayerMove) +#define SETCLIENTLISTENING (*g_engfuncs.pfnVoice_SetClientListening) +#define SETCLIENTMAXSPEED (*g_engfuncs.pfnSetClientMaxspeed) + +char* UTIL_SplitHudMessage(register const char *src); +int UTIL_ReadFlags(const char* c); +void UTIL_ClientPrint( edict_t *pEntity, int msg_dest, char *msg ); +void UTIL_FakeClientCommand(edict_t *pEdict, const char *cmd, const char *arg1 = NULL, const char *arg2 = NULL); +void UTIL_GetFlags(char* flags,int flag); +void UTIL_HudMessage(edict_t *pEntity, const hudtextparms_t &textparms, char *pMessage); +void UTIL_IntToString(int value, char *output); +void UTIL_ShowMOTD( edict_t *client , char *motd, int mlen, const char *name); +void UTIL_ShowMenu( edict_t* pEntity, int slots, int time, char *menu, int mlen ); +void UTIL_MakeNewLogFile(); +void UTIL_Log(const char *fmt, ...); + +#define GET_PLAYER_POINTER(e) (&g_players[ENTINDEX(e)]) +//#define GET_PLAYER_POINTER(e) (&g_players[(((int)e-g_edict_point)/sizeof(edict_t ))]) +#define GET_PLAYER_POINTER_I(i) (&g_players[i]) + +struct WeaponsVault { + String fullName; + short int iId; + short int ammoSlot; +}; + +struct fakecmd_t { + char args[256]; + const char *argv[3]; + //char argv[3][128]; + int argc; + bool fake; +}; + + +extern CPluginMngr g_plugins; +extern CTaskMngr g_tasksMngr; +extern CPlayer g_players[33]; +extern CPlayer* mPlayer; +extern CmdMngr g_commands; +extern CList g_cvars; +extern CList g_forcemodels; +extern CList g_forcesounds; +extern CList g_forcegeneric; +extern CList g_modules; +extern CList g_auth; +extern EventsMngr g_events; +extern Grenades g_grenades; +extern LogEventsMngr g_logevents; +extern MenuMngr g_menucmds; +extern String g_log_dir; +extern String g_mod_name; +extern TeamIds g_teamsIds; +extern Vault g_vault; +extern CForwardMngr g_forwards; +extern WeaponsVault g_weaponsData[MAX_WEAPONS]; +extern XVars g_xvars; +extern bool g_bmod_cstrike; +extern bool g_bmod_dod; +extern bool g_dontprecache; +extern bool g_initialized; +extern int g_srvindex; +extern cvar_t* amx_version; +extern cvar_t* amxmodx_version; +extern cvar_t* hostname; +extern cvar_t* mp_timelimit; +extern fakecmd_t g_fakecmd; +extern float g_game_restarting; +extern float g_game_timeleft; +extern float g_task_time; +extern float g_auth_time; +extern hudtextparms_t g_hudset; +//extern int g_edict_point; +extern int g_players_num; +extern int mPlayerIndex; +extern int mState; +extern void (*endfunction)(void*); +extern void (*function)(void*); + +typedef void (*funEventCall)(void*); +extern funEventCall modMsgsEnd[MAX_REG_MSGS]; +extern funEventCall modMsgs[MAX_REG_MSGS]; + +extern int gmsgAmmoPickup; +extern int gmsgAmmoX; +extern int gmsgBattery; +extern int gmsgCurWeapon; +extern int gmsgDamage; +extern int gmsgDeathMsg; +extern int gmsgHealth; +extern int gmsgMOTD; +extern int gmsgScoreInfo; +extern int gmsgSendAudio; +extern int gmsgServerName; +extern int gmsgShowMenu; +extern int gmsgTeamInfo; +extern int gmsgTextMsg; +extern int gmsgVGUIMenu; +extern int gmsgWeapPickup; +extern int gmsgWeaponList; +extern int gmsgintermission; +extern int gmsgResetHUD; +extern int gmsgRoundTime; + +void Client_AmmoPickup(void*); +void Client_AmmoX(void*); +void Client_CurWeapon(void*); +void Client_ScoreInfo(void*); +void Client_ShowMenu(void*); +void Client_TeamInfo(void*); +void Client_TextMsg(void*); +void Client_VGUIMenu(void*); +void Client_WeaponList(void*); +void Client_DamageEnd(void*); +void Client_DeathMsg(void*); + +void amx_command(); +void plugin_srvcmd(); + +const char* stristr(const char* a,const char* b); +char *strptime(const char *buf, const char *fmt, struct tm *tm, short addthem); + +int loadModules(const char* filename); +void dettachModules(); +void dettachReloadModules(); +void attachModules(); +void attachMetaModModules( const char* filename ); +void dettachMetaModModules( const char* filename ); + +int add_amxnatives(module_info_s* info,AMX_NATIVE_INFO*natives); +cell* get_amxaddr(AMX *amx,cell amx_addr); +char* build_pathname(char *fmt, ... ); +char* format_amxstring(AMX *amx, cell *params, int parm,int& len); +AMX* get_amxscript(int, void**,const char**); +const char* get_amxscriptname(AMX* amx); +char* get_amxstring(AMX *amx,cell amx_addr,int id,int& len); +int amxstring_len(cell* cstr); +int load_amxscript(AMX* amx, void** program, const char* path, char error[64]); +int set_amxnatives(AMX* amx,char error[64]); +int set_amxstring(AMX *amx,cell amx_addr,const char *source,int max); +int unload_amxscript(AMX* amx,void** program); +void copy_amxmemory(cell* dest,cell* src,int len); +void get_modname(char*); +void print_srvconsole( char *fmt, ... ); +void report_error( int code, char* fmt, ... ); +void* alloc_amxmemory(void**, int size); +void free_amxmemory(void **ptr); + + +#endif // AMXMODX_H + diff --git a/amxmodx/amxx_mm.def b/amxmodx/amxx_mm.def new file mode 100755 index 00000000..d9f23593 --- /dev/null +++ b/amxmodx/amxx_mm.def @@ -0,0 +1,11 @@ +; /usr/local/cross-tools/bin/i386-mingw32msvc-dlltool --base-file /tmp/cc4kB6s0.base --output-exp amx_mm.exp --dllname amx_mm.dll --output-def amx_mm.def --add-stdcall-alias --exclude-symbol=DllMainCRTStartup@12 --def /tmp/ccyI7I7K.def +EXPORTS + GetEngineFunctions @ 1 ; + GetEngineFunctions_Post @ 2 ; + GetEntityAPI2 @ 3 ; + GetEntityAPI2_Post @ 4 ; + GiveFnptrsToDll = GiveFnptrsToDll@8 @ 5 ; + GiveFnptrsToDll@8 @ 6 ; + Meta_Attach @ 7 ; + Meta_Detach @ 8 ; + Meta_Query @ 9 ; diff --git a/amxmodx/emsg.cpp b/amxmodx/emsg.cpp index 8199caed..28459bc4 100755 --- a/amxmodx/emsg.cpp +++ b/amxmodx/emsg.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" int gmsgAmmoPickup; int gmsgAmmoX; diff --git a/amxmodx/file.cpp b/amxmodx/file.cpp index 85be098f..939f57a7 100755 --- a/amxmodx/file.cpp +++ b/amxmodx/file.cpp @@ -37,7 +37,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" // header file for unlink() #ifdef __linux__ diff --git a/amxmodx/meta_api.cpp b/amxmodx/meta_api.cpp index d055c7e1..ffa2cd8b 100755 --- a/amxmodx/meta_api.cpp +++ b/amxmodx/meta_api.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" plugin_info_t Plugin_info = { META_INTERFACE_VERSION, // ifvers diff --git a/amxmodx/modules.cpp b/amxmodx/modules.cpp index 44c76856..ab7170e2 100755 --- a/amxmodx/modules.cpp +++ b/amxmodx/modules.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" #include "osdep.h" // sleep, etc #include "CFile.h" diff --git a/amxmodx/msvc/amxmodx_mm.def b/amxmodx/msvc/amxmodx_mm.def new file mode 100755 index 00000000..05c55dc7 --- /dev/null +++ b/amxmodx/msvc/amxmodx_mm.def @@ -0,0 +1,6 @@ +LIBRARY amxx_mm +EXPORTS + GiveFnptrsToDll @1 + +SECTIONS + .data READ WRITE diff --git a/amxmodx/msvc/amxmodx_mm.dsp b/amxmodx/msvc/amxmodx_mm.dsp new file mode 100755 index 00000000..fe489193 --- /dev/null +++ b/amxmodx/msvc/amxmodx_mm.dsp @@ -0,0 +1,288 @@ +# Microsoft Developer Studio Project File - Name="amxmodx_mm" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=amxmodx_mm - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "amxmodx_mm.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "amxmodx_mm.mak" CFG="amxmodx_mm - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "amxmodx_mm - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "amxmodx_mm - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "amxmodx_mm - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "release" +# PROP Intermediate_Dir "release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "amxmodx_mm_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\metamod\metamod" /I "..\..\hlsdk\sourcecode\common" /I "..\..\hlsdk\sourcecode\engine" /I "..\..\hlsdk\sourcecode\dlls" /I "..\..\hlsdk\sourcecode\pm_shared" /I "..\extra\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "amxmodx_mm_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /def:".\amxmodx_mm.def" /out:"release/amxxmm.dll" /libpath:"..\extra\lib_win32" +# Begin Custom Build +TargetPath=.\release\amxxmm.dll +TargetName=amxxmm +InputPath=.\release\amxxmm.dll +SOURCE="$(InputPath)" + +"$(TargetName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(TargetPath) D:\SIERRA\Half-Life\cstrike\addons\amx\dlls + +# End Custom Build + +!ELSEIF "$(CFG)" == "amxmodx_mm - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "debug" +# PROP Intermediate_Dir "debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "amxmodx_mm_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /Zp4 /MTd /W3 /Gm /GX /ZI /Od /I "..\..\metamod\metamod" /I "..\...\hlsdk\sourcecode\common" /I "..\...\hlsdk\sourcecode\engine" /I "..\...\hlsdk\sourcecode\dlls" /I "..\...\hlsdk\sourcecode\pm_shared" /I "..\extra\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "amxmodx_mm_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /def:".\amxmodx_mm.def" /out:"debug/amxxmm.dll" /pdbtype:sept /libpath:"..\extra\lib_win32" +# SUBTRACT LINK32 /incremental:no /nodefaultlib +# Begin Custom Build +TargetPath=.\debug\amxxmm.dll +TargetName=amxxmm +InputPath=.\debug\amxxmm.dll +SOURCE="$(InputPath)" + +"$(TargetName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(TargetPath) D:\SIERRA\Half-Life\cstrike\addons\amx\dlls + +# End Custom Build + +!ENDIF + +# Begin Target + +# Name "amxmodx_mm - Win32 Release" +# Name "amxmodx_mm - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\amx.c +# End Source File +# Begin Source File + +SOURCE=..\amxcore.c +# End Source File +# Begin Source File + +SOURCE=..\amxmodx.cpp +# End Source File +# Begin Source File + +SOURCE=..\amxtime.c +# End Source File +# Begin Source File + +SOURCE=..\CCmd.cpp +# End Source File +# Begin Source File + +SOURCE=..\CEvent.cpp +# End Source File +# Begin Source File + +SOURCE=..\CFile.cpp +# End Source File +# Begin Source File + +SOURCE=..\CForward.cpp +# End Source File +# Begin Source File + +SOURCE=..\CLogEvent.cpp +# End Source File +# Begin Source File + +SOURCE=..\CMenu.cpp +# End Source File +# Begin Source File + +SOURCE=..\CMisc.cpp +# End Source File +# Begin Source File + +SOURCE=..\CModule.cpp +# End Source File +# Begin Source File + +SOURCE=..\CPlugin.cpp +# End Source File +# Begin Source File + +SOURCE=..\CString.cpp +# End Source File +# Begin Source File + +SOURCE=..\CTask.cpp +# End Source File +# Begin Source File + +SOURCE=..\CVault.cpp +# End Source File +# Begin Source File + +SOURCE=..\emsg.cpp +# End Source File +# Begin Source File + +SOURCE=..\file.cpp +# End Source File +# Begin Source File + +SOURCE=..\float.cpp +# End Source File +# Begin Source File + +SOURCE=..\meta_api.cpp +# End Source File +# Begin Source File + +SOURCE=..\modules.cpp +# End Source File +# Begin Source File + +SOURCE=..\power.c +# End Source File +# Begin Source File + +SOURCE=..\srvcmd.cpp +# End Source File +# Begin Source File + +SOURCE=..\string.cpp +# End Source File +# Begin Source File + +SOURCE=..\strptime.cpp +# End Source File +# Begin Source File + +SOURCE=..\util.cpp +# End Source File +# Begin Source File + +SOURCE=..\vault.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\amxmodx.h +# End Source File +# Begin Source File + +SOURCE=..\CCmd.h +# End Source File +# Begin Source File + +SOURCE=..\CEvent.h +# End Source File +# Begin Source File + +SOURCE=..\CFile.h +# End Source File +# Begin Source File + +SOURCE=..\CForward.h +# End Source File +# Begin Source File + +SOURCE=..\CList.h +# End Source File +# Begin Source File + +SOURCE=..\CLogEvent.h +# End Source File +# Begin Source File + +SOURCE=..\CMenu.h +# End Source File +# Begin Source File + +SOURCE=..\CMisc.h +# End Source File +# Begin Source File + +SOURCE=..\CModule.h +# End Source File +# Begin Source File + +SOURCE=..\CPlugin.h +# End Source File +# Begin Source File + +SOURCE=..\CString.h +# End Source File +# Begin Source File + +SOURCE=..\CTask.h +# End Source File +# Begin Source File + +SOURCE=..\CVault.h +# End Source File +# Begin Source File + +SOURCE=..\modules.h +# End Source File +# End Group +# End Target +# End Project diff --git a/amxmodx/msvc/amxmodx_mm.dsw b/amxmodx/msvc/amxmodx_mm.dsw new file mode 100755 index 00000000..a6072c5d --- /dev/null +++ b/amxmodx/msvc/amxmodx_mm.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "amxmodx_mm"=.\amxmodx_mm.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/amxmodx/msvc/amxmodx_mm.sln b/amxmodx/msvc/amxmodx_mm.sln new file mode 100755 index 00000000..c0f28279 --- /dev/null +++ b/amxmodx/msvc/amxmodx_mm.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "amxmodx_mm", "amxmodx_mm.vcproj", "{2FDEE868-4051-4918-81E9-5CBA63F3E785}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {2FDEE868-4051-4918-81E9-5CBA63F3E785}.Debug.ActiveCfg = Debug|Win32 + {2FDEE868-4051-4918-81E9-5CBA63F3E785}.Debug.Build.0 = Debug|Win32 + {2FDEE868-4051-4918-81E9-5CBA63F3E785}.Release.ActiveCfg = Release|Win32 + {2FDEE868-4051-4918-81E9-5CBA63F3E785}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/amxmodx/msvc/amxmod_mm.vcproj b/amxmodx/msvc/amxmodx_mm.vcproj similarity index 88% rename from amxmodx/msvc/amxmod_mm.vcproj rename to amxmodx/msvc/amxmodx_mm.vcproj index 28554556..34a64992 100755 --- a/amxmodx/msvc/amxmod_mm.vcproj +++ b/amxmodx/msvc/amxmodx_mm.vcproj @@ -2,7 +2,7 @@ @@ -23,12 +23,12 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\metamod\metamod,..\..\hlsdk\sourcecode\common,..\..\hlsdk\sourcecode\engine,..\..\hlsdk\sourcecode\dlls,..\..\hlsdk\sourcecode\pm_shared,..\extra\include" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;amxmod_mm_EXPORTS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;amxmodx_mm_EXPORTS" StringPooling="TRUE" RuntimeLibrary="0" EnableFunctionLevelLinking="TRUE" UsePrecompiledHeader="2" - PrecompiledHeaderFile=".\release/amxmod_mm.pch" + PrecompiledHeaderFile=".\release/amxmodx_mm.pch" AssemblerListingLocation=".\release/" ObjectFile=".\release/" ProgramDataBaseFileName=".\release/" @@ -42,13 +42,13 @@ Outputs="$(TargetName)"/> @@ -91,12 +91,12 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\metamod\metamod,..\...\hlsdk\sourcecode\common,..\...\hlsdk\sourcecode\engine,..\...\hlsdk\sourcecode\dlls,..\...\hlsdk\sourcecode\pm_shared,..\extra\include" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;amxmod_mm_EXPORTS" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;amxmodx_mm_EXPORTS" BasicRuntimeChecks="3" RuntimeLibrary="1" StructMemberAlignment="3" UsePrecompiledHeader="2" - PrecompiledHeaderFile=".\debug/amxmod_mm.pch" + PrecompiledHeaderFile=".\debug/amxmodx_mm.pch" AssemblerListingLocation=".\debug/" ObjectFile=".\debug/" ProgramDataBaseFileName=".\debug/" @@ -111,14 +111,14 @@ Outputs="$(TargetName)"/> @@ -164,7 +164,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -172,7 +172,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -184,7 +184,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -192,19 +192,19 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> + RelativePath="..\amxmodx.cpp"> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -212,7 +212,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -224,7 +224,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -232,7 +232,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -244,7 +244,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -252,7 +252,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -264,7 +264,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -272,7 +272,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -284,7 +284,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -292,7 +292,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -304,7 +304,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -312,7 +312,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -324,7 +324,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -332,7 +332,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -344,7 +344,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -352,7 +352,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -364,7 +364,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -372,7 +372,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -384,7 +384,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -392,7 +392,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -404,7 +404,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -412,7 +412,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -424,7 +424,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -432,7 +432,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -444,7 +444,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -452,7 +452,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -464,7 +464,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -472,7 +472,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -484,7 +484,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -492,7 +492,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -504,7 +504,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -512,7 +512,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -524,7 +524,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -532,7 +532,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -544,7 +544,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -552,7 +552,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -564,7 +564,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -572,7 +572,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -584,7 +584,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -592,7 +592,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -604,7 +604,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -612,7 +612,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -624,7 +624,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -632,7 +632,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -644,7 +644,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -652,7 +652,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -664,7 +664,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -672,7 +672,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -684,7 +684,7 @@ Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)"/> + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)"/> @@ -692,7 +692,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmod_mm_EXPORTS;$(NoInherit)" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;amxmodx_mm_EXPORTS;$(NoInherit)" BasicRuntimeChecks="3"/> @@ -701,7 +701,7 @@ Name="Header Files" Filter="h;hpp;hxx;hm;inl"> + RelativePath="..\amxmodx.h"> diff --git a/amxmodx/srvcmd.cpp b/amxmodx/srvcmd.cpp index b9a0d127..1b9a1d18 100755 --- a/amxmodx/srvcmd.cpp +++ b/amxmodx/srvcmd.cpp @@ -31,7 +31,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" void amx_command(){ diff --git a/amxmodx/string.cpp b/amxmodx/string.cpp index 6f31d8fb..73c28c23 100755 --- a/amxmodx/string.cpp +++ b/amxmodx/string.cpp @@ -32,7 +32,7 @@ #include #include #include -#include "amxmod.h" +#include "amxmodx.h" const char* stristr(const char* str,const char* substr) { diff --git a/amxmodx/util.cpp b/amxmodx/util.cpp index ebebef7a..4dc1701f 100755 --- a/amxmodx/util.cpp +++ b/amxmodx/util.cpp @@ -33,7 +33,7 @@ #include #include -#include "amxmod.h" +#include "amxmodx.h" int UTIL_ReadFlags(const char* c) { diff --git a/amxmodx/vault.cpp b/amxmodx/vault.cpp index b20abe17..a592f3ea 100755 --- a/amxmodx/vault.cpp +++ b/amxmodx/vault.cpp @@ -32,7 +32,7 @@ #include #include #include "CVault.h" -#include "amxmod.h" +#include "amxmodx.h" Vault g_vault;