Замечания по коду:
1)
В
plugin_init()
следующий код вызывается до регистрации плагина, а должен после, так как иначе в списке плагинов не будет отображаться правильная информация о плагине.
Код:
// Отключаем не нужные карты (на картах, начинающихся на эти префиксы, не будет работать плагин (если не нужно, то '//' строки))
new mapname[MAX_PLAYERS];
get_mapname(mapname, charsmax(mapname));
new maps[][] = { "$", "awp", "fy" };
for(new i; i < sizeof maps; i++){
if(containi(mapname, maps[i]) != -1){
pause("ad");
return;
}
}
Относительно этого кода. Во-первых, почему у массива
mapname
длина
MAX_PLAYERS
?
MAX_PLAYERS
- дефайн который означает максимальное количество возможных игроков в игре. Для длины карты есть свой дефайн:
MAX_MAPNAME_LENGTH
Тут также ещё лучше заменить
awp
и
fy
на
awp_
и
fy_
соответственно.
2)
Далее, регистрация кваров. Так как поддержка AMXX 1.9.0 и выше, то стоит уже забыть про
register_cvar
и использовать
create_cvar
+
bind_pcvar_*
нативы.
Пример:
Код:
-DMG_PLAYERS = register_cvar("dmg_players", "2");
+DMG_PLAYERS = create_cvar("dmg_players", "2", FCVAR_NONE, "Minimum players", true, 0.0, true, 32.0);
Я упомянул про
bind_pcvar_*
, если использовать данные нативы то отпадает нужда в получении поинтера на квары, соответственно больше использовать
get_pcvar_*
не придётся.
3)
Код:
for(new i = 0; i < sizeof(g_short); i++)
-g_shortSpr[i] = precache_model(g_short[i]);
+ g_shortSpr[i] = precache_model(g_short[i]);
4)
Ни у одного таска нет нормального названия, только непонятная цифра, это плохо.
5)
Код:
-SendAudio(0, fmt("sound/%s", SND_MR));
+SendAudio(0, SND_MR);
6)
Код:
new g_Name[MAX_PLAYERS];
get_user_name(g_Num, g_Name, MAX_PLAYERS-1)
Во-первых, точно так же как и с картой, почему тут
MAX_PLAYERS
? Для ника есть
MAX_NAME_LENGTH
, однако так как поддержка AMXX 1.9.0 и выше то ник вообще не нужно получать.
Пример как должно быть если бы была поддержка ниже AMXX 1.9.0:
Код:
new szName[MAX_NAME_LENGTH];
get_user_name(id, szName, charsmax(szName));
client_print_color(id, id, "^4* ^1Your name: ^3%s", szName);
Пример как должно быть если поддержка AMXX 1.9.0 или выше:
Код:
client_print_color(id, id, "^4* ^1Your name: ^3%n", id);
7)
Код:
for(new i = 1; i <= g_PlayersMax; i++)
{
if(i != g_Num){
// Конечный худ с инфой по поводу разыгрывания дамага среди игроков
set_dhudmessage(random_num(50,255), random_num(50,255), random_num(50,255), -1.0, 0.60, 2, 0.4, 0.4, 0.1, get_pcvar_float(DMG_SCROLL_HUD2));
show_dhudmessage(i, "%L", i, "DMG_HUD_STOP", g_Name);
}
}
В данном коде нет проверок на валидность игроков. В идеале, нужно использовать
get_players_ex