plugins/basefuncommands.sp
author David Anderson <dvander@alliedmods.net>
Mon Aug 27 02:00:37 2007 +0000 (2007-08-27)
changeset 1378 115ba755bcdf
parent 1330 ab94316bb52b
child 1418 7404bb003948
permissions -rw-r--r--
- implemented amb855 - LogAction()
- changed base plugins to use LogAction() where appropriate
ferret99gt@1194
     1
/**
ds@1330
     2
 * vim: set ts=4 :
ds@1330
     3
 * =============================================================================
ds@1330
     4
 * SourceMod Basic Fun Commands Plugin
ferret99gt@1194
     5
 * Implements basic punishment commands.
ds@1330
     6
 *
ds@1330
     7
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
ds@1330
     8
 * =============================================================================
ferret99gt@1194
     9
 *
ds@1330
    10
 * This program is free software; you can redistribute it and/or modify it under
ds@1330
    11
 * the terms of the GNU General Public License, version 3.0, as published by the
ds@1330
    12
 * Free Software Foundation.
ds@1330
    13
 * 
ds@1330
    14
 * This program is distributed in the hope that it will be useful, but WITHOUT
ds@1330
    15
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ds@1330
    16
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ds@1330
    17
 * details.
ferret99gt@1194
    18
 *
ds@1330
    19
 * You should have received a copy of the GNU General Public License along with
ds@1330
    20
 * this program.  If not, see <http://www.gnu.org/licenses/>.
teame06@1212
    21
 *
ds@1330
    22
 * As a special exception, AlliedModders LLC gives you permission to link the
ds@1330
    23
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ds@1330
    24
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ds@1330
    25
 * by the Valve Corporation.  You must obey the GNU General Public License in
ds@1330
    26
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ds@1330
    27
 * this exception to all derivative works.  AlliedModders LLC defines further
ds@1330
    28
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ds@1330
    29
 * or <http://www.sourcemod.net/license.php>.
ferret99gt@1194
    30
 *
ferret99gt@1194
    31
 * Version: $Id$
ferret99gt@1194
    32
 */
ferret99gt@1194
    33
ferret99gt@1194
    34
#pragma semicolon 1
ferret99gt@1194
    35
ferret99gt@1194
    36
#include <sourcemod>
ferret99gt@1194
    37
#include <sdktools>
ferret99gt@1194
    38
teame06@1212
    39
public Plugin:myinfo =
ferret99gt@1194
    40
{
ferret99gt@1194
    41
	name = "Basic Fun Commands",
ferret99gt@1194
    42
	author = "AlliedModders LLC",
ferret99gt@1194
    43
	description = "Basic Fun Commands",
ferret99gt@1194
    44
	version = SOURCEMOD_VERSION,
ferret99gt@1194
    45
	url = "http://www.sourcemod.net/"
ferret99gt@1194
    46
};
ferret99gt@1194
    47
ferret99gt@1194
    48
public OnPluginStart()
ferret99gt@1194
    49
{
ferret99gt@1194
    50
	LoadTranslations("common.phrases");
ferret99gt@1194
    51
ferret99gt@1194
    52
	RegAdminCmd("sm_burn", Command_Burn, ADMFLAG_SLAY, "sm_burn <#userid|name> [time]");
ferret99gt@1194
    53
	RegAdminCmd("sm_slap", Command_Slap, ADMFLAG_SLAY, "sm_slap <#userid|name> [damage]");
ferret99gt@1194
    54
	RegAdminCmd("sm_slay", Command_Slay, ADMFLAG_SLAY, "sm_slay <#userid|name>");
teame06@1214
    55
	RegAdminCmd("sm_play", Command_Play, ADMFLAG_GENERIC, "sm_play <#userid|name> <filename>");
teame06@1212
    56
}
teame06@1212
    57
teame06@1212
    58
