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

Проверка на флаг для Extra-Items

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

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

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

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

Проверка на флаг для Extra-Items

Сообщение Player12332156 » 05 ноя 2019, 23:31

Хочу сделать проверку на флаг для Extra-Items: Unlimited Clip, то есть на бесконечные патроны но как это сделать я не знаю, сколько бы не искал в интернете такой темы нет

Исходник:
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>

/*================================================================================
 [Plugin Customization]
=================================================================================*/

new const g_item_name[] = { "Unlimited Clip (single round)" }
const g_item_cost = 10

/*============================================================================*/

// CS Offsets
#if cellbits == 32
const OFFSET_CLIPAMMO = 51
#else
const OFFSET_CLIPAMMO = 65
#endif
const OFFSET_LINUX_WEAPONS = 4

// Max Clip for weapons
new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
            10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }

new g_itemid_infammo, g_has_unlimited_clip[33]

public plugin_init()
{
    register_plugin("[ZP] Extra: Unlimited Clip", "1.0", "MeRcyLeZZ")
    
    g_itemid_infammo 
= zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_HUMAN)    
    
    register_event
("HLTV", "event_round_start", "a", "1=0", "2=0")
    register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
}

// Player buys our upgrade, set the unlimited ammo flag
public zp_extra_item_selected(player, itemid)
{
    if (itemid == g_itemid_infammo)
        g_has_unlimited_clip[player] = true
}

// Reset flags for all players on newround
public event_round_start()
{
    for (new id; id <= 32; id++) g_has_unlimited_clip[id] = false;
}

// Unlimited clip code
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
    // Player doesn't have the unlimited clip upgrade
    if (!g_has_unlimited_clip[msg_entity])
        return;
    
    
// Player not alive or not an active weapon
    if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1)
        return;
    
    static weapon
, clip
    weapon 
= get_msg_arg_int(2) // get weapon ID
    clip = get_msg_arg_int(3) // get weapon clip
    
    
// Unlimited Clip Ammo
    if (MAXCLIP[weapon] > 2) // skip grenades
    {
        set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon]) // HUD should show full clip all the time
        
        if 
(clip < 2) // refill when clip is nearly empty
        {
            // Get the weapon entity
            static wname[32], weapon_ent
            get_weaponname
(weapon, wname, sizeof wname - 1)
            weapon_ent = fm_find_ent_by_owner(-1, wname, msg_entity)
            
            
// Set max clip on weapon
            fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
        }
    }
}

// Find entity by its owner (from fakemeta_util)
stock fm_find_ent_by_owner(entity, const classname[], owner)
{
    while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
    
    return entity
;
}

// Set Weapon Clip Ammo
stock fm_set_weapon_ammo(entity, amount)
{
    set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/
 
Аватара пользователя
Player12332156
 
Сообщения: 2
Зарегистрирован: 05 ноя 2019, 18:20
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Проверка на флаг для Extra-Items

Сообщение Qruker » 07 ноя 2019, 21:31

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

public zp_extra_item_selected
(player, itemid)
{
    if (itemid == g_itemid_infammo)
        g_has_unlimited_clip[player] = true
}

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

public zp_extra_item_selected
(player, itemid)
{
    if (itemid == g_itemid_infammo)
    {
        if (get_user_flags(player) & ADMIN_BAN)       // За место флага ADMIN_BAN вставляешь нужный
        {
            g_has_unlimited_clip[player] = true
        
}
    }
}
Не понятно, для чего это нужно. Очень интересно.
Аватара пользователя
Qruker
 
Сообщения: 2
Зарегистрирован: 27 авг 2019, 18:19
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6 (pawn/scripting)

Re: Проверка на флаг для Extra-Items

Сообщение Player12332156 » 08 ноя 2019, 11:05

Спасибо
Аватара пользователя
Player12332156
 
Сообщения: 2
Зарегистрирован: 05 ноя 2019, 18:20
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю


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

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

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