plugins/include/sourcemod.inc
author Borja Ferrer <faluco@alliedmods.net>
Sun Jan 07 01:30:28 2007 +0000 (2007-01-07)
changeset 274 959c85596341
parent 258 2637fcf24c2f
child 280 f2a82da2facc
permissions -rw-r--r--
Added a bunch of new file natives.
Fixed possible corruption in snprintf when input buffer was bigger than output buffer and relaying on its retval.
Fixed all cases when the above situation happened.
Fixed _PrintToHL2Log not taking va_list in.
dvander@165
     1
/**
dvander@165
     2
 * :TODO: license info
dvander@165
     3
 */
dvander@165
     4
dvander@165
     5
#if defined _sourcemod_included
dvander@165
     6
 #endinput
dvander@165
     7
#endif
dvander@165
     8
#define _sourcemod_included
dvander@165
     9
dvander@170
    10
struct Plugin
dvander@170
    11
{
dvander@170
    12
   const String:name[],			/* Plugin Name */
dvander@170
    13
   const String:description[],		/* Plugin Description */
dvander@170
    14
   const String:author[],		/* Plugin Author */
dvander@170
    15
   const String:version[],		/* Plugin Version */
dvander@170
    16
   const String:url[],			/* Plugin URL */
faluco@242
    17
};
dvander@170
    18
dvander@252
    19
#include <float>
dvander@252
    20
#include <handles>
dvander@252
    21
#include <string>
dvander@257
    22
#include <files>
dvander@252
    23
dvander@165
    24
/**
dvander@170
    25
 * Declare this as a struct in your plugin to expose its information.
dvander@170
    26
 * Example:
dvander@170
    27
 *
dvander@170
    28
 * public Plugin:myinfo =
dvander@170
    29
 * {
dvander@170
    30
 *    name = "My Plugin",
dvander@170
    31
 *    //etc
dvander@170
    32
 * };
dvander@165
    33
 */
dvander@170
    34
public Plugin:myinfo;
dvander@165
    35
 
dvander@165
    36
/**
dvander@212
    37
 * Called when the plugin is fully initialized and all known external references are resolved.
dvander@212
    38
 * This is called even if the plugin type is "private."
dvander@212
    39
 * NOTE: Errors in this function will cause the plugin to stop running.
dvander@165
    40
 *
dvander@165
    41
 * @noreturn
dvander@165
    42
 */
dvander@212
    43
forward OnPluginInit(Handle:myself);
dvander@165
    44
 
dvander@165
    45
/**
dvander@212
    46
 *   Called before OnPluginInit, in case the plugin wants to check for load failure.
dvander@212
    47
 * This is called even if the plugin type is "private."  Any natives from modules are 
dvander@212
    48
 * not available at this point.  Thus, this forward should only be used for explicit 
dvander@212
    49
 * pre-emptive things, such as adding dynamic natives, or setting certain types of load filters.
dvander@212
    50
 * 
dvander@212
    51
 * NOTE: It is not safe to call externally resolved natives until OnPluginInit().
dvander@212
    52
 * NOTE: Any sort of RTE in this function will cause the plugin to fail loading.
dvander@165
    53
 *
dvander@165
    54
 * @param myself	Handle to the plugin.
dvander@165
    55
 * @param late		Whether or not the plugin was loaded "late" (after map load).
dvander@165
    56
 * @param error		Error message buffer in case load failed.
dvander@165
    57
 * @param err_max	Maximum number of characters for error message buffer.
faluco@242
    58
 * @return			True if load success, false otherwise.
dvander@165
    59
 */
dvander@212
    60
forward bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max);
dvander@165
    61
dvander@165
    62
/**
dvander@165
    63
 * Called when the plugin is about to be unloaded.
dvander@165
    64
 *
dvander@165
    65
 * @noreturn
dvander@165
    66
 */
dvander@165
    67
forward OnPluginUnload();
dvander@165
    68
dvander@165
    69
/**
dvander@165
    70
 * Called when the plugin's pause status is changing.
dvander@165
    71
 *
dvander@165
    72
 * @noreturn
dvander@165
    73
 */
dvander@165
    74
forward OnPluginPauseChange(bool:pause);
faluco@242
    75
faluco@242
    76
/**
faluco@242
    77
 * Called on client connection.
faluco@242
    78
 *
faluco@242
    79
 * @param client		Player index.
faluco@242
    80
 * @param rejectmsg		Buffer to store the rejection message when the connection is refused.
faluco@242
    81
 * @param maxlen		Maximum number of characters for rejection buffer.
faluco@242
    82
 * @return				True to validate client's connection, false to refuse it.
faluco@242
    83
 */
faluco@242
    84
forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);
faluco@242
    85
faluco@242
    86
/**
faluco@242
    87
 * Called when a client is entering to the game.
faluco@242
    88
 *
faluco@242
    89
 * @param client		Player index.
faluco@242
    90
 * @noreturn
faluco@242
    91
 */
faluco@242
    92
forward OnClientPutInServer(client);
faluco@242
    93
faluco@242
    94
