Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Установить лимит на использование маркера

Статус пользователя nikson1337
сообщение 25.12.2016, 16:05
Сообщение #1
Стаж: 9 лет 5 месяцев

Сообщений: 127
Благодарностей: 5
Полезность: < 0


Доброй ночи всем хотел спросить,такая ситуация есть код маркера,после того как используешь весь маркер,то спрайт хука не отображается возможно ли как то поставить лимит на маркер?
что бы при этом хватало на отображения хука
Извините если не внятно объяснил не знаю как толком мысль сформировать
Исходник
Код
    register_clcmd("+paint", "ClCmd_ConsPaint");
    register_clcmd("-paint", "ClCmd_ConsPaint");
    
    public ClCmd_ConsPaint(client) {
    if(!IsSetBit(g_iBitUserDuel, client) && g_iDayMode != 3 && IsSetBit(g_iBitUserAlive, client) && g_iChiefId == client) {
        static cmd[2];
        read_argv(0, cmd, 1);

        switch(cmd[0]) {
            case '+': is_drawing[client] = true;
            case '-': is_drawing[client] = false;
        }
    } else return PLUGIN_HANDLED;
    return PLUGIN_HANDLED;
}

public FakeMeta_PreThink(id)
{
    if(prethink_counter[id]++ > 5)
    {
        if(g_iChiefId == id && is_drawing[id] && !is_aiming_at_sky(id))
        {
            static Float:cur_origin[3], Float:distance;

            cur_origin = origin[id];
            
            if(!is_holding[id])
            {
                fm_get_aim_origin(id, origin[id]);
                move_toward_client(id, origin[id]);
                is_holding[id] = true;
                
                return FMRES_IGNORED;
            }
            
            fm_get_aim_origin(id, origin[id]);
            move_toward_client(id, origin[id]);
            
            distance = get_distance_f(origin[id], cur_origin);
            
            if(distance > 2)
            {
                draw_line(origin[id], cur_origin);
            }
        }
        else
        {
            is_holding[id] = false;
        }
        prethink_counter[id] = 0;
    }
    
    return FMRES_IGNORED;
}

stock draw_line(Float:origin1[3], Float:origin2[3])
{
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
    write_byte(TE_BEAMPOINTS);
    engfunc(EngFunc_WriteCoord, origin1[0]);
    engfunc(EngFunc_WriteCoord, origin1[1]);
    engfunc(EngFunc_WriteCoord, origin1[2]);
    engfunc(EngFunc_WriteCoord, origin2[0]);
    engfunc(EngFunc_WriteCoord, origin2[1]);
    engfunc(EngFunc_WriteCoord, origin2[2]);
    write_short(g_pSpritePaint);
    write_byte(0);
    write_byte(15);
    write_byte(255);
    write_byte(100);
    write_byte(0);
    write_byte(255); // R
    write_byte(89); // G
    write_byte(233); // B
    write_byte(255);
    write_byte(0);
    message_end();
}

stock fm_get_aim_origin(index, Float:origin[3])
{
    static Float:start[3], Float:view_ofs[3];
    pev(index, pev_origin, start);
    pev(index, pev_view_ofs, view_ofs);
    xs_vec_add(start, view_ofs, start);
    
    static Float:dest[3];
    pev(index, pev_v_angle, dest);
    engfunc(EngFunc_MakeVectors, dest);
    global_get(glb_v_forward, dest);
    xs_vec_mul_scalar(dest, 9999.0, dest);
    xs_vec_add(start, dest, dest);
    
    engfunc(EngFunc_TraceLine, start, dest, 0, index, 0);
    get_tr2(0, TR_vecEndPos, origin);
    
    return 1;
}

stock move_toward_client(id, Float:origin[3])
{        
    static Float:player_origin[3];
    
    pev(id, pev_origin, player_origin);
    
    origin[0] += (player_origin[0] > origin[0]) ? 1.0 : -1.0;
    origin[1] += (player_origin[1] > origin[1]) ? 1.0 : -1.0;
    origin[2] += (player_origin[2] > origin[2]) ? 1.0 : -1.0;
}

