plugins/include/entity_prop_stocks.inc
author Michael McKoy <ferret99gt@gmail.com>
Mon Dec 24 00:44:48 2007 +0000 (2007-12-24)
changeset 1820 8e1bbd65f7c2
parent 1800 1f02d51c5c1e
child 1826 a9f05d8aedf2
permissions -rw-r--r--
More netprop stocks for entities
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
ferret99gt@1800
    38
enum
ferret99gt@1800
    39
{
ferret99gt@1800
    40
	MOVETYPE_NONE = 0,			/** never moves */
ferret99gt@1800
    41
	MOVETYPE_ISOMETRIC,			/** For players */
ferret99gt@1800
    42
	MOVETYPE_WALK,				/** Player only - moving on the ground */
ferret99gt@1800
    43
	MOVETYPE_STEP,				/** gravity, special edge handling -- monsters use this */
ferret99gt@1800
    44
	MOVETYPE_FLY,				/** No gravity, but still collides with stuff */
ferret99gt@1800
    45
	MOVETYPE_FLYGRAVITY,			/** flies through the air + is affected by gravity */
ferret99gt@1800
    46
	MOVETYPE_VPHYSICS,			/** uses VPHYSICS for simulation */
ferret99gt@1800
    47
	MOVETYPE_PUSH,				/** no clip to world, push and crush */
ferret99gt@1800
    48
	MOVETYPE_NOCLIP,			/** No gravity, no collisions, still do velocity/avelocity */
ferret99gt@1800
    49
	MOVETYPE_LADDER,			/** Used by players only when going onto a ladder */
ferret99gt@1800
    50
	MOVETYPE_OBSERVER,			/** Observer movement, depends on player's observer mode */
ferret99gt@1800
    51
	MOVETYPE_CUSTOM,			/** Allows the entity to describe its own physics */
ferret99gt@1800
    52
};
ferret99gt@1800
    53
ferret99gt@1800
    54
/**
ferret99gt@1820
    55
 * Gets an entity's movetype.
ferret99gt@1820
    56
 *
ferret99gt@1820
    57
 * @param index		Entity index
ferret99gt@1820
    58
 * @return		Movetype, see enum above
ferret99gt@1820
    59
 */
ferret99gt@1820
    60
stock GetEntityMovetype(index)
ferret99gt@1820
    61
{
ferret99gt@1820
    62
	new offset = GetEntSendPropOffs(index, "movetype");
ferret99gt@1820
    63
	return GetEntData(index, offset, 1);
ferret99gt@1820
    64
}
ferret99gt@1820
    65
ferret99gt@1820
    66
/**
ferret99gt@1820
    67
 * Sets an entity's movetype.
ferret99gt@1800
    68
 *
ferret99gt@1800
    69
 * @param index		Entity index
ferret99gt@1800
    70
 * @param mt		Movetype, see enum above
ferret99gt@1800
    71
 * @noreturn
ferret99gt@1800
    72
 */
ferret99gt@1800
    73
stock SetEntityMovetype(index, mt)
ferret99gt@1800
    74
{
ferret99gt@1800
    75
	new offset = GetEntSendPropOffs(index, "movetype");
ferret99gt@1800
    76
	SetEntData(index, offset, mt, 1, true);
ferret99gt@1800
    77
}
ferret99gt@1800
    78
ferret99gt@1800
    79
/**
ferret99gt@1800
    80
 * Sets an entity's color.
ferret99gt@1800
    81
 *
ferret99gt@1800
    82
 * @param index		Entity index
ferret99gt@1800
    83
 * @param r 		Amount of red (0-255)
ferret99gt@1800
    84
 * @param g 		Amount of green (0-255)
ferret99gt@1800
    85
 * @param b 		Amount of blue (0-255)
ferret99gt@1800
    86
 * @param a 		Amount of alpha (0-255)
ferret99gt@1800
    87
 * @noreturn
ferret99gt@1800
    88
 */
ferret99gt@1800
    89
stock SetEntityRenderColor(index, r=255, g=255, b=255, a=255)
ferret99gt@1800
    90
{
ferret99gt@1800
    91
	new offset = GetEntSendPropOffs(index, "m_clrRender");
ferret99gt@1800
    92
	SetEntData(index, offset, r, 1, true);
ferret99gt@1800
    93
	SetEntData(index, offset + 1, g, 1, true);
ferret99gt@1800
    94
	SetEntData(index, offset + 2, b, 1, true);
ferret99gt@1800
    95
	SetEntData(index, offset + 3, a, 1, true);
ferret99gt@1820
    96
}
ferret99gt@1820
    97
ferret99gt@1820
    98
/**
ferret99gt@1820
    99
 * Gets an entity's gravity.
ferret99gt@1820
   100
 *
ferret99gt@1820
   101
 * @param index		Entity index
ferret99gt@1820
   102
 * @return		Entity's m_flGravity value
ferret99gt@1820
   103
 */
ferret99gt@1820
   104
stock Float:GetEntityGravity(index)
ferret99gt@1820
   105
{
ferret99gt@1820
   106
	new offset = FindDataMapOffs(index, "m_flGravity");
ferret99gt@1820
   107
	return GetEntDataFloat(index, offset);	
ferret99gt@1820
   108
}
ferret99gt@1820
   109
ferret99gt@1820
   110
/**
ferret99gt@1820
   111
 * Sets an entity's gravity.
ferret99gt@1820
   112
 *
ferret99gt@1820
   113
 * @param index		Entity index
ferret99gt@1820
   114
 * @param amount	Gravity to set. Default = 800
ferret99gt@1820
   115
 * @noreturn
ferret99gt@1820
   116
 */
ferret99gt@1820
   117
stock SetEntityGravity(index, Float:amount)
ferret99gt@1820
   118
{
ferret99gt@1820
   119
	new offset = FindDataMapOffs(index, "m_flGravity");
ferret99gt@1820
   120
	SetEntDataFloat(index, offset, amount, true);	
ferret99gt@1820
   121
}
ferret99gt@1820
   122
ferret99gt@1820
   123
/**
ferret99gt@1820
   124
 * Sets an entity's health
ferret99gt@1820
   125
 *
ferret99gt@1820
   126
 * @param index		Entity index
ferret99gt@1820
   127
 * @param amount	Health
ferret99gt@1820
   128
 * @noreturn
ferret99gt@1820
   129
 */
ferret99gt@1820
   130
stock SetEntityHealth(index, amount)
ferret99gt@1820
   131
{
ferret99gt@1820
   132
	SetEntProp(client, Prop_Send, "m_iHealth", health, 1)
ferret99gt@1820
   133
	SetEntProp(client, Prop_Data, "m_iHealth", health, 1)
ferret99gt@1800
   134
}