я уже вкурсе что нагрузка есть,для меня не существенна
это я так, мнение высказал) если можно обойтись без "считаем каждый кадр" -> значит нужно обходится. а если нельзя обойтись -> стоит как можно более оптимизировать код, который будет выполняться каждый кадр) к тому, что в коде MiXa добавил какие-то лишние проверки...
это я так, мнение высказал) если можно обойтись без "считаем каждый кадр" -> значит нужно обходится. а если нельзя обойтись -> стоит как можно более оптимизировать код, который будет выполняться каждый кадр) к тому, что в коде MiXa добавил какие-то лишние проверки...
Уважаемый Legenda
Проверки добавил из за того,что бы только админы могли использовать этот плагин, сейчас пробую сделать вкл/выкл плагина через чат, и тогда считать каждый кадр ненужно будет, здесь кадры считаются для того что бы отловить нажатие кнопки,если сделать просто команды в чат или консоль, то тогда эти проверки будут не нужны) и нагрузка собственно будет намного меньше)
если можно обойтись без "считаем каждый кадр" -> значит нужно обходится
Ты на AddToFullPack в оригинале посмотри Глупо юзать плагины такого рода, когда на, по сути, украшательство 'спрайты, а не квадратики' тратятся такие ресурсы.
Ты на AddToFullPack в оригинале посмотри Глупо юзать плагины такого рода, когда на, по сути, украшательство 'спрайты, а не квадратики' тратятся такие ресурсы.
Чтобы включить вхвьювер, чекают пресинк. Дожили... А команду в чат админы написать не могут ? На крайняк, можно было бы чекнуть кнопку "F" через register_impulse 100, при этом нагрузка нулевая. Про AddToFullPack говорить нечего, кто знает, тот поймет.
кадры считаются для того что бы отловить нажатие кнопки
это белый и пушистый зверек даже не знаю что ответить на такое...
amxx админы, которые используют admin_esp всех видов -> это просто боты, нубы, крабы, раки и т.д. wh как раз таки отлично и в разы лучше видно БЕЗ admin_esp кто как хочет - тот так и "сами придумайте" (развлекаются)
в любом случаи -> советую всем удалить такой плагин и забыть о нем... 1. смысла в нем нет 2. реализация ужасная, что вызывает кучу проблем с нагрузкой и сервером
любые плагины, которые отрабатывают каждый кадр чаще всего приводят либо к лагам, либо к внезапному падению сервера из-за fullupdate
#define PLUGIN "Admin ESP" #define VERSION "1.5b_mini" #define AUTHOR "KoST"
#define OFFSET_TEAM 114
new const g_szPlugin[] = PLUGIN; // Global this since it is used throughout new pcvar_esp, pcvar_esp_timer, pcvar_esp_allow_all, pcvar_esp_disable_default_keys; new team_colors[4][3] = {{0,0,0}, {150,0,0}, {0,0,150}, {0,150,0}}; new esp_colors[5][3] = {{0,255,0}, {100,60,60}, {60,60,100}, {255,0,255}, {128,128,128}}; new bool:admin[33]; // is/is not admin new bool:first_person[33]; // is/is not in first person view new bool:ducking[33]; // is/is not player ducked new bool:mode[33]; // 0 = line, 1 = box new bool:enabled[33]; // has esp on new spec[33]; // spec[player_id]=the players id if new laser; // precached model new max_players; // if you start hlds with +maxplayers 20 for example this would be 20 new damage_done_to[33]; // damage_done_to[p1]=p2 // p1 has hit p2 new view_target[33]; // attackers victim
public plugin_precache() { laser = precache_model("sprites/laserbeam.spr"); }
register_forward(FM_PlayerPreThink, "fwdPlayerPreThink"); max_players = get_maxplayers(); // start esp_timer for the first time set_task(1.0, "esp_timer"); }
public client_putinserver(id) { first_person[id] = false; new args[1]; args[0] = id; set_task(4.0, "delayed_putinserver", id + 100, args, 1); }
public delayed_putinserver(args[0]) { new id = args[0]; if (!is_user_connected(id)) { return PLUGIN_HANDLED; } if ((get_user_flags(id) & REQUIRED_ADMIN_LEVEL) || get_pcvar_num(pcvar_esp_allow_all) == 1) { admin[id] = true; init_admin_options(id); } else { admin[id] = false; } return PLUGIN_CONTINUE; }
if (get_pcvar_num(pcvar_esp) != 1) { // if esp is not 1, it is off set_task(1.0, "esp_timer"); // check for reactivation in 1 sec intervals return PLUGIN_CONTINUE; }
spec_id = spec[i]; pev(i, pev_origin, my_origin); // get origin of spectating admin // get team of spectated :) my_team = get_pdata_int(spec_id, OFFSET_TEAM);
for (s = 1; s <= max_players; s++) { // loop through the targets if (is_user_alive(s)) { // target must be alive // get team of target target_team = get_pdata_int(s, OFFSET_TEAM); if (!(target_team == 3)) { //if not spectator if (spec_id != s) { // do not target myself // if the target is in the other team and not spectator
if (((my_team != target_team && (target_team == 1 || target_team == 2)) )) { // get origin of target pev(s, pev_origin, target_origin);
// get distance from me to target distance = vector_distance(my_origin, target_origin);
if (!mode[i]) { // Draw LINE? // calculate width according to distance width = (distance < 2040.0) ? ( (255 - floatround(distance / 8.0) ) / 3 ) : 1;
if (mode[i]) { // Draw BOX? // this is to make green box darker if distance is larger if (distance_target_hitpoint < 2040.0) { actual_bright = (255 - floatround(distance_target_hitpoint / 12.0)); } else { actual_bright = 85; } if (distance_to_hitpoint != distance) { // if no line of sight color = 0; } else { // if line of sight color = target_team; } if (damage_done_to[spec_id] == s) { color = 3; damage_done_to[spec_id] = 0; } make_TE_BEAMPOINTS(i, color, v_bone_start, v_bone_end, floatround(scaled_bone_width), actual_bright); } } } } } } // inner player loop end } } set_task(get_pcvar_float(pcvar_esp_timer), "esp_timer"); // keep it going return PLUGIN_CONTINUE; }
// Temporary Entities ------------------------------------------------------------------------------ // there is a list of much more temp entities at: http://djeyl.net/forum/index.php?act=Attac...t&id=290870 // all messages are sent with MSG_ONE_UNRELIABLE flag to avoid overflow in case of very low esp_timer setting and much targets
make_TE_BEAMPOINTS(id,color, Float:Vec1[3], Float:Vec2[3], width, brightness) { message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, {0,0,0}, id); //message begin write_byte(0); write_coord(floatround(Vec1[0])); // start position write_coord(floatround(Vec1[1])); write_coord(floatround(Vec1[2])); write_coord(floatround(Vec2[0])); // end position write_coord(floatround(Vec2[1])); write_coord(floatround(Vec2[2])); write_short(laser); // sprite index write_byte(3); // starting frame write_byte(0); // frame rate in 0.1's write_byte(floatround(get_pcvar_float(pcvar_esp_timer) * 10)); // life in 0.1's write_byte(width); // line width in 0.1's write_byte(0); // noise amplitude in 0.01's write_byte(esp_colors[color][0]); write_byte(esp_colors[color][1]); write_byte(esp_colors[color][2]); write_byte(brightness); // brightness) write_byte(0); // scroll speed in 0.1's message_end(); }