plugins/basefuncommands.sp
author Scott Ehlert <ds@alliedmods.net>
Wed Aug 15 06:19:30 2007 +0000 (2007-08-15)
changeset 1330 ab94316bb52b
parent 1280 13c62962a9ef
child 1378 115ba755bcdf
permissions -rw-r--r--
Updated license headers on virtually all files with extremely minor changes in the name of some sort of strange consistency.
All plugin and include file headers also have been changed to say about GPL3 instead of GPL2.

(This day shall henceforth be known as the Eighty Column Massacre of '07)
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);
teame06@1214
    98
	LogMessage("\"%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);
ferret99gt@1194
   143
	LogMessage("\"%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);
ferret99gt@1194
   187
	LogMessage("\"%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);
ferret99gt@1194
   219
	LogMessage("\"%L\" slayed \"%L\"", client, target);
ferret99gt@1194
   220
	ForcePlayerSuicide(target);
teame06@1212
   221
teame06@1212
   222
	return Plugin_Handled;
ds@1268
   223
}