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

Помощь Вывод информации из [ forward OnAPIMemberConnected ]

D1m0n41k

Участник
Сообщения
486
Реакции
202
Баллы
43
Добрый день!

Наверное немного 2 глупых вопроса... Но все же.

1. Подскажите пожалуйста, как верно вывести данные игрока из форварда:
forward OnAPIMemberConnected(id, memberId, memberName[])

Делаю вот так:
C++:
log_to_file(szLogFileName, "[%s v%s] User:        ^"%s^" ", szPluginInfo[0], szPluginInfo[1], memberName);
log_to_file(szLogFileName, "[%s v%s] User ID:    ^"%d^" ", szPluginInfo[0], szPluginInfo[1], memberId);

И там где memberName выдает ошибку:
error 029: invalid expression, assumed zero

2. Сделал вот так:
C++:
new get_EndTime = cvars[g_iRegTime]*60*60 - cmsapi_get_user_gametime(id);

Но почему то при использовании get_EndTime для вывода результата в тот же лог или чат:
C++:
; Пример
client_print_color(id, 0, "^3[^4Reg Vip^3] ^4%s^1, до окончания услуги осталось ^3[^4%d^3] ^1часов^4!", szName, get_EndTime);
Выдает warning:
warning 204: symbol is assigned a value that is never used: "get_EndTime"


За ранее большое спасибо за подсказки :rolleyes:

Весь исходный код плагина:
C++:
#pragma compress 1

#include <amxmodx>
#include <gamecms5>

new szPluginInfo[][] = { "CMSGive_RegVip", "1.0", "SevCorp" };

new szLogFileName[] = "CMSGive_RegVip.log"    // Название лог файла
enum szCvarCreate { g_szFlags[16], g_szAward[128], szFlagsAccess[16], g_iRegTime, g_iLogingOn, get_EndTime };
new cvars[szCvarCreate];

public plugin_precache() {
    register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
    initCvars();
}
public OnAPIMemberConnected(id, memberId, memberName[])
{
    new szName[36], MapName[32];
    get_user_name(id, szName, charsmax(szName));
    get_mapname(MapName, charsmax(MapName));
    new get_EndTime = cvars[g_iRegTime]*60*60 - cmsapi_get_user_gametime(id);
    if(checkAccess(id, cvars[szFlagsAccess])) {
        if((cmsapi_get_user_regdate(id) + cvars[g_iRegTime]*60*60) > get_systime()) {
            cmsapi_set_user_flags(id, cvars[g_szFlags], -1, cvars[g_szAward]);
            client_print_color(id, 0, "^3[^4Reg Vip^3] ^4%s^1, до окончания услуги осталось ^3[^4%d^3] ^1часов^4!", szName, get_EndTime);
        }
        if(cvars[g_iLogingOn] == 1) {
            log_to_file(szLogFileName, "[%s v%s] ----------------------Started on the map: %s----------------------", szPluginInfo[0], szPluginInfo[1], MapName);
            log_to_file(szLogFileName, "[%s v%s] Time:            ^"%d^" ", szPluginInfo[0], szPluginInfo[1], cvars[g_iRegTime]);
            log_to_file(szLogFileName, "[%s v%s] GiveFlags:        ^"%s^" ", szPluginInfo[0], szPluginInfo[1], cvars[g_szFlags]);
            log_to_file(szLogFileName, "[%s v%s] FlagsAccess:    ^"%s^" ", szPluginInfo[0], szPluginInfo[1], cvars[szFlagsAccess]);
            log_to_file(szLogFileName, "[%s v%s] Award:            ^"%s^" ", szPluginInfo[0], szPluginInfo[1], cvars[g_szAward]);
            log_to_file(szLogFileName, "[%s v%s] ----------------------------Giv Users-----------------------------", szPluginInfo[0], szPluginInfo[1]);
            log_to_file(szLogFileName, "[%s v%s] User:            ^"%s^" ", szPluginInfo[0], szPluginInfo[1], memberName);
            log_to_file(szLogFileName, "[%s v%s] User ID:        ^"%d^" ", szPluginInfo[0], szPluginInfo[1], memberId);
            log_to_file(szLogFileName, "[%s v%s] TimeLeft:        ^"%s^" ", szPluginInfo[0], szPluginInfo[1], get_EndTime);
            log_to_file(szLogFileName, "[%s v%s] --------------------LogFile END on the map: %s--------------------", szPluginInfo[0], szPluginInfo[1], MapName);
}    }    }
initCvars() {
    bind_pcvar_num(create_cvar("g_iLogingOn",        "1",                        FCVAR_NONE, "Логирование выдачи привилегий:^n0 - Выключить^n1 - Включить"                                                         ), cvars[g_iLogingOn]);
    bind_pcvar_num(create_cvar("g_iRegTime",        "24",                        FCVAR_NONE, "В течение скольких часов с момента регистрации выдавать флаги"                                                     ), cvars[g_iRegTime]);
    bind_pcvar_string(create_cvar("g_szFlags",        "t",                        FCVAR_NONE, "Какие флаги выдавать игроку?^nФлаги выдаются только до конца карты!"                                                ), cvars[g_szFlags],        charsmax(cvars[g_szFlags]));
    bind_pcvar_string(create_cvar("szFlagsAccess",    "z",                        FCVAR_NONE, "Игрокам с каким флагом выдавать привилегию^nСтавьте флаг ^"z^"^nчто бы флаги выдавалиь только обычным игрокам "    ), cvars[szFlagsAccess],    charsmax(cvars[szFlagsAccess]));
    bind_pcvar_string(create_cvar("g_szAward",      "Награда за регистрацию",    FCVAR_NONE, "название награды^nУказывать в часах"                                                                               ), cvars[g_szAward],        charsmax(cvars[g_szAward]));

    AutoExecConfig(true, "CMSGive_RegVip", "SevCorp");
}
checkAccess(id, const flags[]){
    return (get_user_flags(id) & read_flags(flags));
}
 
Последнее редактирование:
Diff:
- new get_EndTime = cvars[g_iRegTime]*60*60 - cmsapi_get_user_gametime(id);
+ cvars[get_EndTime] = cvars[g_iRegTime]*60*60 - cmsapi_get_user_gametime(id);
или удалить get_EndTime из enum szCvarCreate
 
Код:
enum szCvarCreate { g_szFlags[16], g_szAward[128], szFlagsAccess[16], g_iRegTime, g_iLogingOn };
 
D1m0n41k, не вижу никаких проблем
C++:
#pragma compress 1

#include <amxmodx>
#include <gamecms5>

new szPluginInfo[][] = { "CMSGive_RegVip", "1.0", "SevCorp" };

new szLogFileName[] = "CMSGive_RegVip.log"    // Название лог файла
enum szCvarCreate { g_szFlags[16], g_szAward[128], szFlagsAccess[16], g_iRegTime, g_iLogingOn };
new cvars[szCvarCreate];

public plugin_precache() {
    register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
    initCvars();
}
public OnAPIMemberConnected(id, memberId, memberName[])
{
    new szName[36], MapName[32];
    get_user_name(id, szName, charsmax(szName));
    get_mapname(MapName, charsmax(MapName));
    new get_EndTime = cvars[g_iRegTime]*60*60 - cmsapi_get_user_gametime(id);
    if(checkAccess(id, cvars[szFlagsAccess])) {
        if((cmsapi_get_user_regdate(id) + cvars[g_iRegTime]*60*60) > get_systime()) {
            cmsapi_set_user_flags(id, cvars[g_szFlags], -1, cvars[g_szAward]);
            client_print_color(id, 0, "^3[^4Reg Vip^3] ^4%s^1, до окончания услуги осталось ^3[^4%d^3] ^1часов^4!", szName, get_EndTime);
        }
        if(cvars[g_iLogingOn] == 1) {
            log_to_file(szLogFileName, "[%s v%s] ----------------------Started on the map: %s----------------------", szPluginInfo[0], szPluginInfo[1], MapName);
            log_to_file(szLogFileName, "[%s v%s] Time:            ^"%d^" ", szPluginInfo[0], szPluginInfo[1], cvars[g_iRegTime]);
            log_to_file(szLogFileName, "[%s v%s] GiveFlags:        ^"%s^" ", szPluginInfo[0], szPluginInfo[1], cvars[g_szFlags]);
            log_to_file(szLogFileName, "[%s v%s] FlagsAccess:    ^"%s^" ", szPluginInfo[0], szPluginInfo[1], cvars[szFlagsAccess]);
            log_to_file(szLogFileName, "[%s v%s] Award:            ^"%s^" ", szPluginInfo[0], szPluginInfo[1], cvars[g_szAward]);
            log_to_file(szLogFileName, "[%s v%s] ----------------------------Giv Users-----------------------------", szPluginInfo[0], szPluginInfo[1]);
            log_to_file(szLogFileName, "[%s v%s] User:            ^"%s^" ", szPluginInfo[0], szPluginInfo[1], memberName);
            log_to_file(szLogFileName, "[%s v%s] User ID:        ^"%d^" ", szPluginInfo[0], szPluginInfo[1], memberId);
            log_to_file(szLogFileName, "[%s v%s] TimeLeft:        ^"%s^" ", szPluginInfo[0], szPluginInfo[1], get_EndTime);
            log_to_file(szLogFileName, "[%s v%s] --------------------LogFile END on the map: %s--------------------", szPluginInfo[0], szPluginInfo[1], MapName);
}    }    }
initCvars() {
    bind_pcvar_num(create_cvar("g_iLogingOn",        "1",                        FCVAR_NONE, "Логирование выдачи привилегий:^n0 - Выключить^n1 - Включить"                                                         ), cvars[g_iLogingOn]);
    bind_pcvar_num(create_cvar("g_iRegTime",        "24",                        FCVAR_NONE, "В течение скольких часов с момента регистрации выдавать флаги"                                                     ), cvars[g_iRegTime]);
    bind_pcvar_string(create_cvar("g_szFlags",        "t",                        FCVAR_NONE, "Какие флаги выдавать игроку?^nФлаги выдаются только до конца карты!"                                                ), cvars[g_szFlags],        charsmax(cvars[g_szFlags]));
    bind_pcvar_string(create_cvar("szFlagsAccess",    "z",                        FCVAR_NONE, "Игрокам с каким флагом выдавать привилегию^nСтавьте флаг ^"z^"^nчто бы флаги выдавалиь только обычным игрокам "    ), cvars[szFlagsAccess],    charsmax(cvars[szFlagsAccess]));
    bind_pcvar_string(create_cvar("g_szAward",      "Награда за регистрацию",    FCVAR_NONE, "название награды^nУказывать в часах"                                                                               ), cvars[g_szAward],        charsmax(cvars[g_szAward]));

    AutoExecConfig(true, "CMSGive_RegVip", "SevCorp");
}
checkAccess(id, const flags[]){
    return (get_user_flags(id) & read_flags(flags));
}
 
немного неправильное название переменных, хотя это опять же вкусовщина :p
 
zhorzh78, странно, вроде все как у Вас, но скопировал Ваше и все нормально.

Спасибо большое за помощь!
 
Назад
Сверху