Если у нас есть булево переменная, определяющая "долбанутость" движка (
_isCSGO
), то зачем добавлять звук в прекеш сразу двумя методами для всех игр:
AddToStringTable(FindStringTable("soundprecache"), "*iex/hit.mp3");
PrecacheSound("iex/hit.mp3", true);
Это вообще плохая практика. Кто-то однажды так написал, и теперь оно ходит по плагинам, и люди не задумываются, что это вообще-то чуть медленнее, чем если бы явно производилось назначение значения переменной, и уже на след строке - хук.
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;
Честно - уже бесит этот кусок кода. Пора выявить "автора" сего шедевра, и дать по рукам палкой.
В контексте использованных выше решений для "оптимизации", подобное выглядит странным:
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;
}
Гуру-оптимизаторы, уверен, уже знают, что можно сделать так:
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'у, которых можно было бы избежать:
int client;
client = GetClientOfUserId(GetEventInt(event, "attacker"));
В аттакере, кстати, может нолик прилететь, и тогда
GetClientOfUserId()
вернёт ошибку...