Насчёт мода не в gamemode - хз (Ziggi, вроде, отвечал на это, и, кажется, даже в такой же теме с вопросом об архитектуре, но уже не помню чем он это обосновывал).
Насчёт разбивки скрипта на файлы: имхо, но разбивать на файлы и использовать, при этом, перехваты - не очень хорошая. В написании это, конечно, проще, но вот редактировать такой код довольно сложно, так как будет трудно изменить порядок вызова какой-то одной из перехваченных функций (особенно если ты не автор кода). Уж лучше просто обрамлять код в функции, а функции уже вызывать в pwn, тем самым позволяя легко увидеть то, какие инклуды вызываются в том или ином коллбэке и легко поменять порядок вызова.
Я в своём моде придерживаюсь простых правил:
1) Одна система = один инклуд (и инклуды раскиданы по папкам, по типу "admin", "player", "core" и т.п.)
2) Одна функция выполняет только одну конкретную задачу
3) Все "перехваты" коллбэков реализуются через вызов функций внутри pwn
- - - Добавлено - - -
Для паблик-мода, имхо, не лучшая структура. Античиты и фиксы стоит вынести как отдельные корневые папки, а не распихивать по другим папкам. У паблик-мода должно быть минимум вложенных папок, как мне кажется, ибо это усложнит запоминание структуры проекта при работе с ним.
И вспомнил один из спорных моментов в Open-GTO. Команды админов там реализованы как "1 команда = 1 файл", а команды игроков все в одном файле находятся. Это сбивает с толку при первом знакомстве с модом.
Так же там есть некоторые довольно спорные разделения на файлы. Например, такая простая система, как личные сообщения, разбита на 2 файла (отдельно команда и отдельно не очень большая функция где-то строк на 30). Это лишь усложняет поиск нужного файла, как по мне (ну чем больше файлов, тем длиннее список и дольше нужно по нему глазами пробегать, чтоб найти нужный файл). Не очень оправдано с учётом того, что там в файле всего 1 функция.
Ну и разбивать команды на отдельные файлы - в целом, сомнительная идея, ибо вместо того, чтоб открыть один файл и просто воспользоваться поиском, тебе приходится либо вручную выискивать нужный файл, либо пользоваться поиском по файлам, что не так быстро, как просто поиск по файлу (в том плане, что поиск по файлу - нажатие "Ctrl+F", в отличии от поиска по папке, где нужно папку выбирать и т.п.)