sasha1995 | Дата: Воскресенье, 2011-Июн-12, 00:34 | Сообщение # 1 |
Группа: Администраторы
Сообщений: 6
Репутация: 0
Статус: Offline
| Продолжение
Примечание: некоторое оружие, которое перечислено на странице по ссылке выше, рядом с которым есть пометка "(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`и), и мы хотим использовать некоторые параметры, мы должны будем передать их непосредственно. Одна крошечная вещь, которая должна быть упомянута, - то, что все строки, кроме строк с фигурными скобками (и даже они при определенных обстоятельствах, но они будут охвачены позже), и строки непосредственно перед открытой скобкой (фигурные скобки могут быть в конце той строки или, как показано здесь, на новой строке), требуют постановки в своем конце точки с запятой, чтобы обозначить конец процесса.
(источник http://samp-life.ru/stat/15-kak-sozdat-igrovojj-mod.html )
|
| |