extensions/cstrike/util_cstrike.cpp
author Nicholas Hastings <skamonkey@gmail.com>
Wed Jun 20 21:00:53 2012 -0400 (2012-06-20)
changeset 3559 7f5d1597be76
parent 3519 a116c415c73e
child 3634 71cab87fc1b4
permissions -rw-r--r--
Updated Nuclear Dawn gamedata.
rgr_02@3519
     1
/**
rgr_02@3519
     2
 * vim: set ts=4 :
rgr_02@3519
     3
 * =============================================================================
rgr_02@3519
     4
 * SourceMod Counter-Strike:Source Extension
rgr_02@3519
     5
 * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
rgr_02@3519
     6
 * =============================================================================
rgr_02@3519
     7
 *
rgr_02@3519
     8
 * This program is free software; you can redistribute it and/or modify it under
rgr_02@3519
     9
 * the terms of the GNU General Public License, version 3.0, as published by the
rgr_02@3519
    10
 * Free Software Foundation.
rgr_02@3519
    11
 * 
rgr_02@3519
    12
 * This program is distributed in the hope that it will be useful, but WITHOUT
rgr_02@3519
    13
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
rgr_02@3519
    14
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
rgr_02@3519
    15
 * details.
rgr_02@3519
    16
 *
rgr_02@3519
    17
 * You should have received a copy of the GNU General Public License along with
rgr_02@3519
    18
 * this program.  If not, see <http://www.gnu.org/licenses/>.
rgr_02@3519
    19
 *
rgr_02@3519
    20
 * As a special exception, AlliedModders LLC gives you permission to link the
rgr_02@3519
    21
 * code of this program (as well as its derivative works) to "Half-Life 2," the
rgr_02@3519
    22
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
rgr_02@3519
    23
 * by the Valve Corporation.  You must obey the GNU General Public License in
rgr_02@3519
    24
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
rgr_02@3519
    25
 * this exception to all derivative works.  AlliedModders LLC defines further
rgr_02@3519
    26
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
rgr_02@3519
    27
 * or <http://www.sourcemod.net/license.php>.
rgr_02@3519
    28
 *
rgr_02@3519
    29
 * Version: $Id$
rgr_02@3519
    30
 */
rgr_02@3519
    31
rgr_02@3519
    32
#include "util_cstrike.h"
rgr_02@3519
    33
rgr_02@3519
    34
#include "extension.h"
rgr_02@3519
    35
#include "RegNatives.h"
rgr_02@3519
    36
rgr_02@3519
    37
#define REGISTER_ADDR(name, defaultret, code) \
rgr_02@3519
    38
	void *addr; \
rgr_02@3519
    39
	if (!g_pGameConf->GetMemSig(name, &addr) || !addr) \
rgr_02@3519
    40
	{ \
rgr_02@3519
    41
		g_pSM->LogError(myself, "Failed to locate function."); \
rgr_02@3519
    42
		return defaultret; \
rgr_02@3519
    43
	} \
rgr_02@3519
    44
	code; \
rgr_02@3519
    45
	g_RegNatives.Register(pWrapper);
rgr_02@3519
    46
rgr_02@3519
    47
void *GetWeaponInfo(int weaponID)
rgr_02@3519
    48
{
rgr_02@3519
    49
	static ICallWrapper *pWrapper = NULL;
rgr_02@3519
    50
	if (!pWrapper)
rgr_02@3519
    51
	{
rgr_02@3519
    52
		REGISTER_ADDR("GetWeaponInfo", NULL,
rgr_02@3519
    53
			PassInfo pass[1]; \
rgr_02@3519
    54
			PassInfo retpass; \
rgr_02@3519
    55
			pass[0].flags = PASSFLAG_BYVAL; \
rgr_02@3519
    56
			pass[0].type = PassType_Basic; \
rgr_02@3519
    57
			pass[0].size = sizeof(int); \
rgr_02@3519
    58
			retpass.flags = PASSFLAG_BYVAL; \
rgr_02@3519
    59
			retpass.type = PassType_Basic; \
rgr_02@3519
    60
			retpass.size = sizeof(void *); \
rgr_02@3519
    61
			pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retpass, pass, 1))
rgr_02@3519
    62
	}
rgr_02@3519
    63
rgr_02@3519
    64
	void *info;
rgr_02@3519
    65
rgr_02@3519
    66
	unsigned char vstk[sizeof(int)];
rgr_02@3519
    67
	unsigned char *vptr = vstk;
rgr_02@3519
    68
rgr_02@3519
    69
	*(int *)vptr = weaponID;
rgr_02@3519
    70
rgr_02@3519
    71
	pWrapper->Execute(vstk, &info);
rgr_02@3519
    72
rgr_02@3519
    73
	return info;
rgr_02@3519
    74
}
rgr_02@3519
    75
rgr_02@3519
    76
const char *GetTranslatedWeaponAlias(const char *weapon)
rgr_02@3519
    77
{
rgr_02@3519
    78
	static ICallWrapper *pWrapper = NULL;
rgr_02@3519
    79
rgr_02@3519
    80
	if (!pWrapper)
rgr_02@3519
    81
	{
rgr_02@3519
    82
		REGISTER_ADDR("GetTranslatedWeaponAlias", weapon,
rgr_02@3519
    83
			PassInfo pass[1]; \
rgr_02@3519
    84
			PassInfo retpass; \
rgr_02@3519
    85
			pass[0].flags = PASSFLAG_BYVAL; \
rgr_02@3519
    86
			pass[0].type = PassType_Basic; \
rgr_02@3519
    87
			pass[0].size = sizeof(const char *); \
rgr_02@3519
    88
			retpass.flags = PASSFLAG_BYVAL; \
rgr_02@3519
    89
			retpass.type = PassType_Basic; \
rgr_02@3519
    90
			retpass.size = sizeof(const char *); \
rgr_02@3519
    91
			pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retpass, pass, 1))
rgr_02@3519
    92
	}
rgr_02@3519
    93
	const char *ret = new char[128];
rgr_02@3519
    94
rgr_02@3519
    95
	unsigned char vstk[sizeof(const char *)];
rgr_02@3519
    96
	unsigned char *vptr = vstk;
rgr_02@3519
    97
rgr_02@3519
    98
	*(const char **)vptr = weapon;
rgr_02@3519
    99
rgr_02@3519
   100
	pWrapper->Execute(vstk, &ret);
rgr_02@3519
   101
rgr_02@3519
   102
	return ret;
rgr_02@3519
   103
}
rgr_02@3519
   104
rgr_02@3519
   105
int AliasToWeaponID(const char *weapon)
rgr_02@3519
   106
{
rgr_02@3519
   107
	static ICallWrapper *pWrapper = NULL;
rgr_02@3519
   108
rgr_02@3519
   109
	if (!pWrapper)
rgr_02@3519
   110
	{
rgr_02@3519
   111
		REGISTER_ADDR("AliasToWeaponID", 0,
rgr_02@3519
   112
			PassInfo pass[1]; \
rgr_02@3519
   113
			PassInfo retpass; \
rgr_02@3519
   114
			pass[0].flags = PASSFLAG_BYVAL; \
rgr_02@3519
   115
			pass[0].type = PassType_Basic; \
rgr_02@3519
   116
			pass[0].size = sizeof(const char *); \
rgr_02@3519
   117
			retpass.flags = PASSFLAG_BYVAL; \
rgr_02@3519
   118
			retpass.type = PassType_Basic; \
rgr_02@3519
   119
			retpass.size = sizeof(int); \
rgr_02@3519
   120
			pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retpass, pass, 1))
rgr_02@3519
   121
	}
rgr_02@3519
   122
	int weaponID = 0;
rgr_02@3519
   123
rgr_02@3519
   124
	unsigned char vstk[sizeof(const char *)];
rgr_02@3519
   125
	unsigned char *vptr = vstk;
rgr_02@3519
   126
rgr_02@3519
   127
	*(const char **)vptr = weapon;
rgr_02@3519
   128
rgr_02@3519
   129
	pWrapper->Execute(vstk, &weaponID);
rgr_02@3519
   130
rgr_02@3519
   131
	return weaponID;
rgr_02@3519
   132
}
rgr_02@3519
   133
int GetRealWeaponID(int weaponId)
rgr_02@3519
   134
{
rgr_02@3519
   135
#if SOURCE_ENGINE == SE_CSGO
rgr_02@3519
   136
	switch((SMCSWeapon)weaponId)
rgr_02@3519
   137
	{
rgr_02@3519
   138
		case SMCSWeapon_NONE:
rgr_02@3519
   139
			return (int)CSGOWeapon_NONE;
rgr_02@3519
   140
		case SMCSWeapon_DEAGLE:
rgr_02@3519
   141
			return (int)CSGOWeapon_DEAGLE;
rgr_02@3519
   142
		case SMCSWeapon_ELITE:
rgr_02@3519
   143
			return (int)CSGOWeapon_ELITE;
rgr_02@3519
   144
		case SMCSWeapon_FIVESEVEN:
rgr_02@3519
   145
			return (int)CSGOWeapon_FIVESEVEN;
rgr_02@3519
   146
		case SMCSWeapon_GLOCK:
rgr_02@3519
   147
			return (int)CSGOWeapon_GLOCK;
rgr_02@3519
   148
		case SMCSWeapon_P228:
rgr_02@3519
   149
			return (int)CSGOWeapon_P228;
rgr_02@3519
   150
		case SMCSWeapon_USP:
rgr_02@3519
   151
			return (int)CSGOWeapon_USP;
rgr_02@3519
   152
		case SMCSWeapon_AK47:
rgr_02@3519
   153
			return (int)CSGOWeapon_AK47;
rgr_02@3519
   154
		case SMCSWeapon_AUG:
rgr_02@3519
   155
			return (int)CSGOWeapon_AUG;
rgr_02@3519
   156
		case SMCSWeapon_AWP:
rgr_02@3519
   157
			return (int)CSGOWeapon_AWP;
rgr_02@3519
   158
		case SMCSWeapon_FAMAS:
rgr_02@3519
   159
			return (int)CSGOWeapon_FAMAS;
rgr_02@3519
   160
		case SMCSWeapon_G3SG1:
rgr_02@3519
   161
			return (int)CSGOWeapon_G3SG1;
rgr_02@3519
   162
		case SMCSWeapon_GALIL:
rgr_02@3519
   163
			return (int)CSGOWeapon_GALIL;
rgr_02@3519
   164
		case SMCSWeapon_GALILAR:
rgr_02@3519
   165
			return (int)CSGOWeapon_GALILAR;
rgr_02@3519
   166
		case SMCSWeapon_M249:
rgr_02@3519
   167
			return (int)CSGOWeapon_M249;
rgr_02@3519
   168
		case SMCSWeapon_M3:
rgr_02@3519
   169
			return (int)CSGOWeapon_M3;
rgr_02@3519
   170
		case SMCSWeapon_M4A1:
rgr_02@3519
   171
			return (int)CSGOWeapon_M4A1;
rgr_02@3519
   172
		case SMCSWeapon_MAC10:
rgr_02@3519
   173
			return (int)CSGOWeapon_MAC10;
rgr_02@3519
   174
		case SMCSWeapon_MP5NAVY:
rgr_02@3519
   175
			return (int)CSGOWeapon_MP5NAVY;
rgr_02@3519
   176
		case SMCSWeapon_P90:
rgr_02@3519
   177
			return (int)CSGOWeapon_P90;
rgr_02@3519
   178
		case SMCSWeapon_SCOUT:
rgr_02@3519
   179
			return (int)CSGOWeapon_SCOUT;
rgr_02@3519
   180
		case SMCSWeapon_SG550:
rgr_02@3519
   181
			return (int)CSGOWeapon_SG550;
rgr_02@3519
   182
		case SMCSWeapon_SG552:
rgr_02@3519
   183
			return (int)CSGOWeapon_SG552;
rgr_02@3519
   184
		case SMCSWeapon_TMP:
rgr_02@3519
   185
			return (int)CSGOWeapon_TMP;
rgr_02@3519
   186
		case SMCSWeapon_UMP45:
rgr_02@3519
   187
			return (int)CSGOWeapon_UMP45;
rgr_02@3519
   188
		case SMCSWeapon_XM1014:
rgr_02@3519
   189
			return (int)CSGOWeapon_XM1014;
rgr_02@3519
   190
		case SMCSWeapon_BIZON:
rgr_02@3519
   191
			return (int)CSGOWeapon_BIZON;
rgr_02@3519
   192
		case SMCSWeapon_MAG7:
rgr_02@3519
   193
			return (int)CSGOWeapon_MAG7;
rgr_02@3519
   194
		case SMCSWeapon_NEGEV:
rgr_02@3519
   195
			return (int)CSGOWeapon_NEGEV;
rgr_02@3519
   196
		case SMCSWeapon_SAWEDOFF:
rgr_02@3519
   197
			return (int)CSGOWeapon_SAWEDOFF;
rgr_02@3519
   198
		case SMCSWeapon_TEC9:
rgr_02@3519
   199
			return (int)CSGOWeapon_TEC9;
rgr_02@3519
   200
		case SMCSWeapon_TASER:
rgr_02@3519
   201
			return (int)CSGOWeapon_TASER;
rgr_02@3519
   202
		case SMCSWeapon_HKP2000:
rgr_02@3519
   203
			return (int)CSGOWeapon_HKP2000;
rgr_02@3519
   204
		case SMCSWeapon_MP7:
rgr_02@3519
   205
			return (int)CSGOWeapon_MP7;
rgr_02@3519
   206
		case SMCSWeapon_MP9:
rgr_02@3519
   207
			return (int)CSGOWeapon_MP9;
rgr_02@3519
   208
		case SMCSWeapon_NOVA:
rgr_02@3519
   209
			return (int)CSGOWeapon_NOVA;
rgr_02@3519
   210
		case SMCSWeapon_P250:
rgr_02@3519
   211
			return (int)CSGOWeapon_P250;
rgr_02@3519
   212
		case SMCSWeapon_SCAR17:
rgr_02@3519
   213
			return (int)CSGOWeapon_SCAR17;
rgr_02@3519
   214
		case SMCSWeapon_SCAR20:
rgr_02@3519
   215
			return (int)CSGOWeapon_SCAR20;
rgr_02@3519
   216
		case SMCSWeapon_SG556:
rgr_02@3519
   217
			return (int)CSGOWeapon_SG556;
rgr_02@3519
   218
		case SMCSWeapon_SSG08:
rgr_02@3519
   219
			return (int)CSGOWeapon_SSG08;
rgr_02@3519
   220
		case SMCSWeapon_KNIFE_GG:
rgr_02@3519
   221
			return (int)CSGOWeapon_KNIFE_GG;
rgr_02@3519
   222
		case SMCSWeapon_KNIFE:
rgr_02@3519
   223
			return (int)CSGOWeapon_KNIFE;
rgr_02@3519
   224
		case SMCSWeapon_FLASHBANG:
rgr_02@3519
   225
			return (int)CSGOWeapon_FLASHBANG;
rgr_02@3519
   226
		case SMCSWeapon_HEGRENADE:
rgr_02@3519
   227
			return (int)CSGOWeapon_HEGRENADE;
rgr_02@3519
   228
		case SMCSWeapon_SMOKEGRENADE:
rgr_02@3519
   229
			return (int)CSGOWeapon_SMOKEGRENADE;
rgr_02@3519
   230
		case SMCSWeapon_MOLOTOV:
rgr_02@3519
   231
			return (int)CSGOWeapon_MOLOTOV;
rgr_02@3519
   232
		case SMCSWeapon_DECOY:
rgr_02@3519
   233
			return (int)CSGOWeapon_DECOY;
rgr_02@3519
   234
		case SMCSWeapon_INCGRENADE:
rgr_02@3519
   235
			return (int)CSGOWeapon_INCGRENADE;
rgr_02@3519
   236
		case SMCSWeapon_C4:
rgr_02@3519
   237
			return (int)CSGOWeapon_C4;
rgr_02@3519
   238
		case SMCSWeapon_KEVLAR:
rgr_02@3519
   239
			return (int)CSGOWeapon_KEVLAR;
rgr_02@3519
   240
		case SMCSWeapon_ASSAULTSUIT:
rgr_02@3519
   241
			return (int)CSGOWeapon_ASSAULTSUIT;
rgr_02@3519
   242
		case SMCSWeapon_NIGHTVISION:
rgr_02@3519
   243
			return (int)CSGOWeapon_NVG;
rgr_02@3519
   244
		case SMCSWeapon_DEFUSER:
rgr_02@3519
   245
			return (int)CSGOWeapon_DEFUSER;
rgr_02@3519
   246
		default:
rgr_02@3519
   247
			return 0;
rgr_02@3519
   248
	}
rgr_02@3519
   249
#else
rgr_02@3519
   250
	if (weaponId > 33 || weaponId < 0)
rgr_02@3519
   251
		return 0;
rgr_02@3519
   252
	else
rgr_02@3519
   253
		return weaponId;
rgr_02@3519
   254
#endif
rgr_02@3519
   255
}
rgr_02@3519
   256
rgr_02@3519
   257
int GetFakeWeaponID(int weaponId)
rgr_02@3519
   258
{
rgr_02@3519
   259
#if SOURCE_ENGINE == SE_CSGO
rgr_02@3519
   260
	switch((CSGOWeapon)weaponId)
rgr_02@3519
   261
	{
rgr_02@3519
   262
		case CSGOWeapon_NONE:
rgr_02@3519
   263
			return (int)SMCSWeapon_NONE;
rgr_02@3519
   264
		case CSGOWeapon_DEAGLE:
rgr_02@3519
   265
			return (int)SMCSWeapon_DEAGLE;
rgr_02@3519
   266
		case CSGOWeapon_ELITE:
rgr_02@3519
   267
			return (int)SMCSWeapon_ELITE;
rgr_02@3519
   268
		case CSGOWeapon_FIVESEVEN:
rgr_02@3519
   269
			return (int)SMCSWeapon_FIVESEVEN;
rgr_02@3519
   270
		case CSGOWeapon_GLOCK:
rgr_02@3519
   271
			return (int)SMCSWeapon_GLOCK;
rgr_02@3519
   272
		case CSGOWeapon_P228:
rgr_02@3519
   273
			return (int)SMCSWeapon_P228;
rgr_02@3519
   274
		case CSGOWeapon_USP:
rgr_02@3519
   275
			return (int)SMCSWeapon_USP;
rgr_02@3519
   276
		case CSGOWeapon_AK47:
rgr_02@3519
   277
			return (int)SMCSWeapon_AK47;
rgr_02@3519
   278
		case CSGOWeapon_AUG:
rgr_02@3519
   279
			return (int)SMCSWeapon_AUG;
rgr_02@3519
   280
		case CSGOWeapon_AWP:
rgr_02@3519
   281
			return (int)SMCSWeapon_AWP;
rgr_02@3519
   282
		case CSGOWeapon_FAMAS:
rgr_02@3519
   283
			return (int)SMCSWeapon_FAMAS;
rgr_02@3519
   284
		case CSGOWeapon_G3SG1:
rgr_02@3519
   285
			return (int)SMCSWeapon_G3SG1;
rgr_02@3519
   286
		case CSGOWeapon_GALIL:
rgr_02@3519
   287
			return (int)SMCSWeapon_GALIL;
rgr_02@3519
   288
		case CSGOWeapon_GALILAR:
rgr_02@3519
   289
			return (int)SMCSWeapon_GALILAR;
rgr_02@3519
   290
		case CSGOWeapon_M249:
rgr_02@3519
   291
			return (int)SMCSWeapon_M249;
rgr_02@3519
   292
		case CSGOWeapon_M3:
rgr_02@3519
   293
			return (int)SMCSWeapon_M3;
rgr_02@3519
   294
		case CSGOWeapon_M4A1:
rgr_02@3519
   295
			return (int)SMCSWeapon_M4A1;
rgr_02@3519
   296
		case CSGOWeapon_MAC10:
rgr_02@3519
   297
			return (int)SMCSWeapon_MAC10;
rgr_02@3519
   298
		case CSGOWeapon_MP5NAVY:
rgr_02@3519
   299
			return (int)SMCSWeapon_MP5NAVY;
rgr_02@3519
   300
		case CSGOWeapon_P90:
rgr_02@3519
   301
			return (int)SMCSWeapon_P90;
rgr_02@3519
   302
		case CSGOWeapon_SCOUT:
rgr_02@3519
   303
			return (int)SMCSWeapon_SCOUT;
rgr_02@3519
   304
		case CSGOWeapon_SG550:
rgr_02@3519
   305
			return (int)SMCSWeapon_SG550;
rgr_02@3519
   306
		case CSGOWeapon_SG552:
rgr_02@3519
   307
			return (int)SMCSWeapon_SG552;
rgr_02@3519
   308
		case CSGOWeapon_TMP:
rgr_02@3519
   309
			return (int)SMCSWeapon_TMP;
rgr_02@3519
   310
		case CSGOWeapon_UMP45:
rgr_02@3519
   311
			return (int)SMCSWeapon_UMP45;
rgr_02@3519
   312
		case CSGOWeapon_XM1014:
rgr_02@3519
   313
			return (int)SMCSWeapon_XM1014;
rgr_02@3519
   314
		case CSGOWeapon_BIZON:
rgr_02@3519
   315
			return (int)SMCSWeapon_BIZON;
rgr_02@3519
   316
		case CSGOWeapon_MAG7:
rgr_02@3519
   317
			return (int)SMCSWeapon_MAG7;
rgr_02@3519
   318
		case CSGOWeapon_NEGEV:
rgr_02@3519
   319
			return (int)SMCSWeapon_NEGEV;
rgr_02@3519
   320
		case CSGOWeapon_SAWEDOFF:
rgr_02@3519
   321
			return (int)SMCSWeapon_SAWEDOFF;
rgr_02@3519
   322
		case CSGOWeapon_TEC9:
rgr_02@3519
   323
			return (int)SMCSWeapon_TEC9;
rgr_02@3519
   324
		case CSGOWeapon_TASER:
rgr_02@3519
   325
			return (int)SMCSWeapon_TASER;
rgr_02@3519
   326
		case CSGOWeapon_HKP2000:
rgr_02@3519
   327
			return (int)SMCSWeapon_HKP2000;
rgr_02@3519
   328
		case CSGOWeapon_MP7:
rgr_02@3519
   329
			return (int)SMCSWeapon_MP7;
rgr_02@3519
   330
		case CSGOWeapon_MP9:
rgr_02@3519
   331
			return (int)SMCSWeapon_MP9;
rgr_02@3519
   332
		case CSGOWeapon_NOVA:
rgr_02@3519
   333
			return (int)SMCSWeapon_NOVA;
rgr_02@3519
   334
		case CSGOWeapon_P250:
rgr_02@3519
   335
			return (int)SMCSWeapon_P250;
rgr_02@3519
   336
		case CSGOWeapon_SCAR17:
rgr_02@3519
   337
			return (int)SMCSWeapon_SCAR17;
rgr_02@3519
   338
		case CSGOWeapon_SCAR20:
rgr_02@3519
   339
			return (int)SMCSWeapon_SCAR20;
rgr_02@3519
   340
		case CSGOWeapon_SG556:
rgr_02@3519
   341
			return (int)SMCSWeapon_SG556;
rgr_02@3519
   342
		case CSGOWeapon_SSG08:
rgr_02@3519
   343
			return (int)SMCSWeapon_SSG08;
rgr_02@3519
   344
		case CSGOWeapon_KNIFE_GG:
rgr_02@3519
   345
			return (int)SMCSWeapon_KNIFE_GG;
rgr_02@3519
   346
		case CSGOWeapon_KNIFE:
rgr_02@3519
   347
			return (int)SMCSWeapon_KNIFE;
rgr_02@3519
   348
		case CSGOWeapon_FLASHBANG:
rgr_02@3519
   349
			return (int)SMCSWeapon_FLASHBANG;
rgr_02@3519
   350
		case CSGOWeapon_HEGRENADE:
rgr_02@3519
   351
			return (int)SMCSWeapon_HEGRENADE;
rgr_02@3519
   352
		case CSGOWeapon_SMOKEGRENADE:
rgr_02@3519
   353
			return (int)SMCSWeapon_SMOKEGRENADE;
rgr_02@3519
   354
		case CSGOWeapon_MOLOTOV:
rgr_02@3519
   355
			return (int)SMCSWeapon_MOLOTOV;
rgr_02@3519
   356
		case CSGOWeapon_DECOY:
rgr_02@3519
   357
			return (int)SMCSWeapon_DECOY;
rgr_02@3519
   358
		case CSGOWeapon_INCGRENADE:
rgr_02@3519
   359
			return (int)SMCSWeapon_INCGRENADE;
rgr_02@3519
   360
		case CSGOWeapon_C4:
rgr_02@3519
   361
			return (int)SMCSWeapon_C4;
rgr_02@3519
   362
		case CSGOWeapon_KEVLAR:
rgr_02@3519
   363
			return (int)SMCSWeapon_KEVLAR;
rgr_02@3519
   364
		case CSGOWeapon_ASSAULTSUIT:
rgr_02@3519
   365
			return (int)SMCSWeapon_ASSAULTSUIT;
rgr_02@3519
   366
		case CSGOWeapon_NVG:
rgr_02@3519
   367
			return (int)SMCSWeapon_NIGHTVISION;
rgr_02@3519
   368
		case CSGOWeapon_DEFUSER:
rgr_02@3519
   369
			return (int)SMCSWeapon_DEFUSER;
rgr_02@3519
   370
		default:
rgr_02@3519
   371
			return 0;
rgr_02@3519
   372
	}
rgr_02@3519
   373
#else
rgr_02@3519
   374
	if (weaponId > 33 || weaponId < 0)
rgr_02@3519
   375
		return 0;
rgr_02@3519
   376
	else
rgr_02@3519
   377
		return weaponId;
rgr_02@3519
   378
#endif
rgr_02@3519
   379
}