Modificare plugin vip

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
theonernn
Membru, skill 0
Membru, skill 0
Posts: 7
Joined: 09 Jan 2021, 11:12
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: Cs.SkillOne.Ro
SteamID: STEAM_0:1:91154096
Fond eXtream: 0
Contact:

23 Jan 2021, 10:14

Salut ,am si eu o mica problema la pluginul de vip imi da meniul de arma din prima runda si doresc sa dea meniul de arma din runda a 3 a ,si la live DMG daca se poate adaugat dmg pe rotund si color de iti arata cat dmg dai in cerc nu stiu cum i se spune exact daca ma poate ajuta cineva ,Multumesc anticipat!
Sursa :
| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
 
#define Keysrod (1<<0)|(1<<1)|(1<<9)
#define ITEM_HE                (1<<0) // "a"
#define ITEM_FS                (1<<1) // "b"
#define ITEM_SG                (1<<2) // "c"
#define ITEM_DG                (1<<3) // "d"
#define ITEM_VH                (1<<4) // "e"
#define ITEM_DF                (1<<5) // "f"
#define ITEM_NV                (1<<6) // "g"
 
new jumpnum[33] = 0
new bool:dojump[33] = false
new hk_File4[ 128 ];
new hk_VipsList[ 128 ][ 32 ], hk_TotalLines;
new hk_IsUserVip[ 33 ];
new hk_viplist[ ] = "vips_list.ini";
new hk_Folder[ ] = "Vip";
new hk_cfg[ ] = "vip-config";
new hk_File[ 128 ];
new hk_File1[ 128 ];
new g_type, g_hudmsg
new vip_hud
new maxplayers
new mpd, mkb, mhb
new health_add
new health_hs_add
new health_max
new hk_Killer
new hk_KillerHp
new hk_HpAdd
new hk_HpMax
new jumps, items
new hk_iRoundCount
new bool:hk_IsRestarting
new gun_menu
 
enum
{
    Primary = 1
    , Secondary
    , Knife
    , Grenades
    , C4
};
 
public plugin_init()
{
	register_plugin("Vip", "4.5", "SkillOne")
	register_concmd("say /vips", "showAdmin", ADMIN_ALL, "")
	register_concmd("amx_addvips", "addvips", ADMIN_RCON, "<Nume sau SteamID>")
	register_concmd("amx_vips", "vips", ADMIN_RCON, "Lista Vip-urilor")
	RegisterHam ( Ham_Spawn, "player", "Hook_PlayerSpawn", 1 )
	RegisterHam(Ham_ObjectCaps, "player", "FwdHamObjectCaps"); 
	register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
	register_event("DeathMsg", "hook_death", "a", "1>0")
	register_event("Damage","Damage","b")
	register_event("DeathMsg","death_msg","a")
	register_menucmd(register_menuid("rod"), Keysrod, "Pressedrod")
	register_event("TextMsg", "Event_TextMsg_Restart", "a", "2&#Game_C", "2&#Game_w")
	register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
	register_cvar("vip_maxjumps","1")
	jumps = register_cvar("vip_jumps","1")
	vip_hud = register_cvar("vip_hud","1")
	g_type = register_cvar("vip_bulletdamage","1")
	health_add = register_cvar("vip_hp_kill", "10")
	health_hs_add = register_cvar("vip_hp_hs", "25")
	health_max = register_cvar("vip_hp_max", "100")
	mpd = register_cvar("vip_money_damage","3")
	mkb = register_cvar("vip_money_kill","500")
	mhb = register_cvar("vip_money_hs","1000")
	items = register_cvar("vip_items_round", "abcdefg")
	gun_menu = register_cvar("vip_gun_menu","1")
	g_hudmsg = CreateHudSyncObj()
	maxplayers = get_maxplayers()
}
 
public plugin_cfg()
{  
   
   
    new Dir[ 64 ];
    get_configsdir(Dir,charsmax(Dir));
    formatex ( hk_File, charsmax ( hk_File ), "%s/%s", Dir, hk_Folder );
    formatex ( hk_File1, charsmax ( hk_File1 ), "%s/%s.cfg", hk_File, hk_cfg );
    if(!dir_exists(hk_File))
    mkdir(hk_File);
 
    formatex ( hk_File4, charsmax ( hk_File4 ), "%s/%s", hk_File, hk_viplist );
   
    if (!file_exists(hk_File4))
    write_file(hk_File4,"; -->VIP List<--");
   
    new hk_Buffer[ 192 ], hk_Line, hk_Len;
    while ( ( hk_Line = read_file ( hk_File4, hk_Line, hk_Buffer, charsmax ( hk_Buffer ), hk_Len ) ) )
    {
        if ( ! strlen ( hk_Buffer ) || hk_Buffer[ 0 ] == ';' || ( hk_Buffer[ 0 ] == '/' && hk_Buffer[ 1 ] == '/' ) )
            continue;
           
        copy ( hk_VipsList[ hk_TotalLines++ ], 32, hk_Buffer );
 
    }  
   
    if(!file_exists(hk_File1))
    {
    write_file(hk_File1,"// Vip Configuration File")
    write_file(hk_File1,"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// BulletDamage - afiseaza dmg-ul facut unui jucator")
    write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
    write_file(hk_File1,"vip_bulletdamage ^"1^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Vips Online")
    write_file(hk_File1,"// Arata Vip-urile online in HUD prin scrierea in chat a comenzii /vips")
    write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
    write_file(hk_File1,"vip_hud ^"1^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Hp primit pe un kill  ")
    write_file(hk_File1,"vip_hp_kill ^"10^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Hp primit pe un hs")
    write_file(hk_File1,"vip_hp_hs ^"25^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Valoarea maxima a hp-ului pe care o poate avea Vip-ul")
    write_file(hk_File1,"vip_hp_max ^"100^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Banii primiti pe un damage")
    write_file(hk_File1,"vip_money_damage ^"3^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Banii primiti pe un kill")
    write_file(hk_File1,"vip_money_kill ^"500^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Banii primiti pe un hs")
    write_file(hk_File1,"vip_money_hs ^"1000^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Guns Menu - afiseaza meniul cu arme")
    write_file(hk_File1,"// Pe hartile de tip AWP, acest meniu va fi automat dezactivat")
    write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
    write_file(hk_File1,"vip_gun_menu ^"1^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Items per round - primiti diverse obiecte la inceputul fiecarei runde")
    write_file(hk_File1,"// a - He Grenade")
    write_file(hk_File1,"// b - Flashbang (x2)")
    write_file(hk_File1,"// c - Smoke Grenade ")
    write_file(hk_File1,"// d - Deagle")
    write_file(hk_File1,"// e - Vest + Helm")
    write_file(hk_File1,"// f - Defuse Kit (Doar CT)")
    write_file(hk_File1,"// g - NightVision")
    write_file(hk_File1,"vip_items_round ^"abcdefg^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Jumps - Salturi")
    write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
    write_file(hk_File1,"vip_jumps ^"1^"")
    write_file(hk_File1,"")
    write_file(hk_File1,"// Cate sarituri in plus poate sa faca deodata")
    write_file(hk_File1,"vip_maxjumps ^"1^"")
    write_file(hk_File1,"")
   
    }
   
    server_cmd("exec %s",hk_File1)
}
 
public client_putinserver(id)
{
   
    hk_IsUserVip[ id ] = 0;
    jumpnum[id] = 0
    dojump[id] = false
}
 
public client_disconnected(id)
{
    hk_IsUserVip[ id ] = 0;
    jumpnum[id] = 0
    dojump[id] = false
}
public addvips(id, level, cid)
{
    if (!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED
 
    new arg[32]
   
    read_argv(1, arg, 31)
   
    new szLog[256];
    formatex(szLog,255,"%s",arg);
    write_file(hk_File4,szLog,-1);
    console_print(id, "[SKillOne] Vip-ul a fost adaugat in lista")
   
    return PLUGIN_HANDLED
   
}
public vips(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
        return PLUGIN_HANDLED
   
    new s_Name[ 32 ], s_AuthID[ 32 ];
    get_user_name ( id, s_Name, 31 );
    get_user_authid ( id, s_AuthID, 31 );
   
    console_print(id, "===========================")
    for ( new i; i < hk_TotalLines; i++ )
    {
        if (  strcmp ( s_Name, hk_VipsList[ i ] ) || strcmp ( s_AuthID, hk_VipsList[ i ] ) )
        console_print(id, " - %s", hk_VipsList[ i ])   
           
       
    }
    console_print(id, "===========================")
    return PLUGIN_HANDLED
}
 
 
public Event_TextMsg_Restart()
{
    hk_IsRestarting = true
}
 
public Event_HLTV_New_Round()
{
    if( hk_IsRestarting )
    {
        hk_IsRestarting = false
        hk_iRoundCount = 0
    }
}
 
public Hook_PlayerSpawn ( const id )
{
    if ( ! is_user_alive ( id ) )
        return HAM_IGNORED;
    if ( ! is_user_vip ( id ) )
    {
        hk_IsUserVip[ id ] = 0;
        return HAM_IGNORED;
    }
   
    hk_IsUserVip[ id ] = 1;
    hk_iRoundCount++
    new map[32];
    get_mapname(map,31);
   
    if(equali(map, "awp_", 3))
    return HAM_IGNORED;
   
    if (get_pcvar_num(gun_menu) == 1)
    if(hk_iRoundCount>=4)
    Showrod(id);
   
    set_task(0.3, "giveitems", id)
    return HAM_IGNORED;
}
 
public on_damage(id)
{
    if(get_pcvar_num(g_type))
    {
        static attacker; attacker = get_user_attacker(id)
        static damage; damage = read_data(2)   
 
        if ( is_user_vip ( attacker ) )
        {
            hk_IsUserVip[ id ] = 1;
       
            if(is_user_connected(attacker))
            {
                if(fm_is_ent_visible(attacker,id))
                {
                    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
                    ShowSyncHudMsg(attacker, g_hudmsg, "%i^n", damage)             
                }
                   
               
            }
        }else hk_IsUserVip[ id ] = 0;
    }
}


public client_authorized(id)
{
	set_task(30.0, "PrintText" ,id)
	set_task(5.0, "VIPON" ,id)
}

public PrintText(id)
{
	client_print(id, print_chat, "[V.I.P] Scrie /vip pentru a vedea privilegiile V.I.P-ULUI.")
}

public VIPON(id)
{
	if ( is_user_vip ( id ) )
    {
		set_hudmessage(200, 200, 200, -1.0, 0.3, 2, 6.0, 1.5, 0.05, 0.5, -1)
		show_hudmessage(id, "[SkillOne] V.I.P ON")
	}
}
public Damage(id)
{
    new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint)
    if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
   
    if ( is_user_vip ( id ) )
    {
        hk_IsUserVip[ id ] = 1;
        new money = read_data(2) * get_pcvar_num(mpd)
        if(hitpoint==1) money += get_pcvar_num(mhb)
        cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
    }else hk_IsUserVip[ id ] = 0;
}
 
public death_msg()
{
    if(read_data(1)<=maxplayers && read_data(1) && read_data(1)!=read_data(2))
    cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(mkb) - 300)
}
 
public hook_death()
{
    hk_Killer = read_data(1)
   
    if ( (read_data(3) == 1) && (read_data(5) == 0) )
    {
        hk_HpAdd = get_pcvar_num (health_hs_add)
    }
    else
    hk_HpAdd = get_pcvar_num (health_add)
   
    hk_HpMax = get_pcvar_num (health_max)
   
   
    if ( ! is_user_vip ( hk_Killer ) )
    {
        hk_IsUserVip[ hk_Killer ] = 0;
        return;
    }
    hk_IsUserVip[ hk_Killer ] = 1;
   
    hk_KillerHp = get_user_health(hk_Killer)
    hk_KillerHp += hk_HpAdd
   
    if (hk_KillerHp > hk_HpMax) hk_KillerHp = hk_HpMax
    set_user_health(hk_Killer, hk_KillerHp)
 
    set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
 
}
 
public showAdmin(id)
{
    if(get_pcvar_num(vip_hud) == 1)
    {
           
       
        new num, iLen, admin
        static pl[32], name[32], szBuff[2048]
   
        get_players(pl, num, "c")
   
        for(new i = 0; i < num; i++)
        {
            if (  is_user_vip ( pl ) )
            {
            hk_IsUserVip[ pl ] = 1;
            get_user_name(pl, name, 31)
            iLen += format(szBuff[iLen], 2048 - iLen, "%d. %s^n", admin + 1, name)
            admin++
            }
           
        }
 
   
        set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 6.0, 7.0 )
        show_hudmessage(id, " %s online:^n%s", admin > 1 ? "Vips" : "Vips", szBuff)
   
        arrayset(szBuff, 0, 2048)
    }
    return PLUGIN_HANDLED
}
 
public client_PreThink(id)
{
        if(!is_user_alive(id)) return PLUGIN_CONTINUE
        if(get_pcvar_num(jumps) == 0) return PLUGIN_CONTINUE
   
        if ( ! is_user_vip ( id ) )
        {
            hk_IsUserVip[ id ] = 0;
            return PLUGIN_CONTINUE
        }
	
   
        hk_IsUserVip[ id ] = 1;
        new nbut = get_user_button(id)
        new obut = get_user_oldbutton(id)
        if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
        {
            if(jumpnum[id] < get_cvar_num("vip_maxjumps"))
            {
                dojump[id] = true
                jumpnum[id]++
                return PLUGIN_CONTINUE
            }
        }
        if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
        {
            jumpnum[id] = 0
            return PLUGIN_CONTINUE
        }
   
        return PLUGIN_CONTINUE
}
 
public client_PostThink(id)
{
    if(!is_user_alive(id)) return PLUGIN_CONTINUE
    if(get_pcvar_num(jumps) == 0) return PLUGIN_CONTINUE
   
    if ( ! is_user_vip ( id ) )
    {
        hk_IsUserVip[ id ] = 0;
        return PLUGIN_CONTINUE
    }
   
   
    hk_IsUserVip[ id ] = 1;
    if(dojump[id] == true)
    {
        new Float:velocity[3]  
        entity_get_vector(id,EV_VEC_velocity,velocity)
        velocity[2] = random_float(265.0,285.0)
        entity_set_vector(id,EV_VEC_velocity,velocity)
        dojump[id] = false
        return PLUGIN_CONTINUE
    }
   
    return PLUGIN_CONTINUE
}
 
public Showrod(id)
{
    show_menu(id, Keysrod, "Guns Menu^n\w1. M4a1^n\w2. AK47^n0. Exit^n", -1, "rod")
}
 
public Pressedrod(id, key)
{
   
    switch (key) {
        case 0: {
            StripWeapons(id, Primary)
            give_item(id,"weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90 );
            }
 
        case 1: {
            StripWeapons(id, Primary)
            give_item(id,"weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90);
            }
 
        case 9: {          
            }
             }
    return PLUGIN_CONTINUE
}
 
public get_item_flags()
{
    new sFlags[24]
    get_pcvar_string(items,sFlags,23)
    return read_flags(sFlags)
}
 
public giveitems(id)
{
        new iFlags = get_item_flags()  
        new CsTeams:userTeam = cs_get_user_team(id)
   
        if (iFlags&ITEM_HE)
        fm_give_item(id,"weapon_hegrenade")
       
             
        if(iFlags&ITEM_FS)
        {
        fm_give_item(id,"weapon_flashbang")
        fm_give_item(id,"weapon_flashbang")
        }
       
        if(iFlags&ITEM_SG)
        fm_give_item(id,"weapon_smokegrenade")
       
       
        if(iFlags&ITEM_DG)
        {
        StripWeapons(id, Secondary);
        fm_give_item(id,"weapon_deagle")
        cs_set_user_bpammo(id, CSW_DEAGLE, 35 );
        }
       
        if(iFlags&ITEM_VH)
        fm_give_item(id,"item_assaultsuit")
   
        if(userTeam == CS_TEAM_CT && iFlags&ITEM_DF)
        fm_give_item(id,"item_thighpack")
       
        if(iFlags&ITEM_NV)
        cs_set_user_nvg(id, 1)
       
       
}

public FwdHamObjectCaps(id)
{
	if ( is_user_vip ( id ) )
    {
		if (!is_user_alive(id)||get_entity_flags(id) & FL_ONGROUND) return;
		static Float:velocity[3];
		entity_get_vector(id, EV_VEC_velocity, velocity);
		if(velocity[2] < 0)
		{
			velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0;
			entity_set_vector(id, EV_VEC_velocity, velocity);
		}
	}
}
 
stock is_user_vip ( id )
{
    new s_Name[ 32 ], s_AuthID[ 32 ];
    get_user_name ( id, s_Name, 31 );
    get_user_authid ( id, s_AuthID, 31 );
   
    for ( new i; i < hk_TotalLines; i++ )
    {
        if ( ! strcmp ( s_Name, hk_VipsList[ i ] ) )
            return 1;
        if ( ! strcmp ( s_AuthID, hk_VipsList[ i ] ) )
            return 1;
    }
   
    return 0;
 
}
 
stock StripWeapons(id, Type, bool: bSwitchIfActive = true)
{
    new iReturn;
   
    if(is_user_alive(id))
    {
        new iEntity, iWeapon;
        while((iWeapon = GetWeaponFromSlot(id, Type, iEntity)) > 0)
            iReturn = ham_strip_user_weapon(id, iWeapon, Type, bSwitchIfActive);
    }
   
    return iReturn;
}
 
stock GetWeaponFromSlot( id , iSlot , &iEntity )
{
    if ( !( 1 <= iSlot <= 5 ) )
        return 0;
   
    iEntity = 0;
    const m_rgpPlayerItems_Slot0 = 367;
    const m_iId = 43;
    const XO_WEAPONS = 4;
    const XO_PLAYER = 5;
       
    iEntity = get_pdata_cbase( id , m_rgpPlayerItems_Slot0 + iSlot , XO_PLAYER );
   
    return ( iEntity > 0 ) ? get_pdata_int( iEntity , m_iId , XO_WEAPONS ) : 0;
}  
 
stock ham_strip_user_weapon(id, iCswId, iSlot = 0, bool:bSwitchIfActive = true)
{
    new iWeapon
    if( !iSlot )
    {
        static const iWeaponsSlots[] = {
            -1,
            2, //CSW_P228
            -1,
            1, //CSW_SCOUT
            4, //CSW_HEGRENADE
            1, //CSW_XM1014
            5, //CSW_C4
            1, //CSW_MAC10
            1, //CSW_AUG
            4, //CSW_SMOKEGRENADE
            2, //CSW_ELITE
            2, //CSW_FIVESEVEN
            1, //CSW_UMP45
            1, //CSW_SG550
            1, //CSW_GALIL
            1, //CSW_FAMAS
            2, //CSW_USP
            2, //CSW_GLOCK18
            1, //CSW_AWP
            1, //CSW_MP5NAVY
            1, //CSW_M249
            1, //CSW_M3
            1, //CSW_M4A1
            1, //CSW_TMP
            1, //CSW_G3SG1
            4, //CSW_FLASHBANG
            2, //CSW_DEAGLE
            1, //CSW_SG552
            1, //CSW_AK47
            3, //CSW_KNIFE
            1 //CSW_P90
        }
        iSlot = iWeaponsSlots[iCswId]
    }
 
    const XTRA_OFS_PLAYER = 5
    const m_rgpPlayerItems_Slot0 = 367
 
    iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_Slot0 + iSlot, XTRA_OFS_PLAYER)
 
    const XTRA_OFS_WEAPON = 4
    const m_pNext = 42
    const m_iId = 43
 
    while( iWeapon > 0 )
    {
        if( get_pdata_int(iWeapon, m_iId, XTRA_OFS_WEAPON) == iCswId )
        {
            break
        }
        iWeapon = get_pdata_cbase(iWeapon, m_pNext, XTRA_OFS_WEAPON)
    }
 
    if( iWeapon > 0 )
    {
        const m_pActiveItem = 373
        if( bSwitchIfActive && get_pdata_cbase(id, m_pActiveItem, XTRA_OFS_PLAYER) == iWeapon )
        {
            ExecuteHamB(Ham_Weapon_RetireWeapon, iWeapon)
        }
 
        if( ExecuteHamB(Ham_RemovePlayerItem, id, iWeapon) )
        {
            user_has_weapon(id, iCswId, 0)
            ExecuteHamB(Ham_Item_Kill, iWeapon)
            return 1
        }
    }
 
    return 0
}
lexz
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 913
Joined: 02 Nov 2020, 01:57
Detinator Steam: Da
Fond eXtream: 0
Discord: lexzor#0630
Has thanked: 67 times
Been thanked: 136 times

27 Jan 2021, 18:26

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>

#define Keysrod (1<<0)|(1<<1)|(1<<9)
#define ITEM_HE                (1<<0) // "a"
#define ITEM_FS                (1<<1) // "b"
#define ITEM_SG                (1<<2) // "c"
#define ITEM_DG                (1<<3) // "d"
#define ITEM_VH                (1<<4) // "e"
#define ITEM_DF                (1<<5) // "f"
#define ITEM_NV                (1<<6) // "g"

new jumpnum[33] = 0
new bool:dojump[33] = false
new hk_File4[ 128 ];
new hk_VipsList[ 128 ][ 32 ], hk_TotalLines;
new hk_IsUserVip[ 33 ];
new hk_viplist[ ] = "vips_list.ini";
new hk_Folder[ ] = "Vip";
new hk_cfg[ ] = "vip-config";
new hk_File[ 128 ];
new hk_File1[ 128 ];
new g_type, g_hudmsg
new vip_hud
new maxplayers
new mpd, mkb, mhb
new health_add
new health_hs_add
new health_max
new hk_Killer
new hk_KillerHp
new hk_HpAdd
new hk_HpMax
new jumps, items
new hk_iRoundCount
new bool:hk_IsRestarting
new gun_menu
new round

enum
{
Primary = 1
, Secondary
, Knife
, Grenades
, C4
};

public plugin_init()
{
register_plugin("Vip", "4.5", "SkillOne")
register_concmd("say /vips", "showAdmin", ADMIN_ALL, "")
register_concmd("amx_addvips", "addvips", ADMIN_RCON, "<Nume sau SteamID>")
register_concmd("amx_vips", "vips", ADMIN_RCON, "Lista Vip-urilor")
RegisterHam ( Ham_Spawn, "player", "Hook_PlayerSpawn", 1 )
RegisterHam(Ham_ObjectCaps, "player", "FwdHamObjectCaps"); 
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
register_event("DeathMsg", "hook_death", "a", "1>0")
register_event("Damage","Damage","b")
register_event("DeathMsg","death_msg","a")
register_menucmd(register_menuid("rod"), Keysrod, "Pressedrod")
register_event("TextMsg", "Event_TextMsg_Restart", "a", "2&#Game_C", "2&#Game_w")
register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
register_cvar("vip_maxjumps","1")
register_event("TextMsg", "Event_Round_Restart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
register_logevent("roundcounter", 2, "1=Round_Start")
jumps = register_cvar("vip_jumps","1")
vip_hud = register_cvar("vip_hud","1")
g_type = register_cvar("vip_bulletdamage","1")
health_add = register_cvar("vip_hp_kill", "10")
health_hs_add = register_cvar("vip_hp_hs", "25")
health_max = register_cvar("vip_hp_max", "100")
mpd = register_cvar("vip_money_damage","3")
mkb = register_cvar("vip_money_kill","500")
mhb = register_cvar("vip_money_hs","1000")
items = register_cvar("vip_items_round", "abcdefg")
gun_menu = register_cvar("vip_gun_menu","1")
g_hudmsg = CreateHudSyncObj()
maxplayers = get_maxplayers()
}

public plugin_cfg()
{  


new Dir[ 64 ];
get_configsdir(Dir,charsmax(Dir));
formatex ( hk_File, charsmax ( hk_File ), "%s/%s", Dir, hk_Folder );
formatex ( hk_File1, charsmax ( hk_File1 ), "%s/%s.cfg", hk_File, hk_cfg );
if(!dir_exists(hk_File))
	mkdir(hk_File);
	
	formatex ( hk_File4, charsmax ( hk_File4 ), "%s/%s", hk_File, hk_viplist );
	
	if (!file_exists(hk_File4))
		write_file(hk_File4,"; -->VIP List<--");
	
	new hk_Buffer[ 192 ], hk_Line, hk_Len;
	while ( ( hk_Line = read_file ( hk_File4, hk_Line, hk_Buffer, charsmax ( hk_Buffer ), hk_Len ) ) )
	{
		if ( ! strlen ( hk_Buffer ) || hk_Buffer[ 0 ] == ';' || ( hk_Buffer[ 0 ] == '/' && hk_Buffer[ 1 ] == '/' ) )
			continue;
		
		copy ( hk_VipsList[ hk_TotalLines++ ], 32, hk_Buffer );
		
	}  
	
	if(!file_exists(hk_File1))
	{
		write_file(hk_File1,"// Vip Configuration File")
		write_file(hk_File1,"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// BulletDamage - afiseaza dmg-ul facut unui jucator")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_bulletdamage ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Vips Online")
		write_file(hk_File1,"// Arata Vip-urile online in HUD prin scrierea in chat a comenzii /vips")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_hud ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Hp primit pe un kill  ")
		write_file(hk_File1,"vip_hp_kill ^"10^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Hp primit pe un hs")
		write_file(hk_File1,"vip_hp_hs ^"25^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Valoarea maxima a hp-ului pe care o poate avea Vip-ul")
		write_file(hk_File1,"vip_hp_max ^"100^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Banii primiti pe un damage")
		write_file(hk_File1,"vip_money_damage ^"3^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Banii primiti pe un kill")
		write_file(hk_File1,"vip_money_kill ^"500^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Banii primiti pe un hs")
		write_file(hk_File1,"vip_money_hs ^"1000^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Guns Menu - afiseaza meniul cu arme")
		write_file(hk_File1,"// Pe hartile de tip AWP, acest meniu va fi automat dezactivat")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_gun_menu ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Items per round - primiti diverse obiecte la inceputul fiecarei runde")
		write_file(hk_File1,"// a - He Grenade")
		write_file(hk_File1,"// b - Flashbang (x2)")
		write_file(hk_File1,"// c - Smoke Grenade ")
		write_file(hk_File1,"// d - Deagle")
		write_file(hk_File1,"// e - Vest + Helm")
		write_file(hk_File1,"// f - Defuse Kit (Doar CT)")
		write_file(hk_File1,"// g - NightVision")
		write_file(hk_File1,"vip_items_round ^"abcdefg^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Jumps - Salturi")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_jumps ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Cate sarituri in plus poate sa faca deodata")
		write_file(hk_File1,"vip_maxjumps ^"1^"")
		write_file(hk_File1,"")
		
	}
	
	server_cmd("exec %s",hk_File1)
}

public roundrestart()	round = 0 
public roundcounter()	round++


public client_putinserver(id)
{
	
	hk_IsUserVip[ id ] = 0;
	jumpnum[id] = 0
	dojump[id] = false
}

public client_disconnected(id)
{
	hk_IsUserVip[ id ] = 0;
	jumpnum[id] = 0
	dojump[id] = false
}
public addvips(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32]
	
	read_argv(1, arg, 31)
	
	new szLog[256];
	formatex(szLog,255,"%s",arg);
	write_file(hk_File4,szLog,-1);
	console_print(id, "[SKillOne] Vip-ul a fost adaugat in lista")
	
	return PLUGIN_HANDLED
	
}
public vips(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new s_Name[ 32 ], s_AuthID[ 32 ];
	get_user_name ( id, s_Name, 31 );
	get_user_authid ( id, s_AuthID, 31 );
	
	console_print(id, "===========================")
	for ( new i; i < hk_TotalLines; i++ )
	{
		if (  strcmp ( s_Name, hk_VipsList[ i ] ) || strcmp ( s_AuthID, hk_VipsList[ i ] ) )
			console_print(id, " - %s", hk_VipsList[ i ])   
		
		
	}
	console_print(id, "===========================")
	return PLUGIN_HANDLED
}


public Event_TextMsg_Restart()
{
	hk_IsRestarting = true
}

public Event_HLTV_New_Round()
{
	if( hk_IsRestarting )
	{
		hk_IsRestarting = false
		hk_iRoundCount = 0
	}
}

public Hook_PlayerSpawn ( const id )
{
	if ( ! is_user_alive ( id ) )
		return HAM_IGNORED;
	if ( ! is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 0;
		return HAM_IGNORED;
	}
	
	hk_IsUserVip[ id ] = 1;
	hk_iRoundCount++
	new map[32];
	get_mapname(map,31);
	
	if(equali(map, "awp_", 3))
		return HAM_IGNORED;
	
	if (get_pcvar_num(gun_menu) == 1)
		if(hk_iRoundCount>=4)
		Showrod(id);
	
	set_task(0.3, "giveitems", id)
	return HAM_IGNORED;
}

public on_damage(id)
{
	if(get_pcvar_num(g_type))
	{
		static attacker; attacker = get_user_attacker(id)
		static damage; damage = read_data(2)   
		
		if ( is_user_vip ( attacker ) )
		{
			hk_IsUserVip[ id ] = 1;
			
			if(is_user_connected(attacker))
			{
				if(fm_is_ent_visible(attacker,id))
				{
					set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
					ShowSyncHudMsg(attacker, g_hudmsg, "%i^n", damage)             
				}
				
				
			}
		}else hk_IsUserVip[ id ] = 0;
	}
}


public client_authorized(id)
{
	set_task(30.0, "PrintText" ,id)
	set_task(5.0, "VIPON" ,id)
}

public PrintText(id)
{
	client_print(id, print_chat, "[V.I.P] Scrie /vip pentru a vedea privilegiile V.I.P-ULUI.")
}

public VIPON(id)
{
	if ( is_user_vip ( id ) )
	{
		set_hudmessage(200, 200, 200, -1.0, 0.3, 2, 6.0, 1.5, 0.05, 0.5, -1)
		show_hudmessage(id, "[SkillOne] V.I.P ON")
	}
}
public Damage(id)
{
	new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint)
	if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
		
	if ( is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 1;
		new money = read_data(2) * get_pcvar_num(mpd)
		if(hitpoint==1) money += get_pcvar_num(mhb)
		cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
	}else hk_IsUserVip[ id ] = 0;
}

public death_msg()
{
	if(read_data(1)<=maxplayers && read_data(1) && read_data(1)!=read_data(2))
		cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(mkb) - 300)
}

public hook_death()
{
	hk_Killer = read_data(1)
	
	if ( (read_data(3) == 1) && (read_data(5) == 0) )
	{
		hk_HpAdd = get_pcvar_num (health_hs_add)
	}
	else
		hk_HpAdd = get_pcvar_num (health_add)
	
	hk_HpMax = get_pcvar_num (health_max)
	
	
	if ( ! is_user_vip ( hk_Killer ) )
	{
		hk_IsUserVip[ hk_Killer ] = 0;
		return;
	}
	hk_IsUserVip[ hk_Killer ] = 1;
	
	hk_KillerHp = get_user_health(hk_Killer)
	hk_KillerHp += hk_HpAdd
	
	if (hk_KillerHp > hk_HpMax) hk_KillerHp = hk_HpMax
	set_user_health(hk_Killer, hk_KillerHp)
	
	set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
	
}

public showAdmin(id)
{
	if(get_pcvar_num(vip_hud) == 1)
	{
		
		
		new num, iLen, admin
		static pl[32], name[32], szBuff[2048]
		
		get_players(pl, num, "c")
		
		for(new i = 0; i < num; i++)
		{
			if (  is_user_vip ( pl ) )
			{
				hk_IsUserVip[ pl ] = 1;
				get_user_name(pl, name, 31)
				iLen += format(szBuff[iLen], 2048 - iLen, "%d. %s^n", admin + 1, name)
				admin++
			}
			
		}
		
		
		set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 6.0, 7.0 )
		show_hudmessage(id, " %s online:^n%s", admin > 1 ? "Vips" : "Vips", szBuff)
		
		arrayset(szBuff, 0, 2048)
	}
	return PLUGIN_HANDLED
}

public client_PreThink(id)
{
	if(!is_user_alive(id)) return PLUGIN_CONTINUE
	if(get_pcvar_num(jumps) == 0) return PLUGIN_CONTINUE
	
	if ( ! is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 0;
		return PLUGIN_CONTINUE
	}
	
	
	hk_IsUserVip[ id ] = 1;
	new nbut = get_user_button(id)
	new obut = get_user_oldbutton(id)
	if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
	{
		if(jumpnum[id] < get_cvar_num("vip_maxjumps"))
		{
			dojump[id] = true
			jumpnum[id]++
			return PLUGIN_CONTINUE
		}
	}
	if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
	{
		jumpnum[id] = 0
		return PLUGIN_CONTINUE
	}
	
	return PLUGIN_CONTINUE
}

public client_PostThink(id)
{
	if(!is_user_alive(id)) return PLUGIN_CONTINUE
	if(get_pcvar_num(jumps) == 0) return PLUGIN_CONTINUE
	
	if ( ! is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 0;
		return PLUGIN_CONTINUE
	}
	
	
	hk_IsUserVip[ id ] = 1;
	if(dojump[id] == true)
	{
		new Float:velocity[3]  
		entity_get_vector(id,EV_VEC_velocity,velocity)
		velocity[2] = random_float(265.0,285.0)
		entity_set_vector(id,EV_VEC_velocity,velocity)
		dojump[id] = false
		return PLUGIN_CONTINUE
	}
	
	return PLUGIN_CONTINUE
}

public Showrod(id)
{
	show_menu(id, Keysrod, "Guns Menu^n\w1. M4a1^n\w2. AK47^n0. Exit^n", -1, "rod")
}

public Pressedrod(id, key)
{
	if (round < 3)
	{
	client_print_color(id, print_team_default, "Poti alege o arma dupa a3a runda!")
	return PLUGIN_HANDLED
	}
	switch (key) {
		case 0: {
			StripWeapons(id, Primary)
			give_item(id,"weapon_m4a1")
			cs_set_user_bpammo(id, CSW_M4A1, 90 );
		}
		
		case 1: {
			StripWeapons(id, Primary)
			give_item(id,"weapon_ak47")
			cs_set_user_bpammo(id, CSW_AK47, 90);
		}
		
		case 9: {          
		}
	}
	return PLUGIN_CONTINUE
}

public get_item_flags()
{
	new sFlags[24]
	get_pcvar_string(items,sFlags,23)
	return read_flags(sFlags)
}

public giveitems(id)
{
	new iFlags = get_item_flags()  
	new CsTeams:userTeam = cs_get_user_team(id)
	
	if (iFlags&ITEM_HE)
		fm_give_item(id,"weapon_hegrenade")
	
	
	if(iFlags&ITEM_FS)
	{
		fm_give_item(id,"weapon_flashbang")
		fm_give_item(id,"weapon_flashbang")
	}
	
	if(iFlags&ITEM_SG)
		fm_give_item(id,"weapon_smokegrenade")
	
	
	if(iFlags&ITEM_DG)
	{
		StripWeapons(id, Secondary);
		fm_give_item(id,"weapon_deagle")
		cs_set_user_bpammo(id, CSW_DEAGLE, 35 );
	}
	
	if(iFlags&ITEM_VH)
		fm_give_item(id,"item_assaultsuit")
	
	if(userTeam == CS_TEAM_CT && iFlags&ITEM_DF)
		fm_give_item(id,"item_thighpack")
	
	if(iFlags&ITEM_NV)
		cs_set_user_nvg(id, 1)
	
	
}

public FwdHamObjectCaps(id)
{
	if ( is_user_vip ( id ) )
	{
		if (!is_user_alive(id)||get_entity_flags(id) & FL_ONGROUND) return;
		static Float:velocity[3];
		entity_get_vector(id, EV_VEC_velocity, velocity);
		if(velocity[2] < 0)
		{
			velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0;
			entity_set_vector(id, EV_VEC_velocity, velocity);
		}
	}
}

stock is_user_vip ( id )
{
	new s_Name[ 32 ], s_AuthID[ 32 ];
	get_user_name ( id, s_Name, 31 );
	get_user_authid ( id, s_AuthID, 31 );
	
	for ( new i; i < hk_TotalLines; i++ )
	{
		if ( ! strcmp ( s_Name, hk_VipsList[ i ] ) )
			return 1;
		if ( ! strcmp ( s_AuthID, hk_VipsList[ i ] ) )
			return 1;
	}
	
	return 0;
	
}

stock StripWeapons(id, Type, bool: bSwitchIfActive = true)
{
	new iReturn;
	
	if(is_user_alive(id))
	{
		new iEntity, iWeapon;
		while((iWeapon = GetWeaponFromSlot(id, Type, iEntity)) > 0)
			iReturn = ham_strip_user_weapon(id, iWeapon, Type, bSwitchIfActive);
	}
	
	return iReturn;
}

stock GetWeaponFromSlot( id , iSlot , &iEntity )
{
	if ( !( 1 <= iSlot <= 5 ) )
		return 0;
	
	iEntity = 0;
	const m_rgpPlayerItems_Slot0 = 367;
	const m_iId = 43;
	const XO_WEAPONS = 4;
	const XO_PLAYER = 5;
	
	iEntity = get_pdata_cbase( id , m_rgpPlayerItems_Slot0 + iSlot , XO_PLAYER );
	
	return ( iEntity > 0 ) ? get_pdata_int( iEntity , m_iId , XO_WEAPONS ) : 0;
}  

stock ham_strip_user_weapon(id, iCswId, iSlot = 0, bool:bSwitchIfActive = true)
{
	new iWeapon
	if( !iSlot )
	{
		static const iWeaponsSlots[] = {
			-1,
			2, //CSW_P228
			-1,
			1, //CSW_SCOUT
			4, //CSW_HEGRENADE
			1, //CSW_XM1014
			5, //CSW_C4
			1, //CSW_MAC10
			1, //CSW_AUG
			4, //CSW_SMOKEGRENADE
			2, //CSW_ELITE
			2, //CSW_FIVESEVEN
			1, //CSW_UMP45
			1, //CSW_SG550
			1, //CSW_GALIL
			1, //CSW_FAMAS
			2, //CSW_USP
			2, //CSW_GLOCK18
			1, //CSW_AWP
			1, //CSW_MP5NAVY
			1, //CSW_M249
			1, //CSW_M3
			1, //CSW_M4A1
			1, //CSW_TMP
			1, //CSW_G3SG1
			4, //CSW_FLASHBANG
			2, //CSW_DEAGLE
			1, //CSW_SG552
			1, //CSW_AK47
			3, //CSW_KNIFE
			1 //CSW_P90
		}
		iSlot = iWeaponsSlots[iCswId]
	}
	
	const XTRA_OFS_PLAYER = 5
	const m_rgpPlayerItems_Slot0 = 367
	
	iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_Slot0 + iSlot, XTRA_OFS_PLAYER)
	
	const XTRA_OFS_WEAPON = 4
	const m_pNext = 42
	const m_iId = 43
	
	while( iWeapon > 0 )
	{
		if( get_pdata_int(iWeapon, m_iId, XTRA_OFS_WEAPON) == iCswId )
		{
			break
		}
		iWeapon = get_pdata_cbase(iWeapon, m_pNext, XTRA_OFS_WEAPON)
	}
	
	if( iWeapon > 0 )
	{
		const m_pActiveItem = 373
		if( bSwitchIfActive && get_pdata_cbase(id, m_pActiveItem, XTRA_OFS_PLAYER) == iWeapon )
		{
			ExecuteHamB(Ham_Weapon_RetireWeapon, iWeapon)
		}
		
		if( ExecuteHamB(Ham_RemovePlayerItem, id, iWeapon) )
		{
			user_has_weapon(id, iCswId, 0)
			ExecuteHamB(Ham_Item_Kill, iWeapon)
			return 1
		}
	}
	
	return 0
}
User avatar
theonernn
Membru, skill 0
Membru, skill 0
Posts: 7
Joined: 09 Jan 2021, 11:12
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: Cs.SkillOne.Ro
SteamID: STEAM_0:1:91154096
Fond eXtream: 0
Contact:

30 Jan 2021, 02:48

lexz wrote:
27 Jan 2021, 18:26

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>

#define Keysrod (1<<0)|(1<<1)|(1<<9)
#define ITEM_HE                (1<<0) // "a"
#define ITEM_FS                (1<<1) // "b"
#define ITEM_SG                (1<<2) // "c"
#define ITEM_DG                (1<<3) // "d"
#define ITEM_VH                (1<<4) // "e"
#define ITEM_DF                (1<<5) // "f"
#define ITEM_NV                (1<<6) // "g"

new jumpnum[33] = 0
new bool:dojump[33] = false
new hk_File4[ 128 ];
new hk_VipsList[ 128 ][ 32 ], hk_TotalLines;
new hk_IsUserVip[ 33 ];
new hk_viplist[ ] = "vips_list.ini";
new hk_Folder[ ] = "Vip";
new hk_cfg[ ] = "vip-config";
new hk_File[ 128 ];
new hk_File1[ 128 ];
new g_type, g_hudmsg
new vip_hud
new maxplayers
new mpd, mkb, mhb
new health_add
new health_hs_add
new health_max
new hk_Killer
new hk_KillerHp
new hk_HpAdd
new hk_HpMax
new jumps, items
new hk_iRoundCount
new bool:hk_IsRestarting
new gun_menu
new round

enum
{
Primary = 1
, Secondary
, Knife
, Grenades
, C4
};

public plugin_init()
{
register_plugin("Vip", "4.5", "SkillOne")
register_concmd("say /vips", "showAdmin", ADMIN_ALL, "")
register_concmd("amx_addvips", "addvips", ADMIN_RCON, "<Nume sau SteamID>")
register_concmd("amx_vips", "vips", ADMIN_RCON, "Lista Vip-urilor")
RegisterHam ( Ham_Spawn, "player", "Hook_PlayerSpawn", 1 )
RegisterHam(Ham_ObjectCaps, "player", "FwdHamObjectCaps"); 
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
register_event("DeathMsg", "hook_death", "a", "1>0")
register_event("Damage","Damage","b")
register_event("DeathMsg","death_msg","a")
register_menucmd(register_menuid("rod"), Keysrod, "Pressedrod")
register_event("TextMsg", "Event_TextMsg_Restart", "a", "2&#Game_C", "2&#Game_w")
register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
register_cvar("vip_maxjumps","1")
register_event("TextMsg", "Event_Round_Restart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
register_logevent("roundcounter", 2, "1=Round_Start")
jumps = register_cvar("vip_jumps","1")
vip_hud = register_cvar("vip_hud","1")
g_type = register_cvar("vip_bulletdamage","1")
health_add = register_cvar("vip_hp_kill", "10")
health_hs_add = register_cvar("vip_hp_hs", "25")
health_max = register_cvar("vip_hp_max", "100")
mpd = register_cvar("vip_money_damage","3")
mkb = register_cvar("vip_money_kill","500")
mhb = register_cvar("vip_money_hs","1000")
items = register_cvar("vip_items_round", "abcdefg")
gun_menu = register_cvar("vip_gun_menu","1")
g_hudmsg = CreateHudSyncObj()
maxplayers = get_maxplayers()
}

public plugin_cfg()
{  


new Dir[ 64 ];
get_configsdir(Dir,charsmax(Dir));
formatex ( hk_File, charsmax ( hk_File ), "%s/%s", Dir, hk_Folder );
formatex ( hk_File1, charsmax ( hk_File1 ), "%s/%s.cfg", hk_File, hk_cfg );
if(!dir_exists(hk_File))
	mkdir(hk_File);
	
	formatex ( hk_File4, charsmax ( hk_File4 ), "%s/%s", hk_File, hk_viplist );
	
	if (!file_exists(hk_File4))
		write_file(hk_File4,"; -->VIP List<--");
	
	new hk_Buffer[ 192 ], hk_Line, hk_Len;
	while ( ( hk_Line = read_file ( hk_File4, hk_Line, hk_Buffer, charsmax ( hk_Buffer ), hk_Len ) ) )
	{
		if ( ! strlen ( hk_Buffer ) || hk_Buffer[ 0 ] == ';' || ( hk_Buffer[ 0 ] == '/' && hk_Buffer[ 1 ] == '/' ) )
			continue;
		
		copy ( hk_VipsList[ hk_TotalLines++ ], 32, hk_Buffer );
		
	}  
	
	if(!file_exists(hk_File1))
	{
		write_file(hk_File1,"// Vip Configuration File")
		write_file(hk_File1,"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// BulletDamage - afiseaza dmg-ul facut unui jucator")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_bulletdamage ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Vips Online")
		write_file(hk_File1,"// Arata Vip-urile online in HUD prin scrierea in chat a comenzii /vips")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_hud ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Hp primit pe un kill  ")
		write_file(hk_File1,"vip_hp_kill ^"10^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Hp primit pe un hs")
		write_file(hk_File1,"vip_hp_hs ^"25^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Valoarea maxima a hp-ului pe care o poate avea Vip-ul")
		write_file(hk_File1,"vip_hp_max ^"100^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Banii primiti pe un damage")
		write_file(hk_File1,"vip_money_damage ^"3^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Banii primiti pe un kill")
		write_file(hk_File1,"vip_money_kill ^"500^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Banii primiti pe un hs")
		write_file(hk_File1,"vip_money_hs ^"1000^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Guns Menu - afiseaza meniul cu arme")
		write_file(hk_File1,"// Pe hartile de tip AWP, acest meniu va fi automat dezactivat")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_gun_menu ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Items per round - primiti diverse obiecte la inceputul fiecarei runde")
		write_file(hk_File1,"// a - He Grenade")
		write_file(hk_File1,"// b - Flashbang (x2)")
		write_file(hk_File1,"// c - Smoke Grenade ")
		write_file(hk_File1,"// d - Deagle")
		write_file(hk_File1,"// e - Vest + Helm")
		write_file(hk_File1,"// f - Defuse Kit (Doar CT)")
		write_file(hk_File1,"// g - NightVision")
		write_file(hk_File1,"vip_items_round ^"abcdefg^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Jumps - Salturi")
		write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
		write_file(hk_File1,"vip_jumps ^"1^"")
		write_file(hk_File1,"")
		write_file(hk_File1,"// Cate sarituri in plus poate sa faca deodata")
		write_file(hk_File1,"vip_maxjumps ^"1^"")
		write_file(hk_File1,"")
		
	}
	
	server_cmd("exec %s",hk_File1)
}

public roundrestart()	round = 0 
public roundcounter()	round++


public client_putinserver(id)
{
	
	hk_IsUserVip[ id ] = 0;
	jumpnum[id] = 0
	dojump[id] = false
}

public client_disconnected(id)
{
	hk_IsUserVip[ id ] = 0;
	jumpnum[id] = 0
	dojump[id] = false
}
public addvips(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32]
	
	read_argv(1, arg, 31)
	
	new szLog[256];
	formatex(szLog,255,"%s",arg);
	write_file(hk_File4,szLog,-1);
	console_print(id, "[SKillOne] Vip-ul a fost adaugat in lista")
	
	return PLUGIN_HANDLED
	
}
public vips(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new s_Name[ 32 ], s_AuthID[ 32 ];
	get_user_name ( id, s_Name, 31 );
	get_user_authid ( id, s_AuthID, 31 );
	
	console_print(id, "===========================")
	for ( new i; i < hk_TotalLines; i++ )
	{
		if (  strcmp ( s_Name, hk_VipsList[ i ] ) || strcmp ( s_AuthID, hk_VipsList[ i ] ) )
			console_print(id, " - %s", hk_VipsList[ i ])   
		
		
	}
	console_print(id, "===========================")
	return PLUGIN_HANDLED
}


public Event_TextMsg_Restart()
{
	hk_IsRestarting = true
}

public Event_HLTV_New_Round()
{
	if( hk_IsRestarting )
	{
		hk_IsRestarting = false
		hk_iRoundCount = 0
	}
}

public Hook_PlayerSpawn ( const id )
{
	if ( ! is_user_alive ( id ) )
		return HAM_IGNORED;
	if ( ! is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 0;
		return HAM_IGNORED;
	}
	
	hk_IsUserVip[ id ] = 1;
	hk_iRoundCount++
	new map[32];
	get_mapname(map,31);
	
	if(equali(map, "awp_", 3))
		return HAM_IGNORED;
	
	if (get_pcvar_num(gun_menu) == 1)
		if(hk_iRoundCount>=4)
		Showrod(id);
	
	set_task(0.3, "giveitems", id)
	return HAM_IGNORED;
}

public on_damage(id)
{
	if(get_pcvar_num(g_type))
	{
		static attacker; attacker = get_user_attacker(id)
		static damage; damage = read_data(2)   
		
		if ( is_user_vip ( attacker ) )
		{
			hk_IsUserVip[ id ] = 1;
			
			if(is_user_connected(attacker))
			{
				if(fm_is_ent_visible(attacker,id))
				{
					set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
					ShowSyncHudMsg(attacker, g_hudmsg, "%i^n", damage)             
				}
				
				
			}
		}else hk_IsUserVip[ id ] = 0;
	}
}


public client_authorized(id)
{
	set_task(30.0, "PrintText" ,id)
	set_task(5.0, "VIPON" ,id)
}

public PrintText(id)
{
	client_print(id, print_chat, "[V.I.P] Scrie /vip pentru a vedea privilegiile V.I.P-ULUI.")
}

public VIPON(id)
{
	if ( is_user_vip ( id ) )
	{
		set_hudmessage(200, 200, 200, -1.0, 0.3, 2, 6.0, 1.5, 0.05, 0.5, -1)
		show_hudmessage(id, "[SkillOne] V.I.P ON")
	}
}
public Damage(id)
{
	new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint)
	if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
		
	if ( is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 1;
		new money = read_data(2) * get_pcvar_num(mpd)
		if(hitpoint==1) money += get_pcvar_num(mhb)
		cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
	}else hk_IsUserVip[ id ] = 0;
}

public death_msg()
{
	if(read_data(1)<=maxplayers && read_data(1) && read_data(1)!=read_data(2))
		cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(mkb) - 300)
}

public hook_death()
{
	hk_Killer = read_data(1)
	
	if ( (read_data(3) == 1) && (read_data(5) == 0) )
	{
		hk_HpAdd = get_pcvar_num (health_hs_add)
	}
	else
		hk_HpAdd = get_pcvar_num (health_add)
	
	hk_HpMax = get_pcvar_num (health_max)
	
	
	if ( ! is_user_vip ( hk_Killer ) )
	{
		hk_IsUserVip[ hk_Killer ] = 0;
		return;
	}
	hk_IsUserVip[ hk_Killer ] = 1;
	
	hk_KillerHp = get_user_health(hk_Killer)
	hk_KillerHp += hk_HpAdd
	
	if (hk_KillerHp > hk_HpMax) hk_KillerHp = hk_HpMax
	set_user_health(hk_Killer, hk_KillerHp)
	
	set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
	
}

public showAdmin(id)
{
	if(get_pcvar_num(vip_hud) == 1)
	{
		
		
		new num, iLen, admin
		static pl[32], name[32], szBuff[2048]
		
		get_players(pl, num, "c")
		
		for(new i = 0; i < num; i++)
		{
			if (  is_user_vip ( pl ) )
			{
				hk_IsUserVip[ pl ] = 1;
				get_user_name(pl, name, 31)
				iLen += format(szBuff[iLen], 2048 - iLen, "%d. %s^n", admin + 1, name)
				admin++
			}
			
		}
		
		
		set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 6.0, 7.0 )
		show_hudmessage(id, " %s online:^n%s", admin > 1 ? "Vips" : "Vips", szBuff)
		
		arrayset(szBuff, 0, 2048)
	}
	return PLUGIN_HANDLED
}

public client_PreThink(id)
{
	if(!is_user_alive(id)) return PLUGIN_CONTINUE
	if(get_pcvar_num(jumps) == 0) return PLUGIN_CONTINUE
	
	if ( ! is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 0;
		return PLUGIN_CONTINUE
	}
	
	
	hk_IsUserVip[ id ] = 1;
	new nbut = get_user_button(id)
	new obut = get_user_oldbutton(id)
	if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
	{
		if(jumpnum[id] < get_cvar_num("vip_maxjumps"))
		{
			dojump[id] = true
			jumpnum[id]++
			return PLUGIN_CONTINUE
		}
	}
	if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
	{
		jumpnum[id] = 0
		return PLUGIN_CONTINUE
	}
	
	return PLUGIN_CONTINUE
}

public client_PostThink(id)
{
	if(!is_user_alive(id)) return PLUGIN_CONTINUE
	if(get_pcvar_num(jumps) == 0) return PLUGIN_CONTINUE
	
	if ( ! is_user_vip ( id ) )
	{
		hk_IsUserVip[ id ] = 0;
		return PLUGIN_CONTINUE
	}
	
	
	hk_IsUserVip[ id ] = 1;
	if(dojump[id] == true)
	{
		new Float:velocity[3]  
		entity_get_vector(id,EV_VEC_velocity,velocity)
		velocity[2] = random_float(265.0,285.0)
		entity_set_vector(id,EV_VEC_velocity,velocity)
		dojump[id] = false
		return PLUGIN_CONTINUE
	}
	
	return PLUGIN_CONTINUE
}

public Showrod(id)
{
	show_menu(id, Keysrod, "Guns Menu^n\w1. M4a1^n\w2. AK47^n0. Exit^n", -1, "rod")
}

public Pressedrod(id, key)
{
	if (round < 3)
	{
	client_print_color(id, print_team_default, "Poti alege o arma dupa a3a runda!")
	return PLUGIN_HANDLED
	}
	switch (key) {
		case 0: {
			StripWeapons(id, Primary)
			give_item(id,"weapon_m4a1")
			cs_set_user_bpammo(id, CSW_M4A1, 90 );
		}
		
		case 1: {
			StripWeapons(id, Primary)
			give_item(id,"weapon_ak47")
			cs_set_user_bpammo(id, CSW_AK47, 90);
		}
		
		case 9: {          
		}
	}
	return PLUGIN_CONTINUE
}

public get_item_flags()
{
	new sFlags[24]
	get_pcvar_string(items,sFlags,23)
	return read_flags(sFlags)
}

public giveitems(id)
{
	new iFlags = get_item_flags()  
	new CsTeams:userTeam = cs_get_user_team(id)
	
	if (iFlags&ITEM_HE)
		fm_give_item(id,"weapon_hegrenade")
	
	
	if(iFlags&ITEM_FS)
	{
		fm_give_item(id,"weapon_flashbang")
		fm_give_item(id,"weapon_flashbang")
	}
	
	if(iFlags&ITEM_SG)
		fm_give_item(id,"weapon_smokegrenade")
	
	
	if(iFlags&ITEM_DG)
	{
		StripWeapons(id, Secondary);
		fm_give_item(id,"weapon_deagle")
		cs_set_user_bpammo(id, CSW_DEAGLE, 35 );
	}
	
	if(iFlags&ITEM_VH)
		fm_give_item(id,"item_assaultsuit")
	
	if(userTeam == CS_TEAM_CT && iFlags&ITEM_DF)
		fm_give_item(id,"item_thighpack")
	
	if(iFlags&ITEM_NV)
		cs_set_user_nvg(id, 1)
	
	
}

public FwdHamObjectCaps(id)
{
	if ( is_user_vip ( id ) )
	{
		if (!is_user_alive(id)||get_entity_flags(id) & FL_ONGROUND) return;
		static Float:velocity[3];
		entity_get_vector(id, EV_VEC_velocity, velocity);
		if(velocity[2] < 0)
		{
			velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0;
			entity_set_vector(id, EV_VEC_velocity, velocity);
		}
	}
}

stock is_user_vip ( id )
{
	new s_Name[ 32 ], s_AuthID[ 32 ];
	get_user_name ( id, s_Name, 31 );
	get_user_authid ( id, s_AuthID, 31 );
	
	for ( new i; i < hk_TotalLines; i++ )
	{
		if ( ! strcmp ( s_Name, hk_VipsList[ i ] ) )
			return 1;
		if ( ! strcmp ( s_AuthID, hk_VipsList[ i ] ) )
			return 1;
	}
	
	return 0;
	
}

stock StripWeapons(id, Type, bool: bSwitchIfActive = true)
{
	new iReturn;
	
	if(is_user_alive(id))
	{
		new iEntity, iWeapon;
		while((iWeapon = GetWeaponFromSlot(id, Type, iEntity)) > 0)
			iReturn = ham_strip_user_weapon(id, iWeapon, Type, bSwitchIfActive);
	}
	
	return iReturn;
}

stock GetWeaponFromSlot( id , iSlot , &iEntity )
{
	if ( !( 1 <= iSlot <= 5 ) )
		return 0;
	
	iEntity = 0;
	const m_rgpPlayerItems_Slot0 = 367;
	const m_iId = 43;
	const XO_WEAPONS = 4;
	const XO_PLAYER = 5;
	
	iEntity = get_pdata_cbase( id , m_rgpPlayerItems_Slot0 + iSlot , XO_PLAYER );
	
	return ( iEntity > 0 ) ? get_pdata_int( iEntity , m_iId , XO_WEAPONS ) : 0;
}  

stock ham_strip_user_weapon(id, iCswId, iSlot = 0, bool:bSwitchIfActive = true)
{
	new iWeapon
	if( !iSlot )
	{
		static const iWeaponsSlots[] = {
			-1,
			2, //CSW_P228
			-1,
			1, //CSW_SCOUT
			4, //CSW_HEGRENADE
			1, //CSW_XM1014
			5, //CSW_C4
			1, //CSW_MAC10
			1, //CSW_AUG
			4, //CSW_SMOKEGRENADE
			2, //CSW_ELITE
			2, //CSW_FIVESEVEN
			1, //CSW_UMP45
			1, //CSW_SG550
			1, //CSW_GALIL
			1, //CSW_FAMAS
			2, //CSW_USP
			2, //CSW_GLOCK18
			1, //CSW_AWP
			1, //CSW_MP5NAVY
			1, //CSW_M249
			1, //CSW_M3
			1, //CSW_M4A1
			1, //CSW_TMP
			1, //CSW_G3SG1
			4, //CSW_FLASHBANG
			2, //CSW_DEAGLE
			1, //CSW_SG552
			1, //CSW_AK47
			3, //CSW_KNIFE
			1 //CSW_P90
		}
		iSlot = iWeaponsSlots[iCswId]
	}
	
	const XTRA_OFS_PLAYER = 5
	const m_rgpPlayerItems_Slot0 = 367
	
	iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_Slot0 + iSlot, XTRA_OFS_PLAYER)
	
	const XTRA_OFS_WEAPON = 4
	const m_pNext = 42
	const m_iId = 43
	
	while( iWeapon > 0 )
	{
		if( get_pdata_int(iWeapon, m_iId, XTRA_OFS_WEAPON) == iCswId )
		{
			break
		}
		iWeapon = get_pdata_cbase(iWeapon, m_pNext, XTRA_OFS_WEAPON)
	}
	
	if( iWeapon > 0 )
	{
		const m_pActiveItem = 373
		if( bSwitchIfActive && get_pdata_cbase(id, m_pActiveItem, XTRA_OFS_PLAYER) == iWeapon )
		{
			ExecuteHamB(Ham_Weapon_RetireWeapon, iWeapon)
		}
		
		if( ExecuteHamB(Ham_RemovePlayerItem, id, iWeapon) )
		{
			user_has_weapon(id, iCswId, 0)
			ExecuteHamB(Ham_Item_Kill, iWeapon)
			return 1
		}
	}
	
	return 0
}


//// test_vip.sma
// C:\Users\\Desktop\amxx compiler 1.8.2\test_vip.sma(98) : warning 217: loose indentation
// C:\Users\\Desktop\amxx compiler 1.8.2\test_vip.sma(379) : error 035: argument type mismatch (argument 1)
// C:\Users\\Desktop\amxx compiler 1.8.2\test_vip.sma(381) : error 033: array must be indexed (variable "pl")
// C:\Users\\Desktop\amxx compiler 1.8.2\test_vip.sma(382) : error 035: argument type mismatch (argument 1)
// C:\Users\\Desktop\amxx compiler 1.8.2\test_vip.sma(466) : error 017: undefined symbol "client_print_color"
// C:\Users\\Desktop\amxx compiler 1.8.2\test_vip.sma(466) : warning 215: expression has no effect
// C:\Users\Desktop\amxx compiler 1.8.2\test_vip.sma(466) : error 001: expected token: ";", but found ")"
// C:\Users\Desktop\amxx compiler 1.8.2\test_vip.sma(466) : error 029: invalid expression, assumed zero
// C:\Users\\Desktop\amxx compiler 1.8.2\test_vip.sma(466) : fatal error 107: too many error messages on one line
lexz
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 913
Joined: 02 Nov 2020, 01:57
Detinator Steam: Da
Fond eXtream: 0
Discord: lexzor#0630
Has thanked: 67 times
Been thanked: 136 times

30 Jan 2021, 16:39

Sursa pe care ai trimis-o e cu probleme nu ce am facut eu.
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests