Иконка ресурса

Steam Bonus 1.0

Нет прав для скачивания

iOS

Сообщения
323
Реакции
100
Помог
5 раз(а)

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
434
Реакции
296
Помог
5 раз(а)
Очередной хардкодный стимбонус?
Ничего не имею против, но таких же вроде уже достаточно наклепали)

Через VipModular такое делается за пару минут без единой строчки кода))
JSON:
[
    {
        "Access": {
            "Limit": "Steam"
        },
        "Modules": [
            {
                "Module": "SpawnHealth",
                "Limits": {
                    "Limit": "Round",
                    "Min": 1
                },
                "Armor": 100,
                "SetArmor": true,
                "Helmet": true
            },
            {
                "Module": "SpawnItems",
                "Limits": {
                    "Limit": "Round",
                    "Min": 1
                },
                "Items": [
                    {
                        "Type": "Weapon",
                        "Name": "weapon_deagle",
                        "GiveType": "Replace"
                    },
                    {
                        "Type": "Weapon",
                        "Name": "weapon_hegrenade",
                        "GiveType": "Add"
                    },
                    {
                        "Type": "Weapon",
                        "Name": "weapon_smokegrenade",
                        "GiveType": "Add"
                    },
                    {
                        "Type": "Weapon",
                        "Name": "weapon_flashbang",
                        "BpAmmo": 2,
                        "GiveType": "Add"
                    },
                    {
                        "Type": "DefuseKit"
                    }
                ]
            }
        ]
    }
]
Но при этом можно выдавать вообще что угодно, а не только грены и дигл. В том числе всякие кастомные пушки из всяких auw, uw, cwapi и т.д.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
iOS, то есть
RegisterHookChain(RG_CBasePlayer_OnSpawnEquip, "CBasePlayer_OnSpawnEquip_Post", true);
но
Код:
    register_event("TextMsg", "evNewRound", "a", "2=#Game_will_restart_in", "2=#Game_Commencing");
    register_event("HLTV", "evRoundStart", "a", "1=0", "2=0");
есть m_iTotalRoundsPlayed который с 0 начинается, и два эвента выше тебе не пригодятся
16 Июн 2023
ArKaNeMaN,
ты как из рекламы тайда
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
434
Реакции
296
Помог
5 раз(а)
Javekson,
1686915488862.png
 

iOS

Сообщения
323
Реакции
100
Помог
5 раз(а)
Та завалялся на пк, мало ли кому то пригодится)
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
iOS, брад, делай нормальный стим бонус с блек джеком и девушками с низкой социальной ответственностью, а не этот прикол с хардкодом
 

d3m37r4

111111
Сообщения
1,454
Реакции
1,194
Помог
10 раз(а)
Сообщения
336
Реакции
414
Помог
7 раз(а)
d3m37r4, у него используется решка и он может дергать мембер, который отвечает за отыгранные раунды, а он вместо этого использует 2 мессаги, для подсчёта раунда. Извини, видимо нет хардкода, я ошибся
1686925562963.png
1686925531192.png
 

d3m37r4

111111
Сообщения
1,454
Реакции
1,194
Помог
10 раз(а)
Albertio, ладно, я вышел с этим вопросом в интернет.
1686926849968.png
 
Сообщения
182
Реакции
4
Albertio, я взял и переделал по твоим советам и стилю оформления, получилось так:
C#:
#include <amxmodx>
#include <reapi>

enum _:CVARS
{
    CVAR_BONUS_ROUND,
    CVAR_BONUS_HE,
    CVAR_BONUS_FLASH,
    CVAR_BONUS_SMOKE,
    CVAR_BONUS_ARMOR_VESTHELM,
    CVAR_BONUS_DEFUSE_KIT,
    CVAR_BONUS_DEAGLE,
    CVAR_NOTIFICATION
};

new g_eCvar[CVARS];
new g_szFlag[32];

#define rg_get_current_round() (get_member_game(m_iTotalRoundsPlayed) + 1)

public plugin_init()
{
    register_plugin("Steam Bonus", "1.0", "Will_be");

    register_dictionary("steam_bonus.txt");

    if (!is_block_map()) RegisterHookChain(RG_CBasePlayer_OnSpawnEquip, "CBasePlayer_OnSpawnEquip_Post", true);
    else pause("ad");
  
    RegisterCvars();

    AutoExecConfig(true, "plugin-steam_bonus");
}

public CBasePlayer_OnSpawnEquip_Post(id)
{
    if(rg_get_current_round() >= g_eCvar[CVAR_BONUS_ROUND])
    {
        if(is_user_alive(id) && !AccessCheck(id) && is_user_steam(id))
        {
            if(g_eCvar[CVAR_BONUS_HE])
            {
                rg_give_item(id, "weapon_hegrenade");
                rg_set_user_bpammo(id, WEAPON_HEGRENADE, g_eCvar[CVAR_BONUS_HE]);
            }
          
            if(g_eCvar[CVAR_BONUS_FLASH])
            {
                rg_give_item(id, "weapon_flashbang");
                rg_set_user_bpammo(id, WEAPON_FLASHBANG, g_eCvar[CVAR_BONUS_FLASH]);
            }
          
            if(g_eCvar[CVAR_BONUS_SMOKE])
            {
                rg_give_item(id, "weapon_smokegrenade");
                rg_set_user_bpammo(id, WEAPON_SMOKEGRENADE, g_eCvar[CVAR_BONUS_SMOKE]);
            }
          
            if(g_eCvar[CVAR_BONUS_ARMOR_VESTHELM])
                rg_set_user_armor(id, 100, ARMOR_VESTHELM);

            if(g_eCvar[CVAR_BONUS_DEFUSE_KIT])
            {
                new TeamName:team = get_member(id, m_iTeam);
                if(team == TEAM_CT)
                    rg_give_defusekit (id, true);
            }
          
            if(g_eCvar[CVAR_BONUS_DEAGLE])
                rg_give_items(id, "weapon_deagle", 35);
          
            if(g_eCvar[CVAR_NOTIFICATION])
                client_print_color(id, print_team_default, "%L", LANG_PLAYER, "NOTIFICATION_CHAT");
        }
    }
}

stock bool:AccessCheck(id)
    return bool:(get_user_flags(id) & read_flags(g_szFlag));
  
stock rg_give_items(id, currWeaponName[], ammoAmount)
{
    rg_give_item(id, currWeaponName, GT_REPLACE);
    rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
    return HC_CONTINUE;
}

is_block_map(){
    new map[32], prefix[][]={"awp_","aim_","35hp_","fy_","$","awp4"};
    rh_get_mapname(map, 31);
    for(new i; i < sizeof prefix; i++) if(containi(map, prefix[i]) != -1) return 1;
    return 0;
}

public RegisterCvars() {
    bind_pcvar_string(create_cvar(
        .name = "steam_bonus_ignore_flag",
        .string = "t",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_IGNORE_FLAG")),
        g_szFlag, charsmax(g_szFlag));

    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_round",
        .string = "1",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_BONUS_ROUND"),
        .has_min = true,
        .min_val = 1.0,
        .has_max = false,
        .max_val = 0.0),
        g_eCvar[CVAR_BONUS_ROUND]);

    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_he",
        .string = "1",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_BONUS_HE"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = false,
        .max_val = 0.0),
        g_eCvar[CVAR_BONUS_HE]);

    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_flash",
        .string = "2",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_BONUS_FLASH"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = false,
        .max_val = 0.0),
        g_eCvar[CVAR_BONUS_FLASH]);

    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_smoke",
        .string = "1",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_BONUS_SMOKE"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = false,
        .max_val = 0.0),
        g_eCvar[CVAR_BONUS_SMOKE]);
      
    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_armor_vesthelm",
        .string = "1",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_BONUS_ARMOR_VESTHELM"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = true,
        .max_val = 1.0),
        g_eCvar[CVAR_BONUS_ARMOR_VESTHELM]);

    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_defuse_kit",
        .string = "1",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_BONUS_DEFUSE_KIT"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = true,
        .max_val = 1.0),
        g_eCvar[CVAR_BONUS_DEFUSE_KIT]);

    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_deagle",
        .string = "1",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_BONUS_DEAGLE"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = true,
        .max_val = 1.0),
        g_eCvar[CVAR_BONUS_DEAGLE]);

    bind_pcvar_num(create_cvar(
        .name = "steam_bonus_notification",
        .string = "1",
        .flags = FCVAR_NONE,
        .description = fmt("%L", LANG_SERVER, "DESC_NOTIFICATION"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = false,
        .max_val = 0.0),
        g_eCvar[CVAR_NOTIFICATION]);
}
Может, можно и лучше, я хз!
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
SlovePRO, довольно годно, еще пару моментов. AccessCheck никуда не годится, ибо каждый раз получать битсумму флагов это извращение, лучше сделай глобальную переменную в которой запишешь битсумму read_flags(g_szFlag)(можно сделать в plugin_init после AutoExecConfig) и в AccessCheck уже будешь сверять её.
Код:
// Вот такие слоенные торты лучше не делать, глаз прям режет
for(new i; i < sizeof prefix; i++) if(containi(map, prefix[i]) != -1) return 1;

// так же не забывай пробелы ставить перед и после =
prefix[][]={"awp_","aim_","35hp_","fy_","$","awp4"};
 
Сообщения
334
Реакции
93
Помог
2 раз(а)
Можно вообще сделать квар строку и смотреть что там выдать. "adhffps"
 
Сообщения
182
Реакции
4
Albertio, а если допустим сделать дефайн, сойдет ли такой вариант?
C#:
#define is_user_vip(%1) (get_user_flags(%1) & read_flags(g_szFlag))
Про пробелы понял - БОСС.
А что можно сделать с тем циклом?
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
SlovePRO, какие дефайны.... Ты хочешь сделать тоже самое, но другим методом. Я же тебе сказал, в глобальную переменную 1 раз записывай битсумму флагов и юзай там где тебе надо.
Цикл можно оставить, а можно так же в plugin_init этот цикл сразу использовать без создания функции.
 

d3m37r4

111111
Сообщения
1,454
Реакции
1,194
Помог
10 раз(а)
AccessCheck никуда не годится, ибо каждый раз получать битсумму флагов это извращение
Ааа, помогитя, страшно очинь, еще и нагрузка дикая будет, капэц.
 
Сообщения
182
Реакции
4
Albertio, примерно так как я понимаю?

C#:
#include <amxmodx>
#include <amxmisc>
#include <reapi>

enum _:CVARS
{
    CVAR_BONUS_ROUND,
    CVAR_BONUS_HE,
    CVAR_BONUS_FLASH,
    CVAR_BONUS_SMOKE,
    CVAR_BONUS_ARMOR_VESTHELM,
    CVAR_BONUS_DEFUSE_KIT,
    CVAR_BONUS_DEAGLE,
    CVAR_NOTIFICATION
};

new g_eCvar[CVARS];

new g_IsAdmin;

#define rg_get_current_round() (get_member_game(m_iTotalRoundsPlayed) + 1)

public plugin_init()
{
    register_plugin("Steam Bonus", "1.0", "Will_be");

    if (!is_block_map()) RegisterHookChain(RG_CBasePlayer_OnSpawnEquip, "CBasePlayer_OnSpawnEquip_Post", true);
    else pause("ad");
  
    RegisterCvars();

    AutoExecConfig(true, "plugin-steam_bonus");
}

public client_putinserver( id )
{
    if ( is_user_admin( id ) )
            g_IsAdmin |= ( 1 << ( id & 31 ) );
}

public client_disconnected( id )
{
    g_IsAdmin &= ~( 1 << ( id & 31 ) );
}

public CBasePlayer_OnSpawnEquip_Post(id)
{
    if(rg_get_current_round() >= g_eCvar[CVAR_BONUS_ROUND])
    {
        if(is_user_alive(id) && !g_IsAdmin && is_user_steam(id))
        {
            if(g_eCvar[CVAR_BONUS_HE])
            {
                rg_give_item(id, "weapon_hegrenade");
                rg_set_user_bpammo(id, WEAPON_HEGRENADE, g_eCvar[CVAR_BONUS_HE]);
            }
          
            if(g_eCvar[CVAR_BONUS_FLASH])
            {
                rg_give_item(id, "weapon_flashbang");
                rg_set_user_bpammo(id, WEAPON_FLASHBANG, g_eCvar[CVAR_BONUS_FLASH]);
            }
          
            if(g_eCvar[CVAR_BONUS_SMOKE])
            {
                rg_give_item(id, "weapon_smokegrenade");
                rg_set_user_bpammo(id, WEAPON_SMOKEGRENADE, g_eCvar[CVAR_BONUS_SMOKE]);
            }
          
            if(g_eCvar[CVAR_BONUS_ARMOR_VESTHELM])
                rg_set_user_armor(id, 100, ARMOR_VESTHELM);

            if(g_eCvar[CVAR_BONUS_DEFUSE_KIT])
            {
                new TeamName:team = get_member(id, m_iTeam);
                if(team == TEAM_CT)
                    rg_give_defusekit (id, true);
            }
          
            if(g_eCvar[CVAR_BONUS_DEAGLE])
                rg_give_items(id, "weapon_deagle", 35);
          
            if(g_eCvar[CVAR_NOTIFICATION])
                client_print_color(id, print_team_default, "^1Бонус: ^4DEAGLE ^1+ ^4Броня ^1+ ^4HE/FB/SG ^1за ^4STEAM.");
        }
    }
}
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу