Polcar |
Сообщение # 1 | 09:06:58 30 Янв 2011 |
Руководитель проекта SM
Администраторы
Сообщений: 788
|
В этом уроке мы познакомимся с программой Pawno и сделаем свой первый мод. Итак, поехали. Скачаем программу Pawno, разархивируем её куда угодно и открываем. Что у нас? Правильно, ничего Открываем в верхнем левом угл меню File и выбираем пункт New (такую операцию можно проделать комбинацией клавиш Ctrl+N). Вот наш первый мод. Начинаем с самого начала. Это необходимый инклуд, обязателен во всех модах и скриптах. Code // This is a comment // uncomment the line below if you want to write a filterscript //#define FILTERSCRIPT Всё, что зеленое, то не является функцией, просто текст. Чтобы написать текст, ставим в начале строки //, либо /*. Если же вы поставили /*, то после текста нужно обязательно закрыть, написав в конце */, иначе все после /* будет зеленое. Идем дальше. Code #if defined FILTERSCRIPT Это показывает, что данный .pwn файл - фильтерскрипт. Но у нас ведь это мод. Поэтому стираем данную строку. Code public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Blank Filterscript by your name here"); print("--------------------------------------\n"); return 1; } Вот наш первый паблик. Этот паблик включает себя все, что должно происходить при включении фильтерскрипта. Опять же, фильтерскрипта. А у нас мод. Стираем. Code public OnFilterScriptExit() { return 1; } Этот паблик отвечает за все происходящее при выключении фильтерскрипта. Естественно стираем. Code public OnGameModeInit() { // Don't use these lines if it's a filterscript SetGameModeText("Blank Script"; AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } А вот он уже паблик мода. В нем все функции, приходящие в действие при включении мода. Code // Don't use these lines if it's a filterscript В переводе "не используйте данные линие, если это фильтерскрипт". А у нас это мод. Можно этот текст стереть. Code SetGameModeText("Blank Script"); Это название мода. Меняем Blank Script на своё, например DM 2010. Code AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); Вот с этим уже разберемся поподробней. Это скин, заключенный в мод. Если все так и будет, то в моде будет доступен всего лишь 1 скин CJ, который будет спавниться в Лас Вентурас. Для того, чтобы исправить это, открываем папку с игрой (GTA San Andreas), находим файл samp_debug и выбираем Launch Debug. Происходит обычная загрузка SA-MP, но вместо обычного вида на пляж в Лос Сантос мы появляемся в Лос Сантос около надписи VINEWOOD Сиджеем. Не пугайтесь, это обычное дело. Итак, насчет скинов. Для начала выберите место, где хотите, чтобы появлялся ваш скин. Выбрали? Окей. Идем к этому месту. Если нужна машина, вызываем окно чата кнопкой F6 и прописываем команду /vsel. Листать авто можно кнопками L.Shift и R.Shift. Находим нужное авто и кликаем Enter. Вот мы добрались до нужного места. Становимся на это место именно так, как хотели бы, чтобы появлялся персонаж. Теперь кликаем клавиши F11 и F12, выбираем нужный скин и прописываем команду /save. Вот мы сохранили спавн игрока.Теперь заходим в \Мои документы\GTA San Andreas User Files\SAMP и открываем файл savedpositions.txt. Последняя строка, начинающаяся на AddPlayerClass это и есть спавн игрока. Вставляем её в public OnGameModeInit(). Если мы хотим несколько скинов, то втавляем спавны один за другим. Теперь попробую обьяснить еще подробнее. Строку Code AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); можно обьяснить иначе Code AddPlayerClass(Модель игрока, X, Y, Z, Направление, Оружие 0, Боеприпасы 0, Оружие 1, Боеприпасы 1, Оружие 2, Боеприпасы 2); Модель игрока можно узнать здесь, "X", "Y" and "Z" - координаты точки возрождения, "направление" - направление куда лицом смотрит персонаж. Номера оружия можно найти ниже, а номера боеприпасов - просто количество боеприпасов на оружие которое вы хотите им давать при возрождении (Количество боеприпасов оружия ближнего боя всегда должно равняться 0). Теперь поговорим о спавнах авто. Спавны авто также следует вставлять в public OnGameModeInit(). Спавн авто выглядит примерно так Code AddStaticVehicle(445,1364.4244,-1287.0857,13.3821,24.7950,30,30); Это спавн авто Гринвуд у аммунации Лос Сантоса. Для того, чтобы поставить свой спавн авто, совершаем уже знакомую нам операцию. Открываем папку с игрой (GTA San Andreas), находим файл samp_debug и выбираем Launch Debug. Появляемся в Лос Сантос около надписи VINEWOOD Сиджеем. Для начало выберем место, где хотим, чтобы появлялось наше авто, затем вызываем окно чата кнопкой F6 и прописываем команду /vsel. Находим нужное авто и кликаем Enter. Вот мы добрались до нужного места. Не вылезая из авто прописываем команду /save. Вот мы сохранили спавн авто.Теперь заходим в \Мои документы\GTA San Andreas User Files\SAMP и открываем файл savedpositions.txt. Последняя строка, начинающаяся на AddStaticVehicle это и есть спавн авто. Вставляем её в public OnGameModeInit(). Если мы хотим несколько авто, то втавляем спавны один за другим. Теперь попробую обьяснить еще подробнее. Строку Code AddStaticVehicle(445,1364.4244,-1287.0857,13.3821,24.7950,30,30); можно обьяснить иначе Code AddStaticVehicle(Модель авто, X, Y, Z, Направление, Цвета); Модель авто можно узнать здесь, "X", "Y" and "Z" - координаты точки возрождения, "направление" - направление куда направлено передом авто, "цвета" - цвет авто. Едем дальше. Code public OnGameModeExit() { return 1; } Этот паблик отвечает за все происходящее при выключении мода. Code public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } Этот паблик отвечает за все происходящее при выборе персонажа. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); - позиция персонажа при выборе SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); - позиция камеры SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); - направление камеры на определенное место Code public OnPlayerConnect(playerid) { return 1; } Этот паблик отвечает за все происходящее при присоединении игрока к серверу. Сюда можно вставить привествие. Будет выглядить так. Code public OnPlayerConnect(playerid) { SendClientMessage(playerid,0xFF66FFAA,"Добро пожаловать на наш сервер"); return 1; } Если сделать так, то при входе игрока на сервер ему будет выдаваться сообщение розовым цветом Добро пожаловать на наш сервер. Code public OnPlayerDisconnect(playerid, reason) { return 1; } Этот паблик отвечает за все происходящее при отсоединении игрока от сервера. Code public OnPlayerSpawn(playerid) { return 1; } Этот паблик отвечает за все происходящее при спавне игрока. Code public OnPlayerDeath(playerid, killerid, reason) { return 1; } Этот паблик отвечает за все происходящее при смерти игрока. Code public OnVehicleSpawn(vehicleid) { return 1; } Этот паблик отвечает за все происходящее при спавне авто. Code public OnVehicleDeath(vehicleid, killerid) { return 1; } Этот паблик отвечает за все происходящее при взрыве авто. Code public OnPlayerText(playerid, text[]) { return 1; } Этот паблик отвечает за все происходящее при написании игрока в чат любого символа. Code public OnPlayerPrivmsg(playerid, recieverid, text[]) { return 1; } Этот паблик отвечает за все происходящее при получении игроку приватного сообщения. Code public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } return 0; } Этот паблик отвечает за все команды сервера. Здесь уже создана команда /mycommand, но действие к ней не предназначено. Попробуем убить игрока. Вместо Напишем Code SetPlayerHealth(playerid, 0); Теперь при вводе команды /mycommand игрок будет умирать. Дальше. Code public OnPlayerInfoChange(playerid) { return 1; } Этот паблик отвечает за все происходящее при изменении информации игрока. Кстати, лично я никогда еще не использовал этот паблик. Code public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } Этот паблик отвечает за все происходящее при входе игрока в авто. Code public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } Этот паблик отвечает за все происходящее при выходе игрока из авто. Code public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } Этот паблик отвечает за все происходящее при изменении статистики игрока. Code public OnPlayerEnterCheckpoint(playerid) { return 1; } Этот паблик отвечает за все происходящее при входе игрока на чекпоинт. Code public OnPlayerLeaveCheckpoint(playerid) { return 1; } Этот паблик отвечает за все происходящее при выходе игрока с чекпоинта. Code public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } Этот паблик отвечает за все происходящее при входе игрока на гонку. Code public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } Этот паблик отвечает за все происходящее при выходе игрока с гонки. Code public OnRconCommand(cmd[]) { return 1; } Этот паблик отвечает за все происходящее при использовании игрока ркон команды. Code public OnObjectMoved(objectid) { return 1; } Этот паблик отвечает за все происходящее при движении обьекта. Code public OnPlayerObjectMoved(playerid, objectid) { return 1; } Этот паблик отвечает за все происходящее при движении игрока обьекта. Code public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } Этот паблик отвечает за все происходящее при входе игрока на пикап. Code public OnPlayerSelectedMenuRow(playerid, row) { return 1; } Этот паблик отвечает за все происходящее при выборе игрока пункта меню. Code public OnPlayerExitedMenu(playerid) { return 1; } Этот паблик отвечает за все происходящее при закрытии меню игрока. На этом всё. С Вами был wOLF aka WerWolf. До встречи в новых уроках. Удачи! Автор: wOLF aka WerWolf
|
|