plugins/include/sourcemod.inc
author David Anderson <dvander@alliedmods.net>
Fri Feb 09 04:41:03 2007 +0000 (2007-02-09)
changeset 460 0be67c5566c6
parent 458 77520125ee67
child 475 bb11d7eaae0f
permissions -rw-r--r--
added and tested admin authentication. WOOT. only steam-based works for now.
dvander@429
     1
/**
dvander@429
     2
 * ===============================================================
dvander@429
     3
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@429
     4
 * ===============================================================
dvander@429
     5
 *
dvander@429
     6
 *  This file is part of the SourceMod/SourcePawn SDK.  This file may only be used 
dvander@429
     7
 * or modified under the Terms and Conditions of its License Agreement, which is found 
dvander@429
     8
 * in LICENSE.txt.  The Terms and Conditions for making SourceMod extensions/plugins 
dvander@429
     9
 * may change at any time.  To view the latest information, see:
dvander@429
    10
 *   http://www.sourcemod.net/license.php
dvander@429
    11
 *
dvander@429
    12
 * Version: $Id: sourcemod.inc 432 2007-02-02 22:47:14Z damagedsoul $
dvander@429
    13
 */
dvander@429
    14
dvander@429
    15
#if defined _sourcemod_included
dvander@429
    16
 #endinput
dvander@429
    17
#endif
dvander@429
    18
#define _sourcemod_included
dvander@429
    19
dvander@429
    20
struct Plugin
dvander@429
    21
{
dvander@429
    22
   const String:name[],			/* Plugin Name */
dvander@429
    23
   const String:description[],		/* Plugin Description */
dvander@429
    24
   const String:author[],		/* Plugin Author */
dvander@429
    25
   const String:version[],		/* Plugin Version */
dvander@429
    26
   const String:url[],			/* Plugin URL */
dvander@429
    27
};
dvander@429
    28
dvander@429
    29
#include <core>
dvander@429
    30
#include <float>
dvander@429
    31
#include <handles>
dvander@429
    32
#include <string>
dvander@429
    33
#include <admin>
dvander@429
    34
#include <files>
ds@457
    35
#include <console>
dvander@429
    36
dvander@429
    37
/**
dvander@429
    38
 * Declare this as a struct in your plugin to expose its information.
dvander@429
    39
 * Example:
dvander@429
    40
 *
dvander@429
    41
 * public Plugin:myinfo =
dvander@429
    42
 * {
dvander@429
    43
 *    name = "My Plugin",
dvander@429
    44
 *    //etc
dvander@429
    45
 * };
dvander@429
    46
 */
dvander@429
    47
public Plugin:myinfo;
dvander@429
    48
 
dvander@429
    49
/**
dvander@429
    50
 * Called when the plugin is fully initialized and all known external references are resolved.
dvander@429
    51
 * This is called even if the plugin type is "private."
dvander@429
    52
 * NOTE: Errors in this function will cause the plugin to stop running.
dvander@429
    53
 *
dvander@429
    54
 * @noreturn
dvander@429
    55
 */
dvander@429
    56
forward OnPluginStart(Handle:myself);
dvander@429
    57
 
dvander@429
    58
/**
dvander@429
    59
 *   Called before OnPluginStart, in case the plugin wants to check for load failure.
dvander@429
    60
 * This is called even if the plugin type is "private."  Any natives from modules are 
dvander@429
    61
 * not available at this point.  Thus, this forward should only be used for explicit 
dvander@429
    62
 * pre-emptive things, such as adding dynamic natives, or setting certain types of load filters.
dvander@429
    63
 * 
dvander@429
    64
 * NOTE: It is not safe to call externally resolved natives until OnPluginStart().
dvander@429
    65
 * NOTE: Any sort of RTE in this function will cause the plugin to fail loading.
dvander@429
    66
 *
dvander@429
    67
 * @param myself	Handle to the plugin.
dvander@429
    68
 * @param late		Whether or not the plugin was loaded "late" (after map load).
dvander@429
    69
 * @param error		Error message buffer in case load failed.
dvander@429
    70
 * @param err_max	Maximum number of characters for error message buffer.
dvander@429
    71
 * @return			True if load success, false otherwise.
dvander@429
    72
 */
dvander@429
    73
forward bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max);
dvander@429
    74
dvander@429
    75
/**
dvander@429
    76
 * Called when the plugin is about to be unloaded.
dvander@429
    77
 *
dvander@429
    78
 * @noreturn
dvander@429
    79
 */
dvander@429
    80
forward OnPluginEnd();
dvander@429
    81
dvander@429
    82
/**
dvander@429
    83
 * Called when the plugin's pause status is changing.
dvander@429
    84
 *
dvander@429
    85
 * @param pause		True if the plugin is being paused, false otherwise.
dvander@429
    86
 * @noreturn
dvander@429
    87
 */
dvander@429
    88
forward OnPluginPauseChange(bool:pause);
dvander@429
    89
dvander@429
    90
/**
dvander@429
    91
 * Called on client connection.
dvander@429
    92
 *
dvander@429
    93
 * @param client		Player index.
dvander@429
    94
 * @param rejectmsg		Buffer to store the rejection message when the connection is refused.
dvander@429
    95
 * @param maxlen		Maximum number of characters for rejection buffer.
dvander@429
    96
 * @return				True to validate client's connection, false to refuse it.
dvander@429
    97
 */
dvander@429
    98
forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);
dvander@429
    99
dvander@429
   100
/**
dvander@429
   101
 * Called when a client is entering to the game.
dvander@429
   102
 *
dvander@429
   103
 * @param client		Player index.
dvander@429
   104
 * @noreturn
dvander@429
   105
 */
dvander@429
   106
forward OnClientPutInServer(client);
dvander@429
   107
dvander@429
   108
/**
dvander@429
   109
 * Called when a client is disconnecting from the server.
dvander@429
   110
 *
dvander@429
   111
 * @param client		Player index.
dvander@429
   112
 * @noreturn
dvander@429
   113
 */
dvander@429
   114
forward OnClientDisconnect(client);
dvander@429
   115
dvander@429
   116
/**
dvander@429
   117
 * Called when a client is disconnected from the server.
dvander@429
   118
 *
dvander@429
   119
 * @param client		Player index.
dvander@429
   120
 * @noreturn
dvander@429
   121
 */
dvander@429
   122
forward OnClientDisconnect_Post(client);
dvander@429
   123
dvander@429
   124
/**
dvander@429
   125
 * Called when a client is sending a command.
dvander@429
   126
 *
dvander@429
   127
 * @param client		Player index.
dvander@429
   128
 * @noreturn
dvander@429
   129
 */
dvander@429
   130
forward OnClientCommand(client);
dvander@429
   131
dvander@429
   132
/**
dvander@429
   133
 * Called whenever the client's settings are changed.
dvander@429
   134
 *
dvander@429
   135
 * @param client		Player index.
dvander@429
   136
 * @noreturn
dvander@429
   137
 */
dvander@429
   138
forward OnClientSettingsChanged(client);
dvander@429
   139
dvander@429
   140
/**
dvander@448
   141
 * Called when a client receives a Steam ID.
dvander@448
   142
 * @note This is called by bots, but the ID will be "BOT"
dvander@448
   143
 *
dvander@448
   144
 * @param client		Player index.
dvander@448
   145
 * @param auth			Player auth string.
dvander@448
   146
 */
dvander@448
   147
forward OnClientAuthorized(client, const String:auth[]);
dvander@448
   148
dvander@448
   149
/**
dvander@429
   150
 * Returns the maximum number of clients allowed on the server.
dvander@429
   151
 *
dvander@429
   152
 * @return				Maximum number of clients allowed.
dvander@429
   153
 */
dvander@429
   154
native GetMaxClients();
dvander@429
   155
dvander@429
   156
/**
dvander@429
   157
 * Returns the client count put in the server.
dvander@429
   158
 *
dvander@429
   159
 * @param inGameOnly	If false connecting players are also counted.
dvander@429
   160
 * @return				Client count in the server.
dvander@429
   161
 */
dvander@429
   162
native GetClientCount(bool:inGameOnly=true);
dvander@429
   163
dvander@429
   164
/**
dvander@429
   165
 * Returns the client's name.
dvander@429
   166
 *
dvander@460
   167
 * @param client	Player index.
dvander@460
   168
 * @param name		Buffer to store the client's name.
dvander@460
   169
 * @param maxlen	Maximum length of string buffer (includes NULL terminator).
dvander@429
   170
 * @return			True on success, false otherwise.
dvander@429
   171
 * @error			If the client is not connected an error will be thrown.
dvander@429
   172
 */
dvander@429
   173
native bool:GetClientName(client, String:name[], maxlen);
dvander@429
   174
dvander@429
   175
/**
dvander@429
   176
 * Retrieves a client's IP address.
dvander@429
   177
 *
dvander@429
   178
 * @param client		Player index.
dvander@429
   179
 * @param name			Buffer to store the client's ip address.
dvander@429
   180
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@429
   181
 * @param remport		Remove client's port from the ip string (true by default).
dvander@460
   182
 * @return				True on success, false otherwise.
dvander@460
   183
 * @error				If the client is not connected or the index is invalid.
dvander@429
   184
 */
dvander@429
   185
native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
dvander@429
   186
dvander@429
   187
/**
dvander@429
   188
 * Retrieves a client's authentication string (SteamID).
dvander@429
   189
 *
dvander@429
   190
 * @param client		Player index.
dvander@429
   191
 * @param auth			Buffer to store the client's auth string.
dvander@429
   192
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@460
   193
 * @return				True on success, false otherwise.
dvander@460
   194
 * @error				If the client is not connected or the index is invalid.
dvander@429
   195
 */
dvander@429
   196
native bool:GetClientAuthString(client, String:auth[], maxlen);
dvander@429
   197
dvander@429
   198
/**
dvander@460
   199
 * Retrieves a client's user id, which is an index incremented for every client
dvander@460
   200
 * that joins the server.
dvander@460
   201
 *
dvander@460
   202
 * @param client		Player index.
dvander@460
   203
 * @return				User id of the client.
dvander@460
   204
 * @error 				If the client is not connected or the index is invalid.
dvander@460
   205
 */
dvander@460
   206
native GetClientUserId(client);
dvander@460
   207
dvander@460
   208
/**
dvander@429
   209
 * Returns if a certain player is connected.
dvander@429
   210
 *
dvander@429
   211
 * @param client		Player index.
dvander@429
   212
 * @return				True if player is connected to the server, false otherwise.
dvander@429
   213
 */
dvander@429
   214
native bool:IsPlayerConnected(client);
dvander@429
   215
dvander@429
   216
/**
dvander@429
   217
 * Returns if a certain player has entered the game.
dvander@429
   218
 *
dvander@429
   219
 * @param client		Player index.
dvander@429
   220
 * @return				True if player has entered the game, false otherwise.
dvander@429
   221
 */
dvander@429
   222
native bool:IsPlayerInGame(client);
dvander@429
   223
dvander@429
   224
/**
dvander@429
   225
 * Returns if a certain player has been authenticated.
dvander@429
   226
 *
dvander@429
   227
 * @param client		Player index.
dvander@429
   228
 * @return				True if player has been authenticated, false otherwise.
dvander@429
   229
 */
dvander@429
   230
native bool:IsPlayerAuthorized(client);
dvander@429
   231
dvander@429
   232
/**
dvander@429
   233
 * Returns if a certain player is a fake client.
dvander@429
   234
 *
dvander@429
   235
 * @param client		Player index.
dvander@429
   236
 * @return				True if player is a fake client, false otherwise.
dvander@429
   237
 */
dvander@429
   238
native bool:IsPlayerFakeClient(client);
dvander@429
   239
dvander@429
   240
/**
dvander@456
   241
 * Retrieves values from client replicated keys.
dvander@456
   242
 *
dvander@456
   243
 * @param client		Player's index.
dvander@456
   244
 * @param key			Key string.
dvander@456
   245
 * @param value			Buffer to store value.
dvander@456
   246
 * @param maxlen		Maximum length of valve (UTF-8 safe).
dvander@456
   247
 * @return 				True on success, false otherwise.
dvander@458
   248
 * @error				Invalid client index, or client not connected.
dvander@456
   249
 */
dvander@456
   250
native bool:GetClientInfo(client, const String:key[], String:value[], maxlen);
dvander@456
   251
dvander@456
   252
/**
dvander@458
   253
 * Sets a client's AdminId.  
dvander@458
   254
 *
dvander@458
   255
 * @param client		Player's index.
dvander@458
   256
 * @param id			AdminId to set.  INVALID_ADMIN_ID removes admin permissions.
dvander@458
   257
 * @param temp			True if the id should be freed on disconnect.
dvander@458
   258
 * @noreturn
dvander@458
   259
 * @error				Invalid client index, client not connected, or bogus AdminId.
dvander@458
   260
 */
dvander@458
   261
native SetUserAdmin(client, AdminId:id, bool:temp=false);
dvander@458
   262
dvander@458
   263
/**
dvander@458
   264
 * Retrieves a client's AdminId.
dvander@458
   265
 *
dvander@458
   266
 * @param client		Player's index.
dvander@458
   267
 * @return				AdminId of the client, or INVALID_ADMIN_ID if none.
dvander@458
   268
 * @error				Invalid client index, or client not connected.
dvander@458
   269
 */
dvander@458
   270
