Плагін «Ефекти під час убивства» для CS 1.6
Про матеріал

Бажаєш різноманітності на сервері? Ці ефекти вбивств тобі допоможуть.
Є лише 3 ефектів убивства.
Є лише 3 ефектів убивства.
Плагін підійде для будь-якого моду, усього є 3 ефектів:
- Хмара крові
- Блискавка
- Вибух
Усі ефекти розподілені за різними прапорами.
Тобто, коли гравець із прапором убиває іншого гравця, убивство відбуватиметься з певним ефектом.
Тобто, коли гравець із прапором убиває іншого гравця, убивство відбуватиметься з певним ефектом.
Оскільки надходить багато скарг на плагін, нову версію трохи оптимізовано. Спробуйте
#include <amxmodx>
new const VERSION[] = "1.0";
// Задаємо числові значення прапорів
new const FLAG_LIGHTNING = ADMIN_BAN; // Прапор "b"
new const FLAG_EXPLOSION = ADMIN_IMMUNITY; // Прапор "a"
new const FLAG_BLOOD = ADMIN_LEVEL_A; // Прапор "p"
new i_sExplosion, i_sLgtning;
public plugin_precache() {
i_sExplosion = precache_model("sprites/dexplo.spr");
i_sLgtning = precache_model("sprites/lgtning.spr");
precache_sound("ambience/thunder_clap.wav");
}
public plugin_init() {
register_plugin("[AMXX] Death Effects", VERSION, "OverGame");
register_event("DeathMsg", "EventDeathMessage", "a");
}
public EventDeathMessage() {
new i_Attacker = read_data(1);
new i_Victim = read_data(2);
new iFlagsAttacker = get_user_flags(i_Attacker);
if(iFlagsAttacker & FLAG_EXPLOSION) {
new _:fOrigin[3];
get_user_origin(i_Victim, fOrigin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_EXPLOSION);
write_coord(fOrigin[0]);
write_coord(fOrigin[1]);
write_coord(fOrigin[2]);
write_short(i_sExplosion);
write_byte(10);
write_byte(15);
write_byte(0);
message_end();
} else if(iFlagsAttacker & FLAG_LIGHTNING) {
new fEnd[3], fStart[3];
get_user_origin(i_Victim, fEnd);
fEnd[2] -= 26;
fStart[0] = fEnd[0] + 150;
fStart[1] = fEnd[1] + 150;
fStart[2] = fEnd[2] + 800;
create_thunder(fStart, fEnd);
} else if(iFlagsAttacker & FLAG_BLOOD) {
new _:fOrigin[3];
get_user_origin(i_Victim, fOrigin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, _, i_Victim);
write_byte(TE_LAVASPLASH);
write_coord(fOrigin[0] + 5);
write_coord(fOrigin[1] + 5);
write_coord(fOrigin[2]);
message_end();
}
}
stock create_thunder(fStart[3], fEnd[3]) {
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMPOINTS);
write_coord(fStart[0]);
write_coord(fStart[1]);
write_coord(fStart[2]);
write_coord(fEnd[0]);
write_coord(fEnd[1]);
write_coord(fEnd[2]);
write_short(i_sLgtning);
write_byte(1);
write_byte(5);
write_byte(7);
write_byte(20);
write_byte(30);
write_byte(0); //r
write_byte(0); //g
write_byte(255); //b
write_byte(200);
write_byte(200);
message_end();
message_begin(MSG_PVS, SVC_TEMPENTITY, fEnd);
write_byte(TE_SPARKS);
write_coord(fEnd[0]);
write_coord(fEnd[1]);
write_coord(fEnd[2]);
message_end();
emit_sound(0, CHAN_ITEM, "ambience/thunder_clap.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
}
new const VERSION[] = "1.0";
// Задаємо числові значення прапорів
new const FLAG_LIGHTNING = ADMIN_BAN; // Прапор "b"
new const FLAG_EXPLOSION = ADMIN_IMMUNITY; // Прапор "a"
new const FLAG_BLOOD = ADMIN_LEVEL_A; // Прапор "p"
new i_sExplosion, i_sLgtning;
public plugin_precache() {
i_sExplosion = precache_model("sprites/dexplo.spr");
i_sLgtning = precache_model("sprites/lgtning.spr");
precache_sound("ambience/thunder_clap.wav");
}
public plugin_init() {
register_plugin("[AMXX] Death Effects", VERSION, "OverGame");
register_event("DeathMsg", "EventDeathMessage", "a");
}
public EventDeathMessage() {
new i_Attacker = read_data(1);
new i_Victim = read_data(2);
new iFlagsAttacker = get_user_flags(i_Attacker);
if(iFlagsAttacker & FLAG_EXPLOSION) {
new _:fOrigin[3];
get_user_origin(i_Victim, fOrigin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_EXPLOSION);
write_coord(fOrigin[0]);
write_coord(fOrigin[1]);
write_coord(fOrigin[2]);
write_short(i_sExplosion);
write_byte(10);
write_byte(15);
write_byte(0);
message_end();
} else if(iFlagsAttacker & FLAG_LIGHTNING) {
new fEnd[3], fStart[3];
get_user_origin(i_Victim, fEnd);
fEnd[2] -= 26;
fStart[0] = fEnd[0] + 150;
fStart[1] = fEnd[1] + 150;
fStart[2] = fEnd[2] + 800;
create_thunder(fStart, fEnd);
} else if(iFlagsAttacker & FLAG_BLOOD) {
new _:fOrigin[3];
get_user_origin(i_Victim, fOrigin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, _, i_Victim);
write_byte(TE_LAVASPLASH);
write_coord(fOrigin[0] + 5);
write_coord(fOrigin[1] + 5);
write_coord(fOrigin[2]);
message_end();
}
}
stock create_thunder(fStart[3], fEnd[3]) {
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMPOINTS);
write_coord(fStart[0]);
write_coord(fStart[1]);
write_coord(fStart[2]);
write_coord(fEnd[0]);
write_coord(fEnd[1]);
write_coord(fEnd[2]);
write_short(i_sLgtning);
write_byte(1);
write_byte(5);
write_byte(7);
write_byte(20);
write_byte(30);
write_byte(0); //r
write_byte(0); //g
write_byte(255); //b
write_byte(200);
write_byte(200);
message_end();
message_begin(MSG_PVS, SVC_TEMPENTITY, fEnd);
write_byte(TE_SPARKS);
write_coord(fEnd[0]);
write_coord(fEnd[1]);
write_coord(fEnd[2]);
message_end();
emit_sound(0, CHAN_ITEM, "ambience/thunder_clap.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
}


Коментарі (5)