Как думаю многие заметили каждый мод имеет свои файлы, свои папки и все со своими наборами переменных и значений. У меня есть идея привести все моды к единому шаблону файлов, забудем про те моды и скрипты которые уже есть, но те которые будем разрабатывать привести к единому виду.
Спросите "зачем", поясняю: столкнулся тут с проблемой совмещения админки и самого мода, а конкретно системы использовали одинаковые файлы и не могли работать совместно.
На днях, точнее в прошлом месяце я написал систему позволяющая читать файл конфигурации так чтобы брать из него только необходимые строки, все остальное игнорируется, я готов поделиться этим кодом если народ согласиться все стандартизировать.
Поясняю что за система: читается файл конфигурации сервера config.cfg и из него берутся только необходимые строки. подробно: сервер берет информацию только из строк предназначенных ему не обращая внимания на другие строки(количество строк не имеет значения) содержимое конфига на примере строки: [сщву]sv_logfile "1" /!вести логи[/сщву] где: sv_logfile - переменная котрую использует сервер "1" - значение переменной /!вести логи просто нечитаемые комменты в строке. Почему для коммента использованы символы /!? Да все просто, потому что в url адресах есть // и будет обрезание адреса Все переменные нужно привести к единому виду.
В чем преимущество такой системы: на одном сервере можно использовать несколько модов без размножения числа серверов. Пропадут такие ошибки как лишний пробел в строке конфига или в неправильном порядке строк в конфиге. Отпадет проблема разбираться за что какая переменная в конфиге отвечает.
Превосходство такой системы в её гибкости и практически полной независимости от пользователя, даже если он что-то не укажет или укажет неверно, значение будет выставлено по-умолчанию, а ему будет выдана ошибка или предупреждение.
Поэтому я считаю внедрение такой системы среди студий и опытных скриптеров поможет многим. К примеру имеем на сервере 8 [FS] это будет 9 файлов конфигурации, а при общей системе всего 1
Шаблон: Внутринности кода:
Code
enum infocfg //думаю не нужно объяснять { namevalue[32], value[128], bool:readvalue };
//массив с самими параметрами //имя переменной; её значение(тут же прописываются дефолтные); служебный флаг, ниже его опишу new Config[22][infocfg] = { {"sv_servername","",false},//имя сервера (критический параметр, дефолта нет, если в кфг не указан сервер не запускается) {"sv_mailadmin","",false},//почта админа для связи {"sv_icqadmin","",false},//ася админа {"sv_serverurl","",false},//адрес сайта севрера {"sv_freezetime","3",false}, {"sv_logfile","1",false}, {"sv_logdetail","3",false}, {"sv_playerid","0",false}, {"sv_globalchat", "1",false}, {"sv_accounts","1",false}, {"sv_fraglimit","0",false}, {"sv_pinglimit","0",false}, {"sv_afktime","0",false}, {"sv_adminsyst em","1",false}, {"sv_restarttime","0",false}, {"sv_fragpoint","10",false}, {"sv_deathpoint","0",false}, {"ban_cheat","43200",false}, {" ban_flood","30",false}, {"file_logdirectory","logs/",false}, {"file_mapdirectory","maps/",false}, {"file_accountdirectory","accounts/",false} };
public OnGameModeInit() { if(!LoadConfig()) return SendRconCommand("exit");//помещаем в начало паблика!!! ... return 1; }
замечу: sv_ - серверные значения ban_ - значения связанные с системой банов file_ - значения связанные с файлами, в данном примере путь до места хранения логов, карт и аккаунтов. При желании здесь можно прописать и формат конечных файлов. Важное замечание: переменные я на протяжение всего кода использую как строки, в необходимых местах я просто использую strval()
внутринности фала конфигурации:
Code
sv_servername "Mego DM" /!название сервера sv_mailadmin "" /!почта админа sv_icqadmin "" /!icq админа sv_serverurl "" /!сайт сервера sv_freezetime "3" /!время заморозки sv_logfile "1" /!вести логи sv_logdetail "3" /!подробность логов 1...3 sv_playerid "1" /!отображать ИД игроков в чате sv_globalchat "1" /!тип глобального чата: 0 - по умолчанию; 1 - глобальный чат только когда игрок в игре; 2 - глобальный чат только на карте sv_accounts "1" /!система аккаунтов: 0 - отключена; 1 - включена, регистрация не обязательна; 2 - включена, регистрация обязательна sv_fraglimit "0" /!лимит фрагов sv_afktime "0" /!автокикер за AFK (в минутах) sv_adminsystem "1" /!встроенная админка sv_restarttime "0" /!время авторестарта (в минутах) sv_fragpoint "10" /!очков за убийство sv_deathpoint "0" /!очков за смерть (вычитаеться) sv_pinglimit "0" /!ограничитель пинга ban_cheat "43200" /!время бана за читы (в минутах) ban_flood "30" /!время бана за флуд (в минутах) file_logdirectory "logs/" /!директория с логами file_mapdirectory "maps/" /!директория с картами file_accountdirectory "accounts/" /!директория с аккаунтами
час = 60 минут день = 1440 минут неделя = 10080 минут месяц = 43200 минут
Поднимаю тему. Неужели нет желающих делать все по-человечески? Те же паблики... Могли бы переделать скрипты под данный стандарт. Естественно с согласия автора.
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^