/**
faluco@242
    95
 * Called when a client is disconnecting from the server.
faluco@242
    96
 *
faluco@242
    97
 * @param client		Player index.
faluco@242
    98
 * @noreturn
faluco@242
    99
 */
faluco@242
   100
forward OnClientDisconnect(client);
faluco@242
   101
faluco@242
   102
/**
faluco@242
   103
 * Called when a client is disconnected from the server.
faluco@242
   104
 *
faluco@242
   105
 * @param client		Player index.
faluco@242
   106
 * @noreturn
faluco@242
   107
 */
faluco@242
   108
forward OnClientDisconnect_Post(client);
faluco@242
   109
faluco@242
   110
/**
faluco@242
   111
 * Called when a client is sending a command.
faluco@242
   112
 *
faluco@242
   113
 * @param client		Player index.
faluco@242
   114
 * @noreturn
faluco@242
   115
 */
faluco@242
   116
forward OnClientCommand(client);
faluco@242
   117
faluco@242
   118
/**
faluco@242
   119
 * Called whenever the client's settings are changed.
faluco@242
   120
 *
faluco@242
   121
 * @param client		Player index.
faluco@242
   122
 * @noreturn
faluco@242
   123
 */
faluco@242
   124
forward OnClientSettingsChanged(client);
faluco@242
   125
faluco@242
   126
/**
faluco@242
   127
 * Returns the maximum number of clients allowed on the server.
faluco@242
   128
 *
faluco@242
   129
 * @return				Maximum number of clients allowed.
faluco@242
   130
 */
faluco@242
   131
native GetMaxClients();
faluco@242
   132
faluco@242
   133
/**
faluco@242
   134
 * Returns the client count put in the server.
faluco@242
   135
 *
faluco@242
   136
 * @param inGameOnly	If false connecting players are also counted.
faluco@242
   137
 * @return				Client count in the server.
faluco@242
   138
 */
faluco@242
   139
native GetClientCount(bool:inGameOnly=true);
faluco@242
   140
faluco@242
   141
/**
faluco@242
   142
 * Returns the client's name.
faluco@242
   143
 *
faluco@242
   144
 * @param client		Player index.
faluco@242
   145
 * @param name			Buffer to store the client's name.
faluco@242
   146
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@257
   147
 * @return			True on success, false otherwise.
faluco@258
   148
 * @error			If the client is not connected an error will be thrown.
faluco@242
   149
 */
dvander@257
   150
native bool:GetClientName(client, String:name[], maxlen);
faluco@242
   151
faluco@242
   152
/**
dvander@250
   153
 * Retrieves a client's IP address.
faluco@242
   154
 *
faluco@242
   155
 * @param client		Player index.
faluco@242
   156
 * @param name			Buffer to store the client's ip address.
faluco@242
   157
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@257
   158
 * @return			True on success, false otherwise.
faluco@258
   159
 * @error			If the client is not connected an error will be thrown.
faluco@242
   160
 */
dvander@257
   161
native bool:GetClientIP(client, String:ip[], maxlen);
faluco@242
   162
faluco@242
   163
/**
dvander@250
   164
 * Retrieves a client's authentication string (SteamID).
faluco@242
   165
 *
faluco@242
   166
 * @param client		Player index.
faluco@242
   167
 * @param auth			Buffer to store the client's auth string.
faluco@242
   168
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@257
   169
 * @return			True on success, false otherwise.
faluco@258
   170
 * @error			If the client is not connected an error will be thrown.
faluco@242
   171
 */
dvander@257
   172
native bool:GetClientAuthString(client, String:auth[], maxlen);
faluco@242
   173
faluco@242
   174
/**
faluco@242
   175
 * Returns if a certain player is connected.
faluco@242
   176
 *
faluco@242
   177
 * @param client		Player index.
faluco@242
   178
 * @return				True if player is connected to the server, false otherwise.
faluco@242
   179
 */
faluco@242
   180
native bool:IsPlayerConnected(client);
faluco@242
   181
faluco@242
   182
/**
faluco@242
   183
 * Returns if a certain player has entered the game.
faluco@242
   184
 *
faluco@242
   185
 * @param client		Player index.
faluco@242
   186
 * @return				True if player has entered the game, false otherwise.
faluco@242
   187
 */
faluco@242
   188
native bool:IsPlayerInGame(client);
faluco@242
   189
faluco@242
   190
/**
faluco@242
   191
 * Returns if a certain player has been authenticated.
faluco@242
   192
 *
faluco@242
   193
 * @param client		Player index.
faluco@242
   194
 * @return				True if player has been authenticated, false otherwise.
faluco@242
   195
 */
faluco@242
   196
native bool:IsPlayerAuthorized(client);
faluco@242
   197
faluco@242
   198
/**
faluco@242
   199
 * Returns if a certain player is a fake client.
faluco@242
   200
 *
faluco@242
   201
 * @param client		Player index.
faluco@242
   202
 * @return				True if player is a fake client, false otherwise.
faluco@242
   203
 */
faluco@242
   204
native bool:IsPlayerFakeClient(client);