• Этот сайт использует файлы cookie. Продолжая пользоваться этим сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Помощь в Стим Бонусах

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
39
Симпатии
1
Пол
Мужской
#1
Привет всем , ребята помогите Проставить проверку на Админа, и дописать строчку, Когда у игрока 16000$
и когда он берёт Деньги что бы писало " У вас уже \r16000$^n"
и что бы Работали Бонусы с 3 раунда
Help pliz
 

Вложения

пазлик~

Разработчик
Регистрация
8 Июн 2017
Сообщения
142
Симпатии
85
Пол
Мужской
#2
gesk1995,
PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>

const KEYSMENU = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4;

new bool:g_bSteamBonus[33], g_iRoundCounter, g_iRandomNum;

public plugin_init()
{
    register_plugin("Steam Bonus", "1.3.1", "DUKKHAZ0R");    // by pUzzlik for gesk1995
    register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");
    RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
    register_menucmd(register_menuid("BonusMenu"), KEYSMENU, "BonusMenuHandler");
}

public client_putinserver(id)
    g_bSteamBonus[id] = (is_user_steam(id) && !is_user_admin(id)) ? true : false;

public fwHamPlayerSpawnPost(id)
    if(g_bSteamBonus[id] && is_user_alive(id) && g_iRoundCounter >= 3) ShowBonusMenu(id);

public eRoundStart()
    g_iRoundCounter++;

public ShowBonusMenu(id)
{
    static len, menu[256];
    new iKey = MENU_KEY_0|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4;
    new iMoney = cs_get_user_money(id);

    len = formatex(menu, charsmax(menu), "\r[\ySteam Bonus\r] \yВыберите бонус^n^n");
 
    len += formatex(menu[len], charsmax(menu) - len, "\r1. %s^n", (iMoney < 16000) ? "\wДеньги" : "У вас уже \r16000$");
    if (iMoney < 16000) iKey |= MENU_KEY_1;
    len += formatex(menu[len], charsmax(menu) - len, "\r2. \wЧутка HP \r[\yДо 20\r]^n");
    len += formatex(menu[len], charsmax(menu) - len, "\r3. \wНабор гранат^n");
    len += formatex(menu[len], charsmax(menu) - len, "\r4. \wБроня и шлем^n^n");
    len += formatex(menu[len], charsmax(menu) - len, "\r0. \wОтказаться от приза");
 
    return show_menu(id, iKey, menu, -1, "BonusMenu");
}

public BonusMenuHandler(id, iKey)
{
    switch(iKey)
    {
        case 0:
        {
            g_iRandomNum = random_num(1, 1000);
            cs_set_user_money(id, min(cs_get_user_money(id) + g_iRandomNum, 16000));
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - Деньги в размере ^4%d$", g_iRandomNum);
        }
        case 1:
        {
            g_iRandomNum = random_num(1, 10);
            set_user_health(id, get_user_health(id) + g_iRandomNum);
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - Дополнительно ^4%d HP", g_iRandomNum);
        }
        case 2:
        {
            give_item(id, "weapon_hegrenade");
            give_item(id, "weapon_flashbang");
            give_item(id, "weapon_flashbang");
            give_item(id, "weapon_smokegrenade");
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - ^4Комплект гранат");
        }
        case 3:
        {
            cs_set_user_armor(id, 50, CS_ARMOR_VESTHELM);
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - ^4Армор и шлем");
        }
    }
}

stock bool:is_user_steam(const id)
{
    static dp_pointer; if(!dp_pointer) dp_pointer = get_cvar_pointer("dp_r_id_provider");
    server_cmd("dp_clientinfo %d", id);
    server_exec();
    return get_pcvar_num(dp_pointer) == 2 ? true : false;
}

stock ChatColor(const id, const szRawMessage[], any:...)
{
    if(!is_user_connected(id)) return;
    static szMessage[191]; vformat(szMessage, charsmax(szMessage), szRawMessage, 3);
    message_begin(MSG_ONE_UNRELIABLE, 76, .player = id);
    write_byte(id);
    write_string(szMessage);
    message_end();
}
[doublepost=1498076144][/doublepost]Раунды считает итак, и призы с 3, нет от проверки на рестарт или подключения игроков, а в ост. все гуд, ну и проблема с проверкой на админа может быть если admin_loder юзать(может не успевать загрузить админов на стадии подключения), методы решения либо редачить сам admin_loder либо переходить на users.ini либо переносить проверку в Ham_Spawn, последнее придаст нагрузки на сервер.
 
Последнее редактирование:

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
39
Симпатии
1
Пол
Мужской
#4
пазлик~, на users.ini не перейду никогда !
admin_loder тоже не юзаю , Что так сложно сделать Проверку на Админа (Флаг a ) ? ну у меня Бонусы выдаются с 1 раунда !
 

Inline

Пользователь
Регистрация
8 Июн 2017
Сообщения
233
Симпатии
77
Пол
Мужской
#5
пазлик~, с 1000 фпс упало на 500 после того, как добавил проверку в спавне (сарказм)
 

пазлик~

Разработчик
Регистрация
8 Июн 2017
Сообщения
142
Симпатии
85
Пол
Мужской
#6
на users.ini не перейду никогда !
Ваше право! Орать то не надо -_-
ну у меня Бонусы выдаются с 1 раунда !
Возможно потому что я выше описал? Нет проверки на Game_Commencing и Game_will_restart_in? мозгами шевелить не учимся хотим все на на блюдечке?
Что так сложно сделать Проверку на Админа (Флаг a ) ?
О великий гуру отвечу вам на ваш ну пожалуй самый "глупый" - умный вопрос, если вы не добавили то видимо да :) А я вам альтернативу предложил, проверку на флаги, а не один флаг, будто вип будто админ или еще кто то у кого есть хоть какие то флаги, например если вип за топ выдают.
И мой вам совет на последок, будьте проще, люди вам ничего не должны, топик назвали же помощь... 1 мин. работы! Так дерзайте вам подсказывают, а вы вместо благодарности с**а плюетесь, пена из рта типа я что то вам должен, я дал направления это не означает что я вам работу выложить должен это не ТЗ, плагин не мой обратитесь к автору!
Inline, Да я так ляпнул, одна проверка лучше чем каждый раунд, как бы молвить оптимизация хули :)
 
Последнее редактирование модератором:

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
39
Симпатии
1
Пол
Мужской
#7
пазлик~, Спасибо Большое!
[doublepost=1498121586][/doublepost]пазлик~,
public SteamBonusMenu(id)
{
if(!is_user_steam(id) || (get_user_flags(id) & ADMIN_IMMUNITY)) return 0;
Поставь такую проверку на Админа
 

пазлик~

Разработчик
Регистрация
8 Июн 2017
Сообщения
142
Симпатии
85
Пол
Мужской
#8
Не за что, но как правило на форумах спасибо выражают нажатием кнопки мне нравится.

На, не благодари. Уже более готовый вариант.
PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>

#define ROUND_BONUS        3                    // С какого раунда выдавать бонусы
//#define FLAG_IMMUNITY    ADMIN_IMMUNITY        // Если раскоментировать строку будет только на один флаг который вы укажите из amxconst.inc

const KEYSMENU = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4;
new bool:g_bSteamBonus[33], g_iRoundCounter, g_iRandomNum;

public plugin_init()
{
    register_plugin("Steam Bonus", "1.3.2", "DUKKHAZ0R");    // by pUzzlik for gesk1995

    register_event("TextMsg", "eGameCommencing", "a", "2=#Game_will_restart_in", "2=#Game_Commencing");
    register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");

    RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
    register_menucmd(register_menuid("BonusMenu"), KEYSMENU, "BonusMenuHandler");
}

public eGameCommencing()
    g_iRoundCounter = 0;

public eRoundStart()
    g_iRoundCounter++;

public client_putinserver(id)
    g_bSteamBonus[id] = is_user_steam(id) ? true : false;

public fwHamPlayerSpawnPost(id)
    if(is_user_alive(id) && g_bSteamBonus[id] && g_iRoundCounter >= ROUND_BONUS) ShowBonusMenu(id);

public ShowBonusMenu(id)
{
    #if defined FLAG_IMMUNITY
        if(get_user_flags(id) & FLAG_IMMUNITY) return PLUGIN_CONTINUE;
    #else
        if(!is_user_admin(id)) return PLUGIN_CONTINUE;
    #endif
  
    static len, menu[256];
    new iKey = MENU_KEY_0|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4;
    new iMoney = cs_get_user_money(id);

    len = formatex(menu, charsmax(menu), "\r[\ySteam Bonus\r] \yВыберите бонус^n^n");

    len += formatex(menu[len], charsmax(menu) - len, "\r1. %s^n", (iMoney < 16000) ? "\wДеньги" : "У вас уже \r16000$");
    if (iMoney < 16000) iKey |= MENU_KEY_1;
    len += formatex(menu[len], charsmax(menu) - len, "\r2. \wЧутка HP \r[\yДо 20\r]^n");
    len += formatex(menu[len], charsmax(menu) - len, "\r3. \wНабор гранат^n");
    len += formatex(menu[len], charsmax(menu) - len, "\r4. \wБроня и шлем^n^n");
    len += formatex(menu[len], charsmax(menu) - len, "\r0. \wОтказаться от приза");

    return show_menu(id, iKey, menu, -1, "BonusMenu");
}

public BonusMenuHandler(id, iKey)
{
    switch(iKey)
    {
        case 0:
        {
            g_iRandomNum = random_num(1, 1000);
            cs_set_user_money(id, min(cs_get_user_money(id) + g_iRandomNum, 16000));
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - Деньги в размере ^4%d$", g_iRandomNum);
        }
        case 1:
        {
            g_iRandomNum = random_num(1, 10);
            set_user_health(id, get_user_health(id) + g_iRandomNum);
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - Дополнительно ^4%d HP", g_iRandomNum);
        }
        case 2:
        {
            give_item(id, "weapon_hegrenade");
            give_item(id, "weapon_flashbang");
            give_item(id, "weapon_flashbang");
            give_item(id, "weapon_smokegrenade");
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - ^4Комплект гранат");
        }
        case 3:
        {
            cs_set_user_armor(id, 50, CS_ARMOR_VESTHELM);
            ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - ^4Армор и шлем");
        }
    }
}

stock bool:is_user_steam(const id)
{
    static dp_pointer; if(!dp_pointer) dp_pointer = get_cvar_pointer("dp_r_id_provider");
    server_cmd("dp_clientinfo %d", id);
    server_exec();
    return get_pcvar_num(dp_pointer) == 2 ? true : false;
}

stock ChatColor(const id, const szRawMessage[], any:...)
{
    if(!is_user_connected(id)) return;
    static szMessage[191]; vformat(szMessage, charsmax(szMessage), szRawMessage, 3);
    message_begin(MSG_ONE_UNRELIABLE, 76, .player = id);
    write_byte(id);
    write_string(szMessage);
    message_end();
}
 
Последнее редактирование:

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
39
Симпатии
1
Пол
Мужской
#9
пазлик~, Слушай , А вот по дефолту "Флаг А" Если не раcкоментировать строку ( Админ Скикими флагами будет получать Стим Бонусы,)(abcdfijmnrtu)
//#define FLAG_IMMUNITY ADMIN_IMMUNITY // Если раскоментировать строку будет только на один флаг который вы укажите из amxconst.inc
[doublepost=1498168194][/doublepost]пазлик~, Тестил Без Админки Бонусы не работают вообще , До 5 раунда Поиграл !
 

sonyx

Команда форума
Модератор
Регистрация
8 Июн 2017
Сообщения
369
Симпатии
210
Пол
Мужской
#10
вот не пойму я, зачем держать свой сервер, если вы даже не имеете представления что на него ставите? Хрен с ним не уметь написать плагин, но прочитать код, учитывая что pawn по сути один из самых легких языков.....
Это ж блин как купить авто и не уметь на нем ездить... Один только вопрос: "Нахера козе баян?"
 
Симпатии: REVO

пазлик~

Разработчик
Регистрация
8 Июн 2017
Сообщения
142
Симпатии
85
Пол
Мужской
#11
gesk1995, Тю блэат
PHP:
if(!is_user_admin(id)) return PLUGIN_CONTINUE;
>>>
PHP:
if(is_user_admin(id)) return PLUGIN_CONTINUE;