Raised This Month: $51 Target: $400
 12% 

Remove Deathmatch in XPMOD Plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Godofwar
AlliedModders Donor
Join Date: Dec 2015
Location: Germany
Old 09-26-2017 , 04:47   Remove Deathmatch in XPMOD Plugin
Reply With Quote #1

Hello when anyone are boring maybe he can help me with that plugin to remove Deathmatch.

When i disable the deathmatch then i cant join to ct or terror. And idk why. Is there a way to remove it complete ? That would be great

DEATHMATCH = register_cvar("Deathmatch", "0")



Code:
/*
Plugin thread: http://forums.alliedmods.net/showthread.php?t=165138

XP Mod
========

Description
This plugin lets the user get xp for killing players , and for every level there is an amount of xp needed ,
i added 45 levels but you can easy add more. I made this plugin for i saw a req for a plugin like this and
here you go. Its easy to edit and i think this is a good base.
I tested it just in cs 1.6 but idk if it would work on the others (maybe can someone test?).
This plugin have deathmatch mode too , you can turn it on and off.
In this plugin you add a shop too , in the shop you can buy skills ,
every skill level costs 1 x Skill Level = Points , there is 45 levels in every skill and
you get 5 points every level. For more info about upgrades write /mainmenu. In this plugin you
can us either sql or nvault to save/load data. In this plugin there is webstats too.(it uses vault default)

Requirements:

nvault:

nvault
fun
cstrike
fakemeta
hamsandwich
engine

SQLx:

sqlx
fun
cstrike
fakemeta
hamsandwich
engine


Cvars:
SaveXP - Turns saving on and off (default on = 1)
Deathmatch - Turns Deathmatch on and off (default on = 1)
unlimitedammo - Turns unlimited ammo on and off (default on = 1)
nobuy - Turns no buy on and off (default on = 1)
upgradesshop - Turns shop on and off (default on = 1)
points_per_level - Amount points gained every level (default = 5)
sounds - Turns sounds on and off (default on = 1)
welcomemsg - Turns on or off welcome messege (default on = 1)
lvlupmsg - Turns on or off level up messge to everybody (default on = 1)
XP_per_kill - Amount xp gained per kill (default = 100)
XP_per_hs - Amount xp gained per Headshot (default = 50)
XP_per_he - Amount xp gained per HE Grenade kill (default = 50)
XP_per_knife - Amount xp gained per knife kill (default = 50)
XP_per_plant - Amount xp gained per bomb plant (default = 50)
XP_per_def - Amount xp gained per bomb defuse (default = 50)
XP_per_bomb - Amount xp gained per bomb explosion (default = 50)
XP_per_save - Amount xp gained per Saved target (default = 50)
XP_per_hostresc - Amount xp gained per Hostages rescue for ct (default = 50)
XP_per_hostnresc - Amount xp gained per Hostages not rescue for t (default = 50)
killstreak - Amount Kills needed for kill streak bonus (default = 4)
hsstreak - Amount Headshots needed for Headshot streak bonus (default = 4)
killstreakb - Amount xp gained for kill streak bonus (default = 200)
hsstreakb - Amount xp gained for kill streak bonus (default = 200)
gunsmenu - Turns guns menu on and off (default on = 1)

Commands:

Chat commands: 
say /reset - resets everything
say /menu - shows the main menu
say /shop - shows the upgrade menu
say /sell - shows the upgrade sell menu
say /help - shows the help menu
say guns - shows the guns menu
say /myrank - shows your rank
say /15top - shows top 15 players

Consle commands:
help - shows the help menu
menu - shows the main menu
shop - shows the upgrade menu
sell - shows the upgrade sell menu
help - shows the help menu
xpmod_setlvl - usage: <target> <level> (needs ADMIN_BAN)
xpmod_setpoints - usage: <target> <points> (needs ADMIN_BAN)

Languages:
[EN] - By modernwarfare (me)
[PL] - By MmikiM
[NL] - By drekes
[SV] - By modernwarfare (me)
[ES] - By Korxu
[BG] - By DeLiriuM
[TR] - By quLeryuzz


Updates:
1.0.0:
First Release
1.0.1:
Replaced some cleaner code.
Added Grenade Kill
1.0.2:
Made it so max level is 20 instead of 10
Fixed a bug
1.0.3:
Added level up sound.
Added deathmatch mode (can turn on and off)
Fixed a bug
1.0.4:
Fixed a problem/bug with respawning
1.0.5:
Fixed a problem/bug with protectoion
Added no buy (with cvars)
Added unlimited ammo (with cvars)
1.0.6:
Fixed a problem/bug with health/speed
Added shop and points (with cvars)
Changed saving method
Fixed saving/loading bug
1.0.7:
Fixed many many problems and bugs
Added more upgrades futures
Added more commands
1.0.8:
Fixed some skills bugs
Added Regeneration
Added admin commands
1.0.9:
Changed cvar name from shop to upgradesshop
Fixed death bug
1.1.0:
Added gun menu list (like csdm)
Added mysql support
Added rank system (sql version)
1.1.1:
Multi lang support (really much time i spend there)
1.1.2:
Not so big but fixed some bugs i found
there was some ML things that was wrong
Updated Web Stats
Added new lang (polish by MmikiM)
1.1.3:
Added so its like XP: 500 / 863 so you know how much you have remaining
Made it when you have max level then it shows Level: Max XP : 48562 (so it dont shows how much you have remaining to next level because you have max level)
Fixed somethings
In 1.1.4 it will be a big because new skills added and new futures :)
1.1.4:
Added killstreaks counter
Added longshot
Fixed something with the sql saving
Fixed some admins commands bugs (xpmod_setlvl)
New webstats look
Edited on the xpmod.txt (ML)
Changes game name to XP Mod
The gun menu shows when you spawn and you have not choosed a weapon already
Added [NL] Lang by drekes.
Added [SV] Lang by me.
Added [ES] Lang by Korxu
1.1.5:
Fixed KillStreaks bugs
Removed Long Shot (i dont want to make the plugin like cod so removed and its buggy
Fixed really much bugs in eDeath
Fixed weapons menu bug (didnt saved the weapon on next round when choosed save)
1.1.6:
Added so when you buy a skill level every time you do it will cost more like level 1 costs 1 level 2 costs 2 level 3 costs 3 and etc.
Max level is now 45
And points per level is 5
so it fits the new buying and selling system
The gameplay is now harder i tried the gameplay before got to level 20 very easy
new xp for every level
Added [BG] Lang By DeLiriuM
1.1.7:
Harder leveling (55 levels)
4 points every level
Added cvar to turn sounds on and off
Added more sounds (adding more soon)
Made new installion way to xp mod
Made so the sql and vault save methods is
in the same .sma (you choose the method when
you are installing the plugin)
Fixed guns command (now you cant use it if you are dead or not alive)
1.1.8:
No bots saves anymore
Fixed many bugs
Fixed New Round / Player Spawn / Round Start / Round End
Cleaner code
1.1.9:
Fixed grenade kill bug
1.2.0
Added welcome messege with cvar (name (14) connected to the server.) 
the 14 is the player level
Added a level up messege that appers for everybody 
when you level up (with cvar) : modernwarfare is now level 10.
Added turkish lang by quLeryuzz
1.2.1
Fixed the codes up , added comments and more.
Showing name in the webstats
Added Gravity skill
Fixed Some Bugs
Changed points per level so it fits with the new skill
Fixed menus bugs
Fixed something with the webstats (new file namned Config.php there you will have the sql info because its easier
to hack that info if you have it in the same file as Webstats.php)
Changed command from /mainmenu to menu much faster to write
1.2.2
Added nVault saving/loading
New installion ways
1.2.3
Fixed respawn bug
Fixed Xp reward hud (made it faster)
Added a cvar that turns guns menu on/off
Removed Vault Saving
New install ways
Added Formatex
Added Cvar Pointers
Fixed onther respawn bug (thx to ConnorMcLeod plugin)
1.2.4
Fixed up the respawn method
Fixed up the guns menu (really much)

*/
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <fun>

//#define USE_NVAULT

#if defined USE_NVAULT
#include <nvault>
#else
#include <sqlx>
#endif


