[Shop] Hitmarker [Удалено]

Статус
В этой теме нельзя размещать новые ответы.

JDW

Мы открываем бизнес
Сообщения
376
Реакции
325
bat9xxx добавил(а) новый ресурс:

[SHOP] Hitmarker - крестик при попадании в противника.

Данный плагин добавляет в Shop способность видеть "Hitmarker" , благодаря которому на экране игрока будет показываться небольшой крестик, при попадании в противника.

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

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #2
Если у нас есть булево переменная, определяющая "долбанутость" движка (_isCSGO), то зачем добавлять звук в прекеш сразу двумя методами для всех игр:
C++:
    AddToStringTable(FindStringTable("soundprecache"), "*iex/hit.mp3");
    PrecacheSound("iex/hit.mp3", true);

Это вообще плохая практика. Кто-то однажды так написал, и теперь оно ходит по плагинам, и люди не задумываются, что это вообще-то чуть медленнее, чем если бы явно производилось назначение значения переменной, и уже на след строке - хук.
C++:
    ConVar cvar;

    (cvar = CreateConVar("sm_shop_hm_price", "15000", "Цена покупки")).AddChangeHook(CVarChanged_Price);
    _specifications[0] = cvar.IntValue;

    (cvar = CreateConVar("sm_shop_hm_sell", "10000", "Цена продажи")).AddChangeHook(CVarChanged_Sell);
    _specifications[1] = cvar.IntValue;

    (cvar = CreateConVar("sm_shop_hm_expires", "259200", "Время действия покупки в секундах")).AddChangeHook(CVarChanged_Expires);
    _specifications[2] = cvar.IntValue;

Честно - уже бесит этот кусок кода. Пора выявить "автора" сего шедевра, и дать по рукам палкой.

В контексте использованных выше решений для "оптимизации", подобное выглядит странным:
C++:
public ShopAction OnEquipItem(int client, CategoryId category_id, const char[] sCategory, ItemId item_id, const char[] item, bool isOn, bool elapsed){
    if(isOn || elapsed){
        _userHitmarker[client] = false;
        return Shop_UseOff;
    }

    _userHitmarker[client] = true;
    return Shop_UseOn;
}
Гуру-оптимизаторы, уверен, уже знают, что можно сделать так:
C++:
public ShopAction OnEquipItem(int client, CategoryId category_id, const char[] sCategory, ItemId item_id, const char[] item, bool isOn, bool elapsed){
	_userHitmarker[iClient] = !(isOn || elapsed);
	return _userHitmarker[iClient] ? Shop_UseOff : Shop_UseOn;
}

И очередной странный код с дополнительными вызовами к JIT'у, которых можно было бы избежать:
C++:
    int client;
    client = GetClientOfUserId(GetEventInt(event, "attacker"));
В аттакере, кстати, может нолик прилететь, и тогда GetClientOfUserId() вернёт ошибку...
 
  • Мне нравится
Реакции: JDW

AD4M

Участник
Сообщения
373
Реакции
58
Если у нас есть булево переменная, определяющая "долбанутость" движка (_isCSGO), то зачем добавлять звук в прекеш сразу двумя методами для всех игр:
C++:
    AddToStringTable(FindStringTable("soundprecache"), "*iex/hit.mp3");
    PrecacheSound("iex/hit.mp3", true);

Это вообще плохая практика. Кто-то однажды так написал, и теперь оно ходит по плагинам, и люди не задумываются, что это вообще-то чуть медленнее, чем если бы явно производилось назначение значения переменной, и уже на след строке - хук.
C++:
    ConVar cvar;

    (cvar = CreateConVar("sm_shop_hm_price", "15000", "Цена покупки")).AddChangeHook(CVarChanged_Price);
    _specifications[0] = cvar.IntValue;

    (cvar = CreateConVar("sm_shop_hm_sell", "10000", "Цена продажи")).AddChangeHook(CVarChanged_Sell);
    _specifications[1] = cvar.IntValue;

    (cvar = CreateConVar("sm_shop_hm_expires", "259200", "Время действия покупки в секундах")).AddChangeHook(CVarChanged_Expires);
    _specifications[2] = cvar.IntValue;

Честно - уже бесит этот кусок кода. Пора выявить "автора" сего шедевра, и дать по рукам палкой.

В контексте использованных выше решений для "оптимизации", подобное выглядит странным:
C++:
public ShopAction OnEquipItem(int client, CategoryId category_id, const char[] sCategory, ItemId item_id, const char[] item, bool isOn, bool elapsed){
    if(isOn || elapsed){
        _userHitmarker[client] = false;
        return Shop_UseOff;
    }

    _userHitmarker[client] = true;
    return Shop_UseOn;
}
Гуру-оптимизаторы, уверен, уже знают, что можно сделать так:
C++:
public ShopAction OnEquipItem(int client, CategoryId category_id, const char[] sCategory, ItemId item_id, const char[] item, bool isOn, bool elapsed){
    _userHitmarker[iClient] = !(isOn || elapsed);
    return _userHitmarker[iClient] ? Shop_UseOff : Shop_UseOn;
}

И очередной странный код с дополнительными вызовами к JIT'у, которых можно было бы избежать:
C++:
    int client;
    client = GetClientOfUserId(GetEventInt(event, "attacker"));
В аттакере, кстати, может нолик прилететь, и тогда GetClientOfUserId() вернёт ошибку...
Крузик, так верхний код же @Grey83, как ты мог сразу не догадаться? :D
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Это вообще плохая практика. Кто-то однажды так написал, и теперь оно ходит по плагинам, и люди не задумываются, что это вообще-то чуть медленнее, чем если бы явно производилось назначение значения переменной, и уже на след строке - хук.
Часть 2 -> Kyles возможно вот оно :)
 

Grey83

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

Ice_Wolf

Участник
Сообщения
125
Реакции
12
L 08/16/2019 - 21:14:45: [SM] Exception reported: Client index 0 is invalid
L 08/16/2019 - 21:14:45: [SM] Blaming: shop_hitmarker.smx
L 08/16/2019 - 21:14:45: [SM] Call stack trace:
L 08/16/2019 - 21:14:45: [SM] [0] IsClientInGame
L 08/16/2019 - 21:14:45: [SM] [1] Line 91, C:\Users\bat9s\Desktop\rb\new\shop_hitmarker.sp::player_hunt
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
в строке 91 замени IsClientInGame(client) на client
 

Ice_Wolf

Участник
Сообщения
125
Реакции
12
Было бы классно увидеть этот плагин для вип)
 

Terra

Участник
Сообщения
5
Реакции
0
Поправка, есть.
 
Последнее редактирование:

Fanyatsu

Шизофреник со стажем
Сообщения
1,030
Реакции
341
Почему нельзя Включать/Выключать?
Могу предложить фикс, но не бесплатно
Оффтоп
 
Последнее редактирование:

Fanyatsu

Шизофреник со стажем
Сообщения
1,030
Реакции
341
все прекрасно работает. Ошибки в логах есть?
Я, как юзер последней версии, говорю что тоже была такая проблема, пока не заказал фикс у другого скриптера. Можно было нажать на Включить, сам предмет работал, но кнопки Выключить не было + слетало после смены карты и выключить до этой смены никак нельзя было. В логах ошибок никаких. Мистика)
 

Fanyatsu

Шизофреник со стажем
Сообщения
1,030
Реакции
341
Надо было мне написать, бесплатный бы фикс сделал. У меня на сервере все прекрасно работает
Мне нужен был срочный и я знаю человека, который за пачку сиг сделает в момент )
 

Dayzz1337

Участник
Сообщения
94
Реакции
12
В чем может быть проблема нажимаю кнопку включить он не включается в логах нечего не пишет
 

|Fatalist|

Участник
Сообщения
179
Реакции
10
Пожалуйста, можно версию без озвучки?
На CSS v34 этот звук глушит все живое
 

|Fatalist|

Участник
Сообщения
179
Реакции
10
Что-то не так, не в первый раз сталкиваюсь, что делать, если компилируешь какой-то модуль?
 

Вложения

  • Безымянный.png
    Безымянный.png
    10.5 КБ · Просмотры: 17

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Что-то не так, не в первый раз сталкиваюсь, что делать, если компилируешь какой-то модуль?
скинь мне, я скомпилю, либо скачай шоп, который у тебя стоит и закинь все из scripting в папку scripting в соурсмоде
 

|Fatalist|

Участник
Сообщения
179
Реакции
10

Вложения

  • Безымянный.png
    Безымянный.png
    10.3 КБ · Просмотры: 17
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу