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

Оружие(кастомное) остается при покупке стандартного

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Оружие(кастомное) остается при покупке стандартного

Сообщение Th1nk 1 1 » 31 мар 2021, 21:11

Здравствуйте, в этой теме мне хотелось бы попросить у вас помощи, я прикрепил исходник файла, в этом сма находится меню с оружиями, но казалось бы, все отлично работает, нет!, как только вы берете оружие из меню, вы получаете его НАВСЕГДА, как сделать так, чтобы при покупке станадртного оружия оставалось стандартным, а при взятии из меню - кастомным


Дублирование темы(прошлая была удалена), устное предупреждение ///Leonidddd
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Th1nk 1 1
 
Сообщения: 24
Зарегистрирован: 24 мар 2021, 19:01
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Малый Опыт

Re: Оружие(кастомное) остается при покупке стандартного

Сообщение deadkid56 » 22 апр 2021, 01:06

Код: Выделить всё

public Death
()
{
    new id = read_data(2)
    has_lavka_m4a1[id] = false
    has_lavka_ak47
[id] = false
    has_lavka_awp
[id] = false
    has_lavka_deagle
[id] = false
}

Функция Death() ни откуда не вызывается. Попробуй вот этот вариант, я добавил событие отлова смерти:
Код: Выделить всё


#include <amxmodx> 
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <fakemeta_util>   

#define PLUGIN "LAVKA" 
#define VERSION "0.1" 
#define AUTHOR "Th1nk 1 1" 

new LAVKAGAN[12][64] = { 
"models/pdgeweapons/v_deagle.mdl", "models/pdgeweapons/p_deagle.mdl", "models/pdgeweapons/w_deagle.mdl",         // 0-1-2
"models/pdgeweapons/v_awp.mdl", "models/pdgeweapons/p_awp.mdl", "models/pdgeweapons/w_awp.mdl",                 // 3-4-5
"models/pdgeweapons/v_ak47.mdl", "models/pdgeweapons/p_ak47.mdl", "models/pdgeweapons/w_ak47.mdl",     // 6-7-8
"models/pdgeweapons/v_m4a1.mdl", "models/pdgeweapons/p_m4a1.mdl", "models/pdgeweapons/w_m4a1.mdl" }     // 9-10-11

public plugin_precache()
{
    for (new num = 0; num < 12; num++)
    {
        precache_model(LAVKAGAN[num]);
    }
}

new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_DEAGLE, CSW_USP, CSW_GLOCK18}
new primary[18] = {CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_AWP, 
CSW_MP5NAVY
, CSW_M249, CSW_M3, CSW_M4A1, CSW_TMP, CSW_G3SG1, CSW_SG552, CSW_AK47, CSW_P90}

new bool:has_lavka_m4a1[33], bool:has_lavka_ak47[33], bool:has_lavka_awp[33], bool:has_lavka_deagle[33]
                           
public plugin_init
() {

register_event("WeapPickup","checkModel","b","1=19")
register_event("CurWeapon","checkWeapon","be","1=1")

register_clcmd("lavka", "NewMenu", ADMIN_BAN); //Команда вызова меню: lavka
register_message(get_user_msgid("DeathMsg"),"dmsg")
register_plugin(PLUGIN, VERSION, AUTHOR);

}

public checkModel(id)
{
    new WeaponID = read_data(2)
    
    switch
(WeaponID)
    {
    case has_lavka_m4a1[id]:
        {
            if(has_lavka_m4a1[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[9])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[10])
            }
        }
        case CSW_AK47:
        {
            if(has_lavka_ak47[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[6])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[7])
            }
        }
        case CSW_AWP:
        {
            if(has_lavka_awp[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[3])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[4])
            }
        }
        case CSW_DEAGLE:
        {
            if(has_lavka_deagle[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[0])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[1])
            }
        }
    }
    
    return PLUGIN_CONTINUE
}

public checkWeapon(id)
{
    checkModel(id)
}

public dmsg(msg,dest,id)
{
    has_lavka_m4a1[id] = false
    has_lavka_ak47
[id] = false
    has_lavka_awp
[id] = false
    has_lavka_deagle
[id] = false
}

public client_connect(id)
{
    has_lavka_m4a1[id] = false
    has_lavka_ak47
[id] = false
    has_lavka_awp
[id] = false
    has_lavka_deagle
[id] = false
}

public NewMenu(id) {
if(
 get_user_flags(id) & ADMIN_LEVEL_A ){
new i_Menu = menu_create("\yЛавочка Пуджа", "NewMenu_handler");
menu_additem(i_Menu, "\rDEAGLE+ 130%dmg", "1", 0);
menu_additem(i_Menu, "\yAWP + 130%dmg", "2", 0);
menu_additem(i_Menu, "\yAK-47 + 130%dmg", "3", 0);
menu_additem(i_Menu, "\rM4A1 + 130%dmg", "4", 0);
menu_additem(i_Menu, "\yЧто-то еще + 130%dmg", "5", 0);
menu_setprop(i_Menu, MPROP_NEXTNAME, "\rДалее");
menu_setprop(i_Menu, MPROP_BACKNAME, "\rНазад");
menu_setprop(i_Menu, MPROP_EXITNAME, "\rВыход");
menu_display(id, i_Menu, 0)
}
else {
client_print(id, print_chat, "У вас нет прав на использование этой команды") //Сообщение в чат игрокам у которых нет нужного админ-флага
}
return PLUGIN_HANDLED
}

public NewMenu_handler(id, menu, item) {
if(
 item < 0 ) return PLUGIN_CONTINUE;
new cmd[3], access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new Choise = str_to_num(cmd)
switch (Choise) {
case 1: {
                give_item(id, "weapon_deagle")
                cs_set_user_bpammo(id, CSW_DEAGLE, 80)
                has_lavka_deagle[id] = true
    
}
case 2: {
                remove_primary(id)
                give_item(id, "weapon_awp")
                cs_set_user_bpammo(id, CSW_AWP, 45)
                has_lavka_awp[id] = true

}
case 3: {
                remove_primary(id)
                give_item(id, "weapon_ak47")
                cs_set_user_bpammo(id, CSW_AK47, 120)
                has_lavka_ak47[id] = true

}
case 4: {
                remove_primary(id)
                give_item(id, "weapon_m4a1")
                cs_set_user_bpammo(id, CSW_M4A1, 120)
                has_lavka_m4a1[id] = true

}
case 5: {
//ТУТА СВОЕ
}
}
return PLUGIN_HANDLED;
}

remove_primary(id)
{
    for(new i = 0; i < 18; i++)
    {
        fm_strip_user_gun(id, primary[i])
    }
}

public remove_secondary(id)
{
    for(new i = 0; i < 6; i++)
    {
        fm_strip_user_gun(id, pistols[i])
    }
}
Аватара пользователя
deadkid56
 
Сообщения: 42
Зарегистрирован: 09 авг 2018, 10:41
Благодарил (а): 8 раз.
Поблагодарили: 4 раз.
Языки программирования: Я ничего не знаю

Re: Оружие(кастомное) остается при покупке стандартного

Сообщение [N][E][M][E][C] » 23 апр 2021, 00:47

deadkid56, вы осознанно это написали?)
Код: Выделить всё
new LAVKAGAN[12][64

Зачем писать размер??? Массив сам определит размер или вы сидели и высчитывали???
=>>>>>>
Код: Выделить всё
new const LAVKAGAN[][] 

Почему не const????
Код: Выделить всё
for(new num; num < charsmax(LAVKAGAN); num++) 

Избавляйтесь в коде от чисел
И многое другое......)
Зачем создавать большое количество болевых массивов, если можно воспользоваться enum???
Код: Выделить всё
#include <hamsandwich>
RegisterHam(Ham_Killed,"player","ham_player_kill"); 

Отловить смерть игрока, не лучше так?)
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи


Вернуться в Скриптинг

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13