From 38e2e3e393354d6424f36e6c9dcbce4c2aa6139b Mon Sep 17 00:00:00 2001 From: Arkshine Date: Thu, 29 May 2014 01:19:52 +0200 Subject: [PATCH] Cstrike: Move utility stuff in its own file. --- dlls/cstrike/cstrike/AMBuilder | 1 + dlls/cstrike/cstrike/CstrikeNatives.cpp | 32 +------ dlls/cstrike/cstrike/CstrikeNatives.h | 93 ------------------- dlls/cstrike/cstrike/CstrikeUtils.cpp | 62 +++++++++++++ dlls/cstrike/cstrike/CstrikeUtils.h | 87 +++++++++++++++++ dlls/cstrike/cstrike/Makefile | 5 +- dlls/cstrike/cstrike/msvc10/cstrike.vcxproj | 8 +- .../cstrike/msvc10/cstrike.vcxproj.filters | 20 ++-- 8 files changed, 169 insertions(+), 139 deletions(-) delete mode 100644 dlls/cstrike/cstrike/CstrikeNatives.h create mode 100644 dlls/cstrike/cstrike/CstrikeUtils.cpp create mode 100644 dlls/cstrike/cstrike/CstrikeUtils.h diff --git a/dlls/cstrike/cstrike/AMBuilder b/dlls/cstrike/cstrike/AMBuilder index 5efeb1d0..fc243e71 100644 --- a/dlls/cstrike/cstrike/AMBuilder +++ b/dlls/cstrike/cstrike/AMBuilder @@ -9,6 +9,7 @@ binary.sources = [ 'CstrikePlayer.cpp', 'CstrikeNatives.cpp', 'CstrikeHacks.cpp', + 'CstrikeUtils.cpp', '../../../public/memtools/MemoryUtils.cpp', '../../../public/memtools/CDetour/detours.cpp', '../../../public/memtools/CDetour/asm/asm.c', diff --git a/dlls/cstrike/cstrike/CstrikeNatives.cpp b/dlls/cstrike/cstrike/CstrikeNatives.cpp index ed581af2..980f2cc1 100644 --- a/dlls/cstrike/cstrike/CstrikeNatives.cpp +++ b/dlls/cstrike/cstrike/CstrikeNatives.cpp @@ -30,43 +30,15 @@ * you do not wish to do so, delete this exception statement from your * version. */ -#include "CstrikeNatives.h" #include "CstrikeDatas.h" +#include "CstrikePlayer.h" +#include "CstrikeUtils.h" CCstrikePlayer g_players[33]; int g_zooming[33] = {0}; bool g_precachedknife = false; bool g_noknives = false; -// Utils first - -bool UTIL_IsPlayer(AMX* amx, edict_t* pPlayer) { - bool player = false; - - if (strcmp(STRING(pPlayer->v.classname), "player") == 0) - player = true; - - return player; -} - -void UTIL_TextMsg_Generic(edict_t* pPlayer, const char* message) -{ - MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "TextMsg", NULL), NULL, pPlayer); - WRITE_BYTE(HUD_PRINTCENTER); // 1 = console, 2 = console, 3 = chat, 4 = center - WRITE_STRING(message); - MESSAGE_END(); - /* - The byte above seems to use these: - #define HUD_PRINTNOTIFY 1 - #define HUD_PRINTCONSOLE 2 - #define HUD_PRINTTALK 3 - #define HUD_PRINTCENTER 4 - However both 1 and 2 seems to go to console with Steam CS. - */ -} - -// Then natives - static cell AMX_NATIVE_CALL cs_set_user_money(AMX *amx, cell *params) // cs_set_user_money(index, money, flash = 1); = 3 arguments { // Give money to user diff --git a/dlls/cstrike/cstrike/CstrikeNatives.h b/dlls/cstrike/cstrike/CstrikeNatives.h deleted file mode 100644 index 1d39bc41..00000000 --- a/dlls/cstrike/cstrike/CstrikeNatives.h +++ /dev/null @@ -1,93 +0,0 @@ -/* AMX Mod X - * Counter-Strike Module - * - * by the AMX Mod X Development Team - * - * This file is part of AMX Mod X. - * - * - * 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. - */ - -// cstrike MODULE TO DO HERE: http://www.amxmodx.org/forums/viewtopic.php?t=45 -// This implementation uses Vexd's way (lightly modified) of setting models on players. - -#include "amxxmodule.h" -#include "CstrikePlayer.h" - -#define GETINFOKEYBUFFER (*g_engfuncs.pfnGetInfoKeyBuffer) -#define SETCLIENTKEYVALUE (*g_engfuncs.pfnSetClientKeyValue) -#define GETCLIENTKEYVALUE (*g_engfuncs.pfnInfoKeyValue) -#define CREATENAMEDENTITY (*g_engfuncs.pfnCreateNamedEntity) - -extern CCstrikePlayer g_players[33]; -extern int g_zooming[33]; -extern bool g_precachedknife; -extern bool g_noknives; -// Globals above - -#define CHECK_ENTITY(x) \ - if (x < 0 || x > gpGlobals->maxEntities) { \ - MF_LogError(amx, AMX_ERR_NATIVE, "Entity out of range (%d)", x); \ - return 0; \ - } else { \ - if (x <= gpGlobals->maxClients) { \ - if (!MF_IsPlayerIngame(x)) { \ - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid player %d (not in-game)", x); \ - return 0; \ - } \ - } else { \ - if (x != 0 && FNullEnt(INDEXENT(x))) { \ - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid entity %d", x); \ - return 0; \ - } \ - } \ - } - -#define CHECK_PLAYER(x) \ - if (x < 1 || x > gpGlobals->maxClients) { \ - MF_LogError(amx, AMX_ERR_NATIVE, "Player out of range (%d)", x); \ - return 0; \ - } else { \ - if (!MF_IsPlayerIngame(x) || FNullEnt(MF_GetPlayerEdict(x))) { \ - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid player %d", x); \ - return 0; \ - } \ - } - -#define CHECK_NONPLAYER(x) \ - if (x < 1 || x <= gpGlobals->maxClients || x > gpGlobals->maxEntities) { \ - MF_LogError(amx, AMX_ERR_NATIVE, "Non-player entity %d out of range", x); \ - return 0; \ - } else { \ - if (FNullEnt(INDEXENT(x))) { \ - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid non-player entity %d", x); \ - return 0; \ - } \ - } - -#define GETEDICT(n) \ - ((n >= 1 && n <= gpGlobals->maxClients) ? MF_GetPlayerEdict(n) : INDEXENT(n)) - diff --git a/dlls/cstrike/cstrike/CstrikeUtils.cpp b/dlls/cstrike/cstrike/CstrikeUtils.cpp new file mode 100644 index 00000000..3f8de77f --- /dev/null +++ b/dlls/cstrike/cstrike/CstrikeUtils.cpp @@ -0,0 +1,62 @@ +/* AMX Mod X +* Counter-Strike Module +* +* by the AMX Mod X Development Team +* +* This file is part of AMX Mod X. +* +* +* 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 "amxxmodule.h" + +bool UTIL_IsPlayer(AMX* amx, edict_t* pPlayer) +{ + bool player = false; + + if (strcmp(STRING(pPlayer->v.classname), "player") == 0) + { + player = true; + } + + return player; +} + +void UTIL_TextMsg_Generic(edict_t* pPlayer, const char* message) +{ + MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "TextMsg", NULL), NULL, pPlayer); + WRITE_BYTE(HUD_PRINTCENTER); // 1 = console, 2 = console, 3 = chat, 4 = center, 5 = radio + WRITE_STRING(message); + MESSAGE_END(); + /* + The byte above seems to use these: + #define HUD_PRINTNOTIFY 1 + #define HUD_PRINTCONSOLE 2 + #define HUD_PRINTTALK 3 + #define HUD_PRINTCENTER 4 + #define HUD_PRINTRADIO 5 + However both 1 and 2 seems to go to console with Steam CS. + */ +} \ No newline at end of file diff --git a/dlls/cstrike/cstrike/CstrikeUtils.h b/dlls/cstrike/cstrike/CstrikeUtils.h new file mode 100644 index 00000000..0cdd0f95 --- /dev/null +++ b/dlls/cstrike/cstrike/CstrikeUtils.h @@ -0,0 +1,87 @@ +/* AMX Mod X +* Counter-Strike Module +* +* by the AMX Mod X Development Team +* +* This file is part of AMX Mod X. +* +* +* 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 CSTRIKE_UTILS_H +#define CSTRIKE_UTILS_H + +bool UTIL_IsPlayer(AMX* amx, edict_t* pPlayer); +void UTIL_TextMsg_Generic(edict_t* pPlayer, const char* message); + +#define GETINFOKEYBUFFER (*g_engfuncs.pfnGetInfoKeyBuffer) +#define SETCLIENTKEYVALUE (*g_engfuncs.pfnSetClientKeyValue) +#define GETCLIENTKEYVALUE (*g_engfuncs.pfnInfoKeyValue) +#define CREATENAMEDENTITY (*g_engfuncs.pfnCreateNamedEntity) + +#define CHECK_ENTITY(x) \ + if (x < 0 || x > gpGlobals->maxEntities) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Entity out of range (%d)", x); \ + return 0; \ + } else { \ + if (x <= gpGlobals->maxClients) { \ + if (!MF_IsPlayerIngame(x)) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Invalid player %d (not in-game)", x); \ + return 0; \ + } \ + } else { \ + if (x != 0 && FNullEnt(INDEXENT(x))) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Invalid entity %d", x); \ + return 0; \ + } \ + } \ + } + +#define CHECK_PLAYER(x) \ + if (x < 1 || x > gpGlobals->maxClients) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Player out of range (%d)", x); \ + return 0; \ + } else { \ + if (!MF_IsPlayerIngame(x) || FNullEnt(MF_GetPlayerEdict(x))) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Invalid player %d", x); \ + return 0; \ + } \ + } + +#define CHECK_NONPLAYER(x) \ + if (x < 1 || x <= gpGlobals->maxClients || x > gpGlobals->maxEntities) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Non-player entity %d out of range", x); \ + return 0; \ + } else { \ + if (FNullEnt(INDEXENT(x))) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Invalid non-player entity %d", x); \ + return 0; \ + } \ + } + +#define GETEDICT(n) \ + ((n >= 1 && n <= gpGlobals->maxClients) ? MF_GetPlayerEdict(n) : INDEXENT(n)) + +#endif // CSTRIKE_UTILS_H \ No newline at end of file diff --git a/dlls/cstrike/cstrike/Makefile b/dlls/cstrike/cstrike/Makefile index dae7b5ac..4e0e9403 100755 --- a/dlls/cstrike/cstrike/Makefile +++ b/dlls/cstrike/cstrike/Makefile @@ -14,8 +14,9 @@ MM_ROOT = ../../../../metamod/metamod PROJECT = cstrike -OBJECTS = sdk/amxxmodule.cpp amxx_api.cpp CstrikePlayer.cpp CstrikeNatives.cpp CstrikeHacks.cpp \ - ../../../public/memtools/MemoryUtils.cpp ../../../public/memtools/CDetour/detours.cpp \ +OBJECTS = sdk/amxxmodule.cpp amxx_api.cpp CstrikePlayer.cpp CstrikeNatives.cpp CstrikeHacks.cpp CstrikeUtils.cpp \ + ../../../public/memtools/MemoryUtils.cpp \ + ../../../public/memtools/CDetour/detours.cpp \ ../../../public/memtools/CDetour/asm/asm.c ############################################## diff --git a/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj b/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj index 355ccb75..c19e1bda 100644 --- a/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj +++ b/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj @@ -139,9 +139,10 @@ - + + @@ -150,14 +151,13 @@ - - + - + diff --git a/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj.filters b/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj.filters index c73b5ac0..cdf8c9fa 100644 --- a/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj.filters +++ b/dlls/cstrike/cstrike/msvc10/cstrike.vcxproj.filters @@ -41,9 +41,6 @@ Source Files - - Source Files - Memtools @@ -53,23 +50,23 @@ Memtools\CDetour\asm + + Source Files + + + Source Files + Header Files - - Header Files - Module SDK Module SDK\SDK Base - - Header Files - Header Files @@ -85,9 +82,12 @@ Memtools\CDetour\asm + + Header Files + - + Pawn Includes