native AdminId:GetUserAdmin(client);
dvander@458
   271
dvander@458
   272
/**
dvander@458
   273
 * Sets access flags on a client.  If the client is not an admin,
dvander@458
   274
 * a temporary, anonymous AdminId is given.
dvander@458
   275
 *
dvander@458
   276
 * @param client		Player's index.
dvander@458
   277
 * @param ...			Flags to set on the client.
dvander@458
   278
 * @noreturn
dvander@458
   279
 * @error				Invalid client index, or client not connected.
dvander@458
   280
 */
dvander@458
   281
native AddUserFlags(client, {AdminFlag}:...);
dvander@458
   282
dvander@458
   283
/**
dvander@458
   284
 * Removes flags from a client.  If the client is not an admin,
dvander@458
   285
 * this has no effect.
dvander@458
   286
 *
dvander@458
   287
 * @param client		Player's index.
dvander@458
   288
 * @param ...			Flags to remove from the client.
dvander@458
   289
 * @noreturn
dvander@458
   290
 * @error				Invalid client index, or client not connected.
dvander@458
   291
 */
dvander@458
   292
native RemoveUserFlags(client, {AdminFlag}:...);
dvander@458
   293
dvander@458
   294
/** 
dvander@458
   295
 * Sets access flags on a client using bits instead of flags.  If the
dvander@458
   296
 * client is not an admin, and flags not 0, a temporary, anonymous AdminId is given.
dvander@458
   297
 *
dvander@458
   298
 * @param client		Player's index.
dvander@458
   299
 * @param flags			Bitstring of flags to set on client.
dvander@458
   300
 * @noreturn
dvander@458
   301
 */
dvander@458
   302
native SetUserFlagBits(client, flags);
dvander@458
   303
dvander@458
   304
/**
dvander@458
   305
 * Returns client access flags.  If the client is not an admin,
dvander@458
   306
 * the result is always 0.
dvander@458
   307
 * 
dvander@458
   308
 * @param client		Player's index.
dvander@458
   309
 * @return				Flags
dvander@458
   310
 * @error				Invalid client index, or client not connected.
dvander@458
   311
 */
dvander@458
   312
native GetUserFlagBits(client);
dvander@458
   313
dvander@458
   314
/**
dvander@429
   315
 * Sends a message to the server console.
dvander@429
   316
 *
dvander@429
   317
 * @param format		Formatting rules.
dvander@429
   318
 * @param ...			Variable number of format parameters.
dvander@429
   319
 * @noreturn
dvander@429
   320
 */
dvander@429
   321
native PrintToServer(const String:format[], {Handle,Float,String,_}:...);
dvander@429
   322
dvander@429
   323
/**
dvander@429
   324
 * Sends a message to a client's console.
dvander@429
   325
 *
dvander@429
   326
 * @param client		Player index.
dvander@429
   327
 * @param format		Formatting rules.
dvander@429
   328
 * @param ...			Variable number of format parameters.
dvander@429
   329
 * @noreturn
dvander@429
   330
 * @error			If the client is not connected an error will be thrown.
dvander@429
   331
 */
dvander@429
   332
native PrintToConsole(client, const String:format[], {Handle,Float,String,_}:...);
dvander@429
   333
dvander@429
   334
/**
dvander@429
   335
 * Logs a generic message to the HL2 logs.
dvander@429
   336
 *
dvander@429
   337
 * @param format	String format.
dvander@429
   338
 * @param ...		Format arguments.
dvander@429
   339
 * @noreturn
dvander@429
   340
 */
dvander@429
   341
native LogToGame(const String:format[], {Handle,Float,String,_}:...);
dvander@429
   342
dvander@429
   343
/**
dvander@429
   344
 * Logs a plugin message to the SourceMod logs.
dvander@429
   345
 *
dvander@429
   346
 * @param format	String format.
dvander@429
   347
 * @param ...		Format arguments.
dvander@429
   348
 * @noreturn
dvander@429
   349
 */
dvander@429
   350
native LogMessage(const String:format[], {Handle,Float,String,_}:...);
dvander@429
   351
dvander@429
   352
/**
dvander@429
   353
 * Logs a plugin error message to the SourceMod logs.
dvander@429
   354
 *
dvander@429
   355
 * @param format	String format.
dvander@429
   356
 * @param ...		Format arguments.
dvander@429
   357
 * @noreturn
dvander@429
   358
 */
dvander@460
   359
native LogError(const String:format[], {Handle,Float,String,_}:...);
dvander@460
   360
dvander@460
   361
#include <helpers>