Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 1
  • 1
Модератор форума: KaTacTpOqpa  
Создание своего первого мода! (Полезный урок)
Polcar Сообщение # 1  | 09:06:58
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
В этом уроке мы познакомимся с программой Pawno и сделаем свой первый мод. Итак, поехали.

Скачаем программу Pawno, разархивируем её куда угодно и открываем. Что у нас? Правильно, ничего
Открываем в верхнем левом угл меню File и выбираем пункт New (такую операцию можно проделать комбинацией клавиш Ctrl+N). Вот наш первый мод. Начинаем с самого начала.

Code
#include <a_samp>

Это необходимый инклуд, обязателен во всех модах и скриптах.
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
// Do something here

Напишем
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




[Swat]econ Сообщение # 2  | 16:42:24
Пользователи
Сообщений: 45
Репутация: 3
Народ а как сделать регистрацию
Ну,как у вас?


BJIADOKC Сообщение # 3  | 20:12:07
Скриптеры
Сообщений: 601
Репутация: 161
ахах, чтобы сделать регистрацию тебе нужно минимум знать инклуд дини (полкар гдето про него писал, пошарься на форуме) + к этому нужен норм скилл в павно

тут больше не сижу... открыл свой проект
[Swat]econ Сообщение # 4  | 14:26:32
Пользователи
Сообщений: 45
Репутация: 3
А ты можешь написать? cry

BJIADOKC Сообщение # 5  | 14:58:45
Скриптеры
Сообщений: 601
Репутация: 161
могу, будет время, запилю в урок biggrin

тут больше не сижу... открыл свой проект
gta Сообщение # 6  | 15:37:11
Пользователи
Сообщений: 15
Репутация: 0
можно просто чистый лист

Добавлено (08.10.2011, 15:37)
---------------------------------------------
нажимашь и вот те чистый мод

[GrovE]Sanya_Killer Сообщение # 7  | 06:37:52
Sa-mp q all
Пользователи
Сообщений: 41
Репутация: 225
Спасибо.Помогли)


Фотошопом временно не занимаюсь.
SoNik)) Сообщение # 8  | 13:47:56
Редактор
Сообщений: 131
Репутация: 137
Цитата (|pr0_Sn1peR|_MiniguN)
Полезный урок, он мне поможит в создании моего сервера))

Когда ты уже нам сервер сделаешь ? xD
[JIuC]eH[oK] Сообщение # 9  | 15:50:37
Модераторы
Сообщений: 972
Репутация: 414
Цитата (SoNik)))
Когда ты уже нам сервер сделаешь ? xD

У нас есть сервер. Но мод вообще не какой, там надо LAdmin новый ставить. И подправить диалог-окна.


Администратор Универсала.
По вопросам обращайтесь ко мне в
Личку.
SoNik)) Сообщение # 10  | 00:33:18
Редактор
Сообщений: 131
Репутация: 137
Цитата (|pr0_Sn1peR|_MiniguN)
У нас есть сервер. Но мод вообще не какой, там надо LAdmin новый ставить. И подправить диалог-окна.

Я в тебя верю хД
[JIuC]eH[oK] Сообщение # 11  | 14:04:34
Модераторы
Сообщений: 972
Репутация: 414
Цитата (SoNik)))
Я в тебя верю хД

Выучи Pawno и херачь сам сервер!


Администратор Универсала.
По вопросам обращайтесь ко мне в
Личку.
NeaKTIV Сообщение # 12  | 01:52:49
Пользователи
Сообщений: 10
Репутация: 0
Цитата
Выучи Pawno и херачь сам сервер!

Pawn* , что там учить то) я сам думал раньше что сложно, а щас для меня ошмбки исправить как делать нефиг ибо ищу альтернативу тем строчкам, в которых ошибка


[img]http://gta-fspoint.my1.ru/rineview1.png[/img]
  • Страница 1 из 1
  • 1
Поиск: