Выдача оружия через консоль

snr93

Участник
Сообщения
84
Реакции
11
Добрый день. Не могу понять, почему не работает выдача оружия. Помогите пожалуйста

C-подобный:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define MAX_WEAPONS        29

public Plugin:myinfo = {
    name = "Test",
    author = "Test",
    description = "Test",
    version = "1.0",
    url = "http://www.sourcemod.net/"
};

new const String:g_weapons[MAX_WEAPONS][] = {
    "weapon_glock", "weapon_usp", "weapon_p228", "weapon_deagle", "weapon_elite", "weapon_fiveseven", "weapon_m3", "weapon_xm1014", "weapon_galil",
    "weapon_ak47", "weapon_scout", "weapon_sg552", "weapon_awp", "weapon_g3sg1", "weapon_famas", "weapon_m4a1", "weapon_aug", "weapon_sg550",
    "weapon_mac10", "weapon_tmp", "weapon_mp5navy", "weapon_ump45", "weapon_p90", "weapon_m249", "item_assaultsuit", "weapon_flashbang", "weapon_hegrenade", "weapon_smokegrenade",
    "item_defuser", "weapon_c4"
};

public OnPluginStart()
{
    RegConsoleCmd("sm_gw", smGW, "- <target> <weaponname>", FCVAR_NONE);
    RegConsoleCmd("sm_gwl", smGWL, "- list of the weapon names", FCVAR_NONE);
}

public Action:smGW(id, args)
{
    if(args < 2)
    {
        ReplyToCommand(id, "[SM] Usage: sm_weapon <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(iTarget != -1 && !IsFakeClient(iTarget))
        GivePlayerItem(iTarget, sWeaponName);
   
    return Plugin_Handled;
}

public Action:smGWL(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;
}

выдаваться должно обычному игроку, который вводит команду в консоль, без прав админа
 
Сверху Снизу