Sveiki gal kas galit padaryt kad sitas zp vip butu duodamas tik ant "b" flago
http://www.failai.lt/t7seju5y147r/zm_vip.sma.htm
Del VIP plugino :D
- laimiukas3
- Moderatorius
- Posts: 4569
- Joined: 2012 Aug 03 01:12
- Skype: laimiukas3
- Location: Vilnius
- Contact:
Re: Del VIP plugino :D
Code: Select all
/* Plugin generated by AMXX-Studio */ #include <amxmodx>#include <amxmisc>#include <fakemeta>#include <engine>#include <fun>#include <hamsandwich>#include <zombieplague> ////////// PLUGIN SETTINGS //////////#define MODE 2#define CHAT_PREFIX "[VIP]" // (Only if MODE 1 is turrned OFF. Otherwise set flags in vips.ini.) //#define VIPACCES ADMIN_RESERVATION#define MJACCES ADMIN_RESERVATION////////// SETTINGS END ////////// // Flags#define FLAG_A (1<<0)#define FLAG_B (1<<1)#define FLAG_C (1<<2)#define FLAG_D (1<<3)#define FLAG_E (1<<4)#define FLAG_K (1<<10) #define VERSION "1.7.2" #if cellbits == 32const OFFSET_CLIPAMMO = 51#elseconst OFFSET_CLIPAMMO = 65#endifconst OFFSET_LINUX_WEAPONS = 4 const DMG_HEGRENADE = (1<<24) #define set_flood(%1,%2) (%1 |= (1<<(%2&31)))#define clear_flood(%1,%2) (%1 &= ~(1<<(%2&31)))#define get_flood(%1,%2) (%1 & (1<<(%2&31))) #if MODE & (1<<0) || MODE & (1<<1)new amx_password_field_string[30]#endif#if MODE & (1<<0)new g_user_privileges[33]enum _:database_items{ auth[50], password[50], accessflags, flags}new vips_database[database_items]new Array:database_holdernew g_hour_flagsnew g_hour#endif#if MODE & (1<<1)const ZV_PLUGIN_HANDLED = 97enum _:items{ i_name[31], i_description[31], i_cost, i_team}new g_register_in_zp_extranew g_zp_extra_item_numbernew g_nonvip_teasenew g_menu_closenew extra_items[items]new Array:items_databasenew g_registered_items_countnew g_forward_returnnew g_extra_item_selectednew g_team[33]#endif#if MODE == 3new g_vip_buy_timenew g_vip_cost_ammonew g_vip_buy_flags#endifnew const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }static const CONTACT[] = ""new g_jumps, g_allow_jump, g_armor, g_killammo, g_infectammo, g_infecthealth, g_nemhealth, g_show_vips,g_unlimited_clip, g_fall_damage, g_damage_reward, g_damage_increase, g_happy_hour, g_happy_hour_frag, g_happy_hour_ammonew happy_hour_onnew g_bitnew chache_g_jumpsnew maxplayers, g_msgSayTextnew jumpnum[33]new bool:dojump[33]new Float:g_damage[33] public plugin_init() { register_plugin("ZM VIP", VERSION, "aaarnas") RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawnPost", 1) RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1) RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage") register_event("ResetHUD", "HUDReset", "be") register_event("HLTV", "chache_cvars", "a", "1=0", "2=0") maxplayers = get_maxplayers() g_msgSayText = get_user_msgid("SayText") register_message(get_user_msgid("CurWeapon"), "message_cur_weapon") g_jumps = register_cvar("zp_vip_jumps", "1") g_allow_jump = register_cvar("zp_vip_allow_jump", "ab") g_armor = register_cvar("zp_vip_armor", "65") g_killammo = register_cvar("zp_vip_killammo", "2") g_infectammo = register_cvar("zp_vip_infectammo", "2") g_infecthealth = register_cvar("zp_vip_infecthealth", "300") g_nemhealth = register_cvar("zp_vip_nemextra", "1") g_show_vips = register_cvar("zp_vip_show", "1") g_unlimited_clip = register_cvar("zp_vip_unlimited_ammo", "0") g_fall_damage = register_cvar("zp_vip_no_fall_damage", "1") g_damage_reward = register_cvar("zp_vip_damage_reward", "500") g_damage_increase = register_cvar("zp_vip_damage_increase", "1.5") g_happy_hour = register_cvar("zp_vip_happy_hour", "off") g_happy_hour_frag = register_cvar("zp_vip_happy_hour_frag", "1") g_happy_hour_ammo = register_cvar("zp_vip_happy_hour_ammo", "1") register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER) register_cvar("zp_vip_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY) set_cvar_string("zp_vip_version", VERSION) #if MODE & (1<<0) || MODE & (1<<1) get_cvar_string("amx_password_field", amx_password_field_string, charsmax(amx_password_field_string)) register_dictionary("zm_vip.txt")#endif#if MODE & (1<<0) && MODE & (1<<1) g_vip_cost_ammo = register_cvar("zp_vip_cost_ammo", "0") g_vip_buy_time = register_cvar("zp_vip_buy_time", "7") g_vip_buy_flags = register_cvar("zp_vip_buy_flags", "abcd") set_task(5.0,"check_date",0)#endif#if MODE & (1<<0) register_concmd("amx_reloadvips", "reload_vips", ADMIN_CFG) g_hour = register_cvar("zp_vip_hour", "off") g_hour_flags = register_cvar("zp_vip_hour_flags", "abe") reload_vips()#endif#if MODE & (1<<1) register_clcmd("say /vm", "menu_open") g_nonvip_tease = register_cvar("zp_vip_nonvip_tease", "1") g_register_in_zp_extra = register_cvar("zp_vip_register_in_zp_extra", "1") g_menu_close = register_cvar("zp_vip_menu_close", "1") new temp[31] formatex(temp, 30, "%L", LANG_SERVER, "VIP_EXTRA_NAME") if(get_pcvar_num(g_register_in_zp_extra)) g_zp_extra_item_number = zp_register_extra_item(temp, 0, 0) g_extra_item_selected = CreateMultiForward("zv_extra_item_selected", ET_CONTINUE, FP_CELL, FP_CELL)#endif register_clcmd("say /vips", "print_adminlist") register_clcmd("say /vip", "ShowMotd")}public plugin_cfg(){ new directory[31] get_configsdir(directory, 30) server_cmd("exec %s/zm_vip.cfg", directory)} public chache_cvars() { static string[5] get_pcvar_string(g_allow_jump, string, charsmax(string)) g_bit = read_flags(string) chache_g_jumps = get_pcvar_num(g_jumps) static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s get_pcvar_string(g_happy_hour, hours, charsmax(hours)) if(equal(hours, "off")) {happy_hour_on = false; return; } strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-') hour1 = str_to_num(hour1s) hour2 = str_to_num(hour2s) time(h, m, s) if(hour1 <= h <= hour2) happy_hour_on = true else happy_hour_on = false}#if MODE & (1<<1) || MODE & (1<<0)public plugin_natives() {#if MODE & (1<<1) register_native("zv_register_extra_item", "native_zv_register_extra_item", 1)#endif#if MODE & (1<<0) register_native("zv_get_user_flags", "native_zv_get_user_flags", 1)#endif }#endifpublic FwdHamPlayerSpawnPost(id) { if(!is_user_alive(id)) return HAM_IGNORED;#if MODE & (1<<0) if(!(g_user_privileges[id] & FLAG_A))#else if(!(get_user_flags(id) & VIPACCES))#endif return PLUGIN_HANDLED; if(pev(id, pev_armorvalue) < get_pcvar_num(g_armor)) set_pev(id, pev_armorvalue, float(get_pcvar_num(g_armor))) return HAM_IGNORED;} public fw_PlayerKilled_Post(victim, attacker) {#if MODE & (1<<0) if(1 <= attacker <= maxplayers && g_user_privileges[attacker] & FLAG_A) {#else if(1 <= attacker <= maxplayers && get_user_flags(attacker) & VIPACCES) {#endif if(is_user_alive(attacker) && zp_get_user_zombie(attacker) && !(zp_get_user_nemesis(attacker) && get_pcvar_num(g_nemhealth))) set_user_health(attacker, (get_user_health(attacker) + get_pcvar_num(g_infecthealth))) zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_killammo)) if(happy_hour_on) { static frag, ammo frag = get_pcvar_num(g_happy_hour_frag) ammo = get_pcvar_num(g_happy_hour_ammo) if(frag) set_user_frags(attacker, get_user_frags(attacker)+frag) if(ammo) zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+ammo) } }} public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) { if(victim == attacker) return HAM_IGNORED if(damage_type & DMG_HEGRENADE) return HAM_IGNORED #if MODE & (1<<0) if(g_user_privileges[victim] & FLAG_A) {#else if(get_user_flags(victim) & VIPACCES) {#endif if(damage_type & DMG_FALL && get_pcvar_num(g_fall_damage)) return HAM_SUPERCEDE; } if(!is_user_connected(attacker)) return HAM_IGNORED if(zp_get_user_zombie(attacker) || zp_get_user_survivor(attacker)) return HAM_IGNORED #if MODE & (1<<0) if(g_user_privileges[attacker] & FLAG_D) {#else if(get_user_flags(attacker) & VIPACCES) {#endif damage *= get_pcvar_float(g_damage_increase) SetHamParamFloat(4, damage) } #if MODE & (1<<0) if(g_user_privileges[attacker] & FLAG_D) {#else if(get_user_flags(attacker) & VIPACCES) {#endif if(get_pcvar_num(g_damage_reward) > 0) { g_damage[attacker]+=damage if(g_damage[attacker] > get_pcvar_float(g_damage_reward)) { zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+1) g_damage[attacker] -= get_pcvar_float(g_damage_reward) } } } return HAM_IGNORED} public zp_user_infected_post(id, infector, nemesis) { setVip() if(!(1<=infector<=maxplayers)) return; #if MODE & (1<<0) if(g_user_privileges[infector] & FLAG_A) {#else if(get_user_flags(infector) & VIPACCES) {#endif if(is_user_alive(infector)) set_user_health(infector, (get_user_health(infector) + get_pcvar_num(g_infecthealth))) zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + get_pcvar_num(g_infectammo)) if(happy_hour_on) { static frag, ammo frag = get_pcvar_num(g_happy_hour_frag) ammo = get_pcvar_num(g_happy_hour_ammo) if(frag) set_user_frags(infector, get_user_frags(infector)+frag) if(ammo) zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector)+ammo) } } } public client_connect(id) { jumpnum[id] = 0 g_damage[id] = 0.0 dojump[id] = false#if MODE & (1<<0) set_flags(id) if(get_pcvar_num(g_show_vips) == 1 && g_user_privileges[id] & FLAG_A) {#else if(get_pcvar_num(g_show_vips) == 1 && get_user_flags(id) & VIPACCES) {#endif new name[100] get_user_name(id, name, 100) client_printcolor(0, "/g%L", LANG_PLAYER, "VIP_CONNECTED", name) }#if MODE & (1<<0) else { static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s get_pcvar_string(g_hour, hours, charsmax(hours)) if(equal(hours, "off")) return; strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-') hour1 = str_to_num(hour1s) hour2 = str_to_num(hour2s) time(h, m, s) if(hour1 <= h <= hour2) { new fflags[10] get_pcvar_string(g_hour_flags, fflags, charsmax(fflags)) g_user_privileges[id] = read_flags(fflags) } }#endif}#if MODE & (1<<1)public zp_extra_item_selected(id, item_id) if(item_id == g_zp_extra_item_number) menu_open(id) public menu_open(id) {#if MODE & (1<<0) if(g_user_privileges[id] & FLAG_E) vip_menu(id)#else if(get_user_flags(id) & VIPACCES) vip_menu(id)#endif#if MODE & (1<<0) else if(get_pcvar_num(g_vip_cost_ammo) != 0) get_pcvar_num(g_nonvip_tease) ? vip_menu(id) : buy_meniu(id)#endif else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP") return ZP_PLUGIN_HANDLED} public vip_menu(id){ if(g_registered_items_count == 0) { client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "OFF") return; } new holder[150], menu formatex(holder, charsmax(holder), "\r%L", id, "MENU_TOP") menu = menu_create(holder, "vip_menu_handler") new i, team_check, num[3], ammo_packs, check check = 0 ammo_packs = zp_get_user_ammo_packs(id) switch(zp_get_user_zombie(id)) { case 0: { if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR else team_check = ZP_TEAM_HUMAN } case 1: { if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS else team_check = ZP_TEAM_ZOMBIE } } if(zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) team_check |= FLAG_A else if(!zp_get_user_zombie(id)) team_check |= FLAG_B else if(zp_get_user_nemesis(id)) team_check |= FLAG_C else if(zp_get_user_survivor(id)) team_check |= FLAG_D g_team[id] = team_check for(i=0; i < g_registered_items_count; i++) { ArrayGetArray(items_database, i, extra_items) if(extra_items[i_team] == 0 || g_team[id] & extra_items[i_team]) { formatex(holder, charsmax(holder), "%s \r[%s] %s[%d %L]", extra_items[i_name], extra_items[i_description], ammo_packs < extra_items[i_cost] ? "\r" : "\y", extra_items[i_cost], id, "AMMO") formatex(num, 2, "%d", i) menu_additem(menu, holder, num, 0) check++ } } if(check == 0) { client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NO_ITEMS") return; } menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) formatex(holder, charsmax(holder), "%L", id, "NEXT") menu_setprop(menu, MPROP_NEXTNAME, holder) formatex(holder, charsmax(holder), "%L", id, "BACK") menu_setprop(menu, MPROP_BACKNAME, holder) formatex(holder, charsmax(holder), "%L", id, "EXIT") menu_setprop(menu, MPROP_EXITNAME, holder) menu_display(id, menu, 0)} public vip_menu_handler(id, menu, item){ if( item == MENU_EXIT ) { menu_destroy(menu) return PLUGIN_HANDLED } #if MODE & (1<<0) if(get_pcvar_num(g_nonvip_tease) && !(g_user_privileges[id] & FLAG_A)) {#if MODE & (1<<0) buy_meniu(id)#else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")#endif menu_destroy(menu) return PLUGIN_HANDLED; }#else if(get_pcvar_num(g_nonvip_tease) && !(get_user_flags(id) & VIPACCES)) {#if MODE & (1<<0) buy_meniu(id)#else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")#endif menu_destroy(menu) return PLUGIN_HANDLED; }#endif new team_check switch(zp_get_user_zombie(id)) { case 0: { if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR else team_check = ZP_TEAM_HUMAN } case 1: { if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS else team_check = ZP_TEAM_ZOMBIE } } if(g_team[id] != team_check) { menu_destroy(menu) vip_menu(id) return PLUGIN_HANDLED; } new data[6], iName[64], item_id, ammo_packs new aaccess, callback menu_item_getinfo(menu, item, aaccess, data,5, iName, 63, callback) item_id = str_to_num(data) ammo_packs = zp_get_user_ammo_packs(id) ArrayGetArray(items_database, item_id, extra_items) if(ammo_packs >= extra_items[i_cost]) zp_set_user_ammo_packs(id, ammo_packs - extra_items[i_cost]) else { client_printcolor(id, "/g%s %L", CHAT_PREFIX, id, "MISSING_AMMO", extra_items[i_cost]-ammo_packs) if(g_menu_close) menu_destroy(menu) else vip_menu(id) return PLUGIN_HANDLED } item_id++ ExecuteForward(g_extra_item_selected, g_forward_return, id, item_id) if (g_forward_return >= ZV_PLUGIN_HANDLED) zp_set_user_ammo_packs(id, ammo_packs) if(!g_menu_close) vip_menu(id) menu_destroy(menu) return PLUGIN_HANDLED}#endif#if MODE & (1<<0) && MODE & (1<<1)public buy_meniu(id){ new holder[150], menu formatex(holder, charsmax(holder), "\r%L", id, "BUY_MENU_TOP", get_pcvar_num(g_vip_cost_ammo), get_pcvar_num(g_vip_buy_time)) menu = menu_create(holder, "buy_menu_handler") new callback = menu_makecallback("_menu_callback") formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE1") menu_additem(menu, holder) formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE2") menu_additem(menu, holder, _, _, callback) formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE3") menu_additem(menu, holder) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) formatex(holder, charsmax(holder), "%L", id, "EXIT") menu_setprop(menu, MPROP_EXITNAME, holder) menu_display(id, menu, 0)} public buy_menu_handler(id, menu, item){ if( item == MENU_EXIT ) { menu_destroy(menu) return PLUGIN_HANDLED } new ammo_packs = zp_get_user_ammo_packs(id) if(item > 0) { if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) { amx_tempadmin(id, item) zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo)) client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time)) } else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs) } else { nick_buy_meniu(id) return PLUGIN_HANDLED } menu_destroy(menu) return PLUGIN_HANDLED} public nick_buy_meniu(id){ new buttons_string[16], menu_string[151], menu_item[81], menu, client_password[20] get_user_info(id, amx_password_field_string, client_password, charsmax(client_password)) formatex(menu_string, 150, "\r%L", id, "NICK_BUY_MENU_TOP", client_password) menu = menu_create(menu_string, "nick_buy_menu_handler") formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE1") menu_additem(menu, menu_item) formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE2") menu_additem(menu, menu_item) formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE3", get_pcvar_num(g_vip_cost_ammo) ,get_pcvar_num(g_vip_buy_time)) menu_additem(menu, menu_item) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) formatex(buttons_string, 15, "%L", id, "BACK") menu_setprop(menu, MPROP_EXITNAME, buttons_string) menu_display(id, menu, 0) } public nick_buy_menu_handler(id, menu, item){ if( item == MENU_EXIT ) { buy_meniu(id) return PLUGIN_HANDLED } switch(item) { case 0: { generate_password(id) set_task(0.2, "menu_delay", id) } case 1: nick_buy_meniu_sec(id) case 2: { new ammo_packs = zp_get_user_ammo_packs(id) if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) { amx_tempadmin(id, 0) zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo)) client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time)) } else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs) menu_destroy(menu) return PLUGIN_HANDLED } } menu_destroy(menu) return PLUGIN_HANDLED}public nick_buy_meniu_sec(id){ new holder[150], menu formatex(holder, charsmax(holder), "\r%L", id, "NICK_BUY_MENU_SEC_TOP") menu = menu_create(holder, "nick_buy_menu_sec_handler") formatex(holder, charsmax(holder), "%L", id, "BACK") menu_additem(menu, holder) menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER) menu_display(id, menu, 0)} public nick_buy_menu_sec_handler(id, menu, item){ nick_buy_meniu(id) menu_destroy(menu) return PLUGIN_HANDLED;} public _menu_callback(id, menu, item) { if(item == 1) { new authid[30] get_user_authid(id, authid, charsmax(authid)) if(equal(authid, "STEAM_0", 7)) return ITEM_ENABLED else return ITEM_DISABLED } return ITEM_ENABLED} public menu_delay(id) nick_buy_meniu(id)#endifpublic message_cur_weapon(msg_id, msg_dest, msg_entity){ if (!get_pcvar_num(g_unlimited_clip)) return#if MODE & (1<<0) if (!(g_user_privileges[msg_entity] & FLAG_C)) return#else if (!(get_user_flags(msg_entity) & VIPACCES)) return#endif if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1) return static weapon, clip weapon = get_msg_arg_int(2) clip = get_msg_arg_int(3) if (MAXCLIP[weapon] > 2) { set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon]) if (clip < 2) { static wname[32], weapon_ent get_weaponname(weapon, wname, sizeof wname - 1) weapon_ent = find_ent_by_owner(-1, wname, msg_entity) fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon]) } }} public HUDReset() setVip() public setVip(){ new players[32], pNum get_players(players, pNum, "a") for (new i = 0; i < pNum; i++) { new id = players[i]#if MODE & (1<<0) if (g_user_privileges[id] & FLAG_A)#else if (get_user_flags(id) & VIPACCES)#endif { message_begin(MSG_ALL, get_user_msgid("ScoreAttrib")) write_byte(id) write_byte(4) message_end() } } return PLUGIN_HANDLED} public print_adminlist(user) { new adminnames[33][32] new message[256] new contactinfo[256], contact[112] new id, count, x, len for(id = 1 ; id <= maxplayers ; id++) if(is_user_connected(id))#if MODE & (1<<0) if(g_user_privileges[id] & FLAG_A)#else if(get_user_flags(id) & VIPACCES)#endif get_user_name(id, adminnames[count++], 31) len = format(message, 255, "%L ", id, "VIP_STATUS") if(count > 0) { for(x = 0 ; x < count ; x++) { len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"") if(len > 96 ) { client_printcolor(user, "/g%s", message) len = format(message, 255, "") } } client_printcolor(user, "/g%s", message) } else { len += format(message[len], 255-len, "%L ", id, "VIP_STATUS_N") client_printcolor(user, "/g%s", message) } get_cvar_string("amx_contactinfo", contact, 63) if(contact[0]) { format(contactinfo, 111, "%L ", id, "VIP_STATUS_CON", contact) client_printcolor(user, "/g%s", contactinfo) } } public client_disconnect(id){ jumpnum[id] = 0 g_damage[id] = 0.0 dojump[id] = false} public client_PreThink(id){#if MODE & (1<<0) if(!is_user_alive(id) || !g_jumps || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE#else if(!is_user_alive(id) || !g_jumps || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE#endif static nbut, obut, fflags nbut= get_user_button(id) obut = get_user_oldbutton(id) fflags = get_entity_flags(id) if((nbut & IN_JUMP) && !(fflags & FL_ONGROUND) && !(obut & IN_JUMP)) { if(jumpnum[id] < chache_g_jumps && ((g_bit & FLAG_D && zp_get_user_nemesis(id)) || (g_bit & FLAG_C && zp_get_user_survivor(id)) || (g_bit & FLAG_A && !zp_get_user_zombie(id)) || (g_bit & FLAG_B && zp_get_user_zombie(id) && !zp_get_user_nemesis(id)))) { dojump[id] = true jumpnum[id]++ return PLUGIN_CONTINUE } } if((nbut & IN_JUMP) && (fflags & FL_ONGROUND)) { jumpnum[id] = 0 return PLUGIN_CONTINUE } return PLUGIN_CONTINUE} public client_PostThink(id){#if MODE & (1<<0) if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE#else if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE#endif if(dojump[id] == true) { static 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 ShowMotd(id) show_motd(id, "vip.txt")#if MODE & (1<<0)public reload_vips() { if(database_holder) ArrayDestroy(database_holder) database_holder = ArrayCreate(database_items) new configsDir[64] get_configsdir(configsDir, 63) format(configsDir, 63, "%s/vips.ini", configsDir) new File=fopen(configsDir,"r"); if (File) { static Text[512], Flags[32], AuthData[50], Privileges_Flags[32], Password[50] while (!feof(File)) { fgets(File,Text,sizeof(Text)-1); trim(Text); // comment if (Text[0]==';') { continue; } Flags[0]=0; AuthData[0]=0; Privileges_Flags[0]=0; Password[0]=0; // not enough parameters if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Privileges_Flags,sizeof(Privileges_Flags)-1,Flags,sizeof(Flags)-1) < 2) { continue; } vips_database[auth] = AuthData vips_database[password] = Password vips_database[accessflags] = read_flags(Privileges_Flags) vips_database[flags] = read_flags(Flags) ArrayPushArray(database_holder, vips_database) } fclose(File); } else log_amx("Error: vips.ini file doesn't exist")}#endif#if MODE & (1<<0) && MODE & (1<<1)public check_date(){ new holder[20] new y, m ,d date(y, m, d) format(holder, charsmax(holder), "m%dd%dy%d", m, d, y) new configdir[200] get_configsdir(configdir,199) new configfile1[200] format(configfile1,199,"%s/vips.ini",configdir) new text[512], len new pnum = file_size(configfile1,1) for(new i = 1; i < pnum; i++) { read_file(configfile1, i, text, 511, len) if ( contain(text, holder) != -1 ) { DeleteLine(configfile1, i) } } return PLUGIN_HANDLED} public amx_tempadmin(id, type){ new authid[31], ip[31], name[51], client_password[20], p_flags[21], sdate[20] get_pcvar_string(g_vip_buy_flags, p_flags, charsmax(p_flags)) get_user_authid(id, authid, charsmax(authid)) get_user_ip(id, ip, charsmax(ip), 1) get_user_name(id, name, charsmax(name)) get_user_info(id, amx_password_field_string, client_password, charsmax(client_password)) get_date(get_pcvar_num(g_vip_buy_time), sdate, charsmax(sdate)) new holder[200] switch(type) { case 0: formatex(holder, charsmax(holder), "^"%s^" ^"%s^" ^"%s^" ^"b^"; Exp: %s", name, client_password, p_flags, sdate) case 1: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"ce^"; Exp: %s", authid, p_flags, sdate) case 2: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"de^"; Exp: %s", ip, p_flags, sdate) } new configdir[200] get_configsdir(configdir, 199) new configfile1[200] format(configfile1,199,"%s/vips.ini",configdir) write_file(configfile1, holder, -1) server_cmd("amx_reloadvips") set_task(1.0, "set_flags", id) } DeleteLine( const szFilename[ ], const iLine ){ new iFile = fopen( szFilename, "rt" ); if( !iFile ) { return; } static const szTempFilename[ ] = "delete_line.txt"; new iTempFile = fopen( szTempFilename, "wt" ); new szData[ 256 ], iLineCount, bool:bReplaced = false; while( !feof( iFile ) ) { fgets( iFile, szData, 255 ); if( iLineCount++ == iLine ) { bReplaced = true; } else { fputs( iTempFile, szData ); } } fclose( iFile ); fclose( iTempFile ); if( bReplaced ) { delete_file( szFilename ); while( !rename_file( szTempFilename, szFilename, 1 ) ) { } } else { delete_file( szTempFilename ); }} stock get_date(days, string[], chars) { new y, m, d date(y, m ,d) d+=days new go = true while(go) { switch(m) { case 1,3, 5, 7, 8, 10: { if(d>31) { d=d-31; m++; } else go = false } case 2: { if(d>28) { d=d-28; m++; } else go = false } case 4, 6, 9, 11: { if(d>30) { d=d-30; m++; } else go = false } case 12: { if(d>31) { d=d-31; y++; m=1; } else go = false } } } formatex(string, chars, "m%dd%dy%d", m, d ,y)}#endif stock client_printcolor(id, const message[], any:...){ static buffer[512], argscount argscount = numargs() if (!id) { static players[32], num, player, i, i2 get_players(players, num , "ch") for (i = 0; i < num; i++) { player = players[i] static changed[5], changedcount changedcount = 0 for (i2 = 2; i2 < argscount; i2++) { if (getarg(i2) == LANG_PLAYER) { setarg(i2, 0, player) changed[changedcount] = i2 changedcount++ } } vformat(buffer, charsmax(buffer), message, 3) replace_all(buffer, charsmax(buffer), "/g", "^4") replace_all(buffer, charsmax(buffer), "/y", "^1") message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player) write_byte(player) write_string(buffer) message_end() for (i2 = 0; i2 < changedcount; i2++) setarg(changed[i2], 0, LANG_PLAYER) } } else { vformat(buffer, charsmax(buffer), message, 3) replace_all(buffer, charsmax(buffer), "/g", "^4") replace_all(buffer, charsmax(buffer), "/y", "^1") message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id) write_byte(id) write_string(buffer) message_end() }} stock fm_find_ent_by_owner(entity, const classname[], owner){ while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {} return entity;} stock fm_set_weapon_ammo(entity, amount){ set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);}#if MODE & (1<<0)public set_flags(id) { static authid[31], ip[31], name[51], index, client_password[30], size, log_flags[11] get_user_authid(id, authid, 30) get_user_ip(id, ip, 30, 1) get_user_name(id, name, 50) get_user_info(id, amx_password_field_string, client_password, charsmax(client_password)) g_user_privileges[id] = 0 size = ArraySize(database_holder) for(index=0; index < size ; index++) { ArrayGetArray(database_holder, index, vips_database) if(vips_database[flags] & FLAG_D) { if(equal(ip, vips_database[auth])) { if(!(vips_database[flags] & FLAG_E)) { if(equal(client_password, vips_database[password])) g_user_privileges[id] = vips_database[accessflags] else if(vips_database[flags] & FLAG_A) { server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS") break } } else g_user_privileges[id] = vips_database[accessflags] get_flags(vips_database[accessflags], log_flags, 10) log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags) break } } else if(vips_database[flags] & FLAG_C) { if(equal(authid, vips_database[auth])) { if(!(vips_database[flags] & FLAG_E)) { if(equal(client_password, vips_database[password])) g_user_privileges[id] = vips_database[accessflags] else if(vips_database[flags] & FLAG_A) { server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS") break } } else g_user_privileges[id] = vips_database[accessflags] get_flags(vips_database[accessflags], log_flags, 10) log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags) break } } else { if(vips_database[flags] & FLAG_K) { if((vips_database[flags] & FLAG_B && contain(name, vips_database[auth]) != -1) || equal(name, vips_database[auth])) { if(!(vips_database[flags] & FLAG_E)) { if(equal(client_password, vips_database[password])) g_user_privileges[id] = vips_database[accessflags] else if(vips_database[flags] & FLAG_A) { server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS") break } } else g_user_privileges[id] = vips_database[accessflags] get_flags(vips_database[accessflags], log_flags, 10) log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags) break } } else { if((vips_database[flags] & FLAG_B && containi(name, vips_database[auth]) != -1) || equali(name, vips_database[auth])) { if(!(vips_database[flags] & FLAG_E)) { if(equal(client_password, vips_database[password])) g_user_privileges[id] = vips_database[accessflags] else if(vips_database[flags] & FLAG_A) { server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS") break } } else g_user_privileges[id] = vips_database[accessflags] get_flags(vips_database[accessflags], log_flags, 10) log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags) break } } } }}#endif#if MODE & (1<<0) && MODE & (1<<1)stock generate_password(id) { new password_holder[30] formatex(password_holder, charsmax(password_holder), "%d%d%d%d%d", random(10), random(10), random(10), random(10), random(10)) client_cmd(id, "setinfo %s %s", amx_password_field_string, password_holder)}#endif#if MODE & (1<<0)public native_zv_get_user_flags(id) return g_user_privileges[id]#endif#if MODE & (1<<1)public native_zv_register_extra_item(const item_name[], const item_discription[], item_cost, item_team){ if(!items_database) items_database = ArrayCreate(items) param_convert(1) param_convert(2) copy(extra_items[i_name], 30, item_name) copy(extra_items[i_description], 30, item_discription) extra_items[i_cost] = item_cost extra_items[i_team] = item_team ArrayPushArray(items_database, extra_items) g_registered_items_count++ return g_registered_items_count} public plugin_end() if(items_database) ArrayDestroy(items_database)#endif
Who is online
Users browsing this forum: No registered users and 3 guests