Официалният форум на iPlay.bg 

Ако сте направили плъгин и искате да го разпространите или просто искате да покажете на какво сте способни, тук е мястото. Имайте предвид, че копирани от други места плъгини, директно ще се трият!

Модератор: eMinEm

Правила на форума: Поствайте само ваши лични разработки! Копирането на чужди плъгини е строго забранено!
Следвайте този шаблон. Задължително трябва да предоставяте и .sma файловете! Всички файлове, трябва да са прикачени към главния пост. Линкове за сваляне от чужди сайтове, ще бъдат изтривани!
 #405448  от cgozzie
 съб дек 24, 2016 2:43 am
И аз се мъчих да го вдигна от сма файла от 1000 на 50000 но плъгина става неактивен.Дори кварите да добавям с каквито и да е стойности повече от 1000 нищо не се променя стои си винаги на 1000.
 #405500  от OciXCrom™
 съб дек 24, 2016 4:17 pm
Кварове не се променят от sma файл.

Sent from my HTC Desire 610 using Tapatalk
 #405524  от cgozzie
 съб дек 24, 2016 7:25 pm
Е добре как да стане да дава на 5000 примерно никой не каза...
 #405533  от OciXCrom™
 съб дек 24, 2016 8:10 pm
Като промениш квара becomevip_kills на 5000 може би? Кое трябва да се каже при положение, че кварът се намира в първия пост от темата?
 #405575  от cgozzie
 съб дек 24, 2016 10:08 pm
Пробвах и това квара в амхх.cfg becomevip_kills на 5000 влизам в сървъра и пак си пише 1000 не се променя нищо.
 #405580  от OciXCrom™
 съб дек 24, 2016 10:46 pm
Опитай така:
Код: Избери всички
#include <amxmodx>
#include <amxmisc>
#include <colorchat>

/* Uncomment this line to use csstats (kills from /rank), instead of nVault */
//#define USE_CSSTATS

/* Comment this line to disable the HUD message on player spawn */
#define USE_HUD

#if defined USE_CSSTATS
    #include <csstats>
#else
    #include <nvault>
    #define nvault_clear(%1) nvault_prune(%1, 0, get_systime() + 1)
    new g_iVault
    
    /* Uncomment this to save data by SteamID and make the plugin work for players with a valid SteamID only */
    //#define USE_STEAM
    
    /* Uncomment this if you want the data to be saved right away - this will prevent losing data when the server crashes */
    //#define QUICK_SAVE
    
    #if defined USE_STEAM
        #define get_save_info get_user_authid
    #else
        #define get_save_info get_user_name
    #endif
#endif

#if defined USE_HUD
    #include <hamsandwich>
    
    #define HUD_COLOR_RED 0
    #define HUD_COLOR_GREEN 255
    #define HUD_COLOR_BLUE 0
    #define HUD_POSITION_X 0.02
    #define HUD_POSITION_Y 0.40
    #define HUD_EFFECTS 2
    #define HUD_FXTIME 1.0
    #define HUD_HOLDTIME 5.0
    #define HUD_FADEINTIME 0.03
    #define HUD_FADEOUTTIME 0.1
    #define HUD_CHANNEL -1
#endif

#define PLUGIN_VERSION "1.3"

new g_szPrefix[32] = "^1[^3VIP Plus^1]"
new g_pKills, g_pFlags
new g_iKills[33], g_szFlags[32], g_iFlags, g_iNeededKills, g_iFlagZ

public plugin_init()
{
    register_plugin("Become VIP Plus", PLUGIN_VERSION, "OciXCrom")
    register_cvar("BecomeVIPPlus", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    
    #if !defined USE_CSSTATS
        register_concmd("becomevip_restartall", "restartAll", ADMIN_RCON, "deletes the becomeVIP data")
        register_concmd("becomevip_restart_player", "restartPlayer", ADMIN_RCON, "<nick|#userid>")
    #endif
    
    #if defined USE_HUD
        RegisterHam(Ham_Spawn, "player", "eventPlayerSpawn", 1)
    #endif
    
    register_clcmd("say /kills", "cmdKills")
    register_clcmd("say_team /kills", "cmdKills")
    register_event("DeathMsg", "eventPlayerKilled", "a")
    
    g_pKills = register_cvar("becomevip_kills", "1000")
    g_pFlags = register_cvar("becomevip_flags", "b")
    
    #if !defined USE_CSSTATS
        g_iVault = nvault_open("BecomeVIPPlus")
    #endif
}

public plugin_cfg()
{
    get_pcvar_string(g_pFlags, g_szFlags, charsmax(g_szFlags))
    g_iFlags = read_flags(g_szFlags)
    g_iNeededKills = get_pcvar_num(g_pKills)
    g_iFlagZ = read_flags("z")
}

public plugin_natives()
{
    register_library("becomevip")
    register_native("IsUserVip", "_IsUserVip")
    register_native("GetKillsNeeded", "_GetKillsNeeded")
    register_native("GetUserKills", "_GetUserKills")
    register_native("GetKillsLeft", "_GetKillsLeft")
    register_native("GetVipPrefix", "_GetVipPrefix")
    register_native("GetVipFlags", "_GetVipFlags")
    register_native("VipFlagsActive", "_VipFlagsActive")
    register_native("UsingCsstats", "_UsingCsstats")
    register_native("UsingHud", "_UsingHud")
    register_native("UsingSteam", "_UsingSteam")
    register_native("UsingQuickSave", "_UsingQuickSave")
}

public bool:_IsUserVip(iPlugin, iParams)
    return is_user_vip(get_param(1))
    
public _GetKillsNeeded(iPlugin, iParams)
    return g_iNeededKills
    
public _GetUserKills(iPlugin, iParams)
    return get_frags_total(get_param(1))
    
public _GetKillsLeft(iPlugin, iParams)
    return get_frags_left(get_param(1))
    
public _GetVipPrefix(iPlugin, iParams)
    set_string(1, g_szPrefix, get_param(2))
    
public _GetVipFlags(iPlugin, iParams)
    set_string(1, g_szFlags, get_param(2))
    
public bool:_VipFlagsActive(iPlugin, iParams)
    return g_szFlags[0] == EOS ? false : true
    
public bool:_UsingCsstats(iPlugin, iParams)
{
    #if defined USE_CSSTATS
        return true
    #else
        return false
    #endif
}

public bool:_UsingHud(iPlugin, iParams)
{
    #if defined USE_HUD
        return true
    #else    
        return false
    #endif
}

public bool:_UsingSteam(iPlugin, iParams)
{
    #if defined USE_STEAM
        return true
    #else
        return false
    #endif
}

public bool:_UsingQuickSave(iPlugin, iParams)
{
    #if defined QUICK_SAVE
        return true
    #else
        return false
    #endif
}

public client_authorized(id)
{
    #if defined USE_CSSTATS
        set_task(5.0, "authorizePlayer", id)
    #else
        updateUserFlags(id)
    #endif
}

public authorizePlayer(id)
    if(is_user_vip(id))
        updateUserFlags(id)
    
public client_connect(id)
{
    #if !defined USE_CSSTATS
        #if defined USE_STEAM
            if(steam_valid(id))
            {
                new szInfo[35]
                get_save_info(id, szInfo, charsmax(szInfo))
                LoadData(id, szInfo)
            }
        #else
        {
            new szInfo[35]
            get_save_info(id, szInfo, charsmax(szInfo))
            LoadData(id, szInfo)
        }
        #endif
    #endif
}

public client_disconnect(id)
{
    #if !defined USE_CSSTATS
        #if defined USE_STEAM
            if(steam_valid(id))
            {
                new szInfo[35]
                get_save_info(id, szInfo, charsmax(szInfo))
                SaveData(id, szInfo)
            }
        #else
        {
            new szInfo[35]
            get_save_info(id, szInfo, charsmax(szInfo))
            SaveData(id, szInfo)
        }
        #endif
    #endif
}
    
#if !defined USE_CSSTATS
    SaveData(id, szInfo[])
    {
        new szKills[10]
        num_to_str(g_iKills[id], szKills, charsmax(szKills))
        nvault_set(g_iVault, szInfo, szKills)
    }

    LoadData(id, szInfo[])
    {
        new szKills[10]
        nvault_get(g_iVault, szInfo, szKills, charsmax(szKills))
        g_iKills[id] = str_to_num(szKills)
    }
    
    #if !defined USE_STEAM
        public client_infochanged(id)
        {
            new szNewName[32], szOldName[32]
            get_user_info(id, "name", szNewName, charsmax(szNewName))
            get_user_name(id, szOldName, charsmax(szOldName))
            
            if(!equal(szNewName, szOldName))
            {
                SaveData(id, szOldName)
                LoadData(id, szNewName)
            }
        }
    #endif
#endif

public plugin_end()
{
    #if !defined USE_CSSTATS
        nvault_close(g_iVault)
    #endif
}

public eventPlayerSpawn(id)
{
    #if defined USE_HUD
        if(!is_user_vip(id) && is_user_alive(id))
        {
            set_hudmessage(HUD_COLOR_RED, HUD_COLOR_GREEN, HUD_COLOR_BLUE, HUD_POSITION_X, HUD_POSITION_Y, HUD_EFFECTS, HUD_FXTIME, HUD_HOLDTIME, HUD_FADEINTIME, HUD_FADEOUTTIME, HUD_CHANNEL)
            show_hudmessage(id, "Reach %i kills to get VIP extras!^nYou currently have %i.", g_iNeededKills, get_frags_total(id))
        }
    #endif
}

public restartAll(id, level, cid)
{
    if(!cmd_access(id, level, cid, 0))
        return PLUGIN_HANDLED

    new szName[32], iPlayers[32], iPnum
    get_user_name(id, szName, charsmax(szName))
    get_players(iPlayers, iPnum)
    
    #if !defined USE_CSSTATS
        nvault_clear(g_iVault)
    #endif
    
    for(new i; i < iPnum; i++)
        g_iKills[iPlayers[i]] = 0
        
    ColorChat(0, TEAM_COLOR, "%s ^3%s ^1has deleted all ^4becomeVIP data^1. The stats are now ^3restarted^1.", g_szPrefix, szName)
    client_print(id, print_console, "%s Data cleared successfully!", g_szPrefix)
    log_amx("%s has deleted all becomeVIP data", szName)
    return PLUGIN_HANDLED
}

public restartPlayer(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED

    new szArg[32], szName[32], szName2[32]
    get_user_name(id, szName, charsmax(szName))
    read_argv(1, szArg, charsmax(szArg))
    new iPlayer = cmd_target(id, szArg, 3)
    
    if(!iPlayer)
        return PLUGIN_HANDLED
    
    g_iKills[iPlayer] = 0
    get_user_name(iPlayer, szName2, charsmax(szName2))
    ColorChat(0, TEAM_COLOR, "%s ^1ADMIN ^3%s ^1restarted ^3%s^1's becomeVIP data.", g_szPrefix, szName, szName2)
    client_print(id, print_console, "%s You have restarted %s's becomeVIP data.", g_szPrefix, szName2)
    log_amx("%s restarted %s's becomeVIP data", szName, szName2)
    return PLUGIN_HANDLED
}
    
public cmdKills(id)
{
    #if defined USE_STEAM
        if(!steam_valid(id))
        {
            ColorChat(id, TEAM_COLOR, "%s Only players with a valid ^3SteamID ^1can use this option (^4Protocol 47/48^1).", g_szPrefix)
            return PLUGIN_HANDLED
        }
    #endif
    
    if(is_user_vip(id)) ColorChat(id, TEAM_COLOR, "%s You have the required number of kills (^4%i/%i^1), thus you get ^3free VIP extras^1.", g_szPrefix, get_frags_total(id), g_iNeededKills)
    else
    {
        if(g_iFlags) ColorChat(id, TEAM_COLOR, "%s You need ^4%i ^1more kills (^3current: ^4%i^1) to get the following ^3VIP flag(s)^1: ^4%s", g_szPrefix, get_frags_left(id), get_frags_total(id), g_szFlags)
        else ColorChat(id, TEAM_COLOR, "%s You need ^4%i ^1more kills (^3current: ^4%i^1) to get ^3VIP extras", g_szPrefix, get_frags_left(id), get_frags_total(id))
    }
    return PLUGIN_HANDLED
}
    
public eventPlayerKilled()
{
    new iKiller = read_data(1), iVictim = read_data(2)
    
    if(!is_user_connected(iKiller) || !is_user_connected(iVictim) || iKiller == iVictim)
        return
        
    #if defined USE_STEAM
        if(!steam_valid(iKiller))
            return
    #endif
        
    #if !defined USE_CSSTATS
        g_iKills[iKiller]++
    #else
        #if defined QUICK_SAVE
        {
            new szInfo[35]
            get_save_info(iKiller, szInfo, charsmax(szInfo))
            SaveData(iKiller, szInfo)
        }
        #endif
    #endif
    
    if(get_frags_total(iKiller) == g_iNeededKills)
    {
        new szName[32]
        get_user_name(iKiller, szName, charsmax(szName))
        ColorChat(0, TEAM_COLOR, "%s ^3%s ^1has killed ^4%i players ^1and received ^3free VIP extras^1!", g_szPrefix, szName, g_iNeededKills)
        updateUserFlags(iKiller)
    }
}

updateUserFlags(id)
{
    #if defined USE_STEAM
        if(!steam_valid(id))
            return
    #endif
    
    if(is_user_vip(id))
    {
        set_user_flags(id, g_iFlags)
        remove_user_flags(id, g_iFlagZ)
    }
}

get_frags_total(id)
{
    #if defined USE_CSSTATS
        new iStats[8], iHits[8]
        get_user_stats(id, iStats, iHits)
        return iStats[0]
    #else
        return g_iKills[id]
    #endif
}

get_frags_left(id)
    return g_iNeededKills - get_frags_total(id)

bool:is_user_vip(id)
    return get_frags_total(id) >= g_iNeededKills ? true : false
    
#if defined USE_STEAM
    bool:steam_valid(id)
    {
        new szAuthId[35]
        get_user_authid(id, szAuthId, charsmax(szAuthId))
        
        if(!equali(szAuthId, "STEAM_", 6) || equal(szAuthId, "STEAM_ID_LAN") || equal(szAuthId, "STEAM_ID_PENDING"))
            return false
        
        return true
    }
#endif 
 #405626  от cgozzie
 нед дек 25, 2016 12:42 pm
Стана след като в sma. промених 1000 на 5000 но като беше 1000 в файла а му задавам кваровете в amxx.cfg не ги отчиташе в сървъра се си седи на 1000.Излиза че след като в файла съм задал 5000 то кваровете в amxx.cfg са излишни.Плъгина ще работи ли коректно така с промяната както го направих или ще имам проблеми.И може ли да променя флага от б на друг.
 #405648  от OciXCrom™
 нед дек 25, 2016 4:11 pm
Напротив. Промените по .sma файла са излишни ако в amxx.cfg кварът има друга стойност. Проблемът беше в самия код, който не позволяваше промяна на квара по нормален начин и затова ти дадох редактирана версия.
 #405653  от cgozzie
 нед дек 25, 2016 5:18 pm
Точно това исках да кажа сложих този код който ми даде писах квар стойност и пак не се променяше,чак след това в sma. прекомпелирах стойноста от 1000 на 5000 и чак тагава ми изписа в сървъра 5000.Кваровете в amxx.cfg пак нещо не работеха преди да си го прекомпелирам аз след това.Ти кажи това проблем ли е или трябва точно от квар стойностите да си зима цената и флага за да работи коректно,тва ми беше зора да разбера.
 #405657  от OciXCrom™
 нед дек 25, 2016 6:02 pm
Кваровете трябва да се променят от amxx.cfg, а не от кода на плъгина. Ползвай редакцията която ти пратих и кажи дали с нея става чрез amxx.cfg.