public Action:Command_Play(client, args)
teame06@1212
    59
{
teame06@1241
    60
	if (args < 2)
teame06@1212
    61
	{
teame06@1214
    62
		ReplyToCommand(client, "[SM] Usage: sm_play <#userid|name> <filename>");
teame06@1212
    63
	}
teame06@1212
    64
teame06@1214
    65
	new String:Arguments[PLATFORM_MAX_PATH + 65];
teame06@1214
    66
	GetCmdArgString(Arguments, sizeof(Arguments));
teame06@1214
    67
teame06@1214
    68
 	decl String:Arg[65];
teame06@1214
    69
	new len = BreakString(Arguments, Arg, sizeof(Arg));
teame06@1212
    70
teame06@1212
    71
	new target = FindTarget(client, Arg);
teame06@1212
    72
	if (target == -1)
teame06@1212
    73
	{
teame06@1212
    74
		return Plugin_Handled;
teame06@1212
    75
	}
teame06@1212
    76
teame06@1214
    77
	/* Make sure it does not go out of bound by doing "sm_play user  "*/
teame06@1241
    78
	if (len == -1)
teame06@1214
    79
	{
teame06@1214
    80
		ReplyToCommand(client, "[SM] Usage: sm_play <#userid|name> <filename>");
teame06@1214
    81
		return Plugin_Handled;
teame06@1214
    82
	}
teame06@1212
    83
teame06@1214
    84
	/* Incase they put quotes and white spaces after the quotes */
teame06@1241
    85
	if (Arguments[len] == '"')
teame06@1214
    86
	{
teame06@1214
    87
		len++;
teame06@1214
    88
		new FileLen = TrimString(Arguments[len]) + len;
teame06@1214
    89
teame06@1241
    90
		if (Arguments[FileLen - 1] == '"')
teame06@1214
    91
		{
teame06@1214
    92
			Arguments[FileLen - 1] = '\0';
teame06@1214
    93
		}
teame06@1214
    94
	}
teame06@1214
    95
teame06@1214
    96
	GetClientName(target, Arg, sizeof(Arg));
teame06@1212
    97
	ShowActivity(client, "%t", "Played Sound", Arg);
dvander@1378
    98
	LogAction(client, target, "\"%L\" played sound on \"%L\" (file \"%s\")", client, target, Arguments[len]);
teame06@1212
    99
teame06@1214
   100
	ClientCommand(target, "playgamesound \"%s\"", Arguments[len]);
teame06@1212
   101
teame06@1212
   102
	return Plugin_Handled;
ferret99gt@1194
   103
}
ferret99gt@1194
   104
ferret99gt@1194
   105
public Action:Command_Burn(client, args)
ferret99gt@1194
   106
{
ferret99gt@1194
   107
	if (args < 1)
ferret99gt@1194
   108
	{
ferret99gt@1194
   109
		ReplyToCommand(client, "[SM] Usage: sm_burn <#userid|name> [time]");
ferret99gt@1194
   110
		return Plugin_Handled;
teame06@1212
   111
	}
teame06@1212
   112
ferret99gt@1194
   113
	decl String:arg[65];
teame06@1212
   114
	GetCmdArg(1, arg, sizeof(arg));
teame06@1212
   115
teame06@1241
   116
	new target = FindTarget(client, arg);
teame06@1241
   117
	if (target == -1)
teame06@1241
   118
	{
teame06@1241
   119
		return Plugin_Handled;
teame06@1241
   120
	}
teame06@1241
   121
teame06@1241
   122
	GetClientName(target, arg, sizeof(arg));
teame06@1241
   123
	
teame06@1241
   124
	if (!IsPlayerAlive(target))
teame06@1241
   125
	{
teame06@1241
   126
		ReplyToCommand(client, "[SM] %t", "Cannot performed on dead", arg);
teame06@1241
   127
		return Plugin_Handled;
teame06@1241
   128
	}
teame06@1241
   129
	
ferret99gt@1194
   130
	new Float:seconds = 20.0;
ferret99gt@1194
   131
	if (args > 1)
ferret99gt@1194
   132
	{
ferret99gt@1194
   133
		decl String:time[20];
ferret99gt@1194
   134
		GetCmdArg(2, time, sizeof(time));
ferret99gt@1194
   135
		if (StringToFloatEx(time, seconds) == 0)
ferret99gt@1194
   136
		{
ferret99gt@1194
   137
			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
ferret99gt@1194
   138
			return Plugin_Handled;
teame06@1212
   139
		}
ferret99gt@1194
   140
	}
teame06@1212
   141
ferret99gt@1194
   142
	ShowActivity(client, "%t", "Ignited player", arg);
dvander@1378
   143
	LogAction(client, target, "\"%L\" ignited \"%L\" (seconds \"%f\")", client, target, seconds);
ferret99gt@1194
   144
	IgniteEntity(target, seconds);
teame06@1212
   145
teame06@1212
   146
	return Plugin_Handled;
ferret99gt@1194
   147
}
ferret99gt@1194
   148
ferret99gt@1194
   149
public Action:Command_Slap(client, args)
ferret99gt@1194
   150
{
ferret99gt@1194
   151
	if (args < 1)
ferret99gt@1194
   152
	{
ferret99gt@1194
   153
		ReplyToCommand(client, "[SM] Usage: sm_slap <#userid|name> [damage]");
ferret99gt@1194
   154
		return Plugin_Handled;
teame06@1212
   155
	}
teame06@1212
   156
ferret99gt@1194
   157
	decl String:arg[65];
teame06@1212
   158
	GetCmdArg(1, arg, sizeof(arg));
teame06@1212
   159
teame06@1241
   160
	new target = FindTarget(client, arg);
teame06@1241
   161
	if (target == -1)
teame06@1241
   162
	{
teame06@1241
   163
		return Plugin_Handled;
teame06@1241
   164
	}
teame06@1241
   165
teame06@1241
   166
	GetClientName(target, arg, sizeof(arg));
teame06@1241
   167
teame06@1241
   168
	if (!IsPlayerAlive(target))
teame06@1241
   169
	{
teame06@1241
   170
		ReplyToCommand(client, "[SM] %t", "Cannot performed on dead", arg);
teame06@1241
   171
		return Plugin_Handled;
teame06@1241
   172
	}	
teame06@1241
   173
	
ferret99gt@1194
   174
	new damage = 5;
ferret99gt@1194
   175
	if (args > 1)
ferret99gt@1194
   176
	{
ferret99gt@1194
   177
		decl String:arg2[20];
ferret99gt@1194
   178
		GetCmdArg(2, arg2, sizeof(arg2));
ferret99gt@1194
   179
		if (StringToIntEx(arg2, damage) == 0)
ferret99gt@1194
   180
		{
ferret99gt@1194
   181
			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
ferret99gt@1194
   182
			return Plugin_Handled;
teame06@1212
   183
		}
ferret99gt@1194
   184
	}
teame06@1212
   185
ferret99gt@1194
   186
	ShowActivity(client, "%t", "Slapped player", arg);
dvander@1378
   187
	LogAction(client, target, "\"%L\" slapped \"%L\" (damage \"%d\")", client, target, damage);
ferret99gt@1194
   188
	SlapPlayer(target, damage, true);
teame06@1212
   189
teame06@1212
   190
	return Plugin_Handled;
ferret99gt@1194
   191
}
ferret99gt@1194
   192
ferret99gt@1194
   193
public Action:Command_Slay(client, args)
ferret99gt@1194
   194
{
ferret99gt@1194
   195
	if (args < 1)
ferret99gt@1194
   196
	{
ferret99gt@1194
   197
		ReplyToCommand(client, "[SM] Usage: sm_slay <#userid|name>");
ferret99gt@1194
   198
		return Plugin_Handled;
teame06@1212
   199
	}
teame06@1212
   200
ferret99gt@1194
   201
	decl String:arg[65];
teame06@1212
   202
	GetCmdArg(1, arg, sizeof(arg));
teame06@1212
   203
ferret99gt@1194
   204
	new target = FindTarget(client, arg);
ferret99gt@1194
   205
	if (target == -1)
ferret99gt@1194
   206
	{
ferret99gt@1194
   207
		return Plugin_Handled;
ferret99gt@1194
   208
	}
teame06@1212
   209
ferret99gt@1194
   210
	GetClientName(target, arg, sizeof(arg));
teame06@1212
   211
teame06@1241
   212
	if (!IsPlayerAlive(target))
teame06@1241
   213
	{
teame06@1241
   214
		ReplyToCommand(client, "[SM] %t", "Cannot performed on dead", arg);
teame06@1241
   215
		return Plugin_Handled;
teame06@1241
   216
	}	
teame06@1241
   217
ferret99gt@1194
   218
	ShowActivity(client, "%t", "Slayed player", arg);
dvander@1378
   219
	LogAction(client, target, "\"%L\" slayed \"%L\"", client, target);
ferret99gt@1194
   220
	ForcePlayerSuicide(target);
teame06@1212
   221
teame06@1212
   222
	return Plugin_Handled;
ds@1268
   223
}