plugins/basefuncommands/slap.sp
author Matt Woodrow <pred@alliedmods.net>
Sat Oct 13 04:43:42 2007 +0000 (2007-10-13)
changeset 1536 fe2146e4975d
child 1592 ff10cfeaf5d2
permissions -rw-r--r--
Coded menus for most base plugins
pred@1536
     1
PerformSlap(client, target, damage)
pred@1536
     2
{
pred@1536
     3
	new String:name[32];
pred@1536
     4
pred@1536
     5
	GetClientName(target, name, sizeof(name));
pred@1536
     6
pred@1536
     7
	if (!IsPlayerAlive(target))
pred@1536
     8
	{
pred@1536
     9
		ReplyToCommand(client, "[SM] %t", "Cannot performed on dead", name);
pred@1536
    10
		return;
pred@1536
    11
	}	
pred@1536
    12
pred@1536
    13
	ShowActivity(client, "%t", "Slapped player", name);
pred@1536
    14
	LogAction(client, target, "\"%L\" slapped \"%L\" (damage \"%d\")", client, target, damage);
pred@1536
    15
	SlapPlayer(target, damage, true);
pred@1536
    16
}
pred@1536
    17
pred@1536
    18
DisplaySlapDamageMenu(client)
pred@1536
    19
{
pred@1536
    20
	new Handle:menu = CreateMenu(MenuHandler_SlapDamage);
pred@1536
    21
	
pred@1536
    22
	decl String:title[100];
pred@1536
    23
	Format(title, sizeof(title), "%T:", "Slap Damage", client);
pred@1536
    24
	SetMenuTitle(menu, title);
pred@1536
    25
	SetMenuExitBackButton(menu, true);
pred@1536
    26
	
pred@1536
    27
	AddMenuItem(menu, "0", "0");
pred@1536
    28
	AddMenuItem(menu, "1", "1");
pred@1536
    29
	AddMenuItem(menu, "5", "5");
pred@1536
    30
	AddMenuItem(menu, "10", "10");
pred@1536
    31
	AddMenuItem(menu, "20", "20");
pred@1536
    32
	AddMenuItem(menu, "50", "50");
pred@1536
    33
	AddMenuItem(menu, "99", "99");
pred@1536
    34
	
pred@1536
    35
	DisplayMenu(menu, client, MENU_TIME_FOREVER);
pred@1536
    36
}
pred@1536
    37
pred@1536
    38
DisplaySlapTargetMenu(client)
pred@1536
    39
{
pred@1536
    40
	new Handle:menu = CreateMenu(MenuHandler_Slap);
pred@1536
    41
	
pred@1536
    42
	decl String:title[100];
pred@1536
    43
	Format(title, sizeof(title), "%T:", "Slap Player", client);
pred@1536
    44
	SetMenuTitle(menu, title);
pred@1536
    45
	SetMenuExitBackButton(menu, true);
pred@1536
    46
	
pred@1536
    47
	AddTargetsToMenu(menu, client, false);
pred@1536
    48
	
pred@1536
    49
	DisplayMenu(menu, client, MENU_TIME_FOREVER);
pred@1536
    50
}
pred@1536
    51
pred@1536
    52
public AdminMenu_Slap(Handle:topmenu, 
pred@1536
    53
					  TopMenuAction:action,
pred@1536
    54
					  TopMenuObject:object_id,
pred@1536
    55
					  param,
pred@1536
    56
					  String:buffer[],
pred@1536
    57
					  maxlength)
pred@1536
    58
{
pred@1536
    59
	if (action == TopMenuAction_DisplayOption)
pred@1536
    60
	{
pred@1536
    61
		Format(buffer, maxlength, "%T", "Slap Player", param);
pred@1536
    62
	}
pred@1536
    63
	else if (action == TopMenuAction_SelectOption)
pred@1536
    64
	{
pred@1536
    65
		DisplaySlapDamageMenu(param);
pred@1536
    66
	}
pred@1536
    67
}
pred@1536
    68
pred@1536
    69
public MenuHandler_SlapDamage(Handle:menu, MenuAction:action, param1, param2)
pred@1536
    70
{
pred@1536
    71
	if (action == MenuAction_End)
pred@1536
    72
	{
pred@1536
    73
		CloseHandle(menu);
pred@1536
    74
	}
pred@1536
    75
	else if (action == MenuAction_Cancel)
pred@1536
    76
	{
pred@1536
    77
		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
pred@1536
    78
		{
pred@1536
    79
			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
pred@1536
    80
		}
pred@1536
    81
	}
pred@1536
    82
	else if (action == MenuAction_Select)
pred@1536
    83
	{
pred@1536
    84
		decl String:info[32];
pred@1536
    85
		
pred@1536
    86
		GetMenuItem(menu, param2, info, sizeof(info));
pred@1536
    87
		g_SlapDamage[param1] = StringToInt(info);
pred@1536
    88
		
pred@1536
    89
		DisplaySlapTargetMenu(param1);
pred@1536
    90
	}
pred@1536
    91
}
pred@1536
    92
pred@1536
    93
public MenuHandler_Slap(Handle:menu, MenuAction:action, param1, param2)
pred@1536
    94
{
pred@1536
    95
	if (action == MenuAction_End)
pred@1536
    96
	{
pred@1536
    97
		CloseHandle(menu);
pred@1536
    98
	}
pred@1536
    99
	else if (action == MenuAction_Cancel)
pred@1536
   100
	{
pred@1536
   101
		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
pred@1536
   102
		{
pred@1536
   103
			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
pred@1536
   104
		}
pred@1536
   105
	}
pred@1536
   106
	else if (action == MenuAction_Select)
pred@1536
   107
	{
pred@1536
   108
		decl String:info[32];
pred@1536
   109
		new userid, target;
pred@1536
   110
		
pred@1536
   111
		GetMenuItem(menu, param2, info, sizeof(info));
pred@1536
   112
		userid = StringToInt(info);
pred@1536
   113
pred@1536
   114
		if ((target = GetClientOfUserId(userid)) == 0)
pred@1536
   115
		{
pred@1536
   116
			PrintToChat(param1, "[SM] %t", "Player no longer available");
pred@1536
   117
		}
pred@1536
   118
		else if (!CanUserTarget(param1, target))
pred@1536
   119
		{
pred@1536
   120
			PrintToChat(param1, "[SM] %t", "Unable to target");
pred@1536
   121
		}
pred@1536
   122
		else
pred@1536
   123
		{
pred@1536
   124
			PerformSlap(param1, target, g_SlapDamage[param1]);
pred@1536
   125
		}
pred@1536
   126
		
pred@1536
   127
		/* Re-draw the menu if they're still valid */
pred@1536
   128
		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
pred@1536
   129
		{
pred@1536
   130
			DisplaySlapTargetMenu(param1);
pred@1536
   131
		}
pred@1536
   132
	}
pred@1536
   133
}
pred@1536
   134
pred@1536
   135
public Action:Command_Slap(client, args)
pred@1536
   136
{
pred@1536
   137
	if (args < 1)
pred@1536
   138
	{
pred@1536
   139
		ReplyToCommand(client, "[SM] Usage: sm_slap <#userid|name> [damage]");
pred@1536
   140
		return Plugin_Handled;
pred@1536
   141
	}
pred@1536
   142
pred@1536
   143
	decl String:arg[65];
pred@1536
   144
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   145
pred@1536
   146
	new target = FindTarget(client, arg);
pred@1536
   147
	if (target == -1)
pred@1536
   148
	{
pred@1536
   149
		return Plugin_Handled;
pred@1536
   150
	}
pred@1536
   151
	
pred@1536
   152
	new damage = 0;
pred@1536
   153
	if (args > 1)
pred@1536
   154
	{
pred@1536
   155
		decl String:arg2[20];
pred@1536
   156
		GetCmdArg(2, arg2, sizeof(arg2));
pred@1536
   157
		if (StringToIntEx(arg2, damage) == 0)
pred@1536
   158
		{
pred@1536
   159
			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
pred@1536
   160
			return Plugin_Handled;
pred@1536
   161
		}
pred@1536
   162
	}
pred@1536
   163
pred@1536
   164
	PerformSlap(client, target, damage);
pred@1536
   165
pred@1536
   166
	return Plugin_Handled;
pred@1536
   167
}