Adaugare AWP in meniu [rezolvat]

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
legalizeit1337
Membru, skill +1
Membru, skill +1
Posts: 155
Joined: 21 Mar 2015, 00:08
Detinator Steam: Da
Detinator server CS: Da
SteamID: legalizeit1337
Fond eXtream: 0
Location: Romania
Contact:

27 Jul 2018, 16:36

Cred ca stie multa lume acest plugin: https://www82.zippyshare.com/v/gqCQxxDC/file.html
As dori sa ii mai adaugati la meniu si awp, sa rezolvati daca se poate problema cu bulletdamage, sa mearga x2 damage cand este activata comanda.
si sa se adauge si comanda amx_reloadvips
Astept doritori care vor sa faca ceva banuti
RoyalServer 2
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2550
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 64 times
Contact:

27 Jul 2018, 20:21

Posteaza direct sursa in:

Code: Select all

[Sursa=][/Sursa]
no...
legalizeit1337
Membru, skill +1
Membru, skill +1
Posts: 155
Joined: 21 Mar 2015, 00:08
Detinator Steam: Da
Detinator server CS: Da
SteamID: legalizeit1337
Fond eXtream: 0
Location: Romania
Contact:

28 Jul 2018, 11:35

| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>

#define VIP ADMIN_IMMUNITY

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

static const WHITE[] = "^x01"
static const NORMAL[] = "^x03"
static const GREEN[] = "^x04"

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 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 cvardmg
new amx_adminvip
new gmsgSayText

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

public plugin_init() 
{
	register_plugin("VIP", "1.0", "Krond Solutions SRL")
	
	RegisterHam ( Ham_Spawn, "player", "Hook_PlayerSpawn", 1 )
	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", "3=0")
	RegisterHam(Ham_TakeDamage, "player", "Ham_CBasePlayer_TakeDamage_Pre") 
	
	register_cvar("vip_maxjumps","1")
	jumps = register_cvar("vip_jumps","1")
	g_type = register_cvar("vip_bulletdamage","1")
	health_add = register_cvar("vip_hp_kill", "15")
	health_hs_add = register_cvar("vip_hp_hs", "30")
	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", "abcde")
	gun_menu = register_cvar("vip_gun_menu","1")
	cvardmg = register_cvar("vip_damage","2")
	g_hudmsg = CreateHudSyncObj()
	maxplayers = get_maxplayers()

        amx_adminvip = register_cvar("amx_adminvip", "1")
        register_event("HLTV", "newRound", "a", "1=0", "2=0")

	gmsgSayText = get_user_msgid("SayText")
	register_clcmd("say /vips", "print_viplist")
	register_clcmd("say_team /vips", "print_viplist")

	register_clcmd ("say /cumparavip" , "cumparavip" , -1);
        register_clcmd ("say /buyvip" , "buyvip" , -1);
	register_clcmd ("say_team /cumparavip" , "cumparavip" , -1);
        register_clcmd ("say_team /buyvip" , "buyvip" , -1);

}

public cumparavip(id) show_motd(id,"/addons/amxmodx/configs/cumparavip.html")
public buyvip(id) show_motd(id,"/addons/amxmodx/configs/buyvip.html")

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,"// 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,"// VIP 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 - Deagle")
	write_file(hk_File1,"// d - Vest + Helm")
	write_file(hk_File1,"// e - Defuse Kit (Doar CT)")
	write_file(hk_File1,"vip_items_round ^"abcde^"")
	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,"")
	write_file(hk_File1,"// De cate ori damage-ul jucatorului se mareste indiferent de arma")
	write_file(hk_File1,"// ex: daca este 2, atunci jucatorului i se mareste dmg-ul de 2 ori")
	write_file(hk_File1,"vip_damage ^"2^"")
	write_file(hk_File1,"")
	write_file(hk_File1,"// VIP in Scoreboard")
	write_file(hk_File1,"// 1 - Activat   0 - Dezactivat")
	write_file(hk_File1,"amx_adminvip ^"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 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 Ham_CBasePlayer_TakeDamage_Pre( const id, const iInflictor, const iAttacker, const Float:flDamage, const iDamageType ) 
{
	if ( ! is_user_vip ( iAttacker ) )
	{
		hk_IsUserVip[ iAttacker ] = 0;
		return HAM_IGNORED;
	}
	hk_IsUserVip[ iAttacker ] = 1;
	
	new dmg1 = get_pcvar_num(cvardmg)
	
	if( iDamageType == DMG_FALL ) 
	SetHamParamFloat(4, flDamage*1)
	else
	SetHamParamFloat(4, flDamage*dmg1)
	
	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 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)
	show_hudmessage(hk_Killer, "Healed +%d hp", hk_HpAdd)

}

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, "VIP Menu^n\w1. Get M4A1+Deagle^n\w2. Get AK47+Deagle^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);
			}

		     }
	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_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")	
		
}

public print_viplist(user) 
{
	new vipnames[33][32]
	new message[256]
	new message1[128]
	new id, count, x, len
	
	for(id = 1 ; id <= maxplayers ; id++)
		if(is_user_connected(id))
			if(get_user_flags(id) & ADMIN_IMMUNITY)
				get_user_name(id, vipnames[count++], 31)

	len = format(message, 255, "%s[VIP] %sVIP members online: ", GREEN, NORMAL)
	format(message1, 127, "%s[VIP] %sVisit our website at %swww.site.ro ", GREEN, WHITE, GREEN)
	if(count > 0) {
		for(x = 0 ; x < count ; x++) {
			len += format(message[len], 255-len, "%s%s ", vipnames[x], x < (count-1) ? ", ":"")
			if(len > 96 ) {
				print_message(user, message)
				print_message(user, message1)
				len = format(message, 255, "%s ", NORMAL)
			}
		}
		print_message(user, message)
		print_message(user, message1)
	}
	else {
		len += format(message[len], 255-len, "there aren't any.")
		print_message(user, message)
		print_message(user, message1)
	}
}

print_message(id, msg[]) {
	message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
	write_byte(id)
	write_string(msg)
	message_end()
}

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
}

public newRound()
        set_task(0.1, "setVip")
 
public setVip()
{
        new players[32], pNum
        get_players(players, pNum, "a")
 
        for (new i = 0; i < pNum; i++)
        {
                new id = players
 
                if (get_pcvar_num(amx_adminvip) && get_user_flags(id) & VIP)
                {
 
                        message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
                        write_byte(id)
                        write_byte(4)
                        message_end()
                }
        }
 
        return PLUGIN_HANDLED
}
User avatar
DanN
Membru, skill 0
Membru, skill 0
Posts: 70
Joined: 30 Sep 2017, 22:12
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: RobertshemA
SteamID: 84638588213
Fond eXtream: 0
Location: Cape Verde
Has thanked: 1 time
Contact:

28 Jul 2018, 16:44

| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>

#define Keysrod (1<<0)|(1<<1)|(1<<2)
#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 cvardmg

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

public plugin_init() 
{
	register_plugin("Vip", "2.2", "Hasky / edit DanN")
	
	register_concmd("say /vips", "showAdmin", ADMIN_ALL, "")
	register_concmd("amx_addvips", "addvips", ADMIN_RCON, "<Nume sau SteamID>")
	register_concmd("amx_reloadvips", "relaodvips", ADMIN_RCON, "")
	
	RegisterHam ( Ham_Spawn, "player", "Hook_PlayerSpawn", 1 )
	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")
	RegisterHam(Ham_TakeDamage, "player", "Ham_CBasePlayer_TakeDamage_Pre") 
	
	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")
	cvardmg = register_cvar("vip_damage","2")
	g_hudmsg = CreateHudSyncObj()
	maxplayers = get_maxplayers()

	set_task(120.0, "mesaj_info", _, _, _, "b");
	
	register_clcmd ("say /buyvip" , "buyvip");
	
}

public buyvip(id) 
{
	show_motd(id, "/addons/amxmodx/configs/vip_info.html");
}

public mesaj_info()
{
	
	console_print(0, "[VIP]Tastati in chat /buyvip pentru a vedea beneficiile si pretul vip-ului.");
}

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,"")
	write_file(hk_File1,"// De cate ori damage-ul jucatorului se mareste indiferent de arma")
	write_file(hk_File1,"// ex: daca este 2, atunci jucatorului i se mareste dmg-ul de 2 ori")
	write_file(hk_File1,"vip_damage ^"2^"")
	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_disconnect(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);
	console_print(id, "[VIP] Vip-ul a fost adaugat in lista")
	
	return PLUGIN_HANDLED
	
}

public relaodvips(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
	return PLUGIN_HANDLED
		
	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 );

	}	
	
	console_print(id, "[VIP]Lista de VIP-uri a fost actualizata")	
	
	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 Ham_CBasePlayer_TakeDamage_Pre( const id, const iInflictor, const iAttacker, const Float:flDamage, const iDamageType ) 
{
	if ( ! is_user_vip ( iAttacker ) )
	{
		hk_IsUserVip[ iAttacker ] = 0;
		return HAM_IGNORED;
	}
	hk_IsUserVip[ iAttacker ] = 1;
	
	new dmg1 = get_pcvar_num(cvardmg)
	
	if( iDamageType == DMG_FALL ) 
	SetHamParamFloat(4, flDamage*1)
	else
	SetHamParamFloat(4, flDamage*dmg1)
	
	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 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)
	show_hudmessage(hk_Killer, "Healed +%d hp", hk_HpAdd)

}

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, "VIP Menu^n\w1. Get M4a1^n\w2. Get AK47^n\w3. Get AWP^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 2: {
			StripWeapons(id, Primary)
			give_item(id,"weapon_awp")
			cs_set_user_bpammo(id, CSW_AWP, 30);
		}
		     }

	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)
		
		
}

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
}
legalizeit1337
Membru, skill +1
Membru, skill +1
Posts: 155
Joined: 21 Mar 2015, 00:08
Detinator Steam: Da
Detinator server CS: Da
SteamID: legalizeit1337
Fond eXtream: 0
Location: Romania
Contact:

28 Jul 2018, 19:47

Multumesc mult!!!
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2550
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 64 times
Contact:

18 Sep 2018, 20:16

Mutat & marcat ca rezolvat.
no...
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: Dot [Bot] and 16 guests