/* Plugin generated by AMXX-Studio */ #include #include #include #include #define PLUGIN "Bomba atomowa z licznikiem czasu i muzyka" #define VERSION "1.0" #define AUTHOR "SaS#PL" #define TID 4738 #define TUTORIAL 1001 #define TASK_TUT 1111 #define MSOUND "items/nvg_off.wav" /* dźwięk który będzie odtwarzany gdy tutor się ukarze */ /*************EDIT THIS***************/ #define W_C4 "models/w_c4.mdl" #define V_C4 "models/v_c4.mdl" //#define P_C4 "models//p_c4.mdl" #define ALARM_LEN 2.83 /*************EDIT END***************/ enum { RED = 1, BLUE, YELLOW, GREEN } /* 4 typy o których wspominałem */ new const g_TutorPrecache[][] = { "gfx/career/icon_!.tga", "gfx/career/icon_!-bigger.tga", "gfx/career/icon_i.tga", "gfx/career/icon_i-bigger.tga", "gfx/career/icon_skulls.tga", "gfx/career/round_corner_ne.tga", "gfx/career/round_corner_nw.tga", "gfx/career/round_corner_se.tga", "gfx/career/round_corner_sw.tga", "resource/TutorScheme.res", "resource/UI/TutorTextWindow.res" } /* Pliki które są potrzebne aby tutor wyglądał jak w czero */ new g_msg_geiger new g_msg_statusicon new g_ent_bp new bool:g_ent_c4 new g_ent_owner new pc_backpack_glow, pc_c4_glow, pc_geiger new pc_geiger_icon, pc_nuke_c4_nosound, pc_nuke_c4_noled new pr_ledglow new bool:g_inrange[32] new g_MsgTutor new g_MsgTutClose new g_c4timer, pointnum; new bool:b_planted = false; new pc; new t; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_MsgTutor = get_user_msgid("TutorText") g_MsgTutClose = get_user_msgid("TutorClose") pointnum = get_cvar_pointer("mp_c4timer") register_logevent("newRound", 2, "1=Round_Start"); register_logevent("endRound", 2, "1=Round_End"); register_logevent("endRound", 2, "1&Restart_Round_"); pc_backpack_glow = register_cvar("nuke_backpack_glow", "1") pc_c4_glow = register_cvar("nuke_c4_glow", "1") pc_geiger = register_cvar("nuke_geiger", "1") pc_geiger_icon = register_cvar("nuke_geiger_icon", "1") pc_nuke_c4_nosound = register_cvar("nuke_c4_nosound", "1") pc_nuke_c4_noled = register_cvar("nuke_c4_noled", "1") g_msg_geiger = get_user_msgid("Geiger") g_msg_statusicon = get_user_msgid("StatusIcon") //register_logevent("RoundStart", 2, "1=Round_Start") register_logevent("BombDroped", 3, "2=Dropped_The_Bomb") register_logevent("BombPlanted", 3, "2=Planted_The_Bomb") register_logevent("BombDefused", 3, "2=Defused_The_Bomb") register_logevent("BombExploded", 6, "3=Target_Bombed") register_logevent("BombSpawned", 3, "2=Spawned_With_The_Bomb") register_logevent("GotBomb", 3, "2=Got_The_Bomb") register_logevent("planted", 3, "2=Planted_The_Bomb"); register_logevent("Koniec_Rundy", 2, "1=Round_End") register_event("HLTV", "RoundStart", "a", "1=0", "2=0") //register_event("WeapPickup", "GotBomb", "be", "1=15") register_message(g_msg_statusicon, "Check_Icon") register_message(SVC_TEMPENTITY, "Block_Sprite") #if defined W_BACKPACK || defined W_C4 register_forward(FM_SetModel,"ModelChanged",1) register_forward(FM_EmitSound, "Block_Sound") #endif #if defined P_C4 || defined V_C4 register_event("CurWeapon","WeaponChanged","be","1=1") #endif set_task(1.0, "check_geiger", _, _, _, "b") set_task(10.0, "check_bombsites") pc = get_cvar_pointer("mp_c4timer"); } /* Tutaj znajdują się ustawienia aby tutor działał */ MakeTutor(id,Text[],Color,Float:Time = 0.0){ if(is_user_connected( id )) { if(!id){ message_begin(MSG_ALL,g_MsgTutor) write_string(Text) write_byte(0) write_short(0) write_short(0) write_short(1<= 0) { new Text[100] formatex(Text,191,"Bomba wybuchnie za : %d ", g_c4timer) for(new i=1; i<=33; i++){ if(is_user_connected(i)){ if(g_c4timer>30){ MakeTutor(i,Text,GREEN,1.0) } else if(g_c4timer>20){ MakeTutor(i,Text,BLUE,1.0) } else if(g_c4timer>10){ MakeTutor(i,Text,YELLOW,1.0) } else if(g_c4timer<=10){ MakeTutor(i,Text,RED,1.0) } } } --g_c4timer; } } public client_connect(id) { g_inrange[id] = false } public check_bombsites() { if (!fm_find_ent_by_class(-1, "func_bomb_target") && !fm_find_ent_by_class(-1, "info_bomb_target")) pause("a") return PLUGIN_HANDLED } public RoundStart() { g_ent_bp = 0 g_ent_c4 = false g_ent_owner = 0 } public BombDroped() { set_task(0.1, "get_owner") } public get_owner() { g_ent_owner = pev(g_ent_bp, pev_owner) if (get_pcvar_num(pc_backpack_glow)) { set_pev(g_ent_owner, pev_renderfx, kRenderFxGlowShell) set_pev(g_ent_owner, pev_renderamt, 255.0) set_pev(g_ent_owner, pev_rendermode, kRenderTransAlpha) set_pev(g_ent_owner, pev_rendercolor, {0.0, 255.0, 0.0}) } } public GotBomb() { new LogMsg[64], username[32] read_logdata (LogMsg, 63) parse_loguser (LogMsg, username, 31) replace(username, 31, "^"", "") new id = get_user_index(username) if (!g_ent_bp) { new ent = -1, owner while ((ent = fm_find_ent_by_class(ent, "weapon_c4"))) { owner = pev(ent, pev_owner) if (owner==id) { g_ent_bp = ent g_ent_owner = id break } } } g_ent_owner = id } public BombPlanted() { new ent = -1 while ((ent = fm_find_ent_by_class(ent, "grenade")) != 0) { if (pev(ent, pev_spawnflags)) { if (get_pcvar_num(pc_c4_glow)) { set_pev(ent, pev_renderfx, kRenderFxGlowShell) set_pev(ent, pev_renderamt, 255.0) set_pev(ent, pev_rendermode, kRenderTransAlpha) set_pev(ent, pev_rendercolor, {0.0, 255.0, 0.0}) } g_ent_c4 = true g_ent_owner = ent } } #if defined ALARM && defined ALARM_LEN new Float:c4alarm = get_cvar_num("mp_c4timer") - 5 * (ALARM_LEN + 0.2) * 1.0 if (c4alarm>0) set_task(c4alarm, "prepare_alarm") emit_sound(g_ent_owner, CHAN_AUTO, ALARM, VOL_NORM, ATTN_STATIC, 0, PITCH_NORM) #endif } #if defined ALARM public prepare_alarm() { set_task(ALARM_LEN, "play_alarm", _, _, _, "a", 4) } public play_alarm() { emit_sound(g_ent_owner, CHAN_AUTO, ALARM, 0.8, ATTN_NORM, 0, PITCH_NORM) } #endif public BombDefused() { g_ent_owner = 0 } public BombExploded() { g_ent_owner = 1 } public BombSpawned() { if (!g_ent_owner) { new LogMsg[64], username[32] read_logdata (LogMsg, 63) parse_loguser (LogMsg, username, 31) replace(username, 31, "^"", "") new id = get_user_index(username) new ent = -1, owner while ((ent = fm_find_ent_by_class(ent, "weapon_c4"))) { owner = pev(ent, pev_owner) if (owner==id) { g_ent_bp = ent break } } g_ent_owner = id } } public ModelChanged(ent, model[]) { if(!pev_valid(ent)) return FMRES_IGNORED #if defined W_BACKPACK if (equal(model, "models/w_backpack.mdl")) { engfunc(EngFunc_SetModel, ent, W_BACKPACK) return FMRES_SUPERCEDE } #endif #if defined W_C4 if (equal(model, "models/w_c4.mdl")) { engfunc(EngFunc_SetModel, ent, W_C4) return FMRES_SUPERCEDE } #endif return FMRES_IGNORED } public WeaponChanged(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE new model[32] pev(id, pev_viewmodel2, model, 31) #if defined V_C4 if (equal(model, "models/v_c4.mdl")) { set_pev(id, pev_viewmodel2, V_C4) return PLUGIN_CONTINUE } #endif #if defined P_C4 if (equal(model, "models/p_c4.mdl")) { set_pev(id, pev_weaponmodel2, P_C4) return PLUGIN_CONTINUE } #endif return PLUGIN_CONTINUE } public check_geiger() { if (get_pcvar_num(pc_geiger) && g_ent_owner) { new players[32], num get_players(players, num) for (new i; i