#include #include #include #include #include #include #include new const gNazwaPluginu[] = "V.i.P"; new const gWersjaPluginu[] = "0.4.5"; new const gAutorPluginu[] = "MisieQ"; #pragma semicolon 1 #define HP 200 //ilosc hp na start #include "vip/konfiguracja.inl" #if defined LISTA_VIP /* -=[ Lista graczy ktorzy posiadaja status V.i.P - Kolor ]=- */ static const COLOR[] = "^x04"; /* -=[ Lista Kolorow ]=- * ^x01 - Info wyswietlane jest na zolto * ^x03 - Info wyswietlane jest na zielono * ^x04 - Info wyswietlane jest na kolor teamu (czerwono - TT / niebiesko - CT) */ #endif public plugin_init() { register_plugin(gNazwaPluginu, gWersjaPluginu, gAutorPluginu); #if defined STATUS_VIP register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib"); #endif #if defined PODWOJNY_SKOK_VIP register_forward(FM_CmdStart, "CmdStart"); #endif RegisterHam(Ham_Spawn, "player", "fwSpawn", 1); #if defined BULLET_DAMAGE_VIP register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0"); register_event("HLTV", "on_new_round", "a", "1=0", "2=0"); g_hudmsg1 = CreateHudSyncObj(); g_hudmsg2 = CreateHudSyncObj(); #endif #if defined DODATKOWE_HP_VIP register_event("DeathMsg", "hook_death", "a", "1>0"); #endif #if defined LISTA_VIP gMSGSayText = get_user_msgid("SayText"); #endif #if defined MENU_BRONI_VIP register_logevent("Nowa_Runda", 2, "1=Round_Start"); register_logevent("Restart_Rund", 2, "1=Game_Commencing"); register_event("TextMsg", "Restart_Rund", "a", "2&Game_will_restart_in"); #endif #if defined DODATKOWA_KASA_ZABICIE_VIP register_event("Damage","Damage","b"); #endif #if defined GRAVITACJA_VIP register_event("CurWeapon", "Event_CurWeapon", "be", "1=1"); #endif #if defined VIP_WERSJA register_clcmd("say /wersja","ViPWersja"); register_clcmd("say_team /wersja","ViPWersja"); #endif #if defined INFO_VIP register_clcmd("say /vip","ViPInfo"); register_clcmd("say_team /vip","ViPInfo"); #endif #if defined LISTA_VIP register_clcmd("say /vips","ViPLista"); register_clcmd("say_team /vips","ViPLista"); #endif #if defined BULLET_DAMAGE_VIP gAdvencedBulletDamage = register_cvar("vip_abd", "1"); g_recieved = register_cvar("vip_bulletdamage_recieved","1"); #endif #if defined MENU_BRONI_VIP gMenuBroniViPRunda = register_cvar("vip_menubroni_runda", "3"); #endif gMaxPlayers = get_maxplayers(); register_cvar("vip_wersja", gWersjaPluginu, FCVAR_SERVER); set_cvar_string("vip_wersja", gWersjaPluginu); } #if defined STATUS_VIP public msgScoreAttrib( const MsgId, const MsgType, const MsgDest ) { static id; id = get_msg_arg_int( 1 ); if( ( get_user_flags( id ) & VIP ) && !get_msg_arg_int( 2 )) { set_msg_arg_int( 2, ARG_BYTE, ( 1 << 2 ) ); } } #endif #if defined MODEL_VIP public plugin_precache() { precache_model(gModelGraczaCTVipPobieranie); precache_model(gModelGraczaTTVipPobieranie); } #endif #if defined PODWOJNY_SKOK_VIP public CmdStart(id, uc_handle) { if ( !is_user_alive(id) ) return HAM_IGNORED; new flags = pev(id, pev_flags); if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && moze_skoczyc[id] && (get_user_flags(id) & VIP)) { moze_skoczyc[id] = false; new Float:velocity[3]; pev(id, pev_velocity,velocity); velocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity,velocity); } else if(flags & FL_ONGROUND) { moze_skoczyc[id] = true; } return HAM_IGNORED; } #endif #if defined BULLET_DAMAGE_VIP public on_new_round(id) { g_enabled = get_pcvar_num(gAdvencedBulletDamage); if(get_pcvar_num(g_recieved) && get_user_flags(id) & VIP) { g_showrecieved = true; } return PLUGIN_CONTINUE; } public on_damage(id) { if(g_enabled) { static attacker; attacker = get_user_attacker(id); static damage; damage = read_data(2); if(g_showrecieved) { set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1); ShowSyncHudMsg(id, g_hudmsg2, "%i^n", damage); } if(is_user_connected(attacker) && get_user_flags(attacker) & VIP) { switch(g_enabled) { case 1: { set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1); ShowSyncHudMsg(attacker, g_hudmsg1, "%i^n", damage); } case 2: { 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_hudmsg1, "%i^n", damage); } } } } } return PLUGIN_CONTINUE; } #endif public hook_death() { #if defined DODATKOWE_HP_VIP nKiller = read_data(1); if ( (read_data(3) == 1) && (read_data(5) == 0) ) { nHp_add = DODAJ_HP; } else { nHp_add = DODAJ_HS_HP; } nHp_max = HP; if(!(get_user_flags(nKiller) & VIP)) return; nKiller_hp = get_user_health(nKiller); nKiller_hp += nHp_add; if (nKiller_hp > nHp_max) nKiller_hp = nHp_max; fm_set_user_health(nKiller, nKiller_hp); set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1); show_hudmessage(nKiller, "Dostales +%d hp", nHp_add); message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller); write_short(1<<10); write_short(1<<10); write_short(0x0000); write_byte(0); write_byte(0); write_byte(200); write_byte(75); message_end(); #endif #if defined DODATKOWA_KASA_ZABICIE_VIP if(read_data(1)<=gMaxPlayers && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + KASA_ZABICIE); #endif } public fwSpawn(id) { if ( !is_user_alive(id) ) return HAM_IGNORED; #if defined MODEL_VIP new CsTeams:userTeam = cs_get_user_team(id); #endif if(get_user_flags(id) & VIP) { #if defined GRANATY_GB_VIP fm_give_item(id, "weapon_flashbang"); fm_give_item(id, "weapon_flashbang"); #endif #if defined GRANAT_SG_VIP fm_give_item(id, "weapon_smokegrenade"); #endif #if defined GRANAT_HE_VIP fm_give_item(id, "weapon_hegrenade"); #endif #if defined KAMIZELKA_VIP fm_set_user_armor(id, 100); #endif #if defined PODWOJNY_SKOK_VIP moze_skoczyc[id] = true; #endif #if defined CICHE_CHODZENIE_VIP set_user_footsteps(id, 1); #endif #if defined HP fm_set_user_health(id, HP); #endif #if defined GRAVITACJA_VIP if(get_user_weapon(id) == CSW_KNIFE && get_user_flags(id) & VIP) { fm_set_user_gravity(id, 0.4); } else if(get_user_weapon(id) != CSW_KNIFE && get_user_flags(id) & VIP) { fm_set_user_gravity(id, 1.0); } #endif #if defined NIEWIDZIALNOSC_VIP fm_set_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 160); #endif #if defined MODEL_VIP if (userTeam == CS_TEAM_T) { cs_set_player_model(id, gModelGraczaTTVip); } else if(userTeam == CS_TEAM_CT) { cs_set_player_model(id, gModelGraczaCTVip); } else { cs_reset_player_model(id); } #endif } return HAM_IGNORED; } #if defined INFO_VIP public ViPInfo(id) { show_motd(id, "ViP.txt"); } #endif #if defined LISTA_VIP public ViPLista(id) { new nazwy_vip[33][32]; new message[256]; new count, x, len; for(new i = 1 ; i <= gMaxPlayers ; i++) { if(is_user_connected(i)) { if(get_user_flags(i) & VIP) { get_user_name(i, nazwy_vip[count++], 31); } } } len = format(message, 255, "%s ViP'y ONLINE: ",COLOR); if(count > 0) { for(x = 0 ; x < count ; x++) { len += format(message[len], 255-len, "%s%s%s ", COLOR, nazwy_vip[x], x < (count-1) ? "^x01, ":""); if(len > 96 ) { print_message(id, message); len = format(message, 255, "%s ",COLOR); } } print_message(id, message); } else { len += format(message[len], 255-len, "Brak ViP'ow Online"); print_message(id, message); } return PLUGIN_HANDLED; } print_message(id, msg[]) { message_begin(MSG_ONE, gMSGSayText, {0,0,0}, id); write_byte(id); write_string(msg); message_end(); } #endif #if defined MENU_BRONI_VIP public Restart_Rund() { Runda = 0; } public Nowa_Runda() { Runda++; for(new i = 1 ; i <= gMaxPlayers ; i++) { if(get_user_flags(i) & VIP) { if(Runda > get_pcvar_num(gMenuBroniViPRunda)) { menu_broni(i); } } } return PLUGIN_HANDLED; } public menu_broni(id) { new menu = menu_create("\rV.i.P - Menu Broni:", "menu_broni_wybor"); menu_additem(menu, "\wM4A1\r+\wDeagle\r+\wGranaty", "0", 0); menu_additem(menu, "\wAK47\r+\wDeagle\r+\wGranaty", "1", 0); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); return PLUGIN_CONTINUE; } public menu_broni_wybor(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new acces, callback; menu_item_getinfo(menu, item, acces, data,5, iName, 63, callback); new key = str_to_num(data); new CsTeams:userTeam = cs_get_user_team(id); switch(key) { case 0: { if (user_has_weapon(id, CSW_C4) && userTeam == CS_TEAM_T) { MaC4[id] = true; } else { MaC4[id] = false; } strip_user_weapons(id); give_item(id,"weapon_m4a1"); cs_set_user_bpammo(id, CSW_M4A1, 120); give_item(id,"weapon_deagle"); cs_set_user_bpammo(id, CSW_DEAGLE, 42); give_item(id,"weapon_knife"); give_item(id, "weapon_hegrenade"); give_item(id, "weapon_flashbang"); give_item(id, "weapon_flashbang"); give_item(id, "weapon_smokegrenade"); give_item(id, "item_assaultsuit"); give_item(id, "item_thighpack"); client_print(id, print_center, "Wziales M4A1, Deagle i HE!"); if (MaC4[id]) { give_item(id, "weapon_c4"); cs_set_user_plant(id, 1, 1); } menu_destroy(menu); return PLUGIN_HANDLED; } case 1: { if (user_has_weapon(id, CSW_C4) && userTeam == CS_TEAM_T) { MaC4[id] = true; } else { MaC4[id] = false; } strip_user_weapons(id); give_item(id,"weapon_ak47"); cs_set_user_bpammo(id, CSW_AK47, 120); give_item(id,"weapon_deagle"); cs_set_user_bpammo(id, CSW_DEAGLE, 42); give_item(id,"weapon_knife"); give_item(id, "weapon_hegrenade"); give_item(id, "weapon_flashbang"); give_item(id, "weapon_flashbang"); give_item(id, "weapon_smokegrenade"); give_item(id, "item_assaultsuit"); give_item(id, "item_thighpack"); client_print(id, print_center, "Wziales AK47, Deagle i HE!"); if (MaC4[id]) { give_item(id, "weapon_c4"); cs_set_user_plant(id, 1, 1); } menu_destroy(menu); return PLUGIN_HANDLED; } } menu_destroy(menu); return PLUGIN_HANDLED; } #endif #if defined DODATKOWA_KASA_ZABICIE_VIP public Damage(id) { new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint); if(attacker<=gMaxPlayers && is_user_alive(attacker) && attacker!=id) if (get_user_flags(attacker) & VIP) { new money = read_data(2) * KASA_OBRAZENIA; if(hitpoint==1) money += KASA_HS_ZABICIE; cs_set_user_money(attacker,cs_get_user_money(attacker) + money); } return PLUGIN_CONTINUE; } #endif #if defined DODATKOWA_KASA_BOMBA_VIP public bomb_planted(id) { new money = cs_get_user_money(id); new bonus = BOMBA_PODLOZENIE; cs_set_user_money(id, money + bonus); return PLUGIN_CONTINUE; } public bomb_defused(id) { new money = cs_get_user_money(id); new bonus = BOMBA_ROZBROJENIE; cs_set_user_money(id, money + bonus); return PLUGIN_CONTINUE; } #endif #if defined VIP_WERSJA public ViPWersja(id) { ColorChat(id, NORMAL, "Aktualna wersja pluginu^x04 %s^x01 na serwerze to^x03 %s^x01. Autorem pluginu jest^x04 %s", gNazwaPluginu, gWersjaPluginu, gAutorPluginu); } #endif #if defined GRAVITACJA_VIP public Event_CurWeapon(id) { new clip,ammo; new weapon=get_user_weapon(id,clip,ammo); if(weapon == CSW_KNIFE && get_user_flags(id) & VIP) { fm_set_user_gravity(id, 0.4); } else { fm_set_user_gravity(id, 1.0); } } #endif