#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#define m_LastHitGroup 75
#define fm_cs_set_user_nobuy(%1)	set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0))
#define WEAPON_CVAR "XPMod_weapons"
#define NADE_CVAR   "XPMod_nades"
#define MOD_SCOUT      1  //a
#define MOD_XM1014    2 //b
#define MOD_MAC10      4  //c
#define MOD_AUG   8    //d
#define MOD_UMP45      16 //e
#define MOD_SG550      32 //f
#define MOD_GALIL      64 //g
#define MOD_FAMAS      128    //h
#define MOD_AWP   256  //i
#define MOD_MP5NAVY  512  //j
#define MOD_M249        1024    //k
#define MOD_M3      2048  //l
#define MOD_M4A1        4096    //m
#define MOD_TMP   8192 //n
#define MOD_G3SG1      16384  //o
#define MOD_SG552      32768  //p
#define MOD_AK47        65536   //q
#define MOD_P90   131072   //r
#define MOD_P228        262144  //s
#define MOD_ELITE      524288 //t
#define MOD_FIVESEVEN      1048576    //u
#define MOD_USP   2097152  //v
#define MOD_GLOCK18  4194304  //w
#define MOD_DEAGLE    8388608   //x
#define MOD_VEST        16777216//y
#define MOD_VESTHELM        33554432//z
#define GAME_NAME "XP Mod"
#define DMG_GRENADE            ( 1 << 24 )
#define TeamInfo_PlayerID 1
#define XO_PLAYER 5
#define m_iTeam 114
#define m_iDeaths 444
new gmsgScoreInfo
new attacker_he

static const weapon_names[26][16] = 
{
    "Scout",
    "XM1014",
    "Mac10",
    "Aug",
    "UMP",
    "SG550",
    "Galil",
    "Famas",
    "AWP",
    "MP5Navy",
    "M249",
    "M3",
    "M4A1",
    "TMP",
    "G3SG1",
    "SG552",
    "AK47",
    "P90",
    "P228",
    "Elite",
    "Fiveseven",
    "USP",
    "Glock18",
    "Deagle",
    "VEST",
    "VESTHELM"
}

//menus
#define Keysmenu_sell (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9)
#define Keysmenu_buy (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9)
#define Keysmenu_main (1<<0)|(1<<1)|(1<<2)|(1<<9)
#define Keysmenu_reset (1<<0)|(1<<9)

new allowableweapons, nades
new bool:firsttime[33]
new bool:ask[33]
new weapon_picked[2][33]
new cur_offset[33]
new options_on_menu[8][33]

// Max level for each passive upgrades
#define MaxLevel_Health		10
#define MaxLevel_Armor		10
#define MaxLevel_Speed		10
#define MaxLevel_Regeneration		10
#define MaxLevel_Gravity	10

// How much you get per level
#define Health_PerLevel		25
#define Armor_PerLevel		25
#define Speed_PerLevel		8
#define Regeneration_PerLevel		1
#define Gravity_PerLevel	0.06

new g_HealthLevel[33]
new g_ArmorLevel[33]
new g_SpeedLevel[33]
new g_RegenerationLevel[33]
new g_GravityLevel[33]
new PlayerPoints[33]

new CSW_MAXAMMO[33]= {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1}

//max level
#define MaxLevel		55
new const LEVELS[55] = {865,1835,3500,4235,5040,5915,6860,7875,8960,10115,11340,12635,14000,15435,16940,19515,20160,21875,23660,25515,27440,29435,31500,33635,35840,38115,40460,42875,47360,53915,59540,66235,76000,86835,97740,129715,135855,149515,157525,168715,176715,186715,199815,218815,230815,242815,254985,266455,278985,290125,302715,314285,326565,338825,350857}


new PlayerXP[33],PlayerLevel[33]
new Killstreaks[33]
new kills[33]
new HS[33]

new XP_Kill
new HS_Kill
new KNIFE_Kill
new Plant_XP
new LVL_POINTS
new DEF_XP
new BOMB_XP
new SAVED_XP
new HOSTRESC_XP
new HOSTNRESC_XP
new HE_KILL
new KILLSTREAK
new HSSTREAK
new KILLSTREAKBONUS
new HSSTREAKBONUS
new SAVEXP
new WELCOMEMSG
new LVLUPMSG
new DEATHMATCH
new UNLIMITEDAMMO
new SOUNDS
new NOBUY
new UPGRADESSHOP
new GUNSMENU
new gHudSync;
new gHudSyncXp;
new g_iMaxPlayers;
//plants/hostags/def/and etc...
new bool:isalive[33];
new bool:BombPlanted;
new bool:g_PlayerReseted[33]
new bool:g_PlayerReg[33]

#if defined USE_NVAULT
new g_vault;
#else
new Host[]     = "37.59.43.196"
new User[]    = "gunxpmod"
new Pass[]     = "JQ5LG9Zrs74tAaX"
new Db[]     = "gunxpmod"
new Handle:g_SqlTuple
new g_Error[512]
#endif

public plugin_init()
{
          register_plugin("XP Mod", "1.2.4", "Swarm Hunter") // Registers the Plugin to the ModName, Version, and Creator
          register_cvar( "XP_MOD", "1.2.4", FCVAR_SERVER | FCVAR_SPONLY );
          register_dictionary("xpmod.txt")
          RegisterHam(Ham_Killed, "player", "eDeath", 1);
          RegisterHam(Ham_TakeDamage, "player", "eDamage");
          RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
          gHudSync = CreateHudSyncObj();
          gHudSyncXp = CreateHudSyncObj();
          SAVEXP = register_cvar("SaveXP", "1")
          WELCOMEMSG = register_cvar("welcomemsg", "1")
          LVLUPMSG = register_cvar("lvlupmsg", "1")
          DEATHMATCH = register_cvar("Deathmatch", "0")
          UNLIMITEDAMMO = register_cvar("unlimitedammo", "0")
          SOUNDS = register_cvar("sounds", "1")
          NOBUY = register_cvar("nobuy", "0")
          UPGRADESSHOP = register_cvar("upgradesshop", "1")
          GUNSMENU = register_cvar("gunsmenu", "0")
          register_concmd("xpmod_setlvl","setlevel",ADMIN_RCON,"- usage: <target> <level>")
          register_concmd("xpmod_setpoints","setpoints",ADMIN_RCON,"- usage: <target> <points>")
          register_clcmd("say /reset", 	"open_Reset")
          register_clcmd("say /menu","open_MainMenu")
          register_clcmd("say /shop", 	"open_PassiveUpgrades")
          register_clcmd("say /sell", 	"display_sellmenu")
          register_clcmd("say /help", 	"display_help")
          register_clcmd("say guns","cmd_guns")
          register_concmd("help", 	"display_help")
          register_concmd("menu", 	"open_MainMenu")
          register_concmd("shop", 	"open_PassiveUpgrades")
          register_concmd("sell", 	"display_sellmenu")
          #if defined USE_NVAULT
          g_vault = nvault_open("xpmod")
          #else
          register_clcmd("say /myrank", 	"Show_Rank")
          register_clcmd("say /15top", 	"ShowTop15")
          #endif
          register_menucmd(register_menuid("Reset"), Keysmenu_reset, "Action_reset")
          register_menucmd(register_menuid("Main Upgrades Menu"), Keysmenu_main, "Action_MainMenu")
          register_menucmd(register_menuid("Upgrades Sell"), Keysmenu_sell, "Action_sellMenu")
          register_menucmd(register_menuid("Buy Upgrades"), Keysmenu_buy, "Action_BuyUpgrades")
          register_menucmd(register_menuid("WeaponMethodMenu"),(1<<0)|(1<<1)|(1<<2),"weapon_method_pushed")
          register_menucmd(register_menuid("PrimaryWeaponSelect"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),"prim_weapons_pushed")
          register_menucmd(register_menuid("SecWeaponSelect"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7),"sec_weapons_pushed")
          nades = register_cvar(NADE_CVAR,"hhff")
          allowableweapons = register_cvar(WEAPON_CVAR,"abcdefghijklmnopqrstuvwxyz")
          LVL_POINTS = register_cvar("points_per_level", "5")
          XP_Kill = register_cvar("XP_per_kill", "100")
          HE_KILL = register_cvar("XP_per_he", "50")
          HS_Kill = register_cvar("XP_per_hs", "50")
          KNIFE_Kill = register_cvar("XP_per_knife", "50")
          Plant_XP = register_cvar("XP_per_plant", "50")
          DEF_XP = register_cvar("XP_per_def", "50")
          BOMB_XP = register_cvar("XP_per_bomb", "50")
          SAVED_XP = register_cvar("XP_per_save", "50")
          HOSTRESC_XP = register_cvar("XP_per_hostresc", "50")
          HOSTNRESC_XP = register_cvar("XP_per_hostnresc", "50")
          KILLSTREAK = register_cvar("killstreak", "4")
          HSSTREAK = register_cvar("hsstreak", "4")
          KILLSTREAKBONUS = register_cvar("killstreakb", "200")
          HSSTREAKBONUS = register_cvar("hsstreakb", "250")
          register_event("CurWeapon", "event_curweapon", "be", "1=1");
          register_logevent("Planted", 3, "2=Planted_The_Bomb");
          register_logevent("Defused", 3, "2=Defused_The_Bomb");
          register_logevent("Bombed", 6, "3=Target_Bombed");
          register_logevent("TargetSaved", 6, "3=Target_Saved");
          register_logevent("Hostages", 6, "2=triggered");
          register_message(get_user_msgid("StatusIcon") , "Message_StatusIcon");
          g_iMaxPlayers = get_maxplayers();
          static iEnt;
          iEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"));
          set_pev(iEnt, pev_classname, "HudSyncEnt");
          set_pev(iEnt, pev_nextthink, get_gametime());
          RegisterHamFromEntity(Ham_Think, iEnt, "HudShow");
          register_forward(FM_GetGameDescription,"GameDesc");
          register_event("TeamInfo", "Event_TeamInfo_All", "a")
          gmsgScoreInfo = get_user_msgid("ScoreInfo")
          #if defined USE_NVAULT
          #else
          set_task(1.0, "MySql_Init");
          #endif
}

public plugin_precache()
{
	precache_sound("xpmod/xp_levelup.wav")
	precache_sound("xpmod/xp_resetstats.wav")
	precache_sound("xpmod/xp_upgradepurchase.wav")
	precache_sound("xpmod/xp_upgradesell.wav")
	return PLUGIN_CONTINUE 
}


#if defined USE_NVAULT
#else
public MySql_Init()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
    
    new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
    if(SqlConnection == Empty_Handle)
    {
        set_fail_state(g_Error)
    }
    new Handle:Queries
    Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS xpmod (steamid varchar(32), xp TEXT(11), level INT(11), points INT(11), health INT(11), armor INT(11), speed INT(11), regeneration INT(11), gravity INT(11), name varchar(32))")
    
    if(!SQL_Execute(Queries))
    {
        SQL_QueryError(Queries,g_Error,charsmax(g_Error))
        set_fail_state(g_Error)   
    }
    
    SQL_FreeHandle(Queries)
    SQL_FreeHandle(SqlConnection)   
}
#endif

public plugin_end()
{
#if defined USE_NVAULT
    nvault_close(g_vault);
#else
    SQL_FreeHandle(g_SqlTuple)
#endif
}

public GameDesc()
{
	forward_return(FMV_STRING,GAME_NAME);
	return FMRES_SUPERCEDE;
}

public weapon_method_menu(id)
{
	new menu[192] //this declares the menu and lenght used 
	cur_offset[id] = 0
	formatex(menu , 191 , "%L" , id , "MENU1")   //format of the menu
	show_menu(id,(1<<0)|(1<<1)|(1<<2) , menu , -1  , "WeaponMethodMenu")  // shows the menu
}



public weapon_method_pushed(id,key)
{
    switch(key)
    {
        case 0:
        {
            ask[id] = true
            prim_weapons_menu(id,0)
        }
        case 1:
        {
            ask[id] = true
            give_weapons(id)
        }
        case 2:
        {
            client_print(id, print_chat, "[XP Mod] %L", id, "GUNS")
            ask[id] = false
            give_weapons(id)
        }
    }

    return ;
}


public prim_weapons_menu(id,offset)
{
    if(offset<0) offset = 0

    new cvar_value[32]
    get_pcvar_string(allowableweapons,cvar_value,31)
    new flags = read_flags(cvar_value)

    new keys, curnum, menu[2048]
    for(new i=offset;i<19;i++)
    {
        if(i==18)
        {
            options_on_menu[curnum][id] = 24
            keys += (1<<curnum)
            curnum++
            format(menu,2047, "%L" , id , "RANDOM",menu,curnum)
            break;
        }
        else if(flags & power(2,i))
        {
            options_on_menu[curnum][id] = i
            keys += (1<<curnum)

            curnum++
            format(menu,2047, "%L" , id , "RANDOM2",menu,curnum,weapon_names[i])

            if(curnum==8)
                break;
        }
    }

    format(menu,2047, "%L" , id , "PRIMARY",menu)
    if(curnum==8 && offset<12)
    {
        keys += (1<<8)
        format(menu,2047, "%L" , id , "NEXT",menu)
    }
    if(offset)
    {
        keys += (1<<9)
        format(menu,2047, "%L" , id , "BACK",menu)
    }

    show_menu(id,keys,menu,-1,"PrimaryWeaponSelect")
}

public prim_weapons_pushed(id,key)
{
    if(key<8)
    {
        weapon_picked[0][id] = options_on_menu[key][id]
        cur_offset[id] = 0
        sec_weapons_menu(id,0)
    }
    else
    {
        if(key==8)
            cur_offset[id] += 8
        if(key==9)
            cur_offset[id] -= 8
        prim_weapons_menu(id,cur_offset[id])
    }

    return ;
}

public sec_weapons_menu(id,offset)
{
    if(offset<0) offset = 0

    new cvar_value[32]
    get_pcvar_string(allowableweapons,cvar_value,31)
    new flags = read_flags(cvar_value)

    new keys, curnum, menu[2048]
    for(new i=18;i<24;i++)
    {
        if(flags & power(2,i))
        {
            options_on_menu[curnum][id] = i
            keys += (1<<curnum)

            curnum++
            format(menu,2047, "%L" , id , "RANDOM2",menu,curnum,weapon_names[i])
        }
    }
    options_on_menu[curnum][id] = 25
    keys += (1<<curnum)
    curnum++
    format(menu,2047, "%L" , id , "RANDOM",menu,curnum)

    format(menu,2047, "%L" , id , "SEC",menu)

    show_menu(id,keys,menu,-1,"SecWeaponSelect")
}

public sec_weapons_pushed(id,key)
{
    if(key<8)
    {
        weapon_picked[1][id] = options_on_menu[key][id]
    }

    give_weapons(id)

    return ;
}

public give_weapons(id)
{
    strip_user_weapons(id)

    give_item(id,"weapon_knife")

    new weapon[32]
    new csw = csw_contant(weapon_picked[0][id])
    get_weaponname(csw,weapon,31)
    give_item(id,weapon)
    cs_set_user_bpammo(id,csw,999)

    csw = csw_contant(weapon_picked[1][id])
    get_weaponname(csw,weapon,31)
    give_item(id,weapon)
    cs_set_user_bpammo(id,csw,999)
    get_pcvar_string(nades,weapon,31)
    new he, flash, smoke
    for(new i=0;i<strlen(weapon);i++)
    {
        switch(weapon[i])
        {
            case 'h': he++
            case 'f': flash++
            case 's': smoke++
        }
    }

    if(he) give_item(id,"weapon_hegrenade"), cs_set_user_bpammo(id,CSW_HEGRENADE,he)
    if(flash) give_item(id,"weapon_flashbang"), cs_set_user_bpammo(id,CSW_FLASHBANG,flash)
    if(smoke) give_item(id,"weapon_smokegrenade"), cs_set_user_bpammo(id,CSW_SMOKEGRENADE,smoke)
    get_pcvar_string(allowableweapons,weapon,31)
    new flags = read_flags(weapon)
    if(flags & MOD_VESTHELM) cs_set_user_armor(id,100,CS_ARMOR_VESTHELM)
    else if(flags & MOD_VEST) cs_set_user_armor(id,100,CS_ARMOR_KEVLAR)
}

public csw_contant(weapon)
{
    new num = 29
    switch(weapon)
    {
        case 0: num = 3
        case 1: num = 5
        case 2: num = 7
        case 3: num = 8
        case 4: num = 12
        case 5: num = 13
        case 6: num = 14
        case 7: num = 15
        case 8: num = 18
        case 9: num = 19
        case 10: num = 20
        case 11: num = 21
        case 12: num = 22
        case 13: num = 23
        case 14: num = 24
        case 15: num = 27
        case 16: num = 28
        case 17: num = 30
        case 18: num = 1
        case 19: num = 10
        case 20: num = 11
        case 21: num = 16
        case 22: num = 17
        case 23: num = 26
        case 24:
        {
            new s_weapon[32]
            get_pcvar_string(allowableweapons,s_weapon,31)
            new flags = read_flags(s_weapon)
            do
            {
                num = random_num(0,18)
                if(!(num & flags))
                {
                    num = -1
                }
            }
            while(num==-1)
            num = csw_contant(num)
        }
        case 25:
        {
            new s_weapon[32]
            get_pcvar_string(allowableweapons,s_weapon,31)
            new flags = read_flags(s_weapon)
            do
            {
                num = random_num(18,23)
                if(!(num & flags))
                {
                    num = -1
                }
            }
            while(num==-1)
            num = csw_contant(num)
        }
    }
    return num;
}

public cmd_guns(id)
{
	if(is_user_alive(id) && get_pcvar_num(GUNSMENU) == 1) {
		ask[id] = true
		weapon_method_menu(id)
	}
}

public regen(id){
	new maxhp = 100 + g_HealthLevel[id] * Health_PerLevel
	new regamount = g_RegenerationLevel[id] * Regeneration_PerLevel
	new health = get_user_health(id)

	if(is_user_alive(id) && !is_user_bot(id)) {
		if(get_user_health(id) < maxhp) {
			set_user_health(id, health+regamount)
		}
		if(get_user_health(id) > maxhp) {
			set_user_health(id, maxhp)
		}
	}
	g_PlayerReg[id] = true;
	set_task(1.0, "regen", id);
}
public setlevel( id, level,cid )
{
     if( ! cmd_access ( id, level, cid, 3 ) )
         return PLUGIN_HANDLED;
 
     new target[32], amount[21], reason[21];
 
     read_argv( 1, target, 31 );
     read_argv(2, amount, 20 );
     read_argv( 3, reason, 20 );
 
     new player = cmd_target( id, target, 8 );
 
     if( ! player ) 
         return PLUGIN_HANDLED;
 
     new admin_name[32], player_name[32];
     get_user_name( id, admin_name, 31 );
     get_user_name( player, player_name, 31 );
 
     new levelnum = str_to_num( amount );
 
     if(levelnum > MaxLevel) {
     client_print(id, print_console, "[XP Mod] %L", id, "MAX", MaxLevel)
     return PLUGIN_HANDLED;
     }
     if(levelnum == 0) {
     PlayerLevel[player] = levelnum;
     PlayerXP[player] = 0;
     } else {
     PlayerLevel[player] = levelnum;
     PlayerXP[player] = LEVELS[levelnum-1];
     }

     switch( get_cvar_num ( "amx_show_activity" ) )
     {
          case 1: client_print(0, print_chat, "[XP Mod] %L", LANG_PLAYER, "GAVE" , levelnum, player_name);
          case 2: client_print(0, print_chat, "[XP Mod] %L", LANG_PLAYER, "GAVE2" , admin_name, levelnum, player_name);
     }
 
     client_print(player, print_chat, "[XP Mod] %L", player, "RECEIVED", levelnum, PlayerLevel[player] ); 

     if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(player)) {
     SaveData(player);
     }
 
     return PLUGIN_CONTINUE;
}
public setpoints( id, level,cid )
{
     if( ! cmd_access ( id, level, cid, 3 ) )
         return PLUGIN_HANDLED;
 
     new target[32], amount[21], reason[21];
 
     read_argv( 1, target, 31 );
     read_argv(2, amount, 20 );
     read_argv( 3, reason, 20 );
 
     new player = cmd_target( id, target, 8 );
 
     if( ! player ) 
         return PLUGIN_HANDLED;
 
     new admin_name[32], player_name[32];
     get_user_name( id, admin_name, 31 );
     get_user_name( player, player_name, 31 );
 
     new points = str_to_num( amount );
 
     PlayerPoints[player] = points;

     switch( get_cvar_num ( "amx_show_activity" ) )
     {
          case 1: client_print(0, print_chat, "[XP Mod] %L", LANG_PLAYER, "GAVE3", points, player_name );
          case 2: client_print(0, print_chat, "[XP Mod] %L", LANG_PLAYER, "GAVE4", admin_name, points, player_name );
     }
 
     client_print(player, print_chat, "[XP Mod] %L", player, "RECEIVED2", points);
 
     if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(player)) {
     SaveData(player);
     }
 
     return PLUGIN_CONTINUE;
}

public open_MainMenu(id)
{
	new szMenuBody[512]
	new len = formatex(szMenuBody,511, "%L" , id , "MAIN")
	len += formatex(szMenuBody[len],511-len, "%L" , id , "BUY")
	len += formatex(szMenuBody[len],511-len, "%L" , id , "SELL")
	len += formatex(szMenuBody[len],511-len, "%L" , id , "HELP")
	len += formatex(szMenuBody[len],511-len, "%L" , id , "CANCEL")
	show_menu(id, Keysmenu_main, szMenuBody, -1, "Main Upgrades Menu")		
}

public Action_MainMenu(id, key)
{
	switch(key) 
	{
	case 0:  {
	open_PassiveUpgrades(id)
	}
	case 1:  {
	display_sellmenu(id)
	}
	case 2:  {
	display_help(id)
	}
	case 9:  {
	}
	}
	return PLUGIN_HANDLED
}

public display_help(id)
{
	new szMotd[2048], szTitle[64], iPos = 0
	formatex(szTitle,63, "%L" , id , "TITLE")
	iPos += formatex(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><pre><body>")
	iPos += formatex(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle)
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "DESC")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP1")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP2")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP3")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP4")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP5")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP6")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP7")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP8")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP9")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP10")
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP11", Health_PerLevel)
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP12", Armor_PerLevel)
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP13", Speed_PerLevel)
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP14", Regeneration_PerLevel)
	iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP15", floatround((Gravity_PerLevel * 100)))
	show_motd(id, szMotd, szTitle)
	return PLUGIN_HANDLED
}

public open_Reset(id)
{
	new szMenuBody[512]
	new len = formatex(szMenuBody, 511, "%L" , id , "RESET")
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "RESET2")
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "RESET3")
	show_menu(id, Keysmenu_reset, szMenuBody, -1, "Reset")
}

public Action_reset(id, key) {
	switch(key)  {
		case 0:  {
		g_PlayerReseted[id] = true;
		client_print(id, print_chat, "[XP Mod] %L", id, "RESETED");
		}
		case 9:  {
		}
	}
	return PLUGIN_HANDLED
}

public reset(id)
{
		g_PlayerReseted[id] = false;
		set_user_health(id, 100);
		set_user_armor(id, 100);
		set_user_maxspeed(id, 320.0);
		g_HealthLevel[id] = 0
		g_RegenerationLevel[id] = 0
		g_ArmorLevel[id] = 0
		g_SpeedLevel[id] = 0
		g_GravityLevel[id] = 0
		PlayerPoints[id] = 0
		PlayerLevel[id] = 0
		PlayerXP[id] = 0
		client_print(id, print_chat, "[XP Mod] %L", id, "RESETED2");
		ShowHud(id);
		if(get_pcvar_num(SOUNDS) == 1) {
		client_cmd(id,"spk xpmod/xp_resetstats")
		}
		if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(id)) {
		SaveData(id);
		}
		return PLUGIN_HANDLED
}

public open_PassiveUpgrades(id)
{
	if(get_pcvar_num(UPGRADESSHOP) == 1) {
	display_PassiveUpgrades(id)
	}
	return PLUGIN_HANDLED
}

display_PassiveUpgrades(id)
{
	new szMenuBody[512]
	new len = formatex(szMenuBody, 511, "%L" , id , "BUY2")

	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY3",	g_HealthLevel[id],	MaxLevel_Health)

	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY4",	g_ArmorLevel[id],	MaxLevel_Armor)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY5",	g_SpeedLevel[id],	MaxLevel_Speed)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY6",	g_RegenerationLevel[id],	MaxLevel_Regeneration)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY8",	g_GravityLevel[id], 	MaxLevel_Gravity)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY7")
	show_menu(id, Keysmenu_sell, szMenuBody, -1, "Buy Upgrades")
}

public Action_BuyUpgrades(id, key) 
{
	switch(key) 
	{
		case 0: 
		{
			if(g_HealthLevel[id] >= MaxLevel_Health) {
				client_print(id, print_chat, "[XP Mod] %L", id, "MAXLEVEL", g_HealthLevel[id]);
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE");
				return PLUGIN_HANDLED
			} else {
				Set_Upgrade(id, 0)
			}
		}
		case 1: 
		{
			if(g_ArmorLevel[id] >= MaxLevel_Armor) {
				client_print(id, print_chat, "[XP Mod] %L", id, "MAXLEVEL", g_ArmorLevel[id]);
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE");
				return PLUGIN_HANDLED
			} else {
				Set_Upgrade(id, 1)
			}
		}
		case 2: 
		{
			if(g_SpeedLevel[id] >= MaxLevel_Speed) {
				client_print(id, print_chat, "[XP Mod] %L", id, "MAXLEVEL", g_SpeedLevel[id]);
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE");
				return PLUGIN_HANDLED
			} else {
				Set_Upgrade(id, 2)
			}
		}
		case 3: 
		{
			if(g_RegenerationLevel[id] >= MaxLevel_Regeneration) {
				client_print(id, print_chat, "[XP Mod] %L", id, "MAXLEVEL", g_RegenerationLevel[id]);
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE");
				return PLUGIN_HANDLED
			} else {
				Set_Upgrade(id, 3)
			}
		}
		case 4: 
		{
			if(g_GravityLevel[id] >= MaxLevel_Gravity) {
				client_print(id, print_chat, "[XP Mod] %L", id, "MAXLEVEL", g_GravityLevel[id]);
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE");
				return PLUGIN_HANDLED
			} else {
				Set_Upgrade(id, 4)
			}
		}
		case 9: 
		{
		}

	}
	return PLUGIN_HANDLED
}
	
public Set_Upgrade(id, value)
{

		switch(value)
		{
			case 0:
			{
			if(PlayerPoints[id] > 1 * g_HealthLevel[id]) {
				g_HealthLevel[id] += 1
				PlayerPoints[id] -= 1 * g_HealthLevel[id]
				add_health(id, Health_PerLevel)
				client_print(id, print_chat, "[XP Mod] %L", id, "HEALTH", g_HealthLevel[id] * Health_PerLevel)
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradepurchase")
				}
			}
			}
			case 1:
			{
			if(PlayerPoints[id] > 1 * g_ArmorLevel[id]) {
				g_ArmorLevel[id]  += 1
				PlayerPoints[id] -= 1 * g_ArmorLevel[id]
				add_armor(id, Armor_PerLevel)
				client_print(id, print_chat, "[XP Mod] %L", id, "ARMOR", g_ArmorLevel[id] * Armor_PerLevel)
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradepurchase")
				}
			}
			}
			case 2:
			{
			if(PlayerPoints[id] > 1 * g_SpeedLevel[id]) {
				g_SpeedLevel[id]  += 1
				PlayerPoints[id] -= 1 * g_SpeedLevel[id]
				new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
				set_user_maxspeed(id, fSpeed)
				client_print(id, print_chat, "[XP Mod] %L", id, "SPEED", g_SpeedLevel[id] * Speed_PerLevel)
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradepurchase")
				}
			}
			}
			case 3:
			{
			if(PlayerPoints[id] > 1 * g_RegenerationLevel[id]) {
				g_RegenerationLevel[id]  += 1
				PlayerPoints[id] -= 1 * g_RegenerationLevel[id]
				client_print(id, print_chat, "[XP Mod] %L", id, "REGENERATION", g_RegenerationLevel[id] * Regeneration_PerLevel)
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradepurchase")
				}
			}
			}
			case 4:
			{
			if(PlayerPoints[id] > 1 * g_GravityLevel[id]) {
				g_GravityLevel[id]  += 1
				PlayerPoints[id] -= 1 * g_GravityLevel[id]
				new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
				set_gravity(id, fGravity)
				client_print(id, print_chat, "[XP Mod] %L", id, "GRAVITY", g_GravityLevel[id] * floatround((Gravity_PerLevel * 100)))
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradepurchase")
				}
			}
			}
		}
		

		if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(id)) {
		SaveData(id);
		}
		
		if(PlayerPoints[id] > 0) {
			display_PassiveUpgrades(id)
		}
}


public display_sellmenu(id)
{
	new szMenuBody[512]
	new len = formatex(szMenuBody, 511, "%L" , id , "SELL1")
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY3",	g_HealthLevel[id],	MaxLevel_Health)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY4",	g_ArmorLevel[id],	MaxLevel_Armor)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY5",	g_SpeedLevel[id],	MaxLevel_Speed)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY6",	g_RegenerationLevel[id],	MaxLevel_Regeneration)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY8",	g_GravityLevel[id], 	MaxLevel_Gravity)
	len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY7")
	show_menu(id, Keysmenu_sell, szMenuBody, -1, "Upgrades Sell")		
}

public Action_sellMenu(id, key) 
{

	switch(key) 
	{
		case 0: 
		{
			if(g_HealthLevel[id] == 0) {
				client_print(id, print_chat, "[XP Mod] %L", id, "NEEDED")
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE2")
				return PLUGIN_HANDLED
			} else {
				client_print(id, print_chat, "[XP Mod] %L", id, "SOLD")
				PlayerPoints[id] += 1 * g_HealthLevel[id]
				g_HealthLevel[id] -= 1
				set_user_health(id, 100)
				add_health(id, g_HealthLevel[id] * Health_PerLevel)
				ShowHud(id);
				display_sellmenu(id);
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradesell")
				}
			}
		}
		case 1: 
		{
			if(g_ArmorLevel[id] == 0) {
				client_print(id, print_chat, "[XP Mod] %L", id, "NEEDED")
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE2")
				return PLUGIN_HANDLED
			} else {
				client_print(id, print_chat, "[XP Mod] %L", id, "SOLD")
				PlayerPoints[id] += 1 * g_ArmorLevel[id]
				g_ArmorLevel[id] -= 1
				cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR) 
				add_armor(id, g_ArmorLevel[id] * Armor_PerLevel)
				ShowHud(id);
				display_sellmenu(id);
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradesell")
				}
			}
		}
		case 2: 
		{
			if(g_SpeedLevel[id] == 0) {
				client_print(id, print_chat, "[XP Mod] %L", id, "NEEDED")
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE2")
				return PLUGIN_HANDLED
			} else {
				client_print(id, print_chat, "[XP Mod] %L", id, "SOLD")
				PlayerPoints[id] += 1 * g_SpeedLevel[id]
				g_SpeedLevel[id] -= 1
				set_user_maxspeed(id, 320.0)
				new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
				set_user_maxspeed(id, fSpeed)
				ShowHud(id);
				display_sellmenu(id);
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradesell")
				}
			}
		}
		case 3: 
		{
			if(g_RegenerationLevel[id] == 0) {
				client_print(id, print_chat, "[XP Mod] %L", id, "NEEDED")
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE2")
				return PLUGIN_HANDLED
			} else {
				client_print(id, print_chat, "[XP Mod] %L", id, "SOLD")
				PlayerPoints[id] += 1 * g_RegenerationLevel[id]
				g_RegenerationLevel[id] -= 1
				ShowHud(id);
				display_sellmenu(id);
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradesell")
				}
			}
		}
		case 4: 
		{
			if(g_GravityLevel[id] == 0) {
				client_print(id, print_chat, "[XP Mod] %L", id, "NEEDED")
				return PLUGIN_HANDLED
			} else if(!is_user_alive(id)) {
				client_print(id, print_chat, "[XP Mod] %L", id, "ALIVE2")
				return PLUGIN_HANDLED
			} else {
				client_print(id, print_chat, "[XP Mod] %L", id, "SOLD")
				PlayerPoints[id] += 1 * g_GravityLevel[id]
				g_GravityLevel[id] -= 1
				new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
				set_gravity(id, fGravity)
				ShowHud(id);
				display_sellmenu(id);
				if(get_pcvar_num(SOUNDS) == 1) {
				client_cmd(id,"spk xpmod/xp_upgradesell")
				}
			}
		}
		case 9:
		{
		}
	}
	if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(id)) {
	SaveData(id);
	}
	ShowHud(id);
	return PLUGIN_HANDLED
}

add_armor(id, value) 
{
	new CsArmorType:ArmorType 
	new iArmor = cs_get_user_armor(id, ArmorType)
	cs_set_user_armor(id, iArmor + value, ArmorType)
}

add_health(id, value) 
{
	new iHealth = get_user_health(id)
	set_user_health(id, iHealth + value)
}

set_gravity(id, Float:value) {
	set_user_gravity(id, 1.00 - value)
}

public Message_StatusIcon(iMsgId, MSG_DEST, id)
{
	if(get_pcvar_num(NOBUY) == 0) {
	return PLUGIN_CONTINUE;
	}

	static szIcon[5];

	get_msg_arg_string(2, szIcon, 4);

	if(szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z')
	{
	if(get_msg_arg_int(1))
	{
	fm_cs_set_user_nobuy(id);
	return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public event_curweapon(id) {
	if(!is_user_connected(id))
	{
		return PLUGIN_HANDLED;
	}
	if(g_SpeedLevel[id] > 0) 
	{
		new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
		set_user_maxspeed(id, fSpeed)
	}

	if(g_GravityLevel[id] > 0) 
	{
		new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
		if(get_user_gravity(id) != fGravity) {
		set_gravity(id, fGravity)
		}
	}

	if(get_pcvar_num(UNLIMITEDAMMO) == 1) {
	new weaponID = read_data(2)
	if(weaponID==CSW_C4 || weaponID==CSW_KNIFE || weaponID==CSW_HEGRENADE || weaponID==CSW_SMOKEGRENADE || weaponID==CSW_FLASHBANG)
		return PLUGIN_CONTINUE
	if(cs_get_user_bpammo(id, weaponID)!=CSW_MAXAMMO[weaponID])
		cs_set_user_bpammo(id, weaponID, CSW_MAXAMMO[weaponID])
	}
	return PLUGIN_CONTINUE;
}

public eDamage(iVictim, ent, iAttacker, Float:damage, bits)
{
	if(!is_user_connected(iVictim) || !is_user_connected(iAttacker) || iVictim == iAttacker)
	{
		return HAM_IGNORED;
	}
	if(bits & DMG_GRENADE)
	{
		iAttacker = attacker_he;
		set_task(0.1, "eCheck", iVictim);	
	}
	return HAM_IGNORED;
}

public eCheck(id)
{
		++Killstreaks[attacker_he];
		if(kills[attacker_he] != get_pcvar_num(KILLSTREAK)  && HS[attacker_he] != get_pcvar_num(HSSTREAK))
		{
			if(!is_user_alive(id))
			{
				PlayerXP[attacker_he] += (get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL));
				set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
				ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL));
				++kills[attacker_he];
			}
		}


		if(kills[attacker_he] == get_pcvar_num(KILLSTREAK) && HS[attacker_he] == get_pcvar_num(HSSTREAK))
		{
			if(!is_user_alive(id))
			{
				PlayerXP[attacker_he] += (get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
				set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
				ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
				kills[attacker_he] = 0;
				HS[attacker_he] = 0;
			}
		}


		if(kills[attacker_he] == get_pcvar_num(KILLSTREAK) && HS[attacker_he] != get_pcvar_num(HSSTREAK))
		{
			if(!is_user_alive(id))
			{
				PlayerXP[attacker_he] += (get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL) + get_pcvar_num(KILLSTREAKBONUS));
				set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
				ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL) + get_pcvar_num(KILLSTREAKBONUS));
			}
		}


		if(HS[attacker_he] == get_pcvar_num(HSSTREAK) && kills[attacker_he] != get_pcvar_num(KILLSTREAK))
		{
			if(!is_user_alive(id))
			{
				PlayerXP[attacker_he] += (get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL) + get_pcvar_num(HSSTREAKBONUS));
				set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
				ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HE_KILL) + get_pcvar_num(HSSTREAKBONUS));
				HS[attacker_he] = 0;
			}
		}


		if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(attacker_he)) {
			SaveData(attacker_he);
		}
		ShowHud(attacker_he);
		CheckLevel(attacker_he);
}

public Event_TeamInfo_All()
{
	new id = read_data( TeamInfo_PlayerID )
	if( !is_user_alive(id) && is_user_connected(id) )
	{
		new iTeam = get_pdata_int(id, m_iTeam, XO_PLAYER)
		if( iTeam != get_user_team(id) )
		{
			emessage_begin(MSG_BROADCAST, gmsgScoreInfo)
			ewrite_byte( id )
			ewrite_short( get_user_frags(id) )
			ewrite_short( get_pdata_int(id, m_iDeaths, XO_PLAYER) )
			ewrite_short( 0 )
			ewrite_short( iTeam )
			emessage_end()
		}
	}
}

public eDeath(iVictim, iAttacker) {
	new HitGroup = get_pdata_int(iVictim, m_LastHitGroup);
	Killstreaks[iVictim] = 0;
	kills[iVictim] = 0;
	HS[iVictim] = 0;

	if(get_pcvar_num(DEATHMATCH) == 1 && !BombPlanted && get_user_team(iVictim) != 3) {
		set_task(3.00, "RespawnPlayer", iVictim);
		set_task(0.01, "Respawntext", iVictim);
	}


	if(!IsPlayer(iAttacker)){
		return HAM_IGNORED;
	}
	new weapon = get_user_weapon(iAttacker);

	if(get_user_team(iAttacker) != get_user_team(iVictim)) {
			++Killstreaks[iAttacker];
			if(kills[iAttacker] != get_pcvar_num(KILLSTREAK)  && HS[iAttacker] != get_pcvar_num(HSSTREAK))
			{
				if(weapon == CSW_KNIFE)
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill));
						++kills[iAttacker];
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill));
						++kills[iAttacker];
						++HS[iAttacker];
					}
				}
				else 
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += get_pcvar_num(XP_Kill);
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill));
						++kills[iAttacker];
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill));
						++kills[iAttacker];
						++HS[iAttacker];
					}
				}
			}
			if(kills[iAttacker] == get_pcvar_num(KILLSTREAK) && HS[iAttacker] == get_pcvar_num(HSSTREAK))
			{
				if(weapon == CSW_KNIFE)
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
						kills[iAttacker] = 0;
						HS[iAttacker] = 0;
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
						kills[iAttacker] = 0;
						HS[iAttacker] = 0;
					}
				}
				else 
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += get_pcvar_num(XP_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS);
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
						kills[iAttacker] = 0;
						HS[iAttacker] = 0;
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
						kills[iAttacker] = 0;
						HS[iAttacker] = 0;
					}
				}
			}
			if(kills[iAttacker] == get_pcvar_num(KILLSTREAK) && HS[iAttacker] != get_pcvar_num(HSSTREAK))
			{
				if(weapon == CSW_KNIFE)
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS));
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(KILLSTREAKBONUS));
						++HS[iAttacker];
					}
				}
				else 
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += get_pcvar_num(XP_Kill) + get_pcvar_num(KILLSTREAKBONUS);
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(KILLSTREAKBONUS));
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill) + get_pcvar_num(KILLSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill) + get_pcvar_num(KILLSTREAKBONUS));
						++HS[iAttacker];
					}
				}
				kills[iAttacker] = 0;	
			}
			if(HS[iAttacker] == get_pcvar_num(HSSTREAK) && kills[iAttacker] != get_pcvar_num(KILLSTREAK))
			{
				if(weapon == CSW_KNIFE)
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(HSSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(HSSTREAKBONUS));
						HS[iAttacker] = 0;
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(HSSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill) + get_pcvar_num(KNIFE_Kill) + get_pcvar_num(HSSTREAKBONUS));
						HS[iAttacker] = 0;
					}
				}
				else 
				{
					if(HitGroup != HIT_HEAD)
					{
						PlayerXP[iAttacker] += get_pcvar_num(XP_Kill) + get_pcvar_num(HSSTREAKBONUS);
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HSSTREAKBONUS));
						HS[iAttacker] = 0;
					}
					else
					{
						PlayerXP[iAttacker] += (get_pcvar_num(XP_Kill) +  get_pcvar_num(HS_Kill) + get_pcvar_num(HSSTREAKBONUS));
						set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
						ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(XP_Kill) + get_pcvar_num(HS_Kill) + get_pcvar_num(HSSTREAKBONUS));
						HS[iAttacker] = 0;
					}
				}
			}
	}
	if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(iAttacker)) {
	SaveData(iAttacker);
	}
	ShowHud(iAttacker);
	CheckLevel(iAttacker);
	return HAM_IGNORED;
}

public client_connect(id)
{
		g_HealthLevel[id] = 0
		g_ArmorLevel[id] = 0
		g_SpeedLevel[id] = 0
		g_RegenerationLevel[id] = 0
		g_GravityLevel[id] = 0
		PlayerPoints[id] = 0
		PlayerLevel[id] = 0
		PlayerXP[id] = 0
		firsttime[id] = true
		ask[id] = true
		if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(id)) {
		LoadData(id)
		}
		if(get_pcvar_num(WELCOMEMSG) == 1) {
		new name[32]
		get_user_info(id, "name", name, 31)
		client_print(0, print_chat, "[XP Mod] %L", 0, "WELCOME",name , PlayerLevel[id])
		}
}

public client_disconnect(id)
{
		if(get_pcvar_num(SAVEXP) == 1 && !is_user_bot(id)) {
		SaveData(id)
		}
		g_HealthLevel[id] = 0
		g_ArmorLevel[id] = 0
		g_SpeedLevel[id] = 0
		g_RegenerationLevel[id] = 0
		g_GravityLevel[id] = 0
		PlayerPoints[id] = 0
		PlayerLevel[id] = 0
		PlayerXP[id] = 0
}

#if defined USE_NVAULT
SaveData(id) 
{
	new AuthID[35];
	get_user_authid(id,AuthID,34);
	new vaultkey[64],vaultdata[256]

	formatex(vaultkey,63,"%s-Mod",AuthID)
	formatex(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i#",PlayerLevel[id],PlayerXP[id],PlayerPoints[id],g_HealthLevel[id],g_ArmorLevel[id],g_SpeedLevel[id],g_RegenerationLevel[id],g_GravityLevel[id])
	nvault_set(g_vault,vaultkey,vaultdata)
}
LoadData(id) 
{ 
	new AuthID[35];
	get_user_authid(id,AuthID,34);
	new vaultkey[64],vaultdata[256]

	formatex(vaultkey,63,"%s-Mod",AuthID)
	formatex(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i#",PlayerLevel[id],PlayerXP[id],PlayerPoints[id],g_HealthLevel[id],g_ArmorLevel[id],g_SpeedLevel[id],g_RegenerationLevel[id],g_GravityLevel[id])
	nvault_get(g_vault,vaultkey,vaultdata,255)
	replace_all(vaultdata, 255, "#", " ")

	new playerlevel[32], playerxp[32], playerpoints[32], playerhealth[32], playerarmor[32], playerspeed[32], playerregeneration[32], playergravity[32]
	parse(vaultdata, playerlevel, 31, playerxp, 31, playerpoints, 31, playerhealth, 31, playerarmor, 31, playerspeed, 31, playerregeneration, 31, playergravity, 31)

	PlayerLevel[id] = str_to_num(playerlevel)
	PlayerXP[id] = str_to_num(playerxp)
	PlayerPoints[id] = str_to_num(playerpoints)
	g_HealthLevel[id] = str_to_num(playerhealth)
	g_ArmorLevel[id] = str_to_num(playerarmor)
	g_SpeedLevel[id] = str_to_num(playerspeed)
	g_RegenerationLevel[id] = str_to_num(playerregeneration)
	g_GravityLevel[id] = str_to_num(playergravity)
}
#else
public LoadData(id)
{
    new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
    
    if(g_SqlTuple == Empty_Handle)
        set_fail_state(g_Error)
        
    new szSteamId[32], szTemp[512]
    get_user_authid(id, szSteamId, charsmax(szSteamId))
    
    new Data[1]
    Data[0] = id

    formatex(szTemp,charsmax(szTemp),"SELECT * FROM `xpmod` WHERE (`xpmod`.`steamid` = '%s')", szSteamId)
    SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
    SQL_FreeHandle(SqlConnection)
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(FailState == TQUERY_CONNECT_FAILED)
    {
        log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
    }
    else if(FailState == TQUERY_QUERY_FAILED)
    {
        log_amx("Load Query failed. [%d] %s", Errcode, Error)
    }
    new id = Data[0]
    
    if(SQL_NumResults(Query) < 1)
    {
        
        new szSteamId[32]
        new name[32]
        get_user_info(id, "name", name, 31)
        get_user_authid(id, szSteamId, charsmax(szSteamId))
        
        if (equal(szSteamId,"ID_PENDING"))
            return PLUGIN_HANDLED;
            
        new szTemp[512]
        
        new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
        if(g_SqlTuple == Empty_Handle)
            set_fail_state(g_Error)

        formatex(szTemp,charsmax(szTemp),"INSERT INTO `xpmod`(`steamid`, `xp`, `level`, `points`, `health`, `armor`,  `speed`,  `regeneration`,  `gravity`,  `name`) VALUES ('%s', '0', '0', '0', '0', '0', '0', '0', '0', '%s')", szSteamId , name)
        SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
        server_print("seach information ")
        SQL_FreeHandle(SqlConnection)
    } 
    else 
    {

        PlayerXP[id] = SQL_ReadResult(Query, 1)
        PlayerLevel[id] = SQL_ReadResult(Query, 2)
        PlayerPoints[id] = SQL_ReadResult(Query, 3)
        g_HealthLevel[id] = SQL_ReadResult(Query, 4)
        g_ArmorLevel[id] = SQL_ReadResult(Query, 5)
        g_SpeedLevel[id] = SQL_ReadResult(Query, 6)
        g_RegenerationLevel[id] = SQL_ReadResult(Query, 7)
        g_GravityLevel[id] = SQL_ReadResult(Query, 8)
        server_print("read the result ")
    }
    return PLUGIN_CONTINUE;
}
public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    SQL_FreeHandle(Query)
    return PLUGIN_HANDLED;
}
public SaveData(id)
{
    new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(g_SqlTuple == Empty_Handle)
        set_fail_state(g_Error)
   
    new szSteamId[32], szTemp[512]
    new name[32]

    if(is_user_connected(id)){
    get_user_info(id, "name", name, 31)
    }
    get_user_authid(id, szSteamId, charsmax(szSteamId))
    
    formatex(szTemp,charsmax(szTemp),"UPDATE `xpmod` SET `xp` = '%d' , `level` = '%d' , `points` = '%d' , `health` = '%d' , `armor` = '%d' , `speed` =  '%d' , `regeneration` =  '%d' , `gravity` =  '%d' , `name` =  '%s'  WHERE `xpmod`.`steamid` = '%s';", PlayerXP[id],  PlayerLevel[id], PlayerPoints[id], g_HealthLevel[id],  g_ArmorLevel[id], g_SpeedLevel[id], g_RegenerationLevel[id], g_GravityLevel[id], name, szSteamId) 
    SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
    SQL_FreeHandle(SqlConnection);
}
public Show_Rank(id)
{
    for(new i; i < g_iMaxPlayers; i++)
    {
        if(is_user_connected(i) && get_pcvar_num(SAVEXP) == 1 && !is_user_bot(id)) {
           SaveData(i)
        }
    }
        
    new Data[1]
    Data[0] = id
    
    new szTemp[512]
    formatex(szTemp,charsmax(szTemp),"SELECT COUNT(*) FROM `xpmod` WHERE `xp` >= %d", PlayerXP[id])
    SQL_ThreadQuery(g_SqlTuple,"Sql_Rank",szTemp,Data,1)
        
    return PLUGIN_CONTINUE
}
public Sql_Rank(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(FailState == TQUERY_CONNECT_FAILED)
            log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
    else if(FailState == TQUERY_QUERY_FAILED)
            log_amx("Load Query failed. [%d] %s", Errcode, Error)
  
    new count = 0
    count = SQL_ReadResult(Query,0)
    if(count == 0)
    count = 1
    
    new id
    id = Data[0]

    client_print(id, print_chat, "[XP Mod] %L", id, "RANK", count, PlayerLevel[id] , PlayerXP[id])
    
    return PLUGIN_HANDLED
}
public ShowTop15(id)
{
    //i must save stat for will haven't error into top15.
    //
    new Data[1]
    Data[0] = id
    
    // no need for a variable since it's not being formatted
    /*new Temp[512]
    formatex(Temp,charsmax(Temp),"SELECT steamid, xp FROM xpmod ORDER BY xp DESC LIMIT 15;")
    SQL_ThreadQuery(g_SqlTuple,"Sql_Top15",Temp,Data,1)*/
    SQL_ThreadQuery(g_SqlTuple,"Sql_Top15","SELECT steamid, xp FROM xpmod ORDER BY xp DESC LIMIT 15;",Data,1)
    return PLUGIN_CONTINUE;
}
public Sql_Top15(FailState,Handle:hQuery,Error[],Errcode,Data[],DataSize) 
{
    // get player who is looking at top
    new id = Data[ 0 ];
    
    // check for errors
    if( FailState == TQUERY_CONNECT_FAILED
    ||  FailState == TQUERY_QUERY_FAILED )
    {
        log_amx( "Error on top15 query (%i): %s", Errcode, Error );
        console_print( id, "Error on top15 query (%i): %s", Errcode, Error );
        return;
    }
    
    new szSteamID[ 35 ], PlayerXP;
    new iPos = 1;
    
    while( SQL_MoreResults( hQuery ) )
    {
        SQL_ReadResult( hQuery, 0, szSteamID, charsmax( szSteamID ) );
        PlayerXP = SQL_ReadResult( hQuery, 1 );

        client_print(id,print_chat, "[XP Mod] %L", id, "RANK2", iPos, szSteamID, PlayerXP);
        
        iPos++;
        SQL_NextRow( hQuery );
    }
}
#endif


public CheckLevel(id) {
	if(PlayerLevel[id] == MaxLevel){
	return PLUGIN_HANDLED;
	}
	else {
	if(PlayerXP[id] >= LEVELS[PlayerLevel[id]]){
     	PlayerLevel[id] += 1;
     	PlayerPoints[id] += get_pcvar_num(LVL_POINTS);
     	client_print(id, print_chat, "[XP Mod] %L", id, "GRATZ", PlayerLevel[id],PlayerPoints[id]);
	if(get_pcvar_num(LVLUPMSG) == 1) {
	new name[32]
	get_user_info(id, "name", name, 31)
     	client_print(0, print_chat, "[XP Mod] %L", 0, "GRATZ2",name , PlayerLevel[id]);
	}
     	display_PassiveUpgrades(id)
	if(get_pcvar_num(SOUNDS) == 1) {
     	client_cmd(id,"spk xpmod/xp_levelup")
	}
	}
	}

	return PLUGIN_HANDLED
}


public HudShow(iEnt)
{
	for(new id = 1; id <= g_iMaxPlayers; id++)
	{
		ShowHud(id);
	}
	set_pev(iEnt, pev_nextthink, get_gametime() + 1.0);
}

public RespawnPlayer(id)
{
	if (get_user_team(id) != 3 && is_user_connected(id)) {
	ExecuteHamB(Ham_CS_RoundRespawn, id);
	}
}

public Respawntext(id)
{
	client_print(id, print_chat, "[XP Mod] %L", id, "RESPAWN");
}

public protect(id)
{
		if(is_user_alive(id))
		{
		set_user_godmode(id, 1);
		switch(cs_get_user_team(id))
		{
		case CS_TEAM_T: set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25);
		case CS_TEAM_CT: set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25);
		}
		set_task(3.0, "sp_off", id);
		}
		return PLUGIN_HANDLED;
}

public sp_off(id) 
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	set_user_godmode(id, 0);
	set_user_rendering(id, kRenderFxGlowShell, 0, 0,0, kRenderNormal, 0);	
	return PLUGIN_HANDLED;
}


public ShowHud(id)
{

    new amount = PlayerLevel[id];

    if(IsPlayer(id) && is_user_connected(id) && PlayerLevel[id] != MaxLevel) {
    set_hudmessage(255, 0, 0, 0.02, 0.26, 0, 0.0, 1.0,_ ,_, -1);
    ShowSyncHudMsg(id, gHudSync, "%L", id , "LEVEL1", PlayerLevel[id],PlayerXP[id],LEVELS[amount],PlayerPoints[id],Killstreaks[id]);
}
    if(IsPlayer(id) && is_user_connected(id) && PlayerLevel[id] == MaxLevel) {
    set_hudmessage(255, 0, 0, 0.02, 0.26, 0, 0.0, 1.0,_ ,_, -1);
    ShowSyncHudMsg(id, gHudSync, "%L", id , "LEVEL2", PlayerXP[id],PlayerPoints[id],Killstreaks[id]);
}
}

public Planted()
{	
	for(new i = 1; i <= g_iMaxPlayers; ++i)
	{
		if(!IsPlayer(i))
			return PLUGIN_HANDLED;
		
		if(is_user_alive(i) && get_user_team(i) == 1)
		{
			isalive[i] = true;
			PlayerXP[i] += get_pcvar_num(Plant_XP) 
			set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
			ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(Plant_XP));
		}
		BombPlanted = true;
		CheckLevel(i)
	}
	return PLUGIN_CONTINUE;
}

public Defused()
{
	for(new i = 1; i <= g_iMaxPlayers; ++i)
	{
		if(!IsPlayer(i))
			return PLUGIN_HANDLED;
			
		if(is_user_alive(i) && get_user_team(i) == 2)
		{
			isalive[i] = false;
			PlayerXP[i] += get_pcvar_num(DEF_XP) 
			set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
			ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(DEF_XP));
		}
		if(BombPlanted) {
		BombPlanted = false;    
		}
		CheckLevel(i);
	}
	return PLUGIN_CONTINUE;
}

public Bombed()
{
	for(new i = 1; i <= g_iMaxPlayers; ++i)
	{
		if(!IsPlayer(i))
			return PLUGIN_HANDLED;
		
		if(isalive[i] && get_user_team(i) == 1)
		{
			isalive[i] = false;
			PlayerXP[i] += get_pcvar_num(BOMB_XP) 
			set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
			ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(BOMB_XP));
		}
		if(BombPlanted) {
		BombPlanted = false;    
		}
		CheckLevel(i);
	}
	return PLUGIN_CONTINUE;
}

public TargetSaved()
{
	for(new i = 1; i <= g_iMaxPlayers; ++i)
	{
		if(!IsPlayer(i))
			return PLUGIN_HANDLED;
			
		if(is_user_alive(i) && get_user_team(i) == 2)
		{
			PlayerXP[i] += get_pcvar_num(SAVED_XP) 
			set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
			ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(SAVED_XP));
		}
		if(BombPlanted) {
		BombPlanted = false;    
		}
		CheckLevel(i);
	}
	return PLUGIN_CONTINUE;
}

public Hostages()
{
	new arg[64];
	read_logargv(3, arg, 63);

	if(equal(arg, "Hostages_Not_Rescued"))
	{		
		for(new i = 1; i <= g_iMaxPlayers; ++i)
		{
			if(!IsPlayer(i))
				return PLUGIN_HANDLED;
				
			if(is_user_alive(i) && get_user_team(i) == 1)
			{
			PlayerXP[i] += get_pcvar_num(HOSTNRESC_XP) 
			set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
			ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(HOSTNRESC_XP));
			}
			if(BombPlanted) {
			BombPlanted = false;    
			}
			CheckLevel(i);
		}
	}
	else if(equal(arg, "All_Hostages_Rescued"))
	{
		for(new i = 1; i <= g_iMaxPlayers; ++i)
		{
			if(!IsPlayer(i))
				return PLUGIN_HANDLED;
				
			if(is_user_alive(i) && get_user_team(i) == 2)
			{
			PlayerXP[i] += get_pcvar_num(HOSTRESC_XP) 
			set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
			ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(HOSTRESC_XP));
			}
			if(BombPlanted) {
			BombPlanted = false;    
			}
			CheckLevel(i);
		}
	}

	return PLUGIN_CONTINUE;
}

public fwHamPlayerSpawnPost(id) {
        if (is_user_alive(id)) {


	if(get_pcvar_num(GUNSMENU) == 1) {
		if(ask[id] == true && firsttime[id] == false) {
			weapon_method_menu(id);
		}
		if(firsttime[id] == true) {
        		firsttime[id] = false
        		prim_weapons_menu(id,0)
		}
		if(ask[id] == false) {
        		give_weapons(id)
		}
	}

	if(g_PlayerReseted[id]) {
		reset(id);
	}
	if(g_HealthLevel[id]  == 0) {
		set_user_health(id, 100)
	}

	if(g_ArmorLevel[id]  == 0) {
		cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR)
	}

	if(g_SpeedLevel[id]  == 0) {
		set_user_maxspeed(id, 320.0)
	}

	if(g_GravityLevel[id]  == 0) {
		set_user_gravity(id, 1.00)
	}

	if(g_GravityLevel[id] > 0) 
	{
		new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
		if(get_user_gravity(id) != fGravity) {
		set_gravity(id, fGravity)
		}
	}

	if(g_HealthLevel[id] > 0) {
		set_user_health(id, 100)
		add_health(id, g_HealthLevel[id] * Health_PerLevel)
	}

	if(g_ArmorLevel[id] > 0) {
		cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR) 
		add_armor(id, g_ArmorLevel[id] * Armor_PerLevel)
	}

	if(g_SpeedLevel[id] > 0) {
		new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
		set_user_maxspeed(id, fSpeed)
	}

	if(g_PlayerReg[id]) {
		
	}
	else {
		set_task(1.0, "regen", id);
	}

	set_task(0.1, "protect", id);

        }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
Attached Files
File Type: sma Get Plugin or Get Source (XP-Mod.sma - 535 views - 65.0 KB)
Godofwar is offline
TheSpaniard
Senior Member
Join Date: Jul 2017
Location: Hell
Old 09-26-2017 , 05:09   Re: Remove Deathmatch in XPMOD Plugin
Reply With Quote #2

Here you go:-
untested but no warnings or errors
Attached Files
File Type: sma Get Plugin or Get Source (XP-Mod (1).sma - 496 views - 64.4 KB)
__________________
And I Am Back.
TheSpaniard is offline
Godofwar
AlliedModders Donor
Join Date: Dec 2015
Location: Germany
Old 09-26-2017 , 05:32   Re: Remove Deathmatch in XPMOD Plugin
Reply With Quote #3

WORKS. Really thx to you.
Godofwar is offline
TheSpaniard
Senior Member
Join Date: Jul 2017
Location: Hell
Old 09-26-2017 , 06:44   Re: Remove Deathmatch in XPMOD Plugin
Reply With Quote #4

Quote:
Originally Posted by Godofwar View Post
WORKS. Really thx to you.
You are welcome
__________________
And I Am Back.
TheSpaniard is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 06:06.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode