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

Статус
В этой теме нельзя размещать новые ответы.

gesk1995

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

Вложения

пазлик~

Скриптер
Скриптер
Регистрация
8 Июн 2017
Сообщения
235
Симпатии
134
Пол
Мужской
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, последнее придаст нагрузки на сервер.
 
Последнее редактирование:

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304
пазлик~,
Побольше бы таких 'умников' как ты :D (в хорошем смысле)
 

gesk1995

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

Inline

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

пазлик~

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

gesk1995

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

пазлик~

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

На, не благодари. Уже более готовый вариант.
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
Сообщения
339
Симпатии
12
Пол
Мужской
пазлик~, Слушай , А вот по дефолту "Флаг А" Если не раcкоментировать строку ( Админ Скикими флагами будет получать Стим Бонусы,)(abcdfijmnrtu)
//#define FLAG_IMMUNITY ADMIN_IMMUNITY // Если раскоментировать строку будет только на один флаг который вы укажите из amxconst.inc
[doublepost=1498168194][/doublepost]пазлик~, Тестил Без Админки Бонусы не работают вообще , До 5 раунда Поиграл !
 

sonyx

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

пазлик~

Скриптер
Скриптер
Регистрация
8 Июн 2017
Сообщения
235
Симпатии
134
Пол
Мужской
gesk1995, Тю блэат
PHP:
if(!is_user_admin(id)) return PLUGIN_CONTINUE;
>>>
PHP:
if(is_user_admin(id)) return PLUGIN_CONTINUE;
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу