Меню сайта |
|
|
Мини-чат |
|
|
Наш опрос |
|
|
Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
|
Как создать дефматч Нет ничего проще. Открываем 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`и), и мы хотим использовать некоторые
параметры, мы должны будем передать их непосредственно. Одна крошечная
вещь, которая должна быть упомянута, - то, что все строки, кроме строк с
фигурными скобками (и даже они при определенных обстоятельствах, но они
будут охвачены позже), и строки непосредственно перед открытой скобкой
(фигурные скобки могут быть в конце той строки или, как показано здесь,
на новой строке), требуют постановки в своем конце точки с запятой,
чтобы обозначить конец процесса.
|
|
Вход на сайт |
|
|
Поиск |
|
|
Календарь |
« Март 2024 » | Пн | Вт | Ср | Чт | Пт | Сб | Вс | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|
|
Архив записей |
|
|
|