• Пожалуйста, создайте название темы отражающее ее смысл
  • Для ускорения решения Вашего вопроса заполните обязательные поля и подробно опишите возникшую проблему

Помощь помощь по HUD Informer

alan191

Участник
Сообщения
121
Реакции
2
Баллы
18
Здравствуйте! ребят как сделать что бы при написании /offinfo текст "данный игрок не зарегистрирован" всё равно осталось
а текст "Хочешь получать бонусы?" убиралось
Код:
#include <amxmodx>
#include <fakemeta>
#include <gamecms5>

#define PLUGIN "GameCMS_Informer"
#define VERSION "2.3 API5"
#define AUTHOR "zhorzh78"

#define MAX_PLAYERS    32
#define HUD_OFFSET    5478
#define hudUpdateInterval    5.0

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif
#if !defined AMXX_VERSION_RELEASE
#define client_disconnected client_disconnect
#endif

#define SHOW_REGDATE

enum _:InfoSetup
{
    bool:is_registered,
    hud_active,
    uName[33],
    uMsgNum,
    uGroup[65],
    uThanks,
    #if defined SHOW_REGDATE
    uRegDate[11],
    #endif
    uRatings
}
new HUD_Setup[MAX_PLAYERS+1][InfoSetup]

new informerSyncObj
new bool:user_gladmin[MAX_PLAYERS+1];
new map_valid, bool:gamecms_wallet, bool:shop_loaded, bool:reg_loaded

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /offinfo","HUD_Off")
    
    informerSyncObj = CreateHudSyncObj()
    
    set_task(200.0, "anons", _, _, _, "b")
}

public anons()
{
    for(new i = 1; i <= MAX_PLAYERS; i++)
    {
        if(HUD_Setup[i][is_registered] || !is_user_connected(i))
            continue

        client_print_color(i, 0, "^4[Инфо] ^1Укажи свой SteamID в профиле на  сайте ^4%scsgames.su ^1и получай бонусы за игру", SiteUrl)
        client_print_color(i, 0, "^4[Инфо] ^1Для отключения информера о регистрации, напиши в чат ^4/offinfo")
    }
}
    
public plugin_cfg()
{
    get_cvar_string("cms_url", SiteUrl, charsmax(SiteUrl))
    if(is_plugin_loaded("GameCMS_Registration") != -1)
        reg_loaded = true;
}

public OnAPIPluginStop()
{
    log_amx("Plugin paused. GameCMS_API is not loaded");
    pause("a");
}

// ========= привязка к GameCMS Shop
public map_validate(is_map_valid)
{
    gamecms_wallet = true;
    shop_loaded = true;
    map_valid = is_map_valid;
}
// =========

public HUD_Off(id)
{
    HUD_Setup[id][hud_active] = 0
}

public client_putinserver(id)
{
    if(task_exists(HUD_OFFSET + id))
        remove_task(HUD_OFFSET + id);
    arrayset(HUD_Setup[id], 0, InfoSetup);

    HUD_Setup[id][hud_active] = 1;
    set_task(hudUpdateInterval,"Show_Hud_Informer",HUD_OFFSET + id,.flags="b");
    
    if(get_user_flags(id) & ADMIN_RCON)
        user_gladmin[id] = true;
}

public OnAPISendChatPrefix(id, prefix[], type)
    copy(HUD_Setup[id][uGroup], charsmax(HUD_Setup[][uGroup]), prefix);

public OnAPIMemberConnected(id, memberId, memberName[])
{
    HUD_Setup[id][is_registered] = true;
    
    new Data[4];
    if(!cmsapi_get_forum_data(id, Data, HUD_Setup[id][uName], charsmax(HUD_Setup[][uName])))
        return;
    
    HUD_Setup[id][uMsgNum] = Data[3];
    HUD_Setup[id][uThanks] = Data[0];
    HUD_Setup[id][uRatings] = Data[2];
    #if defined SHOW_REGDATE
    cmsapi_get_user_regdate(id, HUD_Setup[id][uRegDate], charsmax(HUD_Setup[][uRegDate]));
    #endif
}

public client_disconnected(id)
{
    if(task_exists(HUD_OFFSET + id))
        remove_task(HUD_OFFSET + id);
    arrayset(HUD_Setup[id], 0, InfoSetup);
}

public Show_Hud_Informer(taskId)
{
    new id = taskId - HUD_OFFSET;
    
    if(!HUD_Setup[id][hud_active])
        return;
    
    new watchId = id;
    new isAlive = is_user_alive(id);
    
    if(!is_user_connected(id))
    {
        remove_task(taskId);
        return;
    }

    if(informerSyncObj != 0)
        ClearSyncHud(id,informerSyncObj);

    if(!isAlive)
    {
        watchId = pev(id, pev_iuser2);
        
        if(!watchId)
            return;
    }

    new hudMessage[350], len;
    new Float:wallet = cmsapi_get_user_money(watchId);
    
    switch(isAlive)
    {
        case 1:
        if(HUD_Setup[id][is_registered])
        {
            if(HUD_Setup[id][uMsgNum] > 0)
                len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nНовых сообщений: %d", HUD_Setup[id][uMsgNum]);
            if(map_valid)
            {
                if(gamecms_wallet)
                    len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nВ кошельке: %.2f руб.",
                        _:wallet >= 0 ? wallet + 0.005 : wallet - 0.005);
                if(shop_loaded)
                    len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nМагазин: / shop");
            }
        }
        else len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Хочешь получать бонусы?^nЗарегистрируйся ^nна сайте %s%s^nОтключить эту инфу-^nпиши /offinfo", SiteUrl,
        reg_loaded ? "^nДля регистрации с сервера ^nпиши /regme" : "");


        case 0:
        if(HUD_Setup[watchId][is_registered])
        {
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "%s^n", HUD_Setup[watchId][uGroup]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Имя: %s^n", HUD_Setup[watchId][uName]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Рейтинг: %d^n", HUD_Setup[watchId][uRatings]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Благодарностей: %d^n", HUD_Setup[watchId][uThanks]);
            if(user_gladmin[id])
                len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Баланс: %.2f руб.^n", wallet);
            #if defined SHOW_REGDATE
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "С нами с: %s", HUD_Setup[watchId][uRegDate]);
            #endif
        }
        else len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nДанный игрок ^nне зарегистрирован");
    }
    ClearSyncHud(id, informerSyncObj);
    set_hudmessage(250, 100, 100, 0.75 , 0.52, .holdtime = hudUpdateInterval, .channel = 4);
    ShowSyncHudMsg(id, informerSyncObj, hudMessage);
}
 
@alan191, Это разные сообщения. Одно показывает вам, другое- тому, кто смотрит за вами.
Другими словами, оно так и есть, как вы говорите. Либо правильно выражайтесь, либо показывайте на скринах, что нужно.
 
@zhorzh78, когда пишут /offinfo то пропадает весь текст и у игроков которые следят, а нужно чтоб инфо " данный игрок не зарегестрирован" не пропадало
 
Diff:
#include <amxmodx>
#include <fakemeta>
#include <gamecms5>

#define PLUGIN "GameCMS_Informer"
#define VERSION "2.3 API5"
#define AUTHOR "zhorzh78"

#define MAX_PLAYERS    32
#define HUD_OFFSET    5478
#define hudUpdateInterval    5.0

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif
#if !defined AMXX_VERSION_RELEASE
#define client_disconnected client_disconnect
#endif

#define SHOW_REGDATE

enum _:InfoSetup
{
    bool:is_registered,
    hud_active,
    uName[33],
    uMsgNum,
    uGroup[65],
    uThanks,
    #if defined SHOW_REGDATE
    uRegDate[11],
    #endif
    uRatings
}
new HUD_Setup[MAX_PLAYERS+1][InfoSetup]

new informerSyncObj
new bool:user_gladmin[MAX_PLAYERS+1];
new map_valid, bool:gamecms_wallet, bool:shop_loaded, bool:reg_loaded

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /offinfo","HUD_Off")
    
    informerSyncObj = CreateHudSyncObj()
    
    set_task(200.0, "anons", _, _, _, "b")
}

public anons()
{
    for(new i = 1; i <= MAX_PLAYERS; i++)
    {
        if(HUD_Setup[i][is_registered] || !is_user_connected(i))
            continue

        client_print_color(i, 0, "^4[Инфо] ^1Укажи свой SteamID в профиле на  сайте ^4%scsgames.su ^1и получай бонусы за игру", SiteUrl)
        client_print_color(i, 0, "^4[Инфо] ^1Для отключения информера о регистрации, напиши в чат ^4/offinfo")
    }
}
    
public plugin_cfg()
{
    get_cvar_string("cms_url", SiteUrl, charsmax(SiteUrl))
    if(is_plugin_loaded("GameCMS_Registration") != -1)
        reg_loaded = true;
}

public OnAPIPluginStop()
{
    log_amx("Plugin paused. GameCMS_API is not loaded");
    pause("a");
}

// ========= привязка к GameCMS Shop
public map_validate(is_map_valid)
{
    gamecms_wallet = true;
    shop_loaded = true;
    map_valid = is_map_valid;
}
// =========

public HUD_Off(id)
{
    HUD_Setup[id][hud_active] = 0
}

public client_putinserver(id)
{
    if(task_exists(HUD_OFFSET + id))
        remove_task(HUD_OFFSET + id);
    arrayset(HUD_Setup[id], 0, InfoSetup);

    HUD_Setup[id][hud_active] = 1;
    set_task(hudUpdateInterval,"Show_Hud_Informer",HUD_OFFSET + id,.flags="b");
    
    if(get_user_flags(id) & ADMIN_RCON)
        user_gladmin[id] = true;
}

public OnAPISendChatPrefix(id, prefix[], type)
    copy(HUD_Setup[id][uGroup], charsmax(HUD_Setup[][uGroup]), prefix);

public OnAPIMemberConnected(id, memberId, memberName[])
{
    HUD_Setup[id][is_registered] = true;
    
    new Data[4];
    if(!cmsapi_get_forum_data(id, Data, HUD_Setup[id][uName], charsmax(HUD_Setup[][uName])))
        return;
    
    HUD_Setup[id][uMsgNum] = Data[3];
    HUD_Setup[id][uThanks] = Data[0];
    HUD_Setup[id][uRatings] = Data[2];
    #if defined SHOW_REGDATE
    cmsapi_get_user_regdate(id, HUD_Setup[id][uRegDate], charsmax(HUD_Setup[][uRegDate]));
    #endif
}

public client_disconnected(id)
{
    if(task_exists(HUD_OFFSET + id))
        remove_task(HUD_OFFSET + id);
    arrayset(HUD_Setup[id], 0, InfoSetup);
}

public Show_Hud_Informer(taskId)
{
    new id = taskId - HUD_OFFSET;
    
-  if(!HUD_Setup[id][hud_active])
-      return;
    
    new watchId = id;
    new isAlive = is_user_alive(id);
    
    if(!is_user_connected(id))
    {
        remove_task(taskId);
        return;
    }

    if(informerSyncObj != 0)
        ClearSyncHud(id,informerSyncObj);

    if(!isAlive)
    {
        watchId = pev(id, pev_iuser2);
        
        if(!watchId)
            return;
    }

    new hudMessage[350], len;
    new Float:wallet = cmsapi_get_user_money(watchId);
    
    switch(isAlive)
    {
        case 1:
        if(HUD_Setup[id][is_registered])
        {
            if(HUD_Setup[id][uMsgNum] > 0)
                len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nНовых сообщений: %d", HUD_Setup[id][uMsgNum]);
            if(map_valid)
            {
                if(gamecms_wallet)
                    len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nВ кошельке: %.2f руб.",
                        _:wallet >= 0 ? wallet + 0.005 : wallet - 0.005);
                if(shop_loaded)
                    len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nМагазин: / shop");
            }
        }
-        else
+        else if(HUD_Setup[id][hud_active])
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Хочешь получать бонусы?^nЗарегистрируйся ^nна сайте %s%s^nОтключить эту инфу-^nпиши /offinfo", SiteUrl,
        reg_loaded ? "^nДля регистрации с сервера ^nпиши /regme" : "");


        case 0:
        if(HUD_Setup[watchId][is_registered])
        {
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "%s^n", HUD_Setup[watchId][uGroup]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Имя: %s^n", HUD_Setup[watchId][uName]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Рейтинг: %d^n", HUD_Setup[watchId][uRatings]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Благодарностей: %d^n", HUD_Setup[watchId][uThanks]);
            if(user_gladmin[id])
                len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Баланс: %.2f руб.^n", wallet);
            #if defined SHOW_REGDATE
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "С нами с: %s", HUD_Setup[watchId][uRegDate]);
            #endif
        }
        else len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nДанный игрок ^nне зарегистрирован");
    }
    ClearSyncHud(id, informerSyncObj);
    set_hudmessage(250, 100, 100, 0.75 , 0.52, .holdtime = hudUpdateInterval, .channel = 4);
    ShowSyncHudMsg(id, informerSyncObj, hudMessage);
}
 
@alan191, Это тема Помощь по скриптингу, а "сделайте за меня"

C++:
#include <amxmodx>
#include <fakemeta>
#include <gamecms5>

#define PLUGIN "GameCMS_Informer"
#define VERSION "2.3 API5"
#define AUTHOR "zhorzh78"

#define MAX_PLAYERS    32
#define HUD_OFFSET    5478
#define hudUpdateInterval    5.0

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif
#if !defined AMXX_VERSION_RELEASE
#define client_disconnected client_disconnect
#endif

#define SHOW_REGDATE

enum _:InfoSetup
{
    bool:is_registered,
    hud_active,
    uName[33],
    uMsgNum,
    uGroup[65],
    uThanks,
    #if defined SHOW_REGDATE
    uRegDate[11],
    #endif
    uRatings
}
new HUD_Setup[MAX_PLAYERS+1][InfoSetup]

new informerSyncObj
new bool:user_gladmin[MAX_PLAYERS+1];
new map_valid, bool:gamecms_wallet, bool:shop_loaded, bool:reg_loaded

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /offinfo","HUD_Off")
    
    informerSyncObj = CreateHudSyncObj()
    
    set_task(200.0, "anons", _, _, _, "b")
}

public anons()
{
    for(new i = 1; i <= MAX_PLAYERS; i++)
    {
        if(HUD_Setup[i][is_registered] || !is_user_connected(i))
            continue

        client_print_color(i, 0, "^4[Инфо] ^1Укажи свой SteamID в профиле на  сайте ^4%scsgames.su ^1и получай бонусы за игру", SiteUrl)
        client_print_color(i, 0, "^4[Инфо] ^1Для отключения информера о регистрации, напиши в чат ^4/offinfo")
    }
}
    
public plugin_cfg()
{
    get_cvar_string("cms_url", SiteUrl, charsmax(SiteUrl))
    if(is_plugin_loaded("GameCMS_Registration") != -1)
        reg_loaded = true;
}

public OnAPIPluginStop()
{
    log_amx("Plugin paused. GameCMS_API is not loaded");
    pause("a");
}

// ========= привязка к GameCMS Shop
public map_validate(is_map_valid)
{
    gamecms_wallet = true;
    shop_loaded = true;
    map_valid = is_map_valid;
}
// =========

public HUD_Off(id)
{
    HUD_Setup[id][hud_active] = 0
}

public client_putinserver(id)
{
    if(task_exists(HUD_OFFSET + id))
        remove_task(HUD_OFFSET + id);
    arrayset(HUD_Setup[id], 0, InfoSetup);

    HUD_Setup[id][hud_active] = 1;
    set_task(hudUpdateInterval,"Show_Hud_Informer",HUD_OFFSET + id,.flags="b");
    
    if(get_user_flags(id) & ADMIN_RCON)
        user_gladmin[id] = true;
}

public OnAPISendChatPrefix(id, prefix[], type)
    copy(HUD_Setup[id][uGroup], charsmax(HUD_Setup[][uGroup]), prefix);

public OnAPIMemberConnected(id, memberId, memberName[])
{
    HUD_Setup[id][is_registered] = true;
    
    new Data[4];
    if(!cmsapi_get_forum_data(id, Data, HUD_Setup[id][uName], charsmax(HUD_Setup[][uName])))
        return;
    
    HUD_Setup[id][uMsgNum] = Data[3];
    HUD_Setup[id][uThanks] = Data[0];
    HUD_Setup[id][uRatings] = Data[2];
    #if defined SHOW_REGDATE
    cmsapi_get_user_regdate(id, HUD_Setup[id][uRegDate], charsmax(HUD_Setup[][uRegDate]));
    #endif
}

public client_disconnected(id)
{
    if(task_exists(HUD_OFFSET + id))
        remove_task(HUD_OFFSET + id);
    arrayset(HUD_Setup[id], 0, InfoSetup);
}

public Show_Hud_Informer(taskId)
{
    new id = taskId - HUD_OFFSET;
    
    new watchId = id;
    new isAlive = is_user_alive(id);
    
    if(!is_user_connected(id))
    {
        remove_task(taskId);
        return;
    }

    if(informerSyncObj != 0)
        ClearSyncHud(id,informerSyncObj);

    if(!isAlive)
    {
        watchId = pev(id, pev_iuser2);
        
        if(!watchId)
            return;
    }

    new hudMessage[350], len;
    new Float:wallet = cmsapi_get_user_money(watchId);
    
    switch(isAlive)
    {
        case 1:
        if(HUD_Setup[id][is_registered])
        {
            if(HUD_Setup[id][uMsgNum] > 0)
                len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nНовых сообщений: %d", HUD_Setup[id][uMsgNum]);
            if(map_valid)
            {
                if(gamecms_wallet)
                    len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nВ кошельке: %.2f руб.",
                        _:wallet >= 0 ? wallet + 0.005 : wallet - 0.005);
                if(shop_loaded)
                    len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nМагазин: / shop");
            }
        }
        else if(HUD_Setup[id][hud_active])
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Хочешь получать бонусы?^nЗарегистрируйся ^nна сайте %s%s^nОтключить эту инфу-^nпиши /offinfo", SiteUrl,
        reg_loaded ? "^nДля регистрации с сервера ^nпиши /regme" : "");


        case 0:
        if(HUD_Setup[watchId][is_registered])
        {
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "%s^n", HUD_Setup[watchId][uGroup]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Имя: %s^n", HUD_Setup[watchId][uName]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Рейтинг: %d^n", HUD_Setup[watchId][uRatings]);
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Благодарностей: %d^n", HUD_Setup[watchId][uThanks]);
            if(user_gladmin[id])
                len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Баланс: %.2f руб.^n", wallet);
            #if defined SHOW_REGDATE
            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "С нами с: %s", HUD_Setup[watchId][uRegDate]);
            #endif
        }
        else len += formatex(hudMessage[len], charsmax(hudMessage) - len, "^nДанный игрок ^nне зарегистрирован");
    }
    ClearSyncHud(id, informerSyncObj);
    set_hudmessage(250, 100, 100, 0.75 , 0.52, .holdtime = hudUpdateInterval, .channel = 4);
    ShowSyncHudMsg(id, informerSyncObj, hudMessage);
}
 
Подскажите на какой строке менять координаты?
И как отключить это, чтобы никому не показывало данное сообщение на сервере?:
"Хочешь получать бонусы?^nЗарегистрируйся ^nна сайте %s%s^nОтключить эту инфу-^nпиши /offinfo"
 
C++:
// else if(HUD_Setup[id][hud_active])
//            len += formatex(hudMessage[len], charsmax(hudMessage) - len, "Хочешь получать бонусы?^nЗарегистрируйся ^nна сайте %s%s^nОтключить эту инфу-^nпиши /offinfo", SiteUrl,
//        reg_loaded ? "^nДля регистрации с сервера ^nпиши /regme" : "");

C++:
set_hudmessage(250, 100, 100, 0.75 , 0.52, .holdtime = hudUpdateInterval, .channel = 4);
0.75 - x
0.52 - y
 
Назад
Сверху