Краткий обзор.
Понты.
Псевдооператор foreach используется независимо от того, найден инклуд или нет.
Если компилятор не найдёт инклуд, он начнёт выплёвывать ошибки не на строке подключения инклуда, а по всему моду, где используется foreach.
Те, кто говорят, что "#tryinclude" удобнее, чем "#include" (привет, г-и) - либо пустословы, либо редкостные мазохисты.
Ещё понты.
Функция уже объявлена в sscanf2.inc, зачем ещё раз объявлять её в моде?
Циклы для слабаков.
http://lurkmo.re/%D0%98%D0%BD%D0%B4%...BA.D0.BE.D0.B4
Автор этого мода не только быдлокодер, но ещё и петросян.
Сам собой напрашивается вопрос: зачем вообще к моду подключен sscanf2? Ради пары отрывков кода, которые лень переделать?
Кстати, sscanf2 используется в моде всего 5 раз.
Вот самое первое место, где он встречается:
Параметры команды отделяются от названия сразу двумя способами, в лучших быдлокодерских традициях.
И присмотритесь внимательно к форматной строке в sscanf: "s[32]s[128]". В переменную params ничего не запишется, вместо этого и название, и параметры окажутся в command. Мало того, если длина команды и параметров в сумме больше 31 символа, sscanf выплюнет сообщение в лог "sscanf warning: String buffer overflow" - и после этого гадай, откуда берётся такое сообщение.
В остальных 4 случаях с помощью sscanf2 в командах (OnPlayerCommandText) обрабатываются параметры из params, но поскольку в params ничего нет, то команды будут работать не так, как задумано.
Донор склероза.
Ещё из той же команды:
Код:
new Cache: resultCache = mysql_query(dbHandle,adminsa,true);
rows = cache_num_rows();
if(rows < 1) return SCM(playerid,COLOR_GRAD2, "Этот игрок не менял имен.");
// ...
cache_delete(resultCache);
Во-первых, можно устроить флуд этой командой (благо, от игрока требуется только ввести после неё чей-нибудь ник) - сервер начнёт лагать из-за однопоточных запросов.
Во-вторых, если игрок ни разу не менял ник, кэш с результатами SQL-запроса не выгружается - получаем утечку памяти. Btw, таких утечек ещё полно по всему моду.
Даже если сервер при флуде не будет зависать от однопоточных запросов, то из-за утечек у него вскоре закончится доступная память и хостер отрубит процесс.
Итог:
1. Код - эталон убожества.
2. sscanf2 используется всего 5 раз... и все 5 раз неправильно.
3. Куча возможностей положить сервер.