Иконка ресурса

[VIP] Reload Progress Bar 1.0.0

HolyHender

Прокуратура на связи
Сообщения
271
Реакции
394
  • Автор ресурса
  • #1
HolyHender добавил(а) новый ресурс:

[VIP] Reload Progress Bar - Индикатор выполнения перезарядки для вип-игроков.

При перезарядке в центре экрана у вип-игроков появляется прогресс-бар.

Оригинальный плагин
Но у @Grey83 есть ошибка в коде, в callback таймера индекс клиента передаёт. Поэтому за основу используется форк от @Wend4r

Видео демонстрация:​
...

Узнать больше об этом ресурсе...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Но у @Grey83 есть ошибка в коде, в callback таймера индекс клиента передаёт.
C-подобный:
if((iClient = GetClientOfUserId(iClient)) && IsClientInGame(iClient) /* When disconnecting it can have an index */)
Масло маслянное.
Если игрок с указанным UserId не на сервере, то GetClientOfUserId() вернёт 0, т.е. проверка IsClientInGame() не нужна.

А закомментированная строка с GetRandomInt(0, 15) нужна была только для тестов. =)
И ещё при математических операциях с int и float на выходе получается float, даже если int не преобразовать в float.
Так что float(iProgressTime) - это лишняя перестраховка.
Вот это:
C-подобный:
    if(g_hTimer[iClient] != INVALID_HANDLE)
    {
        KillTimer(g_hTimer[iClient]);
        g_hTimer[iClient] = INVALID_HANDLE;
    }
в новом синтаксисе выглядит вот так:
C-подобный:
    if(g_hTimer[iClient] != null)
    {
        KillTimer(g_hTimer[iClient]);
        g_hTimer[iClient] = null;
    }
 
или просто

    if(g_hTimer[iClient]) delete g_hTimer[iClient];
И у тебя при каждой перезагрузке создаётся хук SDKHook_WeaponSwitch, который при срабатывании удаляется. А смысл? Если игрок не переключится на другое оружие он так и будет работать.
Ты бы и при срабатывании таймера его отключал (у тебя будет туева хуча включенных хуков, если игрок несколько раз перезарядит оружие, но ни разу не сменит его при этом).
 

xstage

🏹
Сообщения
726
Реакции
754
C-подобный:
if((iClient = GetClientOfUserId(iClient)) && IsClientInGame(iClient) /* When disconnecting it can have an index */)
Масло маслянное.
Если игрок с указанным UserId не на сервере, то GetClientOfUserId() вернёт 0, т.е. проверка IsClientInGame() не нужна.

А закомментированная строка с GetRandomInt(0, 15) нужна была только для тестов. =)
И ещё при математических операциях с int и float на выходе получается float, даже если int не преобразовать в float.
Так что float(iProgressTime) - это лишняя перестраховка.
Вот это:
C-подобный:
    if(g_hTimer[iClient] != INVALID_HANDLE)
    {
        KillTimer(g_hTimer[iClient]);
        g_hTimer[iClient] = INVALID_HANDLE;
    }
в новом синтаксисе выглядит вот так:
C-подобный:
    if(g_hTimer[iClient] != null)
    {
        KillTimer(g_hTimer[iClient]);
        g_hTimer[iClient] = null;
    }

или просто

    if(g_hTimer[iClient]) delete g_hTimer[iClient];
И у тебя при каждой перезагрузке создаётся хук SDKHook_WeaponSwitch, который при срабатывании удаляется. А смысл? Если игрок не переключится на другое оружие он так и будет работать.
Ты бы и при срабатывании таймера его отключал (у тебя будет туева хуча включенных хуков, если игрок несколько раз перезарядит оружие, но ни разу не сменит его при этом).
Какая разница INVALID_HANDLE или null, они обозначают одно и тоже.
И delete вроде не приравнивает к null
 

HolyHender

Прокуратура на связи
Сообщения
271
Реакции
394
  • Автор ресурса
  • #4
C-подобный:
if((iClient = GetClientOfUserId(iClient)) && IsClientInGame(iClient) /* When disconnecting it can have an index */)
Масло маслянное.
Если игрок с указанным UserId не на сервере, то GetClientOfUserId() вернёт 0, т.е. проверка IsClientInGame() не нужна.
Нужна. Игрок в момент OnClientDisconnect не в игре, но имеет индекс.

И у тебя при каждой перезагрузке создаётся хук SDKHook_WeaponSwitch, который при срабатывании удаляется. А смысл? Если игрок не переключится на другое оружие он так и будет работать.
Ты бы и при срабатывании таймера его отключал (у тебя будет туева хуча включенных хуков, если игрок несколько раз перезарядит оружие, но ни разу не сменит его при этом).
Чтобы функция часто не вызывалась, а только когда нужно.

И ещё при математических операциях с int и float на выходе получается float, даже если int не преобразовать в float.
Так что float(iProgressTime) - это лишняя перестраховка.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Какая разница INVALID_HANDLEили null, они обозначают одно и тоже.
INVALID_HANDLE - это дефайн, который подставляет 0.
И delete вроде не приравнивает к null
Этот оператор приравнивает. Я когда-то специально писал тестовый плагин, чтобы проверить это.
Сообщения автоматически склеены:

Чтобы функция часто не вызывалась, а только когда нужно.
Ты бы и при срабатывании таймера его отключал (у тебя будет туева хуча включенных хуков, если игрок несколько раз перезарядит оружие, но ни разу не сменит его при этом).
Ну и что ты доказал ссылкой на гитхаб, что операторы сами принудительно преобразовывают типы? Это как раз и доказывает, что у тебя лишняя перестраховка.
Нужна. Игрок в момент OnClientDisconnect не в игре, но имеет индекс.
Поэтому я в OnClientDisconnect() у себя в коде убиваю таймер.
 

Wend4r

I'm Source Engine masochist
Сообщения
107
Реакции
432
C-подобный:
if((iClient = GetClientOfUserId(iClient)) && IsClientInGame(iClient) /* When disconnecting it can have an index */)
Масло маслянное.
Если игрок с указанным UserId не на сервере, то GetClientOfUserId() вернёт 0, т.е. проверка IsClientInGame() не нужна.
Внимательнее пожалуйста: /* When disconnecting it can have an index */

А закомментированная строка с GetRandomInt(0, 15) нужна была только для тестов. =)
Нужно было только для тех, кто захочет проверить другие типы.

И ещё при математических операциях с int и float на выходе получается float, даже если int не преобразовать в float.

if(g_hTimer[iClient]) delete g_hTimer[iClient];
В этом случае, должна быть ошибка на подобии:
C-подобный:
L 09/20/2020 - 20:23:54: [SM] Plugin "vip/VIP_ThrowingKnives.smx" encountered error 23: Native detected error
L 09/20/2020 - 20:23:54: [SM] Invalid timer handle 23110323 (error 3) during timer end, displayed function is timer callback, not the stack trace
L 09/20/2020 - 20:23:54: [SM] Unable to call function ".8792.OnThrowingKnifeTimer" due to above error(s).

Ну и что ты доказал ссылкой на гитхаб, что операторы сами принудительно преобразовывают типы? Это как раз и доказывает, что у тебя лишняя перестраховка.
Это уже дело каждого, я этот код писал (форк с GItHub(а)), с упором на нормальное восприятие кода. По моему мнению, по этому сложно судить.
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980

xstage

🏹
Сообщения
726
Реакции
754
INVALID_HANDLE - это дефайн, который подставляет 0.
Этот оператор приравнивает. Я когда-то специально писал тестовый плагин, чтобы проверить это.
Сообщения автоматически склеены:


Ну и что ты доказал ссылкой на гитхаб, что операторы сами принудительно преобразовывают типы? Это как раз и доказывает, что у тебя лишняя перестраховка.Поэтому я в OnClientDisconnect() у себя в коде убиваю таймер.


Ну делают то они одно и тоже
null - A new, general keyword to replace INVALID_HANDLE.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980

alesh15

Участник
Сообщения
45
Реакции
11
Вообще хотел узнать можно ли сделать круг перезарядки поменьше?
 

G.R.I.L.F.I.K.S

Участник
Сообщения
219
Реакции
60
Плагин хороший но не хватает:
1. Поддержки Модуль плагина - [VIP] Fast Reload
2. Когда сам делаешь перезарядку таймер показует когда патроны закончились и начинает автоматическую перезарядку то таймера нет.
 

babka68

Участник
Сообщения
2,124
Реакции
956
Всем привет,а такой вопрос можно ли сделать индикатор перезарядки для css,как показано на видео из cs go?
 

xstage

🏹
Сообщения
726
Реакции
754
Всем привет,а такой вопрос можно ли сделать индикатор перезарядки для css,как показано на видео из cs go?
 

babka68

Участник
Сообщения
2,124
Реакции
956
Обычная перезарядка,как при разминировании бомбы,а мне нужно как в cs go)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@babka68, максимум текстом секунды и десятые доли секунд
И шкалу псевдографикой
 

CoMaR

Участник
Сообщения
35
Реакции
0
не показует когда закончились патроны и само перезаряжается.
так должно быть? или можно как то поправить?
 

DOK-26-RUS

Участник
Сообщения
264
Реакции
40
И пофиксите пожалуйста надпись "обезвреживание бомбы" и "спасаете заложника". Эти надписи начинают появляться после первого применения к обезвреживанию бомбы или спас заложника.
 

d3v

Участник
Сообщения
470
Реакции
146
И пофиксите пожалуйста надпись "обезвреживание бомбы" и "спасаете заложника". Эти надписи начинают появляться после первого применения к обезвреживанию бомбы или спас заложника.
Ресурс не поддерживается автором 🤷‍♂️
 

Похожие темы

Сверху Снизу