Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

плагин weaponmenu не работает частично

Статус пользователя 3ple
сообщение 21.9.2012, 13:55
Сообщение #1
Стаж: 13 лет

Сообщений: 74
Благодарностей: 7
Полезность: 8

Доброго времени суток. Сделал плагин weaponmenu, оружия: ak47, m4a1, awp, famas, galil. Все работает нормально, но с awp и famas проблемы, если у тебя уже есть оружие, то famas/awp не берется. Помогите.
Исходник
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#pragma tabsize 0


#define PLUGIN "WeaponMenu"
#define VERSION "0.3"
#define AUTHOR "KsV"


public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say AWP","give_AWP")
    register_clcmd("say AK","give_AK")
   register_clcmd("say M4A1","give_M4A1")
   register_clcmd("say FAMAS","give_FAMAS")
   register_clcmd("say GALIL","give_GALIL")
   register_clcmd("say strip","un_weapon")
   register_clcmd("weapon", "my_menu")
    
}

public un_weapon(id){

    //Получение id оружия
    new pl_weapon = get_user_weapon(id)

    new weapon_name[24]
    //Получение названия оружия
    get_weaponname(pl_weapon,weapon_name,24)
                
    //Вызов функции
    ham_strip_weapon(id,weapon_name)
    
}

stock ham_strip_weapon(id,weapon[])
{
     if(!equal(weapon,"weapon_",7)) return 0

    new wId = get_weaponid(weapon)
    if(!wId) return 0

    new wEnt
    while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
    if(!wEnt) return 0

    if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)

    if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
    ExecuteHamB(Ham_Item_Kill,wEnt);

    set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))
    
    return 1
}

public give_AWP(id){
      if(cs_get_user_hasprim(id))
{
        client_cmd(id,"say strip");
}
    ham_give_weapon(id,"weapon_awp")
   ham_give_weapon(id,"weapon_awp")
   ham_give_weapon(id,"weapon_awp")
   ham_give_weapon(id,"weapon_awp")
    
}

public give_AK(id){
        if(cs_get_user_hasprim(id))
{
        client_cmd(id,"say strip");
}
    ham_give_weapon(id,"weapon_ak47")
   ham_give_weapon(id,"weapon_ak47")
   ham_give_weapon(id,"weapon_ak47")
   ham_give_weapon(id,"weapon_ak47")
    
}

public give_M4A1(id){
        if(cs_get_user_hasprim(id))
{
        client_cmd(id,"say strip");
}
    ham_give_weapon(id,"weapon_m4a1")
   ham_give_weapon(id,"weapon_m4a1")
   ham_give_weapon(id,"weapon_m4a1")
   ham_give_weapon(id,"weapon_m4a1")
    
}

public give_FAMAS(id){
        if(cs_get_user_hasprim(id))
{
        client_cmd(id,"say strip");
}
    ham_give_weapon(id,"weapon_famas")
   ham_give_weapon(id,"weapon_famas")
   ham_give_weapon(id,"weapon_famas")
   ham_give_weapon(id,"weapon_famas")
    
}

public give_GALIL(id){
        if(cs_get_user_hasprim(id))
{
        client_cmd(id,"say strip");
}
    ham_give_weapon(id,"weapon_galil")
   ham_give_weapon(id,"weapon_galil")
   ham_give_weapon(id,"weapon_galil")
   ham_give_weapon(id,"weapon_galil")
    
}

public my_menu(id)
{
    new i_Menu = menu_create("\rОружейка:", "server_menu")
//Пункты меню,номера функций, доступ
    menu_additem(i_Menu, "\y Взять \r[\yAK47\r]", "1", 0);
   menu_additem(i_Menu, "\w Взять \r[\wM4A1\r]", "2", 0);
   menu_additem(i_Menu, "\y Взять \r[\yAWP\r]", "3", 0);
    menu_additem(i_Menu, "\w Взять \r[\wFAMAS\r]", "4", 0);
    menu_additem(i_Menu, "\y Взять \r[\yGALIL\r]", "5", 0);

   menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее");
    menu_setprop(i_Menu, MPROP_BACKNAME, "Назад");
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");

    menu_display(id, i_Menu, 0)

    return PLUGIN_HANDLED

}
public server_menu(id, menu, item)
{

    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback

    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

    new i_Key = str_to_num(s_Data)
    switch(i_Key)
    {
        

case 1: client_cmd(id, "say ak")
case 2: client_cmd(id, "say m4a1")
case 3: client_cmd(id, "say awp")
case 4: client_cmd(id, "say famas")
case 5: client_cmd(id, "say galil")

    }
    menu_destroy(menu);
    return PLUGIN_HANDLED

}
stock ham_give_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0

    new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
    if(!pev_valid(wEnt)) return 0

     set_pev(wEnt,pev_spawnflags,SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn,wEnt)
    
    if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
    {
        if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
        return 0
    }

    ExecuteHamB(Ham_Item_AttachToPlayer,wEnt,id)
    return 1
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: