Help Не выводит скилл AES

Puma4ka

Пользователь
Регистрация
1 Июл 2019
Сообщения
71
Симпатии
1
OS
Linux
Amx Mod X
AMXX 1.8.2
Билд
-
Metamod
-
Meta модули
Код:
-
Плагины
Код:
-
Amxx Модули
Код:
-
Ошибка
Код:
-
Добрый день. Не выводит скилл в информер, уже много чего перепробывал, вместо буквы скилла, пишется <skill>. Можете помочь в проблеме.
Aes.txt:
Код:
AES_INFORMER0 = Ник : %s
AES_INFORMER1 = Ранг : %s
AES_INFORMER2 = Опыт : [%.0f/%.0f]\n

SKILL = Скилл: %s

AES_HUD_TPL = Ранг : <rank>\nОпыт : [<exp>/<levelexp>]\nСкилл : [<skill>]
AES_HUD_TPL_D = Ник : <name>\nРанг : <rank>\nОпыт : [<exp>/<levelexp>]\nСкилл : [<skill>]
 

Вложения

Izmayl7

Пользователь
Регистрация
9 Июн 2017
Сообщения
530
Симпатии
105
Пол
Мужской
Добрый день. Не выводит скилл в информер, уже много чего перепробывал, вместо буквы скилла, пишется <skill>. Можете помочь в проблеме.
Aes.txt:
Код:
AES_INFORMER0 = Ник : %s
AES_INFORMER1 = Ранг : %s
AES_INFORMER2 = Опыт : [%.0f/%.0f]\n

SKILL = Скилл: %s

AES_HUD_TPL = Ранг : <rank>\nОпыт : [<exp>/<levelexp>]\nСкилл : [<skill>]
AES_HUD_TPL_D = Ник : <name>\nРанг : <rank>\nОпыт : [<exp>/<levelexp>]\nСкилл : [<skill>]
держи:
C-like:
/*
    Advanced Experience System
    by serfreeman1337        http://gf.hldm.org/
*/

/*
    HUD Informer
*/

#include <amxmodx>
#include <amxmisc>

#include <engine>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
    
    #define print_team_default DontChange
    #define print_team_grey Grey
    #define print_team_red Red
    #define print_team_blue Blue
    
    #define MAX_NAME_LENGTH 32
    #define MAX_PLAYERS 32
    
    #define client_disconnected client_disconnect
#endif

#include <aes_v>
#include <csstatsx_sql>

#define PLUGIN "AES: Informer"
#define VERSION "0.5 Vega"
#define AUTHOR "serfreeman1337"

#define PLAYER_HUD_OFFSET    86444

/* - CVARS - */

enum _:cvars_num {
    CVAR_HUD_UPDATE,
    CVAR_HUD_INFO_DEFAULT,
    CVAR_HUD_INFO_TYPE,
    CVAR_HUD_INFO_COLOR,
    CVAR_HUD_INFO_POS,
    CVAR_HUD_INFO_TYPE_D,
    CVAR_HUD_INFO_COLOR_D,
    CVAR_HUD_INFO_POS_D,
    CVAR_TPL_MODE,
    CVAR_HUD_ANEW_TYPE,
    CVAR_HUD_ANEW_POS,
    CVAR_HUD_ANEW_COLOR,
    CVAR_CHAT_NEW_LEVEL
}
new const g_skill_letters[][] = {
    "L-",
    "L",
    "L+",
    "M-",
    "M",
    "M+",
    "H-",
    "H",
    "H+",
    "P-",
    "P",
    "P+",
    "G"
}
new Float:g_skill_opt[sizeof g_skill_letters]

new g_cvar_skill

new cvar[cvars_num]

/* - CACHED VALUES - */

// кеш от души
new Float:hudUpdateInterval
new bool:hudInfoOn, Float:hudInfoxPos,Float:hudInfoyPos,hudInfoColor[3],bool:hudInfoColorRandom
new bool:hudDeadOn, Float:hudDeadxPos, Float:hudDeadyPos,hudDeadColor[3],bool:hudDeadColorRandom
new bool:hudaNewOn, Float:hudaNewxPos,Float:hudaNewyPos,hudaNewColor[3]
new chatLvlUpStyle,bonusEnabledPointer,bool:isTplMode,aesMaxLevel,g_trackmode
new playerLevel[33][64],playerWatchLevel[33]

/* - SYNC HUD OBJ - */
new informerSyncObj,aNewSyncObj

/* - FILE STORAGE - */

new Trie:g_DisabledInformer

#if AMXX_VERSION_NUM < 183
new Array:g_ADisabledInformer
#endif

enum _:tplInfo {
    INF_EXP,
    INF_LEVELEXP,
    INF_NEEDEXP,
    INF_LEVEL,
    INF_MAXLEVEL,
    INF_RANK,
    INF_NAME,
    INF_STEAMID,
    INF_BONUS,
    
    INF_EXF,
    INF_LXF,
    INF_NXF
}

new const tplKeys[tplInfo][] = {
    "<exp>",
    "<levelexp>",
    "<needexp>",
    "<level>",
    "<maxlevel>",
    "<rank>",
    "<name>",
    "<steamid>",
    "<bonus>",
    
    "<exf>",
    "<lxf>",
    "<nxf>"
}

enum _:tplVario {
    TPL_INF,
    TPL_INF_D,
    TPL_UP,
    TPL_UP_ALL
}

new tplBitSum[tplVario]

new const teamColor[] = {
    print_team_grey,
    print_team_red,
    print_team_blue
}

public plugin_init(){
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    cvar[CVAR_TPL_MODE] = register_cvar("aes_informer_tpl","0")
    cvar[CVAR_HUD_UPDATE] = register_cvar("aes_hud_update","1.5")
    cvar[CVAR_HUD_INFO_DEFAULT] = register_cvar("aes_hud_info_default","1")
    cvar[CVAR_HUD_INFO_TYPE] = register_cvar("aes_hud_info_type","1")
    cvar[CVAR_HUD_INFO_COLOR] = register_cvar("aes_hud_info_color","100 100 100")
    cvar[CVAR_HUD_INFO_POS] = register_cvar("aes_hud_info_pos","0.01 0.13")
    cvar[CVAR_HUD_ANEW_TYPE] = register_cvar("aes_hud_anew_type","1")
    cvar[CVAR_HUD_ANEW_COLOR] = register_cvar("aes_hud_anew_color","100 100 100")
    cvar[CVAR_HUD_ANEW_POS] = register_cvar("aes_hud_anew_pos","-1.0 0.90")
    cvar[CVAR_CHAT_NEW_LEVEL] = register_cvar("aes_newlevel_chat","2")
    
    cvar[CVAR_HUD_INFO_TYPE_D] = register_cvar("aes_hud_info_default_d","1")
    cvar[CVAR_HUD_INFO_COLOR_D] = register_cvar("aes_hud_info_color_d","60 60 60")
    cvar[CVAR_HUD_INFO_POS_D] = register_cvar("aes_hud_info_pos_d","0.01 0.15")
    
    g_cvar_skill = register_cvar("aes_statsx_skill","60.0 75.0 85.0 100.0 115.0 130.0 140.0 150.0 165.0 180.0 195.0 210.0")
    
    register_clcmd("say /aenable","Informer_Switch",0,"- switch experience informer on/off")
}

public plugin_cfg(){
        new levelString[512], stPos, ePos, rawPoint[20], cnt
        get_pcvar_string(g_cvar_skill, levelString, charsmax(levelString))
    
    // парсер значений для скилла
    do {
        ePos = strfind(levelString[stPos], " ")
        
        formatex(rawPoint, ePos, levelString[stPos])
        g_skill_opt[cnt] = str_to_float(rawPoint)
        
        stPos += ePos + 1
        
        cnt++
        
        // narkoman wole suka
        if(cnt > charsmax(g_skill_letters))
            break
    } while (ePos != -1)
    
    bonusEnabledPointer = get_cvar_pointer("aes_bonus_enable")
    
    hudUpdateInterval = get_pcvar_float(cvar[CVAR_HUD_UPDATE])
    hudInfoOn = get_pcvar_num(cvar[CVAR_HUD_INFO_DEFAULT]) > 0 ? true : false
    hudDeadOn = get_pcvar_num(cvar[CVAR_HUD_INFO_TYPE_D]) > 0 ? true : false
    hudaNewOn = get_pcvar_num(cvar[CVAR_HUD_ANEW_TYPE]) > 0 ? true : false
    chatLvlUpStyle = get_pcvar_num(cvar[CVAR_CHAT_NEW_LEVEL])
    isTplMode = get_pcvar_num(cvar[CVAR_TPL_MODE]) > 0 ? true : false
    
    if(!bonusEnabledPointer)
        hudaNewOn = false
    
    new temp[15],sColor[3][6]
    
    if(hudInfoOn){
        get_pcvar_string(cvar[CVAR_HUD_INFO_COLOR],temp,14)
        
        if(strcmp(temp,"random") != 0){
            parse(temp,sColor[0],3,sColor[1],3,sColor[2],3)
        
            hudInfoColor[0] = str_to_num(sColor[0])
            hudInfoColor[1] = str_to_num(sColor[1])
            hudInfoColor[2] = str_to_num(sColor[2])
        }else
            hudInfoColorRandom = true
        
        get_pcvar_string(cvar[CVAR_HUD_INFO_POS],temp,14)
        parse(temp,sColor[0],5,sColor[1],5)
        
        hudInfoxPos = str_to_float(sColor[0])
        hudInfoyPos = str_to_float(sColor[1])
        
        informerSyncObj = CreateHudSyncObj()
        
        if(isTplMode){ // sum
            new tplString[256]
            formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_HUD_TPL")
            
            for(new i ; i < tplInfo ; i++){
                if(contain(tplString,tplKeys[i]) != -1)
                    tplBitSum[TPL_INF] |= (1<<i)
            }
        }
    }
    
    if(hudDeadOn){
        get_pcvar_string(cvar[CVAR_HUD_INFO_COLOR_D],temp,14)
        
        if(strcmp(temp,"random") != 0){
            parse(temp,sColor[0],3,sColor[1],3,sColor[2],3)
        
            hudDeadColor[0] = str_to_num(sColor[0])
            hudDeadColor[1] = str_to_num(sColor[1])
            hudDeadColor[2] = str_to_num(sColor[2])
        }else
            hudDeadColorRandom = true
        
        get_pcvar_string(cvar[CVAR_HUD_INFO_POS_D],temp,14)
        parse(temp,sColor[0],5,sColor[1],5)
        
        hudDeadxPos = str_to_float(sColor[0])
        hudDeadyPos = str_to_float(sColor[1])
        
        if(!informerSyncObj)
            informerSyncObj = CreateHudSyncObj()
            
        if(isTplMode){ // sum
            new tplString[256]
            formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_HUD_TPL_D")
            
            for(new i ; i < tplInfo ; i++){
                if(contain(tplString,tplKeys[i]) != -1)
                    tplBitSum[TPL_INF_D] |= (1<<i)
            }
        }
    }
    
    if(isTplMode){ // bit sum for chat notify messages
        switch(chatLvlUpStyle ){
            case 1:{
                new tplString[256]
                formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_NEWLEVEL_TPL")
            
                for(new i ; i < tplInfo ; i++){
                    if(contain(tplString,tplKeys[i]) != -1)
                        tplBitSum[TPL_UP] |= (1<<i)
                }
        
            }
            case 2:{
                new tplString[256]
                formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_NEWLEVEL_TPL")
            
                for(new i ; i < tplInfo ; i++){
                    if(contain(tplString,tplKeys[i]) != -1)
                        tplBitSum[TPL_UP] |= (1<<i)
                }
                
                formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_NEWLEVEL_ALL_TPL")
            
                for(new i ; i < tplInfo ; i++){
                    if(contain(tplString,tplKeys[i]) != -1)
                        tplBitSum[TPL_UP_ALL] |= (1<<i)
                }
            }
        }
    }
    
    if(hudaNewOn){
        get_pcvar_string(cvar[CVAR_HUD_ANEW_COLOR],temp,14)
        parse(temp,sColor[0],3,sColor[1],3,sColor[2],3)
        
        hudaNewColor[0] = str_to_num(sColor[0])
        hudaNewColor[1] = str_to_num(sColor[1])
        hudaNewColor[2] = str_to_num(sColor[2])
        
        get_pcvar_string(cvar[CVAR_HUD_ANEW_POS],temp,14)
        parse(temp,sColor[0],5,sColor[1],5)
        
        hudaNewxPos = str_to_float(sColor[0])
        hudaNewyPos = str_to_float(sColor[1])
        
        aNewSyncObj = CreateHudSyncObj()
    }
    
    aesMaxLevel = aes_get_max_level() - 1
    
    g_trackmode = get_cvar_num("aes_track_mode")
    g_DisabledInformer = TrieCreate()
    
    #if AMXX_VERSION_NUM < 183
    g_ADisabledInformer = ArrayCreate(36)
    #endif
    
    new fPath[256],len
    
    // TODO: directory autocreate
    len += get_datadir(fPath,charsmax(fPath))
    len += formatex(fPath[len],charsmax(fPath) - len,"/aes/informer.ini")
    
    new f = fopen(fPath,"r")
    
    if(f){
        new buffer[512]
        
        while(!feof(f)){
            fgets(f,buffer,511)
            trim(buffer)
            
            if(!strlen(buffer) || buffer[0] == ';')
                continue
                
            remove_quotes(buffer)
            
            TrieSetCell(g_DisabledInformer,buffer,true)
            
            #if AMXX_VERSION_NUM < 183
            ArrayPushString(g_ADisabledInformer,buffer)
            #endif
        }
        
        fclose(f)
        
    }
}

public plugin_end(){
    new fPath[256],len
    len += get_datadir(fPath,charsmax(fPath))
    len += formatex(fPath[len],charsmax(fPath) - len,"/aes/informer.ini")
        
    #if AMXX_VERSION_NUM < 183   
    if(ArraySize(g_ADisabledInformer)){
        new f = fopen(fPath,"w+")
        
        fprintf(f,"; %s^n; by %s^n^n; Disable informer for SteamID^n",PLUGIN,AUTHOR)
        
        new trackId[36]
        
        for(new i ; i < ArraySize(g_ADisabledInformer) ; ++i){
            ArrayGetString(g_ADisabledInformer,i,trackId,35)
            
            if(!TrieKeyExists(g_DisabledInformer,trackId))
                continue
                
            fprintf(f,"^n^"%s^"",trackId)
        }
        
        fclose(f)
    }
    #else
    new Snapshot:trieIterator = TrieSnapshotCreate(g_DisabledInformer)
    
    if(TrieSnapshotLength(trieIterator)){
        new f = fopen(fPath,"w+")
        fprintf(f,"; %s^n; by %s^n^n; Disable informer for SteamID^n",PLUGIN,AUTHOR)
        
        new trackId[36]
        
        for(new i,trieSize = TrieSnapshotLength(trieIterator) ; i < trieSize ; i++){
            TrieSnapshotGetKey(trieIterator,i,trackId,charsmax(trackId))
            fprintf(f,"^n^"%s^"",trackId)
        }
        
        fclose(f)
    }
    #endif
    
    else{
        if(file_exists(fPath))
            delete_file(fPath)
    }
    
    #if AMXX_VERSION_NUM >= 183
    TrieSnapshotDestroy(trieIterator)
    #endif
}

public Informer_Switch(id){
    if(!hudInfoOn && !hudDeadOn)
        return 0
    
    new trackId[36]
    
    if(!get_player_trackid(id,trackId,charsmax(trackId)))
        return 0
    
    if(!TrieKeyExists(g_DisabledInformer,trackId)){
        TrieSetCell(g_DisabledInformer,trackId,1)
        
        #if AMXX_VERSION_NUM < 183
        if(!CheckStringInArray(g_ADisabledInformer,trackId))
            ArrayPushArray(g_ADisabledInformer,trackId)
        #endif
        
        client_print_color(id,print_team_red,"%L %L",
            id,"AES_TAG",id,"AES_INFORMER_DISABLED")
        
        remove_task(PLAYER_HUD_OFFSET + id)
    }else{
        TrieDeleteKey(g_DisabledInformer,trackId)
        set_task(hudUpdateInterval,"Show_Hud_Informer",PLAYER_HUD_OFFSET + id,.flags="b")
        
        client_print_color(id,print_team_blue,"%L %L",
            id,"AES_TAG",id,"AES_INFORMER_ENABLED")
    }
    
    return 0
}

#if AMXX_VERSION_NUM < 183
CheckStringInArray(Array:which,string[]){
    new str[64]
    
    for(new i,arrSize = ArraySize(which) ; i < arrSize ; ++i){
        ArrayGetString(which,i,str,charsmax(str))
        
        if(strcmp(string,str) == 0)
            return true
    }
    
    return false
}
#endif

public client_putinserver(id){
    if((hudInfoOn || hudaNewOn) && !is_user_bot(id)){
        new trackId[36]
        get_player_trackid(id,trackId,charsmax(trackId))
        
        if(!TrieKeyExists(g_DisabledInformer,trackId))
            set_task(hudUpdateInterval,"Show_Hud_Informer",PLAYER_HUD_OFFSET + id,.flags="b")
    }
}

public client_disconnected(id){
    if((hudInfoOn || hudaNewOn) &&!is_user_bot(id)){
        remove_task(PLAYER_HUD_OFFSET + id)
    }
}

public aes_player_levelup(id,newlevel,oldlevel){
    new levelName[64]
    
    switch(chatLvlUpStyle){
        case 1: {
            aes_get_level_name(newlevel,levelName,charsmax(levelName),id)
            
            if(!isTplMode){
                client_print_color(id,print_team_default,"%L %L",id,"AES_TAG",id,"AES_NEWLEVEL_ID",levelName)
            }else{
                new msg[191],len
                tplFormatNewLevel(id,msg,len,"AES_NEWLEVEL_TPL",id,TPL_UP)
                    
                client_print_color(id,print_team_default,msg)
            }
        }
        case 2:{
            new pls[32],pnum,name[32]
            get_players(pls,pnum,"c")
            get_user_name(id,name,charsmax(name))
            
            new upTeam = get_user_team(id)
            
            if(!(0 <= upTeam < sizeof teamColor))
                upTeam = 0
            
            for(new i,player; i < pnum ; ++i){
                player = pls[i]
                
                aes_get_level_name(newlevel,levelName,charsmax(levelName),player)
                
                if(player != id){
                    if(!isTplMode){
                        client_print_color(player,teamColor[upTeam],"%L %L",player,"AES_TAG",player,"AES_NEWLEVEL_ALL",name,levelName)
                    }else{
                        new msg[191],len
                        tplFormatNewLevel(id,msg,len,"AES_NEWLEVEL_ALL_TPL",player,TPL_UP_ALL)
                        
                        client_print_color(player,teamColor[upTeam],msg)
                    }
                }else{
                    if(!isTplMode){
                        client_print_color(id,teamColor[upTeam],"%L %L",id,"AES_TAG",id,"AES_NEWLEVEL_ID",levelName)
                    }else{
                        new msg[191],len
                        tplFormatNewLevel(id,msg,len,"AES_NEWLEVEL_TPL",id,TPL_UP)
                        
                        client_print_color(id,teamColor[upTeam],msg)
                    }
                }
            }
        }
        default: return
    }
}

public tplFormatNewLevel(id,msg[],len,tplKey[],idLang,tplType){
    new Float:player_exp = aes_get_player_exp(id)
    new Float:player_reqexp = aes_get_player_reqexp(id)
    new player_level = aes_get_player_level(id)
    new player_bonus = aes_get_player_bonus(id)
    
    len = formatex(msg[len],190-len,"%L ",idLang,"AES_TAG")
    
    len += parse_informer_tpl(
        id,id,msg,len,190,tplKey,tplType,idLang,
        
        player_exp,
        player_level,
        player_reqexp,
        player_bonus
    )
                    
    return len
}

public Show_Hud_Informer(taskId){
    new id = taskId - PLAYER_HUD_OFFSET
    new watchId = id
    new isAlive = is_user_alive(id)
    
    if(informerSyncObj != 0)
        ClearSyncHud(id,informerSyncObj)

    if(!isAlive){
        watchId = entity_get_int(id,EV_INT_iuser2)
        
        if(!watchId)
            return
    }
        
    new hudMessage[256],len
    
    new Float:player_exp = aes_get_player_exp(watchId)
    new Float:player_reqexp = aes_get_player_reqexp(watchId)
    new player_level = aes_get_player_level(watchId)
    new player_bonus = aes_get_player_bonus(watchId)

    
    new bool:status = true
    
    if(player_exp == -1.0)
    {
        status = false
    }
        
    if(hudInfoOn){
        ClearSyncHud(id,informerSyncObj)
        
        if(status){
            if(!isTplMode){
                if(playerWatchLevel[id] != player_level || !playerLevel[id][0]){
                    aes_get_level_name(player_level,playerLevel[id],charsmax(playerLevel[]),id)
                    playerWatchLevel[id] = player_level
                }
                
                if(watchId != id){
                    new watchName[32]
                    get_user_name(watchId,watchName,charsmax(watchName))
                    
                    len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L^n",id,"AES_INFORMER0",watchName)
                }
                
                len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L^n",id,"AES_INFORMER1",playerLevel[id])
                if(player_reqexp != -1.0){
                    len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_INFORMER2",player_exp,player_reqexp)
                }else
                    len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_PLAYER_XP_MAX")
            }else{
                if(isAlive)
                {
                    len += parse_informer_tpl(
                        id,watchId,
                        hudMessage,len,charsmax(hudMessage),"AES_HUD_TPL",TPL_INF,id,
                        
                        player_exp,
                        player_level,
                        player_reqexp,
                        player_bonus
                    )
                }
                else if(!isAlive && hudDeadOn)
                {
                    len += parse_informer_tpl(
                        id,watchId,
                        hudMessage,len,charsmax(hudMessage),"AES_HUD_TPL_D",TPL_INF_D,id,
                        
                        player_exp,
                        player_level,
                        player_reqexp,
                        player_bonus
                    )
                }
            }
            new skill[3]
            statsx_get_user_skill_name(id, skill, charsmax(skill))
            len+= formatex(hudMessage[len],charsmax(hudMessage) - len, "%L"  ,id,"SKILL" , skill)

        }
        else
            len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_INFORMER_FAIL")
        
        if(isAlive){
            if(hudInfoColorRandom){
                // рандом такой рандом
                hudInfoColor[0] = random(25500) / 100
                hudInfoColor[1] = random(25500) / 100
                hudInfoColor[2] = random(25500) / 100
            }
            
            set_hudmessage(hudInfoColor[0], hudInfoColor[1], hudInfoColor[2], hudInfoxPos , hudInfoyPos,.holdtime = hudUpdateInterval,.channel = 3)
        }else if(!isAlive && hudDeadOn){
            if(hudDeadColorRandom){
                hudDeadColor[0] = random(25500) / 100
                hudDeadColor[1] = random(25500) / 100
                hudDeadColor[2] = random(25500) / 100
            }
            
            set_hudmessage(hudDeadColor[0],hudDeadColor[1],hudDeadColor[2],hudDeadxPos,hudDeadyPos,0,.holdtime = hudUpdateInterval,.channel = 3)
        }
        
        replace_all(hudMessage,charsmax(hudMessage),"\n","^n")
        ShowSyncHudMsg(id,informerSyncObj,hudMessage)
        
        len = 0
        hudMessage[0] = 0
    }
    
    if(hudaNewOn && get_pcvar_num(bonusEnabledPointer) == 1 && player_bonus > 0 && watchId == id){
        ClearSyncHud(id,aNewSyncObj)
        
        len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_ANEW_HUD",player_bonus)
        replace_all(hudMessage,charsmax(hudMessage),"\n","^n")
        
        set_hudmessage(hudaNewColor[0],hudaNewColor[1],hudaNewColor[2],hudaNewxPos,hudaNewyPos,0,.holdtime = hudUpdateInterval)
        ShowSyncHudMsg(id,aNewSyncObj,hudMessage)
    }
}

public parse_informer_tpl(id,watchId,string[],len,maxLen,tplKey[],tplType,idLang,Float:player_exp,player_level,Float:player_reqexp,player_bonus){
    static tpl[256],tmp[32],i
    
    tpl[0] = 0
    tmp[0] = 0
    
    formatex(tpl,charsmax(tpl),"%L",idLang,tplKey)
    
    player_exp = _:player_exp >= 0 ? player_exp + 0.005 : player_exp - 0.005
    player_reqexp = _:player_reqexp >= 0 ? player_reqexp + 0.005 : player_reqexp - 0.005
    
    for(i = 0; i < tplInfo ; i++){
        if(tplBitSum[tplType] & (1 << i)){
            tmp[0] = 0
            
            switch(i){
                case INF_EXP: formatex(tmp,charsmax(tmp),"%.0f",player_exp)
                case INF_LEVELEXP: formatex(tmp,charsmax(tmp),"%.0f",player_reqexp)
                case INF_NEEDEXP: formatex(tmp,charsmax(tmp),"%.0f",player_reqexp - player_exp)
                case INF_LEVEL: formatex(tmp,charsmax(tmp),"%d",player_level + 1)
                case INF_MAXLEVEL: formatex(tmp,charsmax(tmp),"%d",aesMaxLevel)
                case INF_RANK: {
                    if(playerWatchLevel[id] != player_level || !playerLevel[id][0]){
                        aes_get_level_name(player_level,playerLevel[id],charsmax(playerLevel[]),idLang)
                        playerWatchLevel[id] = player_level
                    }
                    
                    copy(tmp,charsmax(tmp),playerLevel[id])
                }
                case INF_NAME: get_user_name(watchId,tmp,charsmax(tmp))
                case INF_STEAMID: get_user_authid(watchId,tmp,charsmax(tmp))
                case INF_BONUS: formatex(tmp,charsmax(tmp),"%d",player_bonus)
                case INF_EXF: formatex(tmp,charsmax(tmp),"%.2f",player_exp)
                case INF_LXF: formatex(tmp,charsmax(tmp),"%.2f",player_reqexp)
                case INF_NXF: formatex(tmp,charsmax(tmp),"%.2f",player_reqexp - player_exp)
            }
            
            if(tmp[0])
                replace(tpl,charsmax(tpl),tplKeys[i],tmp)
        }
    }
    
    len += formatex(string[len],maxLen-len,tpl)
    
    return len
}

get_player_trackid(id,trackId[],trackLen){
    switch(g_trackmode){
        case 0: get_user_name(id,trackId,trackLen)
        case 1: {
            get_user_authid(id,trackId,trackLen)
            
            if(!strcmp(trackId,"STEAM_ID_LAN") || !strcmp(trackId,"VALVE_ID_LAN") || !strcmp(trackId,"BOT")
                || !strcmp(trackId,"HLTV"))
                return 0
        }
        case 2: get_user_ip(id,trackId,trackLen,1)
    }
    
    return 1
}

statsx_get_user_skill_name(id, name[], len)
{
    new Float:skill
    get_user_skill(id, skill)
    
    new skill_id = statsx_get_skill_id(skill)
    copy(name, len, g_skill_letters[skill_id])
}

statsx_get_skill_id(Float:skill)
{
    for(new i = 0; i < sizeof(g_skill_opt); i++)
    {
        if(skill < g_skill_opt[i])
            return i
    }
    return charsmax(g_skill_opt)
}
aes reapi 0.5.9 нужно. а так переделывать (править) исходник надо. когда создаёшь тему указывай эти все поля (заполняй).
C-like:
Билд
    -

Metamod
    -

Meta модули
    -

Плагины
    -

Amxx Модули
    -

Ошибка
    -
[DOUBLEPOST=1569083849][/DOUBLEPOST]в обычной версии aes_vega 0.5 его нету. выше переделанный вот ещё ссылка, не смог отредактировать уже сообщение (время превысило больше 5 минут).
 

Puma4ka

Пользователь
Регистрация
1 Июл 2019
Сообщения
71
Симпатии
1
держи:
C-like:
/*
    Advanced Experience System
    by serfreeman1337        http://gf.hldm.org/
*/

/*
    HUD Informer
*/

#include <amxmodx>
#include <amxmisc>

#include <engine>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
   
    #define print_team_default DontChange
    #define print_team_grey Grey
    #define print_team_red Red
    #define print_team_blue Blue
   
    #define MAX_NAME_LENGTH 32
    #define MAX_PLAYERS 32
   
    #define client_disconnected client_disconnect
#endif

#include <aes_v>
#include <csstatsx_sql>

#define PLUGIN "AES: Informer"
#define VERSION "0.5 Vega"
#define AUTHOR "serfreeman1337"

#define PLAYER_HUD_OFFSET    86444

/* - CVARS - */

enum _:cvars_num {
    CVAR_HUD_UPDATE,
    CVAR_HUD_INFO_DEFAULT,
    CVAR_HUD_INFO_TYPE,
    CVAR_HUD_INFO_COLOR,
    CVAR_HUD_INFO_POS,
    CVAR_HUD_INFO_TYPE_D,
    CVAR_HUD_INFO_COLOR_D,
    CVAR_HUD_INFO_POS_D,
    CVAR_TPL_MODE,
    CVAR_HUD_ANEW_TYPE,
    CVAR_HUD_ANEW_POS,
    CVAR_HUD_ANEW_COLOR,
    CVAR_CHAT_NEW_LEVEL
}
new const g_skill_letters[][] = {
    "L-",
    "L",
    "L+",
    "M-",
    "M",
    "M+",
    "H-",
    "H",
    "H+",
    "P-",
    "P",
    "P+",
    "G"
}
new Float:g_skill_opt[sizeof g_skill_letters]

new g_cvar_skill

new cvar[cvars_num]

/* - CACHED VALUES - */

// кеш от души
new Float:hudUpdateInterval
new bool:hudInfoOn, Float:hudInfoxPos,Float:hudInfoyPos,hudInfoColor[3],bool:hudInfoColorRandom
new bool:hudDeadOn, Float:hudDeadxPos, Float:hudDeadyPos,hudDeadColor[3],bool:hudDeadColorRandom
new bool:hudaNewOn, Float:hudaNewxPos,Float:hudaNewyPos,hudaNewColor[3]
new chatLvlUpStyle,bonusEnabledPointer,bool:isTplMode,aesMaxLevel,g_trackmode
new playerLevel[33][64],playerWatchLevel[33]

/* - SYNC HUD OBJ - */
new informerSyncObj,aNewSyncObj

/* - FILE STORAGE - */

new Trie:g_DisabledInformer

#if AMXX_VERSION_NUM < 183
new Array:g_ADisabledInformer
#endif

enum _:tplInfo {
    INF_EXP,
    INF_LEVELEXP,
    INF_NEEDEXP,
    INF_LEVEL,
    INF_MAXLEVEL,
    INF_RANK,
    INF_NAME,
    INF_STEAMID,
    INF_BONUS,
   
    INF_EXF,
    INF_LXF,
    INF_NXF
}

new const tplKeys[tplInfo][] = {
    "<exp>",
    "<levelexp>",
    "<needexp>",
    "<level>",
    "<maxlevel>",
    "<rank>",
    "<name>",
    "<steamid>",
    "<bonus>",
   
    "<exf>",
    "<lxf>",
    "<nxf>"
}

enum _:tplVario {
    TPL_INF,
    TPL_INF_D,
    TPL_UP,
    TPL_UP_ALL
}

new tplBitSum[tplVario]

new const teamColor[] = {
    print_team_grey,
    print_team_red,
    print_team_blue
}

public plugin_init(){
    register_plugin(PLUGIN, VERSION, AUTHOR)
   
    cvar[CVAR_TPL_MODE] = register_cvar("aes_informer_tpl","0")
    cvar[CVAR_HUD_UPDATE] = register_cvar("aes_hud_update","1.5")
    cvar[CVAR_HUD_INFO_DEFAULT] = register_cvar("aes_hud_info_default","1")
    cvar[CVAR_HUD_INFO_TYPE] = register_cvar("aes_hud_info_type","1")
    cvar[CVAR_HUD_INFO_COLOR] = register_cvar("aes_hud_info_color","100 100 100")
    cvar[CVAR_HUD_INFO_POS] = register_cvar("aes_hud_info_pos","0.01 0.13")
    cvar[CVAR_HUD_ANEW_TYPE] = register_cvar("aes_hud_anew_type","1")
    cvar[CVAR_HUD_ANEW_COLOR] = register_cvar("aes_hud_anew_color","100 100 100")
    cvar[CVAR_HUD_ANEW_POS] = register_cvar("aes_hud_anew_pos","-1.0 0.90")
    cvar[CVAR_CHAT_NEW_LEVEL] = register_cvar("aes_newlevel_chat","2")
   
    cvar[CVAR_HUD_INFO_TYPE_D] = register_cvar("aes_hud_info_default_d","1")
    cvar[CVAR_HUD_INFO_COLOR_D] = register_cvar("aes_hud_info_color_d","60 60 60")
    cvar[CVAR_HUD_INFO_POS_D] = register_cvar("aes_hud_info_pos_d","0.01 0.15")
   
    g_cvar_skill = register_cvar("aes_statsx_skill","60.0 75.0 85.0 100.0 115.0 130.0 140.0 150.0 165.0 180.0 195.0 210.0")
   
    register_clcmd("say /aenable","Informer_Switch",0,"- switch experience informer on/off")
}

public plugin_cfg(){
        new levelString[512], stPos, ePos, rawPoint[20], cnt
        get_pcvar_string(g_cvar_skill, levelString, charsmax(levelString))
   
    // парсер значений для скилла
    do {
        ePos = strfind(levelString[stPos], " ")
       
        formatex(rawPoint, ePos, levelString[stPos])
        g_skill_opt[cnt] = str_to_float(rawPoint)
       
        stPos += ePos + 1
       
        cnt++
       
        // narkoman wole suka
        if(cnt > charsmax(g_skill_letters))
            break
    } while (ePos != -1)
   
    bonusEnabledPointer = get_cvar_pointer("aes_bonus_enable")
   
    hudUpdateInterval = get_pcvar_float(cvar[CVAR_HUD_UPDATE])
    hudInfoOn = get_pcvar_num(cvar[CVAR_HUD_INFO_DEFAULT]) > 0 ? true : false
    hudDeadOn = get_pcvar_num(cvar[CVAR_HUD_INFO_TYPE_D]) > 0 ? true : false
    hudaNewOn = get_pcvar_num(cvar[CVAR_HUD_ANEW_TYPE]) > 0 ? true : false
    chatLvlUpStyle = get_pcvar_num(cvar[CVAR_CHAT_NEW_LEVEL])
    isTplMode = get_pcvar_num(cvar[CVAR_TPL_MODE]) > 0 ? true : false
   
    if(!bonusEnabledPointer)
        hudaNewOn = false
   
    new temp[15],sColor[3][6]
   
    if(hudInfoOn){
        get_pcvar_string(cvar[CVAR_HUD_INFO_COLOR],temp,14)
       
        if(strcmp(temp,"random") != 0){
            parse(temp,sColor[0],3,sColor[1],3,sColor[2],3)
       
            hudInfoColor[0] = str_to_num(sColor[0])
            hudInfoColor[1] = str_to_num(sColor[1])
            hudInfoColor[2] = str_to_num(sColor[2])
        }else
            hudInfoColorRandom = true
       
        get_pcvar_string(cvar[CVAR_HUD_INFO_POS],temp,14)
        parse(temp,sColor[0],5,sColor[1],5)
       
        hudInfoxPos = str_to_float(sColor[0])
        hudInfoyPos = str_to_float(sColor[1])
       
        informerSyncObj = CreateHudSyncObj()
       
        if(isTplMode){ // sum
            new tplString[256]
            formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_HUD_TPL")
           
            for(new i ; i < tplInfo ; i++){
                if(contain(tplString,tplKeys[i]) != -1)
                    tplBitSum[TPL_INF] |= (1<<i)
            }
        }
    }
   
    if(hudDeadOn){
        get_pcvar_string(cvar[CVAR_HUD_INFO_COLOR_D],temp,14)
       
        if(strcmp(temp,"random") != 0){
            parse(temp,sColor[0],3,sColor[1],3,sColor[2],3)
       
            hudDeadColor[0] = str_to_num(sColor[0])
            hudDeadColor[1] = str_to_num(sColor[1])
            hudDeadColor[2] = str_to_num(sColor[2])
        }else
            hudDeadColorRandom = true
       
        get_pcvar_string(cvar[CVAR_HUD_INFO_POS_D],temp,14)
        parse(temp,sColor[0],5,sColor[1],5)
       
        hudDeadxPos = str_to_float(sColor[0])
        hudDeadyPos = str_to_float(sColor[1])
       
        if(!informerSyncObj)
            informerSyncObj = CreateHudSyncObj()
           
        if(isTplMode){ // sum
            new tplString[256]
            formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_HUD_TPL_D")
           
            for(new i ; i < tplInfo ; i++){
                if(contain(tplString,tplKeys[i]) != -1)
                    tplBitSum[TPL_INF_D] |= (1<<i)
            }
        }
    }
   
    if(isTplMode){ // bit sum for chat notify messages
        switch(chatLvlUpStyle ){
            case 1:{
                new tplString[256]
                formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_NEWLEVEL_TPL")
           
                for(new i ; i < tplInfo ; i++){
                    if(contain(tplString,tplKeys[i]) != -1)
                        tplBitSum[TPL_UP] |= (1<<i)
                }
       
            }
            case 2:{
                new tplString[256]
                formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_NEWLEVEL_TPL")
           
                for(new i ; i < tplInfo ; i++){
                    if(contain(tplString,tplKeys[i]) != -1)
                        tplBitSum[TPL_UP] |= (1<<i)
                }
               
                formatex(tplString,charsmax(tplString),"%L",LANG_SERVER,"AES_NEWLEVEL_ALL_TPL")
           
                for(new i ; i < tplInfo ; i++){
                    if(contain(tplString,tplKeys[i]) != -1)
                        tplBitSum[TPL_UP_ALL] |= (1<<i)
                }
            }
        }
    }
   
    if(hudaNewOn){
        get_pcvar_string(cvar[CVAR_HUD_ANEW_COLOR],temp,14)
        parse(temp,sColor[0],3,sColor[1],3,sColor[2],3)
       
        hudaNewColor[0] = str_to_num(sColor[0])
        hudaNewColor[1] = str_to_num(sColor[1])
        hudaNewColor[2] = str_to_num(sColor[2])
       
        get_pcvar_string(cvar[CVAR_HUD_ANEW_POS],temp,14)
        parse(temp,sColor[0],5,sColor[1],5)
       
        hudaNewxPos = str_to_float(sColor[0])
        hudaNewyPos = str_to_float(sColor[1])
       
        aNewSyncObj = CreateHudSyncObj()
    }
   
    aesMaxLevel = aes_get_max_level() - 1
   
    g_trackmode = get_cvar_num("aes_track_mode")
    g_DisabledInformer = TrieCreate()
   
    #if AMXX_VERSION_NUM < 183
    g_ADisabledInformer = ArrayCreate(36)
    #endif
   
    new fPath[256],len
   
    // TODO: directory autocreate
    len += get_datadir(fPath,charsmax(fPath))
    len += formatex(fPath[len],charsmax(fPath) - len,"/aes/informer.ini")
   
    new f = fopen(fPath,"r")
   
    if(f){
        new buffer[512]
       
        while(!feof(f)){
            fgets(f,buffer,511)
            trim(buffer)
           
            if(!strlen(buffer) || buffer[0] == ';')
                continue
               
            remove_quotes(buffer)
           
            TrieSetCell(g_DisabledInformer,buffer,true)
           
            #if AMXX_VERSION_NUM < 183
            ArrayPushString(g_ADisabledInformer,buffer)
            #endif
        }
       
        fclose(f)
       
    }
}

public plugin_end(){
    new fPath[256],len
    len += get_datadir(fPath,charsmax(fPath))
    len += formatex(fPath[len],charsmax(fPath) - len,"/aes/informer.ini")
       
    #if AMXX_VERSION_NUM < 183  
    if(ArraySize(g_ADisabledInformer)){
        new f = fopen(fPath,"w+")
       
        fprintf(f,"; %s^n; by %s^n^n; Disable informer for SteamID^n",PLUGIN,AUTHOR)
       
        new trackId[36]
       
        for(new i ; i < ArraySize(g_ADisabledInformer) ; ++i){
            ArrayGetString(g_ADisabledInformer,i,trackId,35)
           
            if(!TrieKeyExists(g_DisabledInformer,trackId))
                continue
               
            fprintf(f,"^n^"%s^"",trackId)
        }
       
        fclose(f)
    }
    #else
    new Snapshot:trieIterator = TrieSnapshotCreate(g_DisabledInformer)
   
    if(TrieSnapshotLength(trieIterator)){
        new f = fopen(fPath,"w+")
        fprintf(f,"; %s^n; by %s^n^n; Disable informer for SteamID^n",PLUGIN,AUTHOR)
       
        new trackId[36]
       
        for(new i,trieSize = TrieSnapshotLength(trieIterator) ; i < trieSize ; i++){
            TrieSnapshotGetKey(trieIterator,i,trackId,charsmax(trackId))
            fprintf(f,"^n^"%s^"",trackId)
        }
       
        fclose(f)
    }
    #endif
   
    else{
        if(file_exists(fPath))
            delete_file(fPath)
    }
   
    #if AMXX_VERSION_NUM >= 183
    TrieSnapshotDestroy(trieIterator)
    #endif
}

public Informer_Switch(id){
    if(!hudInfoOn && !hudDeadOn)
        return 0
   
    new trackId[36]
   
    if(!get_player_trackid(id,trackId,charsmax(trackId)))
        return 0
   
    if(!TrieKeyExists(g_DisabledInformer,trackId)){
        TrieSetCell(g_DisabledInformer,trackId,1)
       
        #if AMXX_VERSION_NUM < 183
        if(!CheckStringInArray(g_ADisabledInformer,trackId))
            ArrayPushArray(g_ADisabledInformer,trackId)
        #endif
       
        client_print_color(id,print_team_red,"%L %L",
            id,"AES_TAG",id,"AES_INFORMER_DISABLED")
       
        remove_task(PLAYER_HUD_OFFSET + id)
    }else{
        TrieDeleteKey(g_DisabledInformer,trackId)
        set_task(hudUpdateInterval,"Show_Hud_Informer",PLAYER_HUD_OFFSET + id,.flags="b")
       
        client_print_color(id,print_team_blue,"%L %L",
            id,"AES_TAG",id,"AES_INFORMER_ENABLED")
    }
   
    return 0
}

#if AMXX_VERSION_NUM < 183
CheckStringInArray(Array:which,string[]){
    new str[64]
   
    for(new i,arrSize = ArraySize(which) ; i < arrSize ; ++i){
        ArrayGetString(which,i,str,charsmax(str))
       
        if(strcmp(string,str) == 0)
            return true
    }
   
    return false
}
#endif

public client_putinserver(id){
    if((hudInfoOn || hudaNewOn) && !is_user_bot(id)){
        new trackId[36]
        get_player_trackid(id,trackId,charsmax(trackId))
       
        if(!TrieKeyExists(g_DisabledInformer,trackId))
            set_task(hudUpdateInterval,"Show_Hud_Informer",PLAYER_HUD_OFFSET + id,.flags="b")
    }
}

public client_disconnected(id){
    if((hudInfoOn || hudaNewOn) &&!is_user_bot(id)){
        remove_task(PLAYER_HUD_OFFSET + id)
    }
}

public aes_player_levelup(id,newlevel,oldlevel){
    new levelName[64]
   
    switch(chatLvlUpStyle){
        case 1: {
            aes_get_level_name(newlevel,levelName,charsmax(levelName),id)
           
            if(!isTplMode){
                client_print_color(id,print_team_default,"%L %L",id,"AES_TAG",id,"AES_NEWLEVEL_ID",levelName)
            }else{
                new msg[191],len
                tplFormatNewLevel(id,msg,len,"AES_NEWLEVEL_TPL",id,TPL_UP)
                   
                client_print_color(id,print_team_default,msg)
            }
        }
        case 2:{
            new pls[32],pnum,name[32]
            get_players(pls,pnum,"c")
            get_user_name(id,name,charsmax(name))
           
            new upTeam = get_user_team(id)
           
            if(!(0 <= upTeam < sizeof teamColor))
                upTeam = 0
           
            for(new i,player; i < pnum ; ++i){
                player = pls[i]
               
                aes_get_level_name(newlevel,levelName,charsmax(levelName),player)
               
                if(player != id){
                    if(!isTplMode){
                        client_print_color(player,teamColor[upTeam],"%L %L",player,"AES_TAG",player,"AES_NEWLEVEL_ALL",name,levelName)
                    }else{
                        new msg[191],len
                        tplFormatNewLevel(id,msg,len,"AES_NEWLEVEL_ALL_TPL",player,TPL_UP_ALL)
                       
                        client_print_color(player,teamColor[upTeam],msg)
                    }
                }else{
                    if(!isTplMode){
                        client_print_color(id,teamColor[upTeam],"%L %L",id,"AES_TAG",id,"AES_NEWLEVEL_ID",levelName)
                    }else{
                        new msg[191],len
                        tplFormatNewLevel(id,msg,len,"AES_NEWLEVEL_TPL",id,TPL_UP)
                       
                        client_print_color(id,teamColor[upTeam],msg)
                    }
                }
            }
        }
        default: return
    }
}

public tplFormatNewLevel(id,msg[],len,tplKey[],idLang,tplType){
    new Float:player_exp = aes_get_player_exp(id)
    new Float:player_reqexp = aes_get_player_reqexp(id)
    new player_level = aes_get_player_level(id)
    new player_bonus = aes_get_player_bonus(id)
   
    len = formatex(msg[len],190-len,"%L ",idLang,"AES_TAG")
   
    len += parse_informer_tpl(
        id,id,msg,len,190,tplKey,tplType,idLang,
       
        player_exp,
        player_level,
        player_reqexp,
        player_bonus
    )
                   
    return len
}

public Show_Hud_Informer(taskId){
    new id = taskId - PLAYER_HUD_OFFSET
    new watchId = id
    new isAlive = is_user_alive(id)
   
    if(informerSyncObj != 0)
        ClearSyncHud(id,informerSyncObj)

    if(!isAlive){
        watchId = entity_get_int(id,EV_INT_iuser2)
       
        if(!watchId)
            return
    }
       
    new hudMessage[256],len
   
    new Float:player_exp = aes_get_player_exp(watchId)
    new Float:player_reqexp = aes_get_player_reqexp(watchId)
    new player_level = aes_get_player_level(watchId)
    new player_bonus = aes_get_player_bonus(watchId)

   
    new bool:status = true
   
    if(player_exp == -1.0)
    {
        status = false
    }
       
    if(hudInfoOn){
        ClearSyncHud(id,informerSyncObj)
       
        if(status){
            if(!isTplMode){
                if(playerWatchLevel[id] != player_level || !playerLevel[id][0]){
                    aes_get_level_name(player_level,playerLevel[id],charsmax(playerLevel[]),id)
                    playerWatchLevel[id] = player_level
                }
               
                if(watchId != id){
                    new watchName[32]
                    get_user_name(watchId,watchName,charsmax(watchName))
                   
                    len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L^n",id,"AES_INFORMER0",watchName)
                }
               
                len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L^n",id,"AES_INFORMER1",playerLevel[id])
                if(player_reqexp != -1.0){
                    len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_INFORMER2",player_exp,player_reqexp)
                }else
                    len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_PLAYER_XP_MAX")
            }else{
                if(isAlive)
                {
                    len += parse_informer_tpl(
                        id,watchId,
                        hudMessage,len,charsmax(hudMessage),"AES_HUD_TPL",TPL_INF,id,
                       
                        player_exp,
                        player_level,
                        player_reqexp,
                        player_bonus
                    )
                }
                else if(!isAlive && hudDeadOn)
                {
                    len += parse_informer_tpl(
                        id,watchId,
                        hudMessage,len,charsmax(hudMessage),"AES_HUD_TPL_D",TPL_INF_D,id,
                       
                        player_exp,
                        player_level,
                        player_reqexp,
                        player_bonus
                    )
                }
            }
            new skill[3]
            statsx_get_user_skill_name(id, skill, charsmax(skill))
            len+= formatex(hudMessage[len],charsmax(hudMessage) - len, "%L"  ,id,"SKILL" , skill)

        }
        else
            len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_INFORMER_FAIL")
       
        if(isAlive){
            if(hudInfoColorRandom){
                // рандом такой рандом
                hudInfoColor[0] = random(25500) / 100
                hudInfoColor[1] = random(25500) / 100
                hudInfoColor[2] = random(25500) / 100
            }
           
            set_hudmessage(hudInfoColor[0], hudInfoColor[1], hudInfoColor[2], hudInfoxPos , hudInfoyPos,.holdtime = hudUpdateInterval,.channel = 3)
        }else if(!isAlive && hudDeadOn){
            if(hudDeadColorRandom){
                hudDeadColor[0] = random(25500) / 100
                hudDeadColor[1] = random(25500) / 100
                hudDeadColor[2] = random(25500) / 100
            }
           
            set_hudmessage(hudDeadColor[0],hudDeadColor[1],hudDeadColor[2],hudDeadxPos,hudDeadyPos,0,.holdtime = hudUpdateInterval,.channel = 3)
        }
       
        replace_all(hudMessage,charsmax(hudMessage),"\n","^n")
        ShowSyncHudMsg(id,informerSyncObj,hudMessage)
       
        len = 0
        hudMessage[0] = 0
    }
   
    if(hudaNewOn && get_pcvar_num(bonusEnabledPointer) == 1 && player_bonus > 0 && watchId == id){
        ClearSyncHud(id,aNewSyncObj)
       
        len += formatex(hudMessage[len],charsmax(hudMessage) - len,"%L",id,"AES_ANEW_HUD",player_bonus)
        replace_all(hudMessage,charsmax(hudMessage),"\n","^n")
       
        set_hudmessage(hudaNewColor[0],hudaNewColor[1],hudaNewColor[2],hudaNewxPos,hudaNewyPos,0,.holdtime = hudUpdateInterval)
        ShowSyncHudMsg(id,aNewSyncObj,hudMessage)
    }
}

public parse_informer_tpl(id,watchId,string[],len,maxLen,tplKey[],tplType,idLang,Float:player_exp,player_level,Float:player_reqexp,player_bonus){
    static tpl[256],tmp[32],i
   
    tpl[0] = 0
    tmp[0] = 0
   
    formatex(tpl,charsmax(tpl),"%L",idLang,tplKey)
   
    player_exp = _:player_exp >= 0 ? player_exp + 0.005 : player_exp - 0.005
    player_reqexp = _:player_reqexp >= 0 ? player_reqexp + 0.005 : player_reqexp - 0.005
   
    for(i = 0; i < tplInfo ; i++){
        if(tplBitSum[tplType] & (1 << i)){
            tmp[0] = 0
           
            switch(i){
                case INF_EXP: formatex(tmp,charsmax(tmp),"%.0f",player_exp)
                case INF_LEVELEXP: formatex(tmp,charsmax(tmp),"%.0f",player_reqexp)
                case INF_NEEDEXP: formatex(tmp,charsmax(tmp),"%.0f",player_reqexp - player_exp)
                case INF_LEVEL: formatex(tmp,charsmax(tmp),"%d",player_level + 1)
                case INF_MAXLEVEL: formatex(tmp,charsmax(tmp),"%d",aesMaxLevel)
                case INF_RANK: {
                    if(playerWatchLevel[id] != player_level || !playerLevel[id][0]){
                        aes_get_level_name(player_level,playerLevel[id],charsmax(playerLevel[]),idLang)
                        playerWatchLevel[id] = player_level
                    }
                   
                    copy(tmp,charsmax(tmp),playerLevel[id])
                }
                case INF_NAME: get_user_name(watchId,tmp,charsmax(tmp))
                case INF_STEAMID: get_user_authid(watchId,tmp,charsmax(tmp))
                case INF_BONUS: formatex(tmp,charsmax(tmp),"%d",player_bonus)
                case INF_EXF: formatex(tmp,charsmax(tmp),"%.2f",player_exp)
                case INF_LXF: formatex(tmp,charsmax(tmp),"%.2f",player_reqexp)
                case INF_NXF: formatex(tmp,charsmax(tmp),"%.2f",player_reqexp - player_exp)
            }
           
            if(tmp[0])
                replace(tpl,charsmax(tpl),tplKeys[i],tmp)
        }
    }
   
    len += formatex(string[len],maxLen-len,tpl)
   
    return len
}

get_player_trackid(id,trackId[],trackLen){
    switch(g_trackmode){
        case 0: get_user_name(id,trackId,trackLen)
        case 1: {
            get_user_authid(id,trackId,trackLen)
           
            if(!strcmp(trackId,"STEAM_ID_LAN") || !strcmp(trackId,"VALVE_ID_LAN") || !strcmp(trackId,"BOT")
                || !strcmp(trackId,"HLTV"))
                return 0
        }
        case 2: get_user_ip(id,trackId,trackLen,1)
    }
   
    return 1
}

statsx_get_user_skill_name(id, name[], len)
{
    new Float:skill
    get_user_skill(id, skill)
   
    new skill_id = statsx_get_skill_id(skill)
    copy(name, len, g_skill_letters[skill_id])
}

statsx_get_skill_id(Float:skill)
{
    for(new i = 0; i < sizeof(g_skill_opt); i++)
    {
        if(skill < g_skill_opt[i])
            return i
    }
    return charsmax(g_skill_opt)
}
aes reapi 0.5.9 нужно. а так переделывать (править) исходник надо. когда создаёшь тему указывай эти все поля (заполняй).
C-like:
Билд
    -

Metamod
    -

Meta модули
    -

Плагины
    -

Amxx Модули
    -

Ошибка
    -
[DOUBLEPOST=1569083849][/DOUBLEPOST]в обычной версии aes_vega 0.5 его нету. выше переделанный вот ещё ссылка, не смог отредактировать уже сообщение (время превысило больше 5 минут).
Спасибо, всё работает)
 

Izmayl7

Пользователь
Регистрация
9 Июн 2017
Сообщения
530
Симпатии
105
Пол
Мужской
Спасибо, всё работает)
та не за что!) а так советую с 1.8.2 перейти на 1.9.0 (поддержка старых плагинов, скомпилированных на 1.8.2 есть, но некоторые могут не работать, нужно будет их перекомпилировать в новой версии 1.9.0 (если есть исходники).
 

Puma4ka

Пользователь
Регистрация
1 Июл 2019
Сообщения
71
Симпатии
1
та не за что!) а так советую с 1.8.2 перейти на 1.9.0 (поддержка старых плагинов, скомпилированных на 1.8.2 есть, но некоторые могут не работать, нужно будет их перекомпилировать в новой версии 1.9.0 (если есть исходники).
Не заметил сразу одну ошибку, когда за кем то наблюдаешь, в информере показывает мой скил, что делать?
 

Izmayl7

Пользователь
Регистрация
9 Июн 2017
Сообщения
530
Симпатии
105
Пол
Мужской
Не заметил сразу одну ошибку, когда за кем то наблюдаешь, в информере показывает мой скил, что делать?
aes,txt посмотри
и в aes,cfg
// Режим форматирования.
aes_informer_tpl "1"
если не получится. поставь aes reapi 0.5.9 там уже скилл есть.[DOUBLEPOST=1569102024][/DOUBLEPOST]AES_INFORMER0 = Ник: %s
AES_INFORMER1 = Звание: %s
AES_INFORMER2 = Опыт: [%.0f/%.0f]\nМы в ВК: vk.com/arena_gs
AES_HUD_TPL = Звание: <rank>\nОпыт: [<exp>/<levelexp>] (+<needexp>)\nСкилл: <skill>\nМы в ВК: vk.com/ссылка
AES_HUD_TPL_D = Ник: <name>\nЗвание: <rank>\nОпыт: [<exp>/<levelexp>] (+<needexp>)\nСкилл: <skill>\nМы в ВК: vk.com/ссылка
 

Puma4ka

Пользователь
Регистрация
1 Июл 2019
Сообщения
71
Симпатии
1
aes,txt посмотри
и в aes,cfg
// Режим форматирования.
aes_informer_tpl "1"
если не получится. поставь aes reapi 0.5.9 там уже скилл есть.[DOUBLEPOST=1569102024][/DOUBLEPOST]AES_INFORMER0 = Ник: %s
AES_INFORMER1 = Звание: %s
AES_INFORMER2 = Опыт: [%.0f/%.0f]\nМы в ВК: vk.com/arena_gs
AES_HUD_TPL = Звание: <rank>\nОпыт: [<exp>/<levelexp>] (+<needexp>)\nСкилл: <skill>\nМы в ВК: vk.com/ссылка
AES_HUD_TPL_D = Ник: <name>\nЗвание: <rank>\nОпыт: [<exp>/<levelexp>] (+<needexp>)\nСкилл: <skill>\nМы в ВК: vk.com/ссылка
Поставил aes reapi 0.5.9, и щас вовсе не показывает скилл, вместо буквы скилла, пишется <skill>. Как я понял еще и расчёт скила изменился? Было H , на reapi L+ это...
 

Izmayl7

Пользователь
Регистрация
9 Июн 2017
Сообщения
530
Симпатии
105
Пол
Мужской
Поставил aes reapi 0.5.9, и щас вовсе не показывает скилл, вместо буквы скилла, пишется <skill>. Как я понял еще и расчёт скила изменился? Было H , на reapi L+ это...
т.е не показывается?! правильно в aes.txt прописано(кодировка utf8-без бом)?! и в aes.cfg?! покажи конфиг aes.cfg и aes.txt под спойлер.
 
Сверху Снизу