Va salut , am un plugin VIP , modificat de mine , si as dori sa-l fac cu flag ( flagul sa fie T ) , pentru ca el are amx_addvips , asa se adauga vip si cateodata are un mic bug , adica ... adaug amx_addvips "steamid.." apare intr-un folder , dar dupa ce schimb mapa acel steamid/nick nu mai are VIP .
Si nu mai merge /vip ( /wantvip )
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #include <fakemeta_util> #include <hamsandwich> #include <engine> #define Keysrod (1<<0)|(1<<1)|(1<<2)|(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", "2.0", "Hasky") 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 ) 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_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,-1); console_print(id, "[CS16] 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 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[i] ) ) { hk_IsUserVip[ pl[i] ] = 1; get_user_name(pl[i], 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^n\w3. 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 }
Aceasta postare a fost editata de eNdlessx: 08 February 2016 - 03:23 PM