Русское сообщество по скриптингу

knife mod

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

knife mod

Сообщение vlad1997450 » 07 фев 2019, 17:55

Всем привет. Такой банальный вопрос: как сделать, чтобы при активации опреденной модели ножа, сам нож доставался ещё раз, чтобы активировалась способность ножа, а не просто поменялся скин?
Код: Выделить всё
public knifemenu(idkey) {
    switch(
key
    {
        case 
0
        {
        if(
get_user_flags(id) & ADMIN_LEVEL_E){
        
SetKnife(id 4)
        
ChatColor(id"%s ^1Ты выбрал ^3Админ-нож"PREFIX)
        
effect_screen(id)
        }
        else
{
        
display_knife(id)
        return 
PLUGIN_HANDLED
}
        }
        case 
1:{
        
        
SetKnife(id 2)
        
ChatColor(id"%s ^1Ты выбрал нож со способностью: ^3Не слышно шагов"PREFIX)
        
effect_screen(id)
        }
        case 
2:{ 
        
SetKnife(id 3)
        
ChatColor(id"%s ^1Ты выбрал нож со способностью: ^3Скорость"PREFIX)
        
effect_screen(id)
        }
        case 
3:{ 
        
SetKnife(id 1)
        
ChatColor(id"%s ^1Ты выбрал нож со способностью: ^3Гравитация"PREFIX)
        
effect_screen(id)
        }
        case 
4:{ 
        
SetKnife(id 0)
        
ChatColor(id"%s ^1Ты выбрал нож со способностью: ^3Регенерация HP"PREFIX)
        
effect_screen(id)
        }
        case 
5:{ 
        
SetKnife(id 5)
        
ChatColor(id"%s ^1Ты выбрал нож со способностью: ^3Двойной урон"PREFIX)
        
effect_screen(id)
        }
        default:
        {
        
SetKnife(id 1)
        }
    }
    
SaveData(id)
    return 
PLUGIN_HANDLED


public 
SetKnife(id Knife) {
    
knife_model[id] = Knife
    
    
new ClipAmmoWeapon get_user_weapon(idClipAmmo
    if ( 
Weapon != CSW_KNIFE )
        return 
PLUGIN_HANDLED
    
    
new vModel[56],pModel[56]
    
    switch(
Knife)
    {
        case 
0: {
        
give_itemid"weapon_knife" );
        
format(vModel,55,"models/v_knife.mdl")
        }
        case 
1: {
        
give_itemid"weapon_knife" );
        
format(vModel,55,"models/just_guns/knife/v_fantom.mdl")
        
format(pModel,55,"models/just_guns/knife/p_fantom.mdl")
        }
        case 
2: {
        
give_itemid"weapon_knife" );
        
format(vModel,55,"models/just_guns/knife/v_tixon.mdl")
        
format(pModel,55,"models/just_guns/knife/p_tixon.mdl")
        }
        case 
3: {
        
give_itemid"weapon_knife" );
        
format(vModel,55,"models/just_guns/knife/v_dagger.mdl")
        
format(pModel,55,"models/just_guns/knife/p_dagger.mdl")
        }
        case 
4: {
        
give_itemid"weapon_knife" );
        
format(vModel,55,"models/just_guns/knife/v_adm_knife.mdl")
        
format(pModel,55,"models/just_guns/knife/p_adm_knife.mdl")
        }
        case 
5: {
        
give_itemid"weapon_knife" );
        
format(vModel,55,"models/just_guns/knife/v_light.mdl")
        
format(pModel,55,"models/just_guns/knife/p_light.mdl")
        }        
    } 
    
    
entity_set_string(idEV_SZ_viewmodelvModel)
    
entity_set_string(idEV_SZ_weaponmodelpModel)
    
    return 
PLUGIN_HANDLED;  
}
 
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: knife mod

Сообщение flymic24 » 07 фев 2019, 18:45

vlad1997450, После смены моделей нужно принудительно вызвать Ham_Item_Deploy для ножа
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: knife mod

Сообщение vlad1997450 » 07 фев 2019, 18:56

flymic24 писал(а):vlad1997450, После смены моделей нужно принудительно вызвать Ham_Item_Deploy для ножа

Можешь написать это в виде кода, пожалуйста?
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: knife mod

Сообщение flymic24 » 07 фев 2019, 20:53

Код: Выделить всё
new iItem get_pdata_cbase(id3735);
if(
iItem && get_pdata_int(iItem434) = CSW_KNIFE)    {
    
ExecuteHamB(Ham_Item_DeployiItem);
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: knife mod

Сообщение vlad1997450 » 07 фев 2019, 21:25

flymic24 писал(а):
Код: Выделить всё
new iItem = get_pdata_cbase(id, 373, 5);
if(
iItem && get_pdata_int(iItem, 43, 4) = CSW_KNIFE)    {
    ExecuteHamB(Ham_Item_Deploy, iItem);

Не компилируется :( Скорее всего я коряво вставил...
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: knife mod

Сообщение KOTOKU » 07 фев 2019, 22:23

include небось забыли
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: knife mod

Сообщение NightFury » 08 фев 2019, 01:07

give_item( id, "weapon_knife" );//wtf?
Запиши модели в глобалку и меня в деплое
New g_Knife[NUM][MODELV][MODELP][PLAYERS]
А то одни свичи с одинаковым кодом...

Добавлено спустя 2 минуты 36 секунд:
В меню где выбралась модель проверяешь что в руках, если нож отправляешь деплой
Подпись: NightFury/406
Поддержка: vk.com/mashakrylova406
Аватара пользователя
NightFury
 
Сообщения: 85
Зарегистрирован: 10 авг 2016, 12:22
Благодарил (а): 8 раз.
Поблагодарили: 24 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, C, C++

Re: knife mod

Сообщение vlad1997450 » 08 фев 2019, 06:45

NightFury писал(а):give_item( id, "weapon_knife" );//wtf?
Запиши модели в глобалку и меня в деплое
New g_Knife[NUM][MODELV][MODELP][PLAYERS]
А то одни свичи с одинаковым кодом...

Добавлено спустя 2 минуты 36 секунд:
В меню где выбралась модель проверяешь что в руках, если нож отправляешь деплой


У меня очень маленький опыт скриптинга. Не могли бы вы показать как это сделать на моём коде, пожалуйста?
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: knife mod

Сообщение NightFury » 08 фев 2019, 17:23

Код: Выделить всё
enum _:ModelID
{
    mView,
    mWeapon
}

enum _:KnifeID
{
    KNIFE1,
    KNIFE2,
    KNIFE3,
    KNIFE4
}

new g_KnifeID[33]

new const g_Models[KnifeID][ModelID][] = 
{
    {"models/v_axe1.mdl", "models/p_axe1.mdl"},
    {"models/v_axe2.mdl", "models/p_axe2.mdl"},
    {"models/v_axe3.mdl", "models/p_axe3.mdl"},
    {"models/v_axe4.mdl", "models/p_axe4.mdl"}
}

public plugin_init()
{
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "fw_KnifeDeployPost", 1)
}

public plugin_precache()
{
    for(new i; i < KnifeID; i++)
    {
        precache_model(g_Models[i][mView])
        precache_model(g_Models[i][mWeapon])
    }
}

public fw_KnifeDeployPost(entity)
{
    entity_set_string(player, EV_SZ_viewmodel, g_Models[g_KnifeID[player]][mView])
    entity_set_string(player, EV_SZ_weaponmodel, g_Models[g_KnifeID[player]][mWeapon])
}

// g_KnifeID[player] = KNIFE2 // присваиваем ножик игроку
// return g_KnifeID[player] // смотрим какой ножик у игрока   


Добавлено спустя 24 минуты 27 секунд:
Код: Выделить всё
new const g_Names[KnifeID][] = 
{
    
"ножик 1",
    
"ножик 2",
    
"ножик 3",
    
"ножик 4"
}

public 
ShowKnifeMenu(player)
{
    new 
menu menu_create("Выбор ножа""HandlerKnifeMenu"), szStr[2]
    for(new 
iKnifeIDi++)
    {
        
num_to_str(iszStrcharsmax(szStr))
        
menu_additem(menug_Names[g_KnifeID[player]], szStr)
    }
    
menu_display(idmenu)
}

public 
HandlerKnifeMenu(playermenuid)
{
    if(
id == MENU_EXIT) return menu_destroy(menu)
    new 
szStr[2], access
    menu_item_getinfo
(menuidaccessszStr2__access)
    
g_KnifeID[player] = str_to_num(szStr)
    return 
menu_destroy(menu)
Подпись: NightFury/406
Поддержка: vk.com/mashakrylova406
Аватара пользователя
NightFury
 
Сообщения: 85
Зарегистрирован: 10 авг 2016, 12:22
Благодарил (а): 8 раз.
Поблагодарили: 24 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, C, C++


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 6