Привет! Если вы читаете это - вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы получить доступ ко всем разделам нашего форума. Удачи!
Доброго здоровьица, павновчане! Нашел на просторах интернета свежий урок по написанию мода. Надеюсь, автор не забросит то, что начал.
Итак, начнем!
Приветствую вас, дорогие скриптеры pawn.
В этой серии уроков я подробно буду описывать как написать свой Role Play мод с нуля, для тех кто только-что узнал что такое PAWN. Начнем!
Глава I. Файлы, программы нужные нам
Для начала нам понадобится сам сервер. ( http://files.sa-mp.com/samp03x_svr_R1-2_win32.zip )
Распаковываем все содержимое архива в удобную нам папку.
Далее открываем файл server.cfg (блокнотом) и меняем нужные нам данные на свои, а именно:
PHP код:
echo Executing Server Config... lanmode 0 // Не меняем! rcon_password changeme // Обязательно меняем, или сервер не запустится maxplayers 50 // Меняем на свое значение ( максимальное кол-во игроков, до 500 ) port 7777 // Порт ( по умолчанию 7777 ) hostname SA-MP 0.3 Server // Название сервера gamemode0 grandlarc 1 // Название мода, меняем на своё ( У нас это будет new.pwn, Значит меняем grandlarc на new ) filterscripts gl_actions gl_realtime gl_property gl_mapicon ls_mall attachments skinchanger vspawner // Удаляем: gl_actions gl_realtime gl_property gl_mapicon ls_mall attachments skinchanger vspawner announce 0 // Не меняем query 1 // Не меняем chatlogging 0 // Не меняем weburl www.sa-mp.com // Web-адресс сервера onfoot_rate 40 // Не меняем incar_rate 40 // Не меняем weapon_rate 40 // Не меняем stream_distance 300.0 // Не меняем stream_rate 1000 // Не меняем maxnpc 0 // Не меняем logtimeformat [%H:%M:%S] // Не меняем
Поменяли? Но это ещё не все, приписываем ко всему строку:
PHP код:
plugins streamer sscanf mysql
- Это плагины, объясню позже
У нас получиться что-то вроде этого:
PHP код:
echo Executing Server Config... lanmode 0 rcon_password 12345 maxplayers 500 port 7777 hostname New RP | Client: 0.3x gamemode0 new 1 filterscripts announce 0 query 1 chatlogging 0 weburl www. onfoot_rate 40 incar_rate 40 weapon_rate 40 stream_distance 300.0 stream_rate 1000 maxnpc 0 logtimeformat [%H:%M:%S] plugins streamer sscanf mysql
И так, если вы хотите чтобы ваш мод работал правильно, то вам понадобятся плагины такие как streamer, но так как мы будем писать мод на MySQL, нам понадобятся следующие плагины:
Стример
1. Streamer.inc, который лежит в папке pawno/include закидываем к себе в папку pawno/include вашего сервера.
2. Streamer.dll, который лежит в папке plugins закидываем в папку plugins вашего сервера. Примечание: Если сервер находиться на оси Linux, то закидываем Streamer.so, в server.cfg все плагины должны быть написаны с расширением .so. Например: Streamer.so
Ну все. Нам нужны только эти два файла. Sscanf - папку sscanf внутри можете не закидывать в папку с модом.
1. sscanf2.inc, который лежит в папке pawno/include закидываем к себе в папку pawno/include вашего сервера.
2. sscanf2.dll, который лежит в папке plugins закидываем в папку plugins вашего сервера. MySQL R7 - Мы будем использовать плагин R7
1. a_mysql.inc закидываем к себе в папку pawno/include вашего сервера.
2. mysql.dll закидываем в папку plugins вашего сервера. Этот файл обязательно кидаем в папку с сервером Денвер - И самое главное, это Denwer (Denwer обеспечит нам Базу Данных MySQL PhpMyAdmin).
Устанавливаем Denwer. Думаю, вопросы по его установке не возникнут.
Глава II. Начинаем работу
И так, установили Denwer, закинули плагины? Тогда поехали.
Для начала заходим в папку своего сервера, видим там другую папку "pawno", заходим в неё. Далее заходим в саму программу pawno.exe
Давайте начнем писать наш мод. Нажмем на самую первую иконку "New". Мы создали новый мод, если мы сохраним его под названием "new" в папку "gamemodes" запустим сервер и зайдем на него ( для захода используйте IP: 127.0.0.1 ), то увидим всем знакомого негра CJ в районе Лас Вентураса, как мы видим это ещё не совсем Role Play мод, так давайте его уже наконец начнем делать!
Идем в pawno и начинаем работу...
Для начала давайте впишем наши инклуды таким образом:
После строки:
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
Далее пропускаем строки:
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
Кстати немного о main().
Как вы видите функция print при запуске мода покажет нам текст в консоле который мы с вами ввели. Вы можете добавить ещё полей и написать в них что угодно. Так-же функция print служит для поиска багов в моде. Например у вас не работает функция, постепенно вставляйте print в код
Пример: (при проверке рекомендую использовать printr)
PHP код:
public Function(playerid) { printr("Проверяем подключен ли игрок"); if(IsPlayerConnected(playerid))// Если игрок подключен,то { printr("Проверку прошли, ставим погоду"); SetPlayerWeather(playerid, 10);// Выводим ему погоду id 10 printr("Паблик успешно выполнен"); } }
Немного истории...
При написании мода используются различные символы и переменные, разберем их.
PHP код:
|| - это означает "или", пример PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1 ( Рабочий фракции 1 или лидер фракции 1) && - это означает "и", пример PlayerInfo[playerid][pMember] == 1 && PlayerInfo[playerid][pRank] == 3 ( Рабочий фракции 1 и у него 3 ранг ) ! - это означает "не", пример (!IsPlayerConnected) ( игрок не подключен ) if - это означает "если", пример if (!IsPlayerConnected) { if PlayerInfo[playerid][pMember] == 1 && PlayerInfo[playerid][pRank] == 3; и так далее else - это означает "иначе" , также бывает выражение "else if" - иначе если
Но вернемся к моду И так, удаляем строку:
#endif
Удалили? Отлично, перейдем к разборке самого мода.
Давайте для начала пропишем данные к базе MySQL, для этого отступаем одну строку после инклудов и пишем следующее:
#define mysql_host "localhost" // если запускаем сервер у себя на компьютере, то оставляем
#define mysql_db "samp" // имя базы данных mysql
#define mysql_user "root" // пользователь Mysql
#define mysql_pass "" // пароль от mysql
#define send(%0,%1) SendClientMessage(%0, -1, %1)
Далее давайте отступим ещё одну строчку и вставим следующую строку:
new connectionHandle;
Также отступаем одну строку и вставляем:
enum pInfo
{
Key[128],//переменная пароля
Level, //уровень игрока
};
new PlayerInfo[MAX_PLAYERS][pInfo];
Далее идем чуть ниже,в public OnGameModeInit() и вставляем туда следующее:
Этим этапом мы с вами сделали регистарцию, и авторизацию на сервере. Спасибо Jeff_Hardy за данные коды по регистрации и авторизации.
Но это ещё не все, давайте запустим наш любимый Denwer, далее в адресной строке наберем следующую ссылку: http://localhost/Tools/phpMyAdmin/
Создадим нашу Базу Данных samp и зайдем в неё, зайдя в неё мы с вами увидим сверху вкладочку "SQL" или "Структура", жмем на неё.
В появившемся поле мы вставим следующий код:
CREATE TABLE IF NOT EXISTS `Accounts` (
`Name` varchar(24) COLLATE cp1251_bin NOT NULL,
`Key` varchar(30) CHARACTER SET utf8 NOT NULL,
`Level` int(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;
Все готово! Теперь мы можем скомпилировать мод (F5) и запустить его.
Зайдя на сервер мы с вами видим что появилось окно регистарции и авторизации. Но а что насчет административной панели, респавна и прочие функции? А это вы увидите в следующем уроке! Желаю удачи!
Исходники: Мод Автор: *Оса*
В следующем уроке мы напишем систему административной панели, дома, респаун и первую Role Play функцию.
Глава II ( 2 ). #define
На протяжении всего мода будут использоваться константы цветов и прочего. Вот некоторые цвета. (Цвета состоят по типу 0xFF0000AA - Где важные цифры только FF0000, остальные цвета вы можете посмотреть на http://yandex.ru/yandsearch?text=%D1...=1955454&lr=33 )
Вставляем чуть ниже include:
Ну и нах#я ты ее юзаешь, если не используешь в половине функций? Если случится реконект - половина мода не будет работать (на случай если тебе интересны последствия)
Обращаться к базе, чтоб чекнуть пароль - не есть збс
И ко всему прочему в теме куча не нужного хлама про плагины, настройку сервера, дебаг.. ЗАЧЕМ??
Ну и нах#я ты ее юзаешь, если не используешь в половине функций? Если случится реконект - половина мода не будет работать (на случай если тебе интересны последствия)
Обращаться к базе, чтоб чекнуть пароль - не есть збс
И ко всему прочему в теме куча не нужного хлама про плагины, настройку сервера, дебаг.. ЗАЧЕМ??
frog163, я лишь скопировал урок. Делал по нему, все прекрасно работает. Поэтому эта тема здесь.
Прочитал урок и понял как написать мод с нуля на мускул р7. Не знаю чтобы я делал без этого великолепного урока. Никогда бы наверно не понял как написать мод с нуля на мускул р7. Спасибо.