2014-08-04 12:12:15 +00:00
// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
// https://alliedmods.net/amxmodx-license
//
// Natural Selection Module Functions
//
2004-08-21 21:55:57 +00:00
#if defined NS_INC
#endinput
#endif
#define NS_INC
2006-05-10 10:42:49 +00:00
#if AMXX_VERSION_NUM >= 175
#pragma reqlib ns
#if !defined AMXMODX_NOAUTOLOAD
#pragma loadlib ns
#endif
#else
#pragma library ns
#endif
2005-07-15 19:05:31 +00:00
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
#include <ns_const>
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Called whenever the client ' s class is changed .
*
* @ param id The index of the player who changed .
* @ param newclass The class the client changed to . Check the class enum in ns_const . inc .
* @ param oldclass The class the client changed from . Check the class enum in ns_const . inc .
* @ noreturn
*/
forward client_changeclass ( id , newclass , oldclass );
/**
2008-03-04 18:55:54 +00:00
* Called whenever the client builds a structure .
2007-08-02 16:37:57 +00:00
*
* @ param idPlayer The player index who triggered the building .
* @ param idStructure The structure index that was created .
* @ param type The type of structure that was built ( 1 for marine , 2 for alien ) .
* @ param impulse The impulse command that was issued to build this structure .
* @ noreturn
*/
forward client_built ( idPlayer , idStructure , type , impulse );
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Tell whether or not the map is combat .
*
* @ return 1 if combat , 0 otherwise .
*/
2004-08-21 21:55:57 +00:00
native ns_is_combat ();
2007-08-02 16:37:57 +00:00
/**
* Returns the gameplay type for the currently active map .
* Refer to ns_const . inc ' s NSGameplay enum for details .
*
* @ note The earliest this is guaranteed to be accurate is during plugin_init () . It needs
* the info_gameplay entity to be properly set within the map , or it will return " Unknown " ,
* or " Cantfind " .
*
* @ return Return the gameplay mode , as accurate as the module can tell .
*/
native NSGameplay : ns_get_gameplay ();
2007-08-03 02:57:59 +00:00
/**
* Exact syntax as get_user_team , but should be more accurate .
*
* @ param id Player id .
* @ param buff Buffer to store team name in .
* @ param len Buffer length .
* @ return The pev_team setting for the player .
*/
native ns_get_user_team ( id , buff [], len );
2007-08-02 16:37:57 +00:00
/**
* Send an NS - style popup message .
*
* @ param target The client to receive the message . Set to 0 to send to everybody .
* @ param szMsg The message to send , 180 characters max .
* @ param ah Whether to only display the message on clients who have the cvar " cl_autohelp " set to 1.
* @ noreturn
*/
2007-08-10 04:52:12 +00:00
native ns_popup ( target , const szMsg [ 180 ], ah = 0 );
2007-08-02 16:37:57 +00:00
/**
* Sets a player model . Omit the second parameter to return to default
*
* @ note The model does not revert on death , teamswitch , gestation , etc .
*
* @ param id The player id to change .
* @ param szModel The model to change to .
* @ noreturn
*/
native ns_set_player_model ( id , const szModel [] = " " );
/**
* Sets a player skin . Omit the second parameter to return to default
*
* @ note The skin does not revert on death , teamswitch , gestation , etc .
*
* @ param id The player id to change .
* @ param skin The skin number to change to .
* @ noreturn
*/
native ns_set_player_skin ( id , skin =- 1 );
/**
* Sets a player body . Omit the second parameter to return to default
*
* @ note The body does not revert on death , teamswitch , gestation , etc .
*
* @ param id The player id to change .
* @ param body The body number to change to .
* @ noreturn
*/
native ns_set_player_body ( id , body =- 1 );
/**
* Set this to modify the player ' s speed by a certain amount .
*
* @ note The speed does not revert on death , teamswitch , gestation , etc .
*
* @ param id The player id to change .
* @ param speedchange The speed to modify the player speed by . Set to 0 to revert to default speed .
* @ noreturn
*/
native ns_set_speedchange ( id , speedchange = 0 );
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Returns a client ' s current speed modifier .
*
* @ param id The client id to check .
* @ return The module ' s current speed modifier for the client .
*/
2004-08-21 21:55:57 +00:00
native ns_get_speedchange ( id );
2007-08-02 16:37:57 +00:00
/**
* Returns a client ' s maxspeed before the speed change modifier is factored in .
*
* @ param id The client id to check .
* @ return The maxspeed for the client .
*/
2004-08-21 21:55:57 +00:00
native ns_get_maxspeed ( id );
/* Returns whether or not this mask is set from the entity's iuser4 field. Use the "mask" enum for reference. */
native ns_get_mask ( id , mask );
/* Sets or removes the mask from the entity's iuser4 field. Set "value" to 1 to turn the mask on, 0 to turn it off. */
native ns_set_mask ( id , mask , value );
/* Returns built / unbuilt structures .
If :
builtOnly is 1 ( default ) :
Only fully built structures are counted .
builtOnly is 0 :
Any structure meeting the classname is counted .
Number is 0 ( default ) :
The total number of matching structures is returned .
Number is any other value :
The index of the #th matching structure is returned.
*/
2007-01-26 05:56:10 +00:00
native ns_get_build ( const classname [], builtOnly = 1 , Number = 0 );
2004-08-21 21:55:57 +00:00
/* Returns if the player has the weapon or not in their pev -> weapons field .
set " setweapon " to 0 to turn the bit off , set to 1 to turn it on . Or omit it to just return the value . */
2005-07-29 19:18:45 +00:00
native ns_has_weapon ( id , weapon , setweapon =- 1 );
2004-08-21 21:55:57 +00:00
/* Gets spawn point for specified team ( type ) .
If :
Team is equal to 0 :
Ready room spawns are returned .
Team is greater than 0 :
Spawns for the team are returned .
Number is equal to 0 :
Total number of spawns is returned .
Number is greater than 0 :
The location of the specified spawn is returned .
*/
native ns_get_spawn ( team , number = 0 , Float : ret [ 3 ]);
/* Returns the class of the player. Look in the classes enum in ns_const.inc for the value's meaning. */
native ns_get_class ( id );
2007-08-02 16:37:57 +00:00
/**
* Gets the player ' s jetpack fuel reserve .
*
* @ param id The player to get fuel from .
* @ return The amount of fuel in the player ' s reserve . ( 0.0 through 100.0 )
*/
2004-08-21 21:55:57 +00:00
native Float : ns_get_jpfuel ( id );
2007-08-02 16:37:57 +00:00
/**
* Sets the player ' s jetpack fuel reserve .
*
* @ param id The player to set fuel .
* @ param fuel The amount of fuel to set , as a percentage ( 0.0 through 100.0 )
* @ noreturn
*/
native ns_set_jpfuel ( id , Float : fuel );
/**
* Adds to the player ' s jetpack fuel reserve .
*
* @ param id The player to add fuel to .
* @ param amount The amount of fuel to add , as a percentage ( 0.0 through 100.0 )
* @ return The new amount of fuel in the player ' s reserve . ( 0.0 through 100.0 )
*/
native Float : ns_add_jpfuel ( id , Float : amount );
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Gets the player ' s energy percentage .
*
* @ param id The player to get the energy from .
* @ return The amount of energy the player has ( 0.0 through 100.0 )
*/
2004-08-21 21:55:57 +00:00
native Float : ns_get_energy ( id );
2007-08-02 16:37:57 +00:00
/**
* Sets the player ' s energy percentage .
*
* @ param id The player to set the energy on .
* @ param energy The amount of energy to set ( 0.0 through 100.0 )
* @ noreturn
*/
native ns_set_energy ( id , Float : energy );
/**
* Adds to the player ' s energy percentage .
*
* @ param id The player to add the energy to .
* @ param amount The amount of energy to add to the player .
* @ return The new amount of energy the player has ( 0.0 through 100.0 )
*/
native Float : ns_add_energy ( id , Float : amount );
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Returns a player ' s resources .
*
* @ note This is only for alien players .
* @ param id The id of the player to check .
* @ return Amount of resources this player has .
*/
2004-08-21 21:55:57 +00:00
native Float : ns_get_res ( id );
2007-08-02 16:37:57 +00:00
/**
* Sets a player ' s resources .
*
* @ note This is only for alien players .
* @ param id The id of the player to set .
* @ param res Amount of resources to set on this player .
* @ noreturn
*/
native ns_set_res ( id , Float : res );
/**
* Adds an amount of resources to the player .
*
* @ note This is only for alien players .
* @ param id The id of the player to add resources to .
* @ param amount The amount to add to the player .
* @ return The new amount of resources the player has .
*/
native Float : ns_add_res ( id , Float : amount );
/**
* Returns the team ' s resources .
*
* @ param Team 1 for teama , 2 for teamb . ( eg : in MvA maps , 1 is marines ,
2 is aliens . In mvm , 1 is marine1 , 2 is marine2 )
* @ return The amount of resources in this team ' s resource pool .
*/
native Float : ns_get_teamres ( Team );
/**
* Sets the team ' s resources in the resource pool .
*
* @ note If this is used on an alien team , the resources will be
* distributed between all of the players who need resources .
* @ param Team 1 for teama , 2 for teamb . ( eg : in MvA maps , 1 is marines ,
* 2 is aliens . In mvm , 1 is marine1 , 2 is marine2 )
* @ param value The amount to set the resources to set to .
* @ noreturn
*/
native ns_set_teamres ( Team , Float : value );
/**
* Adds to the team ' s resources in the resource pool .
*
* @ note If this is used on an alien team , the resources will be
* distributed between all of the players who need resources .
* @ param Team 1 for teama , 2 for teamb . ( eg : in MvA maps , 1 is marines ,
* 2 is aliens . In mvm , 1 is marine1 , 2 is marine2 )
* @ param value The amount to set the resources to add to the pool
* @ return The new amount of resources in the resource pool .
*/
native Float : ns_add_teamres ( Team , Float : value );
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Returns the player ' s experience .
*
* @ note Combat only .
* @ param id The player to get experience value from .
* @ return The amount of experience this player has .
*/
2004-08-21 21:55:57 +00:00
native Float : ns_get_exp ( id );
2007-08-02 16:37:57 +00:00
/**
* Sets the player ' s experience .
*
* @ note Combat only .
* @ param id The player to set experience value on .
* @ param exp The amount of experience this player will have .
* @ noreturn
*/
2004-08-21 21:55:57 +00:00
native ns_set_exp ( id , Float : exp );
2007-08-02 16:37:57 +00:00
/**
* Adds to the player ' s experience .
*
* @ note Combat only .
* @ param id The player to add experience value to .
* @ param value The amount of experience this player will receive .
* @ return The new amount of experience this player has .
*/
native Float : ns_add_exp ( id , Float : value );
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Gets the player ' s points spent count in combat .
*
* @ param id The player to check .
* @ return The amount of points this player has spent .
*/
native ns_get_points ( id );
2004-08-21 21:55:57 +00:00
2007-08-02 16:37:57 +00:00
/**
* Sets the player ' s points spent count in combat .
*
* @ param id The player to set this on .
* @ param points The amount to set this to .
* @ noreturn
*/
native ns_set_points ( id , points );
/**
* Adds to the player ' s points spent count in combat .
*
* @ param id The player to add this to .
* @ param value The value to add to the points spent .
* @ return The new value of the points spent variable .
*/
native ns_add_points ( id , points );
/**
* Gets the damage for this weapon .
*
* @ note Use weapon index , not player index !
* @ param idWeapon The entity index of the weapon to check .
* @ return The damage this weapon does .
*/
2004-08-21 21:55:57 +00:00
native Float : ns_get_weap_dmg ( idWeapon );
2007-08-02 16:37:57 +00:00
/**
* Sets the damage for this weapon .
*
* @ note Use weapon index , not player index !
* @ param idWeapon The entity index of the weapon to set .
* @ param damage The damage to make this weapon cause .
* @ noreturn
*/
native ns_set_weap_dmg ( idWeapon , Float : damage );
/**
* Gets the maximum range for this weapon .
*
* @ note Use weapon index , not player index !
* @ param idWeapon The entity index of the weapon to check .
* @ return The maximum range this weapon has .
*/
2004-08-21 21:55:57 +00:00
native Float : ns_get_weap_range ( idWeapon );
2007-08-02 16:37:57 +00:00
/**
* Sets the maximum range for this weapon .
*
* @ note Use weapon index , not player index !
* @ param idWeapon The entity index of the weapon to set .
* @ param range The maximum range this weapon will have .
* @ noreturn
*/
native ns_set_weap_range ( idWeapon , Float : range );
/**
* Gets the weapon ' s clip ammo .
*
* @ note Use weapon index , not player index !
* @ param idWeapon The weapon to get the clip ammo from .
* @ return The amount of ammunition in the weapon ' s clip .
*/
2004-08-21 21:55:57 +00:00
native ns_get_weap_clip ( idWeapon );
2007-08-02 16:37:57 +00:00
/**
* Sets the weapon ' s ammo in the clip .
*
* @ note Use weapon index , not player index !
* @ param idWeapon The weapon to set the clip ammo on .
* @ param clipsize The amount of ammunition to set in the weapon ' s clip .
* @ noreturn
*/
native ns_set_weap_clip ( idWeapon , clipsize );
/**
* Gets the player ' s weapon reserve ( backpack ammo ) for the specified
* type of weapon .
*
* @ note Use player index , not weapon index !
* @ param id The player id to check ammo count on .
* @ param weapon The weapon type to check ammo count for .
* @ return The ammunition count in the player ' s reserve .
*/
2004-08-21 21:55:57 +00:00
native ns_get_weap_reserve ( id , weapon );
2007-08-02 16:37:57 +00:00
/**
* Sets the player ' s weapon reserve ( backpack ammo ) for the specified
* type of weapon .
*
* @ note Use player index , not weapon index !
* @ param id The player id to set ammo count on .
* @ param weapon The weapon type to set ammo count for .
* @ param ammo The ammunition count to set .
* @ noreturn
*/
2004-08-21 21:55:57 +00:00
native ns_set_weap_reserve ( id , weapon , ammo );
2007-08-02 16:37:57 +00:00
/**
* Gets the player ' s score .
*
* @ note The score from level is automatically factored into the scoreboard in combat .
* @ param idPlayer The player to get the score for .
* @ return The player ' s score .
*/
2004-08-21 21:55:57 +00:00
native ns_get_score ( idPlayer );
2007-08-02 16:37:57 +00:00
/**
* Sets the player ' s score .
*
* @ note The score from level is automatically factored into the scoreboard in combat .
* @ param idPlayer The player to get the score for .
* @ param score What to set the player ' s score as .
* @ noreturn
*/
native ns_set_score ( idPlayer , score );
/* Adds to a player ' s score
* Returns the new score on success
*/
native ns_add_score ( idPlayer , score );
2004-08-21 21:55:57 +00:00
/* Gets a player's death count. */
native ns_get_deaths ( idPlayer );
/* Sets a player's death count. */
native ns_set_deaths ( idPlayer , numdeaths );
2007-08-02 16:37:57 +00:00
/* Adds to a player ' s death count
* Returns the new death count on success
*/
native ns_add_deaths ( idPlayer , numdeaths );
2004-09-05 15:54:38 +00:00
/* Gets the index of the owner of a structure. -1 for no owner. */
native ns_get_struct_owner ( idStructsure );
2004-08-21 21:55:57 +00:00
2004-09-05 15:54:38 +00:00
/* Sets the index of the owner of a structure. -1 for no owner. */
native ns_set_struct_owner ( idStructure , indexOwner );
2004-08-21 21:55:57 +00:00
/* Gets the trait type tied to the hive. Look at the hivetrait enum for the values. */
native ns_get_hive_trait ( idHive );
/* Sets the trait type tied to the hive. Look at the hivetrait enum for the values. */
native ns_set_hive_trait ( idHive , trait );
2004-08-24 21:36:39 +00:00
/* Sets the players field of view, set "_fov" to 0.0 (or omit it) to return to normal. FOV change will persist until disconnect unless reset by a plugin */
2004-08-21 21:55:57 +00:00
native ns_set_fov ( idPlayer , Float : _fov = 0.0 );
2004-08-24 21:36:39 +00:00
2007-08-02 16:37:57 +00:00
/**
* Give the player an item .
*
* @ param id The player to give the item to .
* @ param class The map - classname of the entity to give to the player .
* @ noreturn
*/
native ns_give_item ( id , const class []);
/**
* Returns 1 if a player has the hive ability number .
* If ability is 0 , it will return the number of active hives .
*
* @ param idPlayer The player index to look up .
* @ param ability The ability number to check , set to 0 to get number of active hives .
* @ return If ability is != 0 , returns 1 or 0 depending on if the client has the ability .
* If ability is 0 , returns the number of active hives .
*/
2006-02-13 14:23:43 +00:00
native ns_get_hive_ability ( idPlayer , ability = 0 );
2007-08-02 16:37:57 +00:00
/**
* Triggered whenever a client ' s pev -> team changes .
*
* @ param id The id of the client .
* @ param newteam The team number of the new team .
* @ param oldteam The team number of the old team .
* @ noreturn
*/
forward client_changeteam ( id , newteam , oldteam );
/**
* Triggered whenever a client ' s pev -> deadflag changes from > 0 to 0.
*
* @ param id The id of the client .
* @ noreturn
*/
forward client_spawn ( id );
/**
* Calls NS ' s private damage routine on the victim entity .
*
* @ deprecated
* @ note This is provided for backwards compatibility with peachy ' s module .
* It is suggested to use hamsandwich for this action instead .
*
* @ param IDVictim The victim that is taking the damage .
* @ param IDInflictor The entity that is causing the damage ( weapon , etc ) .
* @ param IDAttacker The attacker who is triggering the damage ( person shooting ) .
* @ param Damage The amount of damage being done .
* @ param DamageType The damage type being done ( bitmask ) .
*/
2014-08-13 11:18:33 +00:00
#pragma deprecated It is suggested to use hamsandwich for this action instead.
2007-08-02 16:37:57 +00:00
native ns_takedamage ( IDVictim , IDInflictor , IDAttacker , Float : Damage , DamageType );
/**
* Attempts to unstick a player .
*
* @ param id Player to unstick .
* @ param StartDistance Distance to start from the player to check for a new location .
* @ param MaxAttempts How many attempts to try to find a new spot before giving up .
* @ return 1 on success , 0 on cannot find a place to move player to ,
* - 1 on invalid state ( stunned / webbed ), - 2 on invalid class ( comm / egg )
* - 3 if the player is dead or a spectator , - 4 on invalid player ,
* - 5 if the player is not connected .
*/
native ns_unstick_player ( id , StartDistance = 32 , MaxAttempts = 128 );
/**
* Whether or not there is a game in progress .
*
* @ return true if a game is in progress , false otherwise .
*/
native bool : ns_round_in_progress ();
/**
* Called at the approximate time that a round is started .
*
* @ noreturn
*/
forward round_start ();
/**
* Called immediately when a round ends
*
* @ param roundtime The length of the round in seconds .
* @ noreturn
*/
forward round_end ( Float : roundtime );
forward map_reset ( isload );
native ns_get_weapon ( idPlayer , weaponid , & weapontype = 0 );
/* Returns the location name of the provided x / y position
* ( z origin is ignored ; can ' t have location over location )
* -
* Note that as of NS 3.2 beta 2 , on the following maps
* the returned string should be passed through ns_lookup_title
* to be human readable :
* ns_bast , ns_hera , ns_nothing , ns_tanith ,
* ns_nancy , ns_caged , ns_eclipse , ns_veil
*
* Passing the 5 th parameter as non zero will auto look up
* the title if it exists .
*/
native ns_get_locationname ( Float : x , Float : y , name [], len , titlelookup = 0 );
/* Looks up a key from titles . txt
* Returns - 1 if the key is not found
* Otherwise it returns the length of the output
*/
native ns_lookup_title ( const KeyName [], Output [], length );
/* Forces the structure to fully build
* Removes the ghost state from marine structures .
* Do not use this on hives ! It wont work .
*/
native ns_build_structure ( idStructure );
/* Forces the structure to begin recycling
* Passing an index other than a marine structure will
* have undefined results !
* -
* Note : This calls a private NS function !
* Be careful when using this !
*/
native ns_recycle ( idStructure );
/* Forces the weldable to trigger
* Passing an index other than a weldable
* will have undefined results !
* -
* NS renames func_weldable to avhweldable
* at map load .
* -
* Note : This calls a private NS function !
* Be careful when using this !
*/
native ns_finish_weldable ( idWeldable );
/* Gets the total time needed to weld this
* func_weldable shut .
* Note : NS renames " func_weldable " s to " avhweldable " s
* at run time !
*/
native Float : ns_get_weld_time ( idWeldable );
2004-10-06 17:57:57 +00:00
2007-08-02 16:37:57 +00:00
/* Sets the total time needed to weld this
* func_weldable shut .
*/
native ns_set_weld_time ( idWeldable , Float : value );
/* Adds to the weldable ' s time required to open .
* Returns the new required time on success .
* Note this native clamps the low value to 0.
*/
native Float : ns_add_weld_time ( idWeldable , Float : value );
/* Gets the total time this func_weldable
* has been welded .
*/
native Float : ns_get_weld_done ( idWeldable );
/* Sets the total time this func_weldable
* has been welded .
*/
native ns_set_weld_done ( idWeldable , Float : value );
/* Adds to the total time this func_weldable
* has been welded . Returns the new value .
* Note this native clamps the low value to 0.0
*/
native Float : ns_add_weld_done ( idWeldable , Float : value );
/* Gets/sets/adds to the energy pool of this observatory. */
native Float : ns_get_obs_energy ( idObs );
native ns_set_obs_energy ( idObs , Float : value );
native Float : ns_add_obs_energy ( idObs , Float : value );
2008-04-26 21:40:56 +00:00
/**
* Removes an upgrade from the player ' s bought and active upgrade lists .
* This will not refund the points spent on the upgrade , nor will it
* immediately strip the upgrade if the player is alive . Rather , it will
* make it so the player no longer receives the upgrade on spawn .
*
* @ note This only works in combat .
* @ params idPlayer The player index to change upgrades for .
* @ params ugprade The impulse number for the upgrade to strip .
* @ return 2 for upgrade removed from player ' s bought and active list .
* 1 for upgrade removed from player ' s bought list only .
* 3 for upgrade removed from player 's active list only (shouldn' t happen , just incase . )
* 0 for the player didn ' t have the upgrade in either list .
*/
native ns_remove_upgrade ( idPlayer , upgrade );
2007-08-02 16:37:57 +00:00
/**
* Particle system natives
* -
* The particle system emulates a map - based custom particle system .
* Familiarity with the keyvalues from the map - based particle systems
* is recommended ! You will be lost otherwise !
* -
* prsearle ' s NSPEdit is also recommended for designing the systems :
* http :// homepage . ntlworld . com / pr . searle / NSPSEdit / NSPSEdit . html
*/
/* Creates a handle to the a particle system to configure
* -
* Note ! this is not a particle system you can pass to
* ns_fire_ps () !
*/
native RawPS : ns_create_ps ();
/* Sets the name of the particle system .
* -
* This is used for things like ns_get_ps_id ()
* and through calling another particle system
* through the " ps_to_gen " field
*/
native ns_set_ps_name ( RawPS : system , const name []);
/* Sets the sprite to use for the particle system
* -
* You do NOT have to precache the sprite , BUT
* the sprite must obviously be on the client to
* display .
*/
native ns_set_ps_sprite ( RawPS : system , const sprite []);
/* Finalizes the particle system . Do not configure it after this .
* A usable particle system handle is returned .
*/
native Particle : ns_spawn_ps ( RawPS : system );
/* Draws a particle system at the given origin ( and angles )
* Flags are the FEV_ * defines from hlsdk_const . inc
* Only use handles returned by ns_spawn_ps or ns_get_ps_id here !
*/
native ns_fire_ps ( Particle : system , const Float : origin [ 3 ], const Float : angles [ 3 ] = { 0.0 , 0.0 , 0.0 }, flags = 0 );
/* Looks up a particle system by name
* Returns a usable particle system handle .
*/
native Particle : ns_get_ps_id ( const Name []);
/* The following are the parameters for configuring the
* particle system . Look through the fgd and NSPSEdit
* for details !
*/
native ns_set_ps_genrate ( RawPS : system , genrate );
native ns_set_ps_genshape ( RawPS : system , NSPS_GenShape : genshape );
native ns_set_ps_genshape_params ( RawPS : system , const params []);
native ns_set_ps_spriteframes ( RawPS : system , spriteframes );
native ns_set_ps_numparticles ( RawPS : system , numparticles );
native ns_set_ps_size ( RawPS : system , Float : size );
native ns_set_ps_vel_params ( RawPS : system , const params []);
native ns_set_ps_vel_shape ( RawPS : system , NSPS_VelShape : shape );
native ns_set_ps_sys_life ( RawPS : system , Float : lifetime );
native ns_set_ps_particle_life ( RawPS : system , Float : lifetime );
native ns_set_ps_rendermode ( RawPS : system , NSPS_RenderMode : rendermode );
native ns_set_ps_to_gen ( RawPS : system , const name []);
native ns_set_ps_anim_speed ( RawPS : system , speed );
native ns_set_ps_spawn_flags ( RawPS : system , NSPS_Flags : flags );
native ns_set_ps_base_color ( RawPS : system , const colors []);
native ns_set_ps_scale ( RawPS : system , Float : scale );
native ns_set_ps_max_alpha ( RawPS : system , Float : maxalpha );