Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
Главная » Полезные статьи » Информация по созданию модов SAMP |
<<<История Создания SAMP'a>>> Разработка SA-MP привлекла большой интерес среди поклонников игр серии GTA. В апреле раздела на форуме GTAForums.com стало явно недостаточно и разработчики решили открыть свой собственный форум. В конце марта разработка уже представляла собой полноценный мультиплеер и после некоторых закрытых бетатестов в апреле-мае было проведено три публичных бетатеста. Через несколько часов после третьего бетатеста 9 мая 2006 года kyeman заявил, что проект полностью готов к выпуску. Лишь в конце июня в сообщении на своем блоге они заявили, что разработки все еще идет, хотя у них сейчас очень мло времени. Разработчики продемонстрировали несколько скриншотов с возможностью добавления объектов на карту. Ходили слуши, что скоро выйдет версия 0.1c, но до сентября новой информации от разработчиков не поступало. Лишь в конце сентября небольшое обновление на блоге сообщало, чторазработки продолжается и был представлен небольшой список нововведений. 2 октября появилась информация о том, что готовиться новая версия 0.2. Информация была подкреплена большим списком нововведений и видеороликом, показывающим множество новых возможностей. Информация вызвала волну интересна среди поклонников SA-MP, которых к тому момету насчитывалось уже несколько тысяч по всему миру. Однако, после этого новой нформации не было несколько месяцев. Разработка очень сильно затянулась и после нескольких небольших обновлений 9 марта 2007 года разработчики представили на своем блоге превью версии 0.2 с большим списком изменений и двумя видеороликами, снятыми на закрытых бетатестах. Также было объявлено, что в скором времени будет проведено несколько публичных бетатестов. До начала первого публичного бетатеста прошел еще целый месяц. К тому времени ажиотаж по поводу новой версии достиг невероятно огромного уровня, и разработчики решили не объявлять о бетатесте на своем блоге, а в канун пасхи 8 апреля размести на своей странице "пасхалку” - ссылку на страницу, которая через несколько перенаправлений выводила пользователя на irc-канал бетатестирования. Бетатест начался вечером того же дня. Изначально был открыт один сервер на 100 слотов, но вскоре было запущено еще несколько серверов. Бетатест продлился до 11 апреля. Следующий бетатест прошел только через месяц и продлился всего несколько часов. Целью теста было протестировать возможностьсервера выдерживать до 200 игроков. После этого на блоге kyeman объявил, что будет проведено еще как минимум 2 бетатеста. В конце мая прошел еще один бетатест, после чего на блоге были объявлены некоторые нововведения. 3 июня разработчики выпустили RC версию клиента и сервера 0.2 на 4 слота, тем самым позволив пользователям начать разработку и обновление режимов для новой версии. В течение следующих 2 недель было выпущено еще 2 RC-релиза и после 4-го бетатеста, плавно перещедшего в 5-й 20 июня SA-MP 0.2 был официально выпущен. Но разработка не закончилась и через несколько дней уже была выпущена версия 0.2.1 с некоторыми обновлениями и фиксами. 24 июня совершенно неожиданно для пользователей команда SA-MP объявила на своем сайте, что прекращают работу над модом и какую-либо его поддержку, потому как не имеют больше сил и возможностей бороться с людьми, которые не боясь ничего, разнрабатывают читы и эксплойты для SA-MP. Моментально в интернете была организована петиция с требованием разработчикам вернуться к работе над модом. За несколько часов под петицией подписалось несколько тысяч человек. Это возимело действие и меньше чем через сутки работа всех серверов SA-MP была возобновлена. На следующий день было выпущено обновление для сервера, закрывающее эксплойт, крушащий сервер и содержащее встроенный античит SAC, не позволяюищий игрокам заходить в игру с читерскими трейнерами или плагинами для SA-MP. Через месяц, после двух открытых бетатестов в конце августа была выпущена версия 0.2.2 и было объявлено о начале работы над версией 0.3. Provided by GamePoligon |
Как создать дефматч Нет ничего проще. Открываем Pawno и нажимаем New. Вот он, Ваш первый скрипт. Чтобы запустить его, надо сначала его сохранить (большинство людей сохраняют в директорию "/samp/gamemodes/src/", но будет проще (для локального тестирования) сохранить его в "/samp/gamemodes/"). Затем кликните по кнопке с изображением синей стрелочки. Это действие компилирует Ваш файл .pwn в файл .amx, который появится в том же каталоге, однако чтобы запустить его в игре, этот файл должен лежать в "/samp/gamemodes/" (теперь понятно, зачем было сохранять Ваш скрипт в этом каталоге - теперь не придется ничего никуда переносить в ручную, все уже на своих местах после компиляции). Теперь, чтобы опробовать свой новый мод, Вы должны настроить локальный сервер и сменить игровой режим (наберите "changemode " в окне сервера). Если все прошло удачно, когда подключитесь к своему серверу через клиент sa-mp, в игре Вы окажетесь снаружи казино в Las Venturas. К сожалению Вы не сможете выбрать себе персонажа, так как на данный момент доступен только один, но это можно будет легко исправить в будущем. Кроме того это не очень уж и интересный ДМ – из оружия у Вас только кулаки а вокруг ни души. Но это локальный сервер и по поводу второй проблемы на данный момент ничего нельзя поделать. Следующим шагом, который Вы скорее всего захотите сделать, будет добавление в игровой режим оружия (контролируется на основе «каждому классу свое»). Каждый игрок, которого Вы выберете в начале игры (или позже в случае замены) будет принимать значение "класса". У классов может быть одинаковое оружие, или у всех разное, или комбинация. Вы назначаете оружие для каждого класса отдельно. Поэтому, чтобы дать всем классам одинаковое оружие, Вам просто нужно скопировать информацию об оружии и добавить ее к описанию каждого из существующих в Вашем игровом режиме классов. Это действие обеспечит сбалансированную игру, хотя играть будет не так интересно, если все будут бегать с одинаковым оружием. Однако выбор остается за Вами. В редакторе найдите следующую строку: AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); Это описание класса, параметры в том же порядке: AddPlayerClass(Player model, X, Y, Z, A, Weapon 0, Ammo 0, Weapon 1, Ammo 1, Weapon 2, Ammo 2); Модель персонажа можно взять из файла "peds.ide". "X", "Y" и "Z" – это координаты места появления игрока в игре, после выбора персонажа. "A" – это угол, под которым игрок будет развернут (направление камеры). Есть только одна точка появления для каждого класса, однако это можно обойти с помощью других средств, которые будут рассмотрены позже. Номера оружия можно узнать здесь. А цифры рядом с ammo – это точное количество патронов к каждому оружию, которым будет располагать игрок (у оружия ближнего боя количество патронов всегда 0). Теперь скопируйте эту строку: AddPlayerClass(102, 1958.3783, 1343.1572, 15.3746, 269.1425, 5, 0, 22, 100, 32, 50); И поместите ее под той, что Вы нашли в Вашем скрипте. Теперь в игре у Вас будет выбор между CJ (без оружия) и Balla (с бейсбольной битой, пистолетом и Tec9). Если хотите, можете сами дать оружие для CJ или добавить больше других классов с другим оружием. Примечание: некоторое оружие, которое перечислено на странице по ссылке выше, рядом с которым есть пометка "(crashes if you try to fire)" или "(Unusable)" не работает в данной версии SA-MP. В список оружия, которое нельзя использовать, входят и гранаты, однако эта досадность будет исправлена в будущем. Узнаём координаты, углы и ID моделей Вам, возможно, захочется изменить координаты появления игроков, чтобы они все не появлялись в одном и том же месте. Если оставить как есть, то ДМ выйдет не самый интересный, а так же это идеальная возможность для кемперства. В этом деле нам поможет Режим Отладки. Запустите "samp_debug.exe" в основном каталоге с игрой и когда бы Вам ни потребовалось, напишите "/save" прямо в игре (для этого нажмите "t" или тильду, чтобы вызвать строку чата). Это действие сохранит Ваше текущее положение в игре (в координатах), угол и ID игрока в файл "savedpositions.txt" в основном каталоге игры SA. Чтобы изменить персонажа в Режиме Отладки нажимайте F11 и F12, переключаясь по кругу между доступными в данном моде моделями. Знакомство с функциями и callbacks Прежде, чем мы продолжим, Вы должны узнать, что такое callbacks, или callback`и. Это – массивы кода, внутри Вашего игрового режима, представляющие из себя нечто похожее на следующее: public OnPlayerDisconnect(playerid) { printf("OnPlayerDisconnect(%d)", playerid); return 1; } Это - OnPlayerDisconnect callback, который означает, что эта секция кода будет запускаться при отключении игрока от сервера. Если Вы захотите, чтобы появлялось большое сообщение о том, что тот или иной игрок покидает сервер, то Вы добавляете для этого код именно в этот массив. Все callback`и, которые использует игра (кроме 2, они используются в filterscripts, а не в gamemodes. О них мы рассказывать не будем), находятся в Вашем файле. Вы не сможете сделать другие. Большинство из них появляется так же, как и та, что выше. Но некоторые из них ("OnPlayerCommandText", "OnPlayerRequestClass", "OnGameModeInit" и "main" (который является не совсем callback`ом и нигде больше не фигурирует, кроме как на титульном экране вашего игрового режима)) призваны заставлять игровой режим работать или показать игрокам, что нужно делать. Вы так же можете использовать и другие, похожие блоки (на те, о которых ниже), которые выглядят так же, но являются вызываемыми функциями. Они должны быть вызваны Вами самим. Вот функция "IMadeThis" (обратите внимание на полное отсутствие пробелов). public IMadeThis() { // Это однострочный комментарий, он будет проигнорирован /* Это многострочный комментарий */ print("This will be printed to the server window"); return 0; } Вы, должно быть, обратили внимание на небольшое описание комментариев. Все, что находится в строке за "//" будет игнорироваться. То же будет происходить и с текстом между "/*" и "*/". Так как функция не вызывается игрой, мы должны вызвать ее сами с помощью callback, это смертельно просто, совсем так же, как вы вызываете большинство команд в своем коде. Итак, если вы добавите строку: IMadeThis(); В Ваш OnPlayerDisconnect callback (она должно находиться между "{" и "}", а так же перед "return 1;") она должна запускаться как функция и печатать сообщение в окне сервера, когда Вы покидаете сервер во время игры (помните, что другие вещи, описанные там, будут игнорироваться). Мы не хотели, чтобы что-либо печаталось в окне сервера и все "print" и "printf" функции, что были в файле, удалены скриптером. Только строки, заключенные между фигурными скобками находятся в функции/callback`е (функция относится к callback`ам так же, как будто они - специальный случай функции), строка выше - имя функции. "public" подразумевает, что функция может быть выполнена любым другим кусочком кода, это в основном означает, что ваш код может быть выполнен, когда Вы вызываете функцию по имени. Мы не волнуемся о частных функциях, поскольку они вообще не используются в SA-MP. Скобки после имени функции включают список параметров, мы не охватили их все, но Вы можете увидеть пример их использования в некоторых из callback`ов в вашем чистом скрипте. Отметим, что эти параметры автоматически передаются, когда игра вызывает функцию. Если мы используем сторонние функции (то есть не callback`и), и мы хотим использовать некоторые параметры, мы должны будем передать их непосредственно. Одна крошечная вещь, которая должна быть упомянута, - то, что все строки, кроме строк с фигурными скобками (и даже они при определенных обстоятельствах, но они будут охвачены позже), и строки непосредственно перед открытой скобкой (фигурные скобки могут быть в конце той строки или, как показано здесь, на новой строке), требуют постановки в своем конце точки с запятой, чтобы обозначить конец процесса. __________________ |