#include <sourcemod>
#include <sdktools>
#pragma semicolon 1
#define MAX_WEAPONS 27
public Plugin:myinfo = {
name = "Give Weapon",
author = "Kiske",
description = "Give a weapon to a player from a command",
version = "1.0.1",
url = "http://www.sourcemod.net/"
};
new const String:g_weapons[MAX_WEAPONS][] = {
"weapon_ak47", "weapon_aug", "weapon_awp", "weapon_deagle", "weapon_elite", "weapon_famas", "weapon_fiveseven", "weapon_flashbang",
"weapon_g3sg1", "weapon_galil", "weapon_glock", "weapon_hegrenade", "weapon_m249", "weapon_m4a1",
"weapon_mac10", "weapon_tmp", "weapon_mp5navy", "weapon_p228", "weapon_p90", "weapon_sg550",
"weapon_sg552", "weapon_smokegrenade", "weapon_scout", "weapon_ump45", "weapon_usp", "weapon_m3",
"weapon_xm1014"
};
public OnPluginStart()
{
RegAdminCmd("sm_weapons", smWeapon, ADMFLAG_BAN, "- <target> <weaponname>");
RegAdminCmd("sm_weaponlist", smWeaponList, ADMFLAG_BAN, "- list of the weapon names");
}
public Action:smWeapon(id, args)
{
if(args < 2)
{
ReplyToCommand(id, "[SM] Usage: sm_weapons <name | #userid> <weaponname>");
return Plugin_Handled;
}
decl String:sArg[256];
decl String:sTempArg[32];
decl String:sWeaponName[32];
decl String:sWeaponNameTemp[32];
decl iL;
decl iNL;
GetCmdArgString(sArg, sizeof(sArg));
iL = BreakString(sArg, sTempArg, sizeof(sTempArg));
if((iNL = BreakString(sArg[iL], sWeaponName, sizeof(sWeaponName))) != -1)
iL += iNL;
new i;
new iValid = 0;
if(StrContains(sWeaponName, "weapon_") == -1)
{
FormatEx(sWeaponNameTemp, 31, "weapon_");
StrCat(sWeaponNameTemp, 31, sWeaponName);
strcopy(sWeaponName, 31, sWeaponNameTemp);
}
for(i = 0; i < MAX_WEAPONS; ++i)
{
if(StrEqual(sWeaponName, g_weapons[i]))
{
iValid = 1;
break;
}
}
if(!iValid)
{
ReplyToCommand(id, "[SM] The weaponname (%s) isn't valid", sWeaponName);
return Plugin_Handled;
}
decl String:sTargetName[MAX_TARGET_LENGTH];
decl sTargetList[1];
decl bool:bTN_IsML;
new iTarget = -1;
if(ProcessTargetString(sTempArg, id, sTargetList, 1, COMMAND_FILTER_ALIVE|COMMAND_FILTER_NO_MULTI, sTargetName, sizeof(sTargetName), bTN_IsML) > 0)
iTarget = sTargetList[0];
if(IsFakeClient(iTarget))
{
ReplyToCommand(id, "[SM] Bot isn't support");
}
if(iTarget != -1 && !IsFakeClient(iTarget))
{
new iWeapon1 = GetPlayerWeaponSlot(iTarget, 0);
new iWeapon2 = GetPlayerWeaponSlot(iTarget, 1);
new iWeapon3 = GetPlayerWeaponSlot(iTarget, 3);
decl String:buffer1[32];
decl String:buffer2[32];
decl String:buffer3[32];
if(iWeapon1 != -1)
{
GetEntityClassname(iWeapon1, buffer1, 32);
RemovePlayerItem(iTarget, iWeapon1);
}
if(iWeapon2 != -1)
{
GetEntityClassname(iWeapon2, buffer2, 32);
RemovePlayerItem(iTarget, iWeapon2);
}
if(iWeapon3 != -1)
{
GetEntityClassname(iWeapon3, buffer3, 32);
RemovePlayerItem(iTarget, iWeapon3);
}
GivePlayerItem(iTarget, sWeaponName);
if((iWeapon1 != -1) && !(StrEqual(buffer1, sWeaponName)))
{
GivePlayerItem(iTarget, buffer1);
}
if(iWeapon2 != -1 && !(StrEqual(buffer2, sWeaponName)))
{
GivePlayerItem(iTarget, buffer2);
}
if(iWeapon3 != -1 && !(StrEqual(buffer3, sWeaponName)))
{
GivePlayerItem(iTarget, buffer3);
}
}
return Plugin_Handled;
}
public Action:smWeaponList(id, args)
{
new i;
for(i = 0; i < MAX_WEAPONS; ++i)
ReplyToCommand(id, "%s", g_weapons[i]);
ReplyToCommand(id, "");
ReplyToCommand(id, "* No need to put weapon_ in the <weaponname>");
return Plugin_Handled;
}