bool:is_aiming_at_sky(index)
{
    new Float:origin[3];
    fm_get_aim_origin(index, origin);

    return engfunc(EngFunc_PointContents, origin) == CONTENTS_SKY;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя nikson1337
сообщение 27.12.2016, 3:26
Сообщение #2
Стаж: 9 лет 5 месяцев

Сообщений: 127
Благодарностей: 5
Полезность: < 0

я так понял что я изложил проблему не внятно
Попробую объяснить
У меня стоит плагин маркера (в консоли пишем bind key +paint) и рисуем используя спрайт когда достигаем лимита потому что постоянно им нельзя рисовать он перестает рисовать пока старый худ который уже нарисован не пропадет.Так вот когда я полностью его использую и потом например использую хук следом,то спрайт хука не отображается пока не пропадет часть спрайта маркера,можно как то задать лимит что бы хватало на хук (я понимаю что маркер можно будет использовать меньше ) но это даст мне нормальное отображение хука.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sunrise
сообщение 27.12.2016, 9:51
Сообщение #3
Стаж: 9 лет 8 месяцев

Сообщений: 60
Благодарностей: 14
Полезность: 179

Попробуй спрайт хука сделать в reliable канале.
В исходнике хука, где TE_BEAMPOINTS, MSG_BROADCAST замени на MSG_ALL.


pick rylai pls
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя nikson1337
сообщение 27.12.2016, 15:37
Сообщение #4
Стаж: 9 лет 5 месяцев

Сообщений: 127
Благодарностей: 5
Полезность: < 0

Цитата(sunrise @ 27.12.2016, 10:51) *
Попробуй спрайт хука сделать в reliable канале.
В исходнике хука, где TE_BEAMPOINTS, MSG_BROADCAST замени на MSG_ALL.

Спасибо большое а то не кто не давал помощи буду дома попробую отпишусь
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nikson1337
сообщение 27.12.2016, 16:01
Сообщение #5
Стаж: 9 лет 5 месяцев

Сообщений: 127
Благодарностей: 5
Полезность: < 0

Цитата(sunrise @ 27.12.2016, 10:51) *
Попробуй спрайт хука сделать в reliable канале.
В исходнике хука, где TE_BEAMPOINTS, MSG_BROADCAST замени на MSG_ALL.

Привет еще раз не помогло( может можно еще что то попробовать?
на форумах везде искал нечего нету

Цитата(sunrise @ 27.12.2016, 10:51) *
Попробуй спрайт хука сделать в reliable канале.
В исходнике хука, где TE_BEAMPOINTS, MSG_BROADCAST замени на MSG_ALL.


Вроде все верно сделал
Код
stock draw_line(Float:origin1[3], Float:origin2[3])
{
    message_begin(MSG_ALL, SVC_TEMPENTITY);
    write_byte(TE_BEAMPOINTS);
    engfunc(EngFunc_WriteCoord, origin1[0]);
    engfunc(EngFunc_WriteCoord, origin1[1]);
    engfunc(EngFunc_WriteCoord, origin1[2]);
    engfunc(EngFunc_WriteCoord, origin2[0]);
    engfunc(EngFunc_WriteCoord, origin2[1]);
    engfunc(EngFunc_WriteCoord, origin2[2]);
    write_short(g_pSpritePaint);
    write_byte(0);
    write_byte(15); // 0
    write_byte(255);
    write_byte(100);
    write_byte(0);
    write_byte(255); // R
    write_byte(89); // G
    write_byte(233); // B
    write_byte(255);
    write_byte(0);
    message_end();
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sunrise
сообщение 27.12.2016, 18:17
Сообщение #6
Стаж: 9 лет 8 месяцев

Сообщений: 60
Благодарностей: 14
Полезность: 179

В исходнике хука


pick rylai pls
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя nikson1337
сообщение 27.12.2016, 21:19
Сообщение #7
Стаж: 9 лет 5 месяцев

Сообщений: 127
Благодарностей: 5
Полезность: < 0

Цитата(sunrise @ 27.12.2016, 19:17) *
В исходнике хука

Очень надеялся что получиться но не помогло может у вас еще есть идеи как можно сделать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Inline
сообщение 30.12.2016, 11:32
Сообщение #8


Стаж: 10 лет

Сообщений: 139
Благодарностей: 80
Полезность: 447

Цитата(nikson1337 @ 27.12.2016, 22:19) *
Очень надеялся что получиться но не помогло может у вас еще есть идеи как можно сделать?

nikson1337,
Конечно не помогло, простое бессмысленное для цели действие, к тому же вредное (reliable канал не стоит такими сообщениями заполнять)․
Не знаю, чем ваш вариант отличается от оригинала, но взял оригинальный плагин․

Что изменил։
1. Исправлен баг, когда по непонятным причинам маркер зажимался, когда игрок мёртв
2․ Добавлено ограничение на количество нарисованных линий

#define MAX_BEAMPOINTS 120 // Максимальное кол-во линий
#define DECREASE_STEP 10 // Количество линий, которые удаляются из счётчика после 25․5 секунд (столько "жизнь" линии)

Чем меньше DECREASE_STEP, тем больше task-ов будет генерироваться, думаю значение 10 оптимально․
Возможно есть более лучшие варианты реализации, но мне пришёл первым на ум именно этот․

Прикрепленный файл  magic_marker.sma ( 4,13 килобайт ) Кол-во скачиваний: 17


Не читай
Не забывай нажимать кнопку "спасибо"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: