XP Sistema!

Forumas skirtas spręsti problemas iškilusias su CS 1.6 serveriais.
Post Reply
Bonjur
Naujokas apylinkėse
Posts: 1
Joined: 2014 Jun 17 13:46

XP Sistema!

Post by Bonjur »

Sveiki,
internete ilgai ieškojau, bet niekur neradau XP sistemos panašios į šią, žinoma mano norai labai "pigūs", bet vistiek nebuvo.
Šiuo metu kodas serveryje atrodo taip:
[Jusu lygis: (pvz.:"9")]
[Jusu XP kiekis: (pvz.:"5311")]


Galėtumėte kas nors perdaryti, jog būtų taip:
[Jusu lygis: (pvz.:"9")]
[Jusu rangas: (pvz.:"medziotojas")]
[XP kiekis: (pvz.:"13232/14000")]


Negailėčiau +rep, dar sumokėčiau :)

Code: Select all

///////////////////////////////////////////////////////////////////////////////==============================    //=  DeathRun XP & Level Mod   =//==============================    ////---------------------//- Description - //---------------------////This plugin include the features://** XP System - nVault//** Level System - nVault//** Cvars to control all bonus per lvl//** Commands to Add & Remove XP//** Level behind the Nick Name//** Bonus Per level//** ADM Chat Colors Support//** ...////----------------------//- Requirements    - //----------------------////** AMXX: Version 1.8.1//** AMXX Modules: Cstrike, Fun, Engine, Fakemeta, ColorChat, nVault and Hamsandwich modules////----------------------//- Installation    - //----------------------////1- Download and compile the plugin from://2- Upload the amxx file to your server (cstrike>addons>amxmodx>plugins).//3- Edit the config file and add the plugin (cstrike>addons>amxmodx>configs>plugins.ini).////----------------------//- Contact Info    - //----------------------////For reporting bugs or post your feedback visit://https://forums.alliedmods.net/showthread.php?p=1810627////If you want some private job PM ME on alliedmodders Forum's or send me and email to://[email protected]////-----------------//- Credits -//-----------------////** Ex1ne//- XP System & Level System////** matsi//- Observations and optimizations////** tre3fla//- Suggestion and request////** ConnorMcLeod//- Suggestion, SayTxt and Admin Chat Colors Code////** xBatista//- ShowHud Help////------------------//-  Updates Logs  -//------------------////** v0.0.1 [Oct 2012] //- First Release////** v0.0.2 [Oct 2012] //- Optimize & Improve Code////** v0.0.3 [Oct 2012] //- Optimize Code////** v0.0.4 [Oct 2012] //- Improve Level Prefix and Personal Info////** v0.0.5 [Oct 2012] //- Optimize EventDeathMsg//- Improve Check Level////** v0.0.6 [Oct 2012] //- Fix Damage Bug//- Fix Messages Bugs////** v0.0.7 [Oct 2012] //- Fix Index of Bounds////** v0.0.8 [Oct 2012] //- Added feature Admin Chat Colors////** v0.0.9 [Oct 2012] //- Fix some Bugs & Added XP Reward MSG CVAR////** v1.0 [Jan 2013] //- Fix Give & Remove XP Command////////////////////////////////////////////////////////////////////// #include <amxmodx>#include <amxmisc>#include <nvault>  #include <colorchat>#include <cstrike>#include <fun>#include <hamsandwich>#include <fakemeta> new Level[33], eXP[33]new KillXp, HsXp, HeXp/*, KnifeXp*/new gVault new const szPrefix[] = "^4[SERVERIS]^3" #define MaxLevels 12#define IsPlayer(%1) ( 1 <= %1 <=  g_iMaxPlayers )#define TASK_SHOW_HUD 10113 new g_msgHudSyncnew bool:is_user_ignored[ 33 ] new const Levels[MaxLevels] = {    100, // Starter #1    300, // Noob #2    500, // Beginner #3    800, // Knifer #4    1000, // Rambo #5    1400, // Butcher #6    1800, // Matrix #7    2300, // Probhop #8    2700, // Freak #9    3400, // Racer #10    4000, // Kill Bill #11    5000 // Respected Player #12}new const Prefix[MaxLevels +1][] ={    "1", // 0    "2", // 1    "3",  // 2    "4", // 3    "5", // 4    "6",  // 5    "7", // 6    "8", // 7    "9", // 8    "10", // 9    "11", // 10    "12", // 11    "13" // 12} // Bonus Stuffnew healthperlevel,    armorperlevel,    speedperlevel,    damageperlevel,    gravityperlvl    new g_iMaxPlayers // ADMIN CHAT COLORS by ConnorMcLeodenum _:ADMIN_DATAS {     m_szName[32],     m_iFlag }  new const AdminsDatas[][ADMIN_DATAS] =  {     {"SAVININKAS", ADMIN_IMMUNITY},     {"Manager", ADMIN_BAN},     // {"SuperAdmin", ADMIN_CFG},     {"ADMIN", ADMIN_KICK},     {"VIP", ADMIN_RESERVATION} }; public plugin_init() {    register_plugin("Deathrun XP & Level Mod", "0.0.9", "Freestyle")        register_message(get_user_msgid("SayText"),"Message_SayText"); // CREDITS TO ConnorMcLeod        RegisterHam ( Ham_Spawn, "player", "Ham_CheckOthers_Bonus", 1);    RegisterHam ( Ham_TakeDamage, "player", "Ham_CheckDamage_Bonus", .Post = false );    RegisterHam ( Ham_Item_PreFrame, "player", "Ham_CheckSpeed_Bonus", 1);        g_iMaxPlayers = get_maxplayers( );        register_cvar( "AdminChatColors_On", "1" ); // Admin Tag - Example: [Admin] Freestyle    register_cvar( "XP_Reward_MSG", "1" ); // Message of the XP Gain        // CHAT COMMANDS //    register_clcmd ( "say /xp", "ShowPlayerXP")    register_clcmd ( "say_team /xp", "ShowPlayerXP")    register_clcmd ( "say /lygis", "ShowPlayerLevel")    register_clcmd ( "say_team /lygis", "ShowPlayerLevel")        // XP SYSTEM //    KillXp  = register_cvar("drxp_per_kill", "100")    HsXp    = register_cvar("drxp_per_hs", "140")    HeXp    = register_cvar("drxp_per_nade_kill", "150")    //KnifeXp   = register_cvar("drxp_per_knife_kill", "150")        // Give & Remove XP //    register_concmd ( "give_xp", "CmdAddXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" )    register_concmd ( "remove_xp", "CmdRemoveXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" )        /* Bonus Stuff */        // Health Per Level //    healthperlevel  = register_cvar("health_per_lvl", "10")        // Armor Per Level //    armorperlevel   = register_cvar("armor_per_lvl", "10")         // Speed Per Level //    speedperlevel   = register_cvar("speed_per_lvl", "10")        // Gravity Per Level //    gravityperlvl   = register_cvar("gravity_per_lvl", "10") // NERVER MORE THAN 66 PER LVL        // Damage Per Level //    damageperlevel  = register_cvar("damage_per_lvl", "10")        g_msgHudSync = CreateHudSyncObj()} public plugin_cfg( ){       gVault = nvault_open( "DEATHRUN_XP" )        if ( gVault == INVALID_HANDLE )        set_fail_state( "Error opening nVault" );} /*      INFO ABOUT PERSONAL XP/LEVEL      */public ShowPlayerXP(id){    ColorChat(id, GREY, "%s Jus turite ^4%i^3 XP ,o lygis yra ^4%s^3!", szPrefix, eXP[id], Prefix[Level[id]])} public ShowPlayerLevel(id){    new name[32]    get_user_name(id, name, sizeof(name) -1)            ColorChat(id, GREY, "%s Jusu lygis yra ^4%s^3 ir jus turite ^4%i^3 XP!", szPrefix, Prefix[Level[id]], eXP[id])} public Ham_CheckDamage_Bonus( pevVictim, pevInflictor, pevAttacker, Float:flDamage, iDmgBits ) {     if( !( 1 <= pevAttacker <= g_iMaxPlayers) )     {         return HAM_HANDLED;     }          if( !is_user_alive( pevAttacker )  )     {         return HAM_HANDLED;     }      SetHamParamFloat( 4 , flDamage + ( get_pcvar_num( damageperlevel ) * Level[ pevAttacker ] ) )      return HAM_IGNORED; }  /*      Speed Check      */public Ham_CheckSpeed_Bonus( id ){    if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )    {        return HAM_IGNORED;    }        set_user_maxspeed( id, 250.0 + ( get_pcvar_num(speedperlevel) * Level[ id ] ) );                return HAM_IGNORED;} /*      HP & AP & Gravity Check      */public Ham_CheckOthers_Bonus(id){    if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )        return HAM_IGNORED;            // HP Check    new HPCheck = ( get_user_health(id) + get_pcvar_num(healthperlevel) * Level[ id ] );    set_user_health( id, HPCheck );        // AP Check    new APCheck = ( get_user_armor(id) + get_pcvar_num(armorperlevel) * Level[ id ] );    set_user_armor( id, APCheck );        // Gravity    new GRAVITYCheck = 800 - ( get_pcvar_num( gravityperlvl ) * Level[ id ] );        if(get_pcvar_num(gravityperlvl) > 66)    {        set_user_gravity( id, float( 8 ) / 800.0 );    }    else    {        set_user_gravity( id, float( GRAVITYCheck ) / 800.0 );    }        remove_task( TASK_SHOW_HUD + id );           set_task(0.1, "ShowHud", TASK_SHOW_HUD + id)                return HAM_IGNORED;} /*      Respected Player Join / Leave Stuff      */ public LvL_12_PlayerJoin(id){    new name[32]    get_user_name(id, name, sizeof(name) -1)            ColorChat(0, GREY, "%s ^4 ^1%s^4 Prisijunge. Jo patirtis ^1%i^4 XP!", szPrefix, name, eXP[id])} public LvL_12_PlayerRemove(id){    new name[32]    get_user_name(id, name, sizeof(name) -1)            ColorChat(0, GREY, "%s ^4 %s Paliko zaidima. Jo patirtis %i XP!", szPrefix, name, eXP[id])} public plugin_end( )    nvault_close( gVault )    public client_putinserver(id){    LoadData(id)    set_task( 3.0, "ShowHud", id, .flags = "b" );        if(Level[id] == 12)    {        set_task(5.0, "LvL_12_PlayerJoin", id)    }} public client_disconnect(id){    SaveData(id)        if(Level[id] == 12)    {        set_task(1.0, "LvL_12_PlayerRemove", id)    }} /*      XP REWARDS      */public client_death( iKiller, iVictim, wpnindex, hitplace ){    new vname[32]    new kname[32]        get_user_name( iKiller, kname, charsmax( kname ) )    get_user_name( iVictim, vname, charsmax( vname ) )     if( is_user_ignored[ iKiller ] )        return PLUGIN_HANDLED_MAIN        get_user_name( iKiller, kname, charsmax( kname ) )    get_user_name( iVictim, vname, charsmax( vname ) )        if( iKiller != iVictim && ( 1 <= iKiller <= g_iMaxPlayers ) && ( 1 <= iVictim <= g_iMaxPlayers ) && !( hitplace == HIT_HEAD ) && !( wpnindex == CSW_HEGRENADE ) )    {        eXP[iKiller] += get_pcvar_num(KillXp)                if( get_cvar_num("XP_Reward_MSG") == 1 )         {            ColorChat ( iKiller, GREY, "%s Jus gavote ^4 %i^3 XP, jog nuzudete^4 %s^3", szPrefix, get_pcvar_num(KillXp), vname )        }    }        if( hitplace == HIT_HEAD )    {        eXP[iKiller] += get_pcvar_num(HsXp)                if( get_cvar_num("XP_Reward_MSG") == 1 )         {            ColorChat ( iKiller, GREY, "%s Jus gavote ^4%i^3 XP, jog nuzudete ^4%s^3 padarydami ^4HeadShot", szPrefix, get_pcvar_num (HsXp), vname )        }    }        if( wpnindex == CSW_HEGRENADE && iKiller != iVictim )    {        eXP[iKiller] += get_pcvar_num(HeXp)                if( get_cvar_num("XP_Reward_MSG") == 1 )         {            ColorChat( iKiller, GREEN, "%s^1 Jus gavote^4 %i^3 XP, jog nuzudete^4 %s^3 su ^4granata", szPrefix, get_pcvar_num (HeXp), vname )        }    }    CheckLevel(iKiller)    SaveData(iKiller)        return PLUGIN_CONTINUE} public CheckLevel(id){    if(Level[id] < MaxLevels-1)    {        while(eXP[id] >= Levels[Level[id]])        {            Level[id] += 1             ColorChat(id, GREY, "%s Sveikiname, jus pasiekte ^4%i^3 lygi!", szPrefix, Level[id])        }    } } /*      HUD PERMANENT INFO      */public ShowHud(task){    new id = task - TASK_SHOW_HUD        if(!is_user_alive(id))        return;        set_hudmessage(255, 64, 64, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0)    ShowSyncHudMsg(id, g_msgHudSync,"[Jusu lygis: %s]^n[Jusu XP kiekis: %i]", Prefix[Level[id]], eXP[id])        set_task(0.1, "ShowHud", TASK_SHOW_HUD + id)    } /*      nVault Stuff      */public SaveData(id) {     new AuthID[35]    get_user_authid(id,AuthID,34)     new vaultkey[64],vaultdata[256]         format(vaultkey,63,"%s-Mod",AuthID)     format(vaultdata,255,"%i#%i#",eXP[id],Level[id])         nvault_set(gVault,vaultkey,vaultdata)         return PLUGIN_CONTINUE } public LoadData(id) {     new AuthID[35]    get_user_authid(id,AuthID,34)     new vaultkey[64],vaultdata[256]         format(vaultkey,63,"%s-Mod",AuthID)     format(vaultdata,255,"%i#%i#",eXP[id],Level[id])         nvault_get(gVault,vaultkey,vaultdata,255)         replace_all(vaultdata, 255, "#", " ")         new playerxp[32], playerlevel[32]         parse(vaultdata, playerxp, 31, playerlevel, 31)         eXP[id] = str_to_num(playerxp)         Level[id] = str_to_num(playerlevel)         return PLUGIN_CONTINUE }  /*      Remove And Add XP      */public CmdAddXP ( iPlayer, level, cid ){    if( !cmd_access( iPlayer, level, cid, 3 ) ) return PLUGIN_HANDLED;           new arg [ 32 ]    read_argv ( 1, arg, 31 )      new AddXP [ 32 ]    read_argv ( 2, AddXP, charsmax ( AddXP ) )     new XPtoGive = str_to_num ( AddXP )           new AdminName [ 32 ]    new TargetName [ 32 ]    get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )           if( arg[0]=='@' )    {         if( equali(arg[1],"All") || equali(arg[1],"ALL") )        {            new players[32], totalplayers, All            get_players( players, totalplayers )                        for ( new i = 0; i < totalplayers; i++ )            {                All = players[ i ]                                       eXP[ All ] += XPtoGive            }                        CheckLevel( All )            ColorChat ( 0, GREY, "%s ^1%s^3 dave po^1 %i^3 XP visiems ^1 zaidejams^3!", szPrefix, AdminName, XPtoGive )        }        else if( equali(arg[1],"T") || equali(arg[1],"t") )        {            new players[32], totalplayers, T            get_players( players, totalplayers )                        for ( new i = 0; i < totalplayers; i++ )            {                if ( get_user_team(players[ i ]) == 1 )                {                    T = players[ i ]                                               eXP[ T ] += XPtoGive                }            }                        CheckLevel( T )            ColorChat ( 0, GREY, "%s ^1%s^3 give^1 %i^3 XP to all ^1 Terrorists^3!", szPrefix, AdminName, XPtoGive )        }        else if( equali(arg[1],"CT") || equali(arg[1],"ct") )        {            new players[32], totalplayers, CT            get_players( players, totalplayers )                        for( new i = 0; i < totalplayers; i++ )            {                if( get_user_team(players[ i ] ) == 2 )                {                    CT = players[ i ]                                               eXP[ CT ] += XPtoGive                }            }                        CheckLevel( CT )            ColorChat ( 0, GREY, "%s ^1%s^3 give^1 %i^3 XP to all ^1 Counter-Terrorists^3!", szPrefix, AdminName, XPtoGive )        }    }    else    {        new iTarget = cmd_target( iPlayer, arg, 3 )        get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )                if( iTarget )        {            eXP[ iTarget ] += XPtoGive                        CheckLevel( iTarget )            ColorChat ( 0, GREY, "%s ^1%s^3 dave^1 %i^3 XP zaidejui^1 %s^3", szPrefix, AdminName, XPtoGive, TargetName )        }    }    return PLUGIN_HANDLED} public CmdRemoveXP ( iPlayer, level, cid ){    if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;           new arg [ 32 ]    read_argv ( 1, arg, 31 )      new RemoveXP [ 32 ]    read_argv ( 2, RemoveXP, charsmax ( RemoveXP ) )     new XPtoRemove = str_to_num ( RemoveXP )           new AdminName [ 32 ]    new TargetName [ 32 ]    get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )           if( arg[0]=='@' )    {         if( equali(arg[1],"All") || equali(arg[1],"ALL") )        {            new players[32], totalplayers, All            get_players( players, totalplayers )                        for ( new i = 0; i < totalplayers; i++ )            {                All = players[ i ]                                       eXP[ All ] -= XPtoRemove            }                        CheckLevel( All )            ColorChat ( 0, GREY, "%s ^1%s^3 toke^1 %i^3 XP of all ^1 players^3!", szPrefix, AdminName, XPtoRemove )        }        else if( equali(arg[1],"T") || equali(arg[1],"t") )        {            new players[32], totalplayers, T            get_players( players, totalplayers )                        for ( new i = 0; i < totalplayers; i++ )            {                if ( get_user_team(players[ i ]) == 1 )                {                    T = players[ i ]                                               eXP[ T ] -= XPtoRemove                }            }                        CheckLevel( T )            ColorChat ( 0, GREY, "%s ^1%s^3 toke^1 %i^3 XP of all ^1 Terrorists^3!", szPrefix, AdminName, XPtoRemove )        }        else if( equali(arg[1],"CT") || equali(arg[1],"ct") )        {            new players[32], totalplayers, CT            get_players( players, totalplayers )                        for( new i = 0; i < totalplayers; i++ )            {                if( get_user_team(players[ i ] ) == 2 )                {                    CT = players[ i ]                                               eXP[ CT ] -= XPtoRemove                }            }                        CheckLevel( CT )            ColorChat ( 0, GREY, "%s ^1%s^3 toke^1 %i^3 XP of all ^1 Counter-Terrorists^3!", szPrefix, AdminName, XPtoRemove )        }    }    else    {        new iTarget = cmd_target( iPlayer, arg, 3 )        get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )                if( !iTarget )            return PLUGIN_HANDLED                    eXP[ iTarget ] -= XPtoRemove                    CheckLevel( iTarget )        ColorChat ( 0, GREY, "%s ^1%s^3 dave^1 %i^3 XP zaidejui^1 %s^3", szPrefix, AdminName, XPtoRemove, TargetName )    }        return PLUGIN_HANDLED}/*      Level Behind Nick & AdminChatColors              CREDITS TO ConnorMcLeod            */public Message_SayText(msgId,msgDest,msgEnt) {     new id = get_msg_arg_int(1);     if( is_user_connected(id) )     {         if( get_cvar_num("AdminChatColors_On") == 1 )         {            new flags = get_user_flags(id)            for(new i; i<sizeof(AdminsDatas); i++)             {                 if( flags & AdminsDatas[i][m_iFlag] )                 {                     new szChannel[64]                    get_msg_arg_string(2, szChannel, charsmax(szChannel))                            if( equal(szChannel, "#Cstrike_Chat_All") )                     {                         formatex(szChannel, charsmax(szChannel), "^4[%s|%s] ^3%%s1 ^1:  %%s2", Prefix[Level[id]], AdminsDatas[i][m_szName])                        set_msg_arg_string(2, szChannel)                    }                     else if( !equal(szChannel, "#Cstrike_Name_Change") )                     {                         format(szChannel, charsmax(szChannel), "^4[%s|%s] %s", Prefix[Level[id]], AdminsDatas[i][m_szName], szChannel)                        set_msg_arg_string(2, szChannel)                    }                     return                }                 else                {                    new szChannel[64]                    get_msg_arg_string(2, szChannel, charsmax(szChannel))                            if( equal(szChannel, "#Cstrike_Chat_All") )                     {                         formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1:  %%s2", Prefix[Level[id]])                        set_msg_arg_string(2, szChannel)                    }                     else if( !equal(szChannel, "#Cstrike_Name_Change") )                     {                         format(szChannel, charsmax(szChannel), "^4[%s] %s", Prefix[Level[id]], szChannel)                        set_msg_arg_string(2, szChannel)                    }                     return                 }            }         }        else        {            new szChannel[64]            get_msg_arg_string(2, szChannel, charsmax(szChannel));                    if( equal(szChannel, "#Cstrike_Chat_All") )             {                 formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1:  %%s2", Prefix[Level[id]])                set_msg_arg_string(2, szChannel)            }             else if( !equal(szChannel, "#Cstrike_Name_Change") )             {                 format(szChannel, charsmax(szChannel), "^4[%s] %s", Prefix[Level[id]], szChannel)                 set_msg_arg_string(2, szChannel)            }             return         }    } }  

User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

Re: XP Sistema!

Post by laimiukas3 »

paziurek
Attachments
4079_Lite_Rank_Syste.rar
(29.39 KiB) Downloaded 339 times
Image
Image
Image

Post Reply

Who is online

Users browsing this forum: Semrush [Bot] and 6 guests