180 likes | 425 Views
«Программирование для игры GTA San Andreas: Multiplayer ». Работу выполнил: Сивачук Владислав, 11«А» класс. Санкт-Петербург, 2011 г. San Andreas Multiplayer (сокращённо: SA-MP) — бесплатная многопользовательская модификация для видеоигры Grand Theft Auto: San Andreas в версии для Windows,
E N D
«Программирование для игры GTA San Andreas: Multiplayer» Работу выполнил: Сивачук Владислав, 11«А» класс Санкт-Петербург, 2011 г.
San Andreas Multiplayer (сокращённо: SA-MP) — бесплатная многопользовательская модификация для видеоигры Grand Theft Auto: San Andreas в версии для Windows, с закрытым исходным кодом. Разрабатывается командой The SA-MP team на добро- вольной основе, ведущими программистами проекта являются два человека с никами Kye и spookie.
Игровой сервер Сервер представляет собой набор: -Собственно, сам сервер (.exe файл); -Программа Pawno с набором стандартных .inc файлов (includes); -Набор стандартных Filterscripts; -Набор стандартных Gamemodes; -Файлы лога, конфигурации и проч.
Программа Pawno Стандартные моды (режимы) для игры
пароль RCON администратора • максимальное кол-во игроков • порт • -имя сервера • игровой мод • -фильтрскрипты (доп. моды) • сайт сервера. Конфигурация
PAWN PAWN, также известный как Small - язык программирования c открытым исходным кодом. В первую очередь предназначен как встраиваемый язык сценариев. Он разрабатывается голландской компанией CompuPhase, которая выпустила первую версию в 1998 году. PAWN – язык с C-подобным синтаксисом. Он был использован в нескольких проектах: PAWN является главным языком кодирования, наряду с C++, в игре Grand Theft Auto: San Andreas Multiplayer. Также он используется в Half-Life Mod, AMX Mod X и Source Engine. Исходный код хранится в файле собственного формата (.pwn), который является эквивалентом текстового файла. После компиляции создается файл формата AMX, в которой, фактически, хранится зашифрованный код.
Pawno - программное обеспечение, поставляющееся вместе с игровым сервером. Pawno является средой программирования на языке PAWN. В программу встроен компилятор, который и cоздает файлы с расширением .amx.
При наличии ошибок компилятор выдаёт подробную информацию о файле и строке, в которой присутствует ошибка.
Ban System • В игре GTA San Andreas Multiplayer, также как и во всех других онлайн • играх (да и не только в них), существует потребность в наличии какого- • либо способа запрета для игрока заходить в игру (ban). • В SA:MP имеется своя стандартная система для бана игроков. • Схема её действия: • Администратор сервера производит бан игрока. • IP адрес игрока, а также его ник (игровое имя) и причина бана • помещаются в специальный файл samp.ban в корневой папке сервера. • 3) При подключении к серверу игрока, данные которого были занесены • в файл samp.ban,связь разрывается и игрок не может зайти на сервер. • 4) При необходимости снова предоставить доступ к сарверу забаненному • игроку, владельцу сервера (тому, кто имеет доступ ко всем файлам и, • непосредственно, файлу samp.ban) требуется вручную открывать этот • файл, искать в нём нужные данные, а затем их удалять.
~С помощью данной системы возможно обеспечить недоступность игрового сервера для определенных игроков. ~Крайне неудобное управление данными забаненных игроков: произвести разбан (unban) игрока может только владелец сервера, причем удаляя данные вручную. ~Сохраняются только некоторые данные о произведенном бане (IP, имя и причина). ~Приходится вести журнал в том случае, если вам необходимо закрыть доступ к серверу только на определенный срок. ~Когда забаненный игрок заходит на сервер, он видит только надпись ‘Server closed the connection’ – Сервер закрыл соединение; игрок не имеет понятия, почему он был забанен и куда ему обратиться.
Стоявшие задачи: -Сделать возможным управление данными забаненных игроков для администраторов, не имеющих доступа к файлам сервера. -Сделать разбан игрока одним нажатием кнопки. -Сохранять большее количество информации о произведенном бане. -Предоставить удобное управление всеми данными. -Показать забаненному игроку всю информацию о его бане. -Кое-что ещё… -Все основные возможности обычного программирования; А также: -Возможность создавать в игре диалоговые окна (окно с двумя кнопками) трёх различных видов. Возможности:
И была создана! Ban System Это, в принципе, своего рода база данных и система управления этой базой данных. Все функции системы: -Возможность просматривать список забаненных игроков.
-Просмотр информации по каждому бану отдельно (Выбор из списка).=> <= -Возможность производить действия с информацией о бане.
А именно: добавлять дату Автоматического разбана и изменять причину бана, если она была указана неверно. <= Информация о бане после изменения причины и добавления даты разбана. Обещанный разбан одним нажатием кнопки:
Возможность производить бан игрока при отсутствии его на сервере, зная его имя и/или IP адрес: Вот что получает забаненный игрок при входе на сервер (даже сменив имя и, возможно, IP адрес):
Функция поиска. Так как обычно через 1-2 месяца работы системы на оживленном игровом сервере количество забаненных игроков достигает 2-3 тыс., то требуется возможность быстрого поиска нужной информации по заданным параметрам. Программа производит поиск заданной символьной комбинации во всех полях каждой записи базы данных (имя, IP адрес, причина, имя администратора, дата) и выводит результат на экран в виде списка.
Итог: Команды: /ban [id] [reason] – бан игрока в игре по его ID (номеру); /aban [name] [IP] [reason] – бан игрока, который вне игры; /bans – список всех забаненных игроков; /baninfo [№] – открыть информацию о нужном бане; /searchban [key] – поиск в базе данных. Сделана программа с удобным интерфейсом и новыми возможностями. Теперь управлять банами могут все администраторы сервера. Можно увидеть всю информацию о бане – добавлены имя администратора, дата бана и дата разбана. «Умная» система распознавания забаненных данных не даст никакой возможности нарушителям проникнуть на сервер. Данная система имеет только один аналог в мире – это система бана,созданная немецким скриптером Jeffry для сервера Ultimative Gamers Playground (188.40.86.76:8001).
С технической точки зрения: При совершении бана все данные записываются в специальный файл ban.log, каждая запись имеет свой номер. При запуске сервера все данные считываются из файла и загружаются в систему. Определяется количество записей - для ускорения дальнейшей обработки. При заходе игрока на сервер стартует таймер на 10 секунд, после чего происходит проверка данных игрока на совпадение их с забаненными данными. Тут работает «умная» система: Если имя игрока совпадает с забаненным, то IP адрес проверяется на соответствие по первым 6 знакам. Иначе, если в забаненном IP адресе есть знак * (звездочка), то адреса проверяются на соответствие по количеству знаков до звездочки. Если адрес записан целиком (без звездочки) - проверяются 15 символов. Такая проверка помогает усилить защиту от входа забаненных игроков, имеющих динамический IP адрес, а также пропустить тех, кто имеет похожий IP адрес, но является добропорядочным игроком. Обычно диалоговые окна используют со статичесткими данными, то есть заранее прописывают их содержимое. В данном же случае содержимое зависит от конкретной сложившейся ситуации. Одним из сложных моментов является создание переходов с одной страницы на другую в списке забаненных игроков, так как требуется учитывать общее количество записей, количество на данной странице и определять с какого по какой номер необходимо выводить данные сейчас. Когда вы нажимаете кнопку Разбанить в меню Действия, программа изменяет данные в файле ban.log, а также заменяет данные в рабочих массивах на сервере. Всё делается автоматически и не требует вмешательства в процесс человека. Место записи, которая была удалена (игрока разбанили), становится свободным и следующий забаненный игрок получит номер бана не тот, кторый идет после последнего, а освободившийся номер. Возможность бана игрока в момент его отсутствия на сервере - очень важная вещь. Не всегда можно за всеми уследить, так что если поступили проверенные сведения, можно записать данные игрока вручную. Опять же всё будет сохранено автоматически. При поиске в базе забаненных используется стандартная функция поиска в строке. Поиск производится по всем полям во всех записях. Он не требует заведения отдельных массивов для хранения найденных данных - во время поиска сразу же берутся номера банов, данные которых соответствуют критериям, а при выводе на экран просто подставляются данные из массивов с нужными номерами. Для получения более конкретных сведений по интересующим вопросам: support@pepperoni-inc.ru