wellasgood, код уже гораздо лучше, чем раньше, но ещё есть некоторые моменты.
1. Использование хардкода:
Diff:
-g_szLogPath[64]
+g_szLogPath[MAX_RESOURCE_PATH_LENGTH]
Diff:
-new szMenu[512];
+new szMenu[MAX_MENU_LENGTH];
Diff:
-new iKeys = (1<<0|1<<1|1<<2|1<<3|1<<9);
+new iKeys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_0;
И всё то же самое в других местах ниже.
Diff:
// в начале плагина
+enum _:XYZ
+{
+ X,
+ Y,
+ Z
+}
//во всех местах с координатами
-new Float:vOrigin[3];
-vOrigin[0] = str_to_float(szX)
-vOrigin[1] = str_to_float(szY)
-vOrigin[2] = str_to_float(szZ)
+new Float:vOrigin[XYZ];
+vOrigin[X] = str_to_float(szX)
+vOrigin[Y] = str_to_float(szY)
+vOrigin[Z] = str_to_float(szZ)
(enum можно использовать не только в качестве структуры, но и для убирания хардкода.)
То же самое можно сделать со строками 420-425, 651-659, и т.д.
2. В некоторых местах код можно было бы сделать читабельнее:
Diff:
-for(new p; p < DrumData-1; p++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[%d] \y# \w%L \r[\y%L\r]^n", p+1, id, fmt("DRUM_MENU_ITEM_SETTINGS_%d", p+1), id, !g_eDrumData[id][p] ? "DRUM_ON" : "DRUM_OFF");
+for(new p; p < DrumData-1; p++)
+{
+ iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[%d] \y# \w%L \r[\y%L\r]^n", p+1, id, fmt("DRUM_MENU_ITEM_SETTINGS_%d", p+1), id, !g_eDrumData[id][p] ? "DRUM_ON" : "DRUM_OFF");
+}
Diff:
-if(g_eCvarData[g_DrumSettings]) iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<9);
-else iKeys = (1<<0|1<<1|1<<2|1<<3|1<<9);
+if(g_eCvarData[g_DrumSettings])
+{
+ iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<9);
+}
+else
+{
+ iKeys = (1<<0|1<<1|1<<2|1<<3|1<<9);
+}
Diff:
-while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "1"))) check_ent = ent;
+while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "1")))
+{
+ check_ent = ent;
+}
3. Строки 676-680 можно в
switch()
.
4. ??
Diff:
-get_mapname(mapname, MAX_MAPNAME_LENGTH-1);
+get_mapname(mapname, charsmax(MAX_MAPNAME_LENGTH));
Далее
мелочи, но всё же:
5. Почему бы, раз не заявлена совместимость с 1.8.2, не использовать reapi?
6. Не везде сохраняешь одинаковую стилистику кода. (Это уже совсем мелочь, но я, как перфекционист, не мог пройти мимо
)
Если решил ставить точки с запятой, ставь после каждой строки.
Разный стиль скобок, на строках 649-660 и 675-681.
Почему бы, например на 610 строке используешь
%l
, а на 587
%L
? И таких мест несколько. Если уж на то пошло, то на 587 лучше использовать
LANG_SERVER
, чтоб логи были на языке сервера.
7. В кварах то же можно было бы сделать мультиязычность.
8. Строка 169, и её вызов: почему cmd
ReadCvars(), когда это создание кваров?
9. В fakemeta_util входит fakemeta.
10 Дек 2019
10. В motd тоже нужно сделать мультиязычность.