plugins/include/entity_prop_stocks.inc
author David Anderson <dvander@alliedmods.net>
Mon Jan 07 06:59:44 2008 +0000 (2008-01-07)
changeset 1837 652038bb27e6
parent 1834 74d7a2edeb49
child 1845 a2e4c1cbf800
permissions -rw-r--r--
- added GuessSDKVersion()
- added rendermode and renderfx prop stocks and defines
- added MoveType tag to MOVETYPE defines
- changed Movetype functions to MoveType to use correct SourceMod casing
ferret99gt@1800
     1
/**
ferret99gt@1800
     2
 * vim: set ts=4 :
ferret99gt@1800
     3
 * =============================================================================
ferret99gt@1800
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
ferret99gt@1800
     5
 * =============================================================================
ferret99gt@1800
     6
 *
ferret99gt@1800
     7
 * This file is part of the SourceMod/SourcePawn SDK.
ferret99gt@1800
     8
 *
ferret99gt@1800
     9
 * This program is free software; you can redistribute it and/or modify it under
ferret99gt@1800
    10
 * the terms of the GNU General Public License, version 3.0, as published by the
ferret99gt@1800
    11
 * Free Software Foundation.
ferret99gt@1800
    12
 * 
ferret99gt@1800
    13
 * This program is distributed in the hope that it will be useful, but WITHOUT
ferret99gt@1800
    14
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ferret99gt@1800
    15
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ferret99gt@1800
    16
 * details.
ferret99gt@1800
    17
 *
ferret99gt@1800
    18
 * You should have received a copy of the GNU General Public License along with
ferret99gt@1800
    19
 * this program.  If not, see <http://www.gnu.org/licenses/>.
ferret99gt@1800
    20
 *
ferret99gt@1800
    21
 * As a special exception, AlliedModders LLC gives you permission to link the
ferret99gt@1800
    22
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ferret99gt@1800
    23
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ferret99gt@1800
    24
 * by the Valve Corporation.  You must obey the GNU General Public License in
ferret99gt@1800
    25
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ferret99gt@1800
    26
 * this exception to all derivative works.  AlliedModders LLC defines further
ferret99gt@1800
    27
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ferret99gt@1800
    28
 * or <http://www.sourcemod.net/license.php>.
ferret99gt@1800
    29
 *
ferret99gt@1800
    30
 * Version: $Id$
ferret99gt@1800
    31
 */
ferret99gt@1800
    32
 
ferret99gt@1800
    33
#if defined _entity_prop_stocks_included
ferret99gt@1800
    34
 #endinput
ferret99gt@1800
    35
#endif
ferret99gt@1800
    36
#define _entity_prop_stocks_included
ferret99gt@1800
    37
dvander@1837
    38
enum MoveType
ferret99gt@1800
    39
{
dvander@1837
    40
	MOVETYPE_NONE = 0,			/**< never moves */
dvander@1837
    41
	MOVETYPE_ISOMETRIC,			/**< For players */
dvander@1837
    42
	MOVETYPE_WALK,				/**< Player only - moving on the ground */
dvander@1837
    43
	MOVETYPE_STEP,				/**< gravity, special edge handling -- monsters use this */
dvander@1837
    44
	MOVETYPE_FLY,				/**< No gravity, but still collides with stuff */
dvander@1837
    45
	MOVETYPE_FLYGRAVITY,		/**< flies through the air + is affected by gravity */
dvander@1837
    46
	MOVETYPE_VPHYSICS,			/**< uses VPHYSICS for simulation */
dvander@1837
    47
	MOVETYPE_PUSH,				/**< no clip to world, push and crush */
dvander@1837
    48
	MOVETYPE_NOCLIP,			/**< No gravity, no collisions, still do velocity/avelocity */
dvander@1837
    49
	MOVETYPE_LADDER,			/**< Used by players only when going onto a ladder */
dvander@1837
    50
	MOVETYPE_OBSERVER,			/**< Observer movement, depends on player's observer mode */
dvander@1837
    51
	MOVETYPE_CUSTOM,			/**< Allows the entity to describe its own physics */
dvander@1837
    52
};
dvander@1837
    53
dvander@1837
    54
enum RenderMode
dvander@1837
    55
{	
dvander@1837
    56
	RENDER_NORMAL,			/**< src */
dvander@1837
    57
	RENDER_TRANSCOLOR,		/**< c*a+dest*(1-a) */
dvander@1837
    58
	RENDER_TRANSTEXTURE,	/**< src*a+dest*(1-a) */
dvander@1837
    59
	RENDER_GLOW,			/**< src*a+dest -- No Z buffer checks -- Fixed size in screen space */
dvander@1837
    60
	RENDER_TRANSALPHA,		/**< src*srca+dest*(1-srca) */
dvander@1837
    61
	RENDER_TRANSADD,		/**< src*a+dest */
dvander@1837
    62
	RENDER_ENVIRONMENTAL,	/**< not drawn, used for environmental effects */
dvander@1837
    63
	RENDER_TRANSADDFRAMEBLEND, /**< use a fractional frame value to blend between animation frames */
dvander@1837
    64
	RENDER_TRANSALPHAADD,	/**< src + dest*(1-a) */
dvander@1837
    65
	RENDER_WORLDGLOW,		/**< Same as kRenderGlow but not fixed size in screen space */
dvander@1837
    66
	RENDER_NONE,			/**< Don't render. */
dvander@1837
    67
};
dvander@1837
    68
dvander@1837
    69
enum RenderFx
dvander@1837
    70
{	
dvander@1837
    71
	RENDERFX_NONE = 0, 
dvander@1837
    72
	RENDERFX_PULSE_SLOW, 
dvander@1837
    73
	RENDERFX_PULSE_FAST, 
dvander@1837
    74
	RENDERFX_PULSE_SLOW_WIDE, 
dvander@1837
    75
	RENDERFX_PULSE_FAST_WIDE, 
dvander@1837
    76
	RENDERFX_FADE_SLOW, 
dvander@1837
    77
	RENDERFX_FADE_FAST, 
dvander@1837
    78
	RENDERFX_SOLID_SLOW, 
dvander@1837
    79
	RENDERFX_SOLID_FAST, 	   
dvander@1837
    80
	RENDERFX_STROBE_SLOW, 
dvander@1837
    81
	RENDERFX_STROBE_FAST, 
dvander@1837
    82
	RENDERFX_STROBE_FASTER, 
dvander@1837
    83
	RENDERFX_FLICKER_SLOW, 
dvander@1837
    84
	RENDERFX_FLICKER_FAST,
dvander@1837
    85
	RENDERFX_NO_DISSIPATION,
dvander@1837
    86
	RENDERFX_DISTORT,			/**< Distort/scale/translate flicker */
dvander@1837
    87
	RENDERFX_HOLOGRAM,			/**< kRenderFxDistort + distance fade */
dvander@1837
    88
	RENDERFX_EXPLODE,			/**< Scale up really big! */
dvander@1837
    89
	RENDERFX_GLOWSHELL,			/**< Glowing Shell */
dvander@1837
    90
	RENDERFX_CLAMP_MIN_SCALE,	/**< Keep this sprite from getting very small (SPRITES only!) */
dvander@1837
    91
	RENDERFX_ENV_RAIN,			/**< for environmental rendermode, make rain */
dvander@1837
    92
	RENDERFX_ENV_SNOW,			/**<  "        "            "    , make snow */
dvander@1837
    93
	RENDERFX_SPOTLIGHT,			/**< TEST CODE for experimental spotlight */
dvander@1837
    94
	RENDERFX_RAGDOLL,			/**< HACKHACK: TEST CODE for signalling death of a ragdoll character */
dvander@1837
    95
	RENDERFX_PULSE_FAST_WIDER,
dvander@1837
    96
	RENDERFX_MAX
ferret99gt@1800
    97
};
ferret99gt@1800
    98
pred@1826
    99
#define IN_ATTACK		(1 << 0)
pred@1826
   100
#define IN_JUMP			(1 << 1)
pred@1826
   101
#define IN_DUCK			(1 << 2)
pred@1826
   102
#define IN_FORWARD		(1 << 3)
pred@1826
   103
#define IN_BACK			(1 << 4)
pred@1826
   104
#define IN_USE			(1 << 5)
pred@1826
   105
#define IN_CANCEL		(1 << 6)
pred@1826
   106
#define IN_LEFT			(1 << 7)
pred@1826
   107
#define IN_RIGHT		(1 << 8)
pred@1826
   108
#define IN_MOVELEFT		(1 << 9)
pred@1826
   109
#define IN_MOVERIGHT	(1 << 10)
pred@1826
   110
#define IN_ATTACK2		(1 << 11)
pred@1826
   111
#define IN_RUN			(1 << 12)
pred@1826
   112
#define IN_RELOAD		(1 << 13)
pred@1826
   113
#define IN_ALT1			(1 << 14)
pred@1826
   114
#define IN_ALT2			(1 << 15)
pred@1826
   115
#define IN_SCORE		(1 << 16)   // Used by client.dll for when scoreboard is held down
pred@1826
   116
#define IN_SPEED		(1 << 17)	// Player is holding the speed key
pred@1826
   117
#define IN_WALK			(1 << 18)	// Player holding walk key
pred@1826
   118
#define IN_ZOOM			(1 << 19)	// Zoom key for HUD zoom
pred@1826
   119
#define IN_WEAPON1		(1 << 20)	// weapon defines these bits
pred@1826
   120
#define IN_WEAPON2		(1 << 21)	// weapon defines these bits
pred@1826
   121
#define IN_BULLRUSH		(1 << 22)
pred@1826
   122
#define IN_GRENADE1		(1 << 23)	// grenade 1
pred@1826
   123
#define IN_GRENADE2		(1 << 24)	// grenade 2
pred@1826
   124
ferret99gt@1800
   125
/**
ferret99gt@1820
   126
 * Gets an entity's movetype.
ferret99gt@1820
   127
 *
dvander@1834
   128
 * @param entity	Entity index.
dvander@1834
   129
 * @return			Movetype, see enum above.
dvander@1834
   130
 * @error			Invalid entity index, or lack of mod compliance.
ferret99gt@1820
   131
 */
dvander@1837
   132
stock MoveType:GetEntityMoveType(entity)
ferret99gt@1820
   133
{
dvander@1834
   134
	new offset = GetEntSendPropOffs(entity, "movetype");
dvander@1837
   135
	return MoveType:GetEntData(entity, offset, 1);
ferret99gt@1820
   136
}
ferret99gt@1820
   137
ferret99gt@1820
   138
/**
ferret99gt@1820
   139
 * Sets an entity's movetype.
ferret99gt@1800
   140
 *
dvander@1834
   141
 * @param entity	Entity index.
dvander@1834
   142
 * @param mt		Movetype, see enum above.
ferret99gt@1800
   143
 * @noreturn
dvander@1834
   144
 * @error			Invalid entity index, or lack of mod compliance.
ferret99gt@1800
   145
 */
dvander@1837
   146
stock SetEntityMoveType(entity, MoveType:mt)
ferret99gt@1800
   147
{
dvander@1834
   148
	new offset = GetEntSendPropOffs(entity, "movetype");
dvander@1834
   149
	SetEntData(entity, offset, mt, 1, true);
ferret99gt@1800
   150
}
ferret99gt@1800
   151
ferret99gt@1800
   152
/**
dvander@1837
   153
 * Gets an entity's render mode.
dvander@1837
   154
 *
dvander@1837
   155
 * @param entity	Entity index.
dvander@1837
   156
 * @return			RenderMode value.
dvander@1837
   157
 * @error			Invalid entity index, or lack of mod compliance.
dvander@1837
   158
 */
dvander@1837
   159
stock RenderMode:GetEntityRenderMode(entity)
dvander@1837
   160
{
dvander@1837
   161
	return RenderMode:GetEntProp(entity, Prop_Send, "m_nRenderMode", 1);
dvander@1837
   162
}
dvander@1837
   163
dvander@1837
   164
/**
dvander@1837
   165
 * Sets an entity's render mode.
dvander@1837
   166
 *
dvander@1837
   167
 * @param entity	Entity index.
dvander@1837
   168
 * @param mode		RenderMode value.
dvander@1837
   169
 * @noreturn
dvander@1837
   170
 * @error			Invalid entity index, or lack of mod compliance.
dvander@1837
   171
 */
dvander@1837
   172
stock SetEntityRenderMode(entity, RenderMode:mode)
dvander@1837
   173
{
dvander@1837
   174
	SetEntProp(entity, Prop_Send, "m_nRenderMode", mode, 1);
dvander@1837
   175
}
dvander@1837
   176
dvander@1837
   177
/**
dvander@1837
   178
 * Gets an entity's render Fx.
dvander@1837
   179
 *
dvander@1837
   180
 * @param entity	Entity index.
dvander@1837
   181
 * @return			RenderFx value.
dvander@1837
   182
 * @error			Invalid entity index, or lack of mod compliance.
dvander@1837
   183
 */
dvander@1837
   184
stock RenderFx:GetEntityRenderFx(entity)
dvander@1837
   185
{
dvander@1837
   186
	return RenderFx:GetEntProp(entity, Prop_Send, "m_nRenderFX", 1);
dvander@1837
   187
}
dvander@1837
   188
dvander@1837
   189
/**
dvander@1837
   190
 * Sets an entity's render Fx.
dvander@1837
   191
 *
dvander@1837
   192
 * @param entity	Entity index.
dvander@1837
   193
 * @param fx		RenderFx value.
dvander@1837
   194
 * @noreturn
dvander@1837
   195
 * @error			Invalid entity index, or lack of mod compliance.
dvander@1837
   196
 */
dvander@1837
   197
stock SetEntityRenderFx(entity, RenderFx:fx)
dvander@1837
   198
{
dvander@1837
   199
	SetEntProp(entity, Prop_Send, "m_nRenderFX", fx, 1);
dvander@1837
   200
}
dvander@1837
   201
dvander@1837
   202
/**
ferret99gt@1800
   203
 * Sets an entity's color.
ferret99gt@1800
   204
 *
dvander@1834
   205
 * @param entity	Entity index
ferret99gt@1800
   206
 * @param r 		Amount of red (0-255)
ferret99gt@1800
   207
 * @param g 		Amount of green (0-255)
ferret99gt@1800
   208
 * @param b 		Amount of blue (0-255)
ferret99gt@1800
   209
 * @param a 		Amount of alpha (0-255)
ferret99gt@1800
   210
 * @noreturn
dvander@1834
   211
 * @error			Invalid entity index, or lack of mod compliance.
ferret99gt@1800
   212
 */
dvander@1834
   213
stock SetEntityRenderColor(entity, r=255, g=255, b=255, a=255)
ferret99gt@1800
   214
{
dvander@1834
   215
	new offset = GetEntSendPropOffs(entity, "m_clrRender");
dvander@1834
   216
	SetEntData(entity, offset, r, 1, true);
dvander@1834
   217
	SetEntData(entity, offset + 1, g, 1, true);
dvander@1834
   218
	SetEntData(entity, offset + 2, b, 1, true);
dvander@1834
   219
	SetEntData(entity, offset + 3, a, 1, true);
ferret99gt@1820
   220
}
ferret99gt@1820
   221
dvander@1837
   222
/* GuessSDKVersion */
dvander@1837
   223
ferret99gt@1820
   224
/**
ferret99gt@1820
   225
 * Gets an entity's gravity.
ferret99gt@1820
   226
 *
dvander@1834
   227
 * @param entity 	Entity index.
dvander@1834
   228
 * @return			Entity's m_flGravity value.
dvander@1834
   229
 * @error			Invalid entity index, or lack of mod compliance.
ferret99gt@1820
   230
 */
dvander@1834
   231
stock Float:GetEntityGravity(entity)
ferret99gt@1820
   232
{
dvander@1834
   233
	return GetEntPropFloat(entity, Prop_Data, "m_flGravity");
ferret99gt@1820
   234
}
ferret99gt@1820
   235
ferret99gt@1820
   236
/**
ferret99gt@1820
   237
 * Sets an entity's gravity.
ferret99gt@1820
   238
 *
dvander@1834
   239
 * @param entity	Entity index.
dvander@1834
   240
 * @param amount	Gravity to set (default = 800).
ferret99gt@1820
   241
 * @noreturn
dvander@1834
   242
 * @error			Invalid entity index, or lack of mod compliance.
ferret99gt@1820
   243
 */
dvander@1834
   244
stock SetEntityGravity(entity, Float:amount)
ferret99gt@1820
   245
{
dvander@1834
   246
	SetEntPropFloat(entity, Prop_Data, "m_flGravity", amount);
ferret99gt@1820
   247
}
ferret99gt@1820
   248
ferret99gt@1820
   249
/**
ferret99gt@1820
   250
 * Sets an entity's health
ferret99gt@1820
   251
 *
dvander@1834
   252
 * @param entity	Entity index.
dvander@1834
   253
 * @param amount	Health amount.
ferret99gt@1820
   254
 * @noreturn
dvander@1834
   255
 * @error			Invalid entity index, or lack of mod compliance.
ferret99gt@1820
   256
 */
dvander@1834
   257
stock SetEntityHealth(entity, amount)
ferret99gt@1820
   258
{
dvander@1834
   259
	SetEntProp(entity, Prop_Send, "m_iHealth", amount);
pred@1826
   260
}
pred@1826
   261
pred@1826
   262
/**
pred@1826
   263
 * Get's a users current pressed buttons
pred@1826
   264
 *
pred@1826
   265
 * @param client	Client index
pred@1826
   266
 * @return			Bitsum of buttons
dvander@1834
   267
 * @error			Invalid client index, client not in game, 
dvander@1834
   268
 *					or lack of mod compliance.
pred@1826
   269
 */
pred@1826
   270
stock GetClientButtons(client)
pred@1826
   271
{
dvander@1834
   272
	return GetEntProp(client, Prop_Data, "m_nButtons");
dvander@1834
   273
}
dvander@1834
   274
dvander@1837
   275
#pragma deprecated Case change, use MoveType version
dvander@1837
   276
stock SetEntityMovetype(entity, any:mt)
dvander@1837
   277
{
dvander@1837
   278
	SetEntityMoveType(entity, MoveType:mt);
dvander@1837
   279
}
dvander@1837
   280
dvander@1837
   281
#pragma deprecated Case change, use MoveType version
dvander@1837
   282
stock GetEntityMovetype(entity)
dvander@1837
   283
{
dvander@1837
   284
	return _:GetEntityMoveType(entity);
dvander@1837
   285
}