Снова всех приветствую, сегодня продолжаем писать мод с нуля. Уже в этом уроке будет создаваться регистрация и авторизация и после нее конечно же отправление игрока на спавн. Не буду тянуть драгоценные секунды вашей жизни. Приступаем:
Качаем архив, который находится в конце урока и распаковываем его в папку с сервером. Открываем его конфиг и вставляем в самый низ строку подключения плагинов.
Закончили с подключением плагина, переходим в мод.
Открываем наш мод, который мы создавали в прошлом уроке и на первых строчках мы видим код:
Его нужно почистить от лишнего мусора, который нам не понадобится. Весь код можно удалить, кроме main() <. >и подключения инклуда SA-MP’a.
Теперь нам нужно подключить сам инклуд MySQL, взаимодействовать который будет напрямую с плагином для работы с БД. После строки с подключением последнего инклуда вставляем новую строку:
и получаем
Нам нужно создать переменную, которая будет являться подключением к БД. Кроме этого, я решил сделать еще и макросы для подключения и массив, который будем использовать для форматирования запросов на 256 ячеек. Думаю, на первое время хватит.
Подключаем БД: ищем коллбэк (public) OnGameModeInit и прописываем функции подключения
Для избежания предупреждений о дубликате подключения в логах MySQL нужно закрыть подключение после выключения мода:
Настроим немного мод и можно приступать к основному.
В начало мода прописываем перечисление (enum) с автоподсчетом ID диалогов и информации о игроке:
После них создаем переменные для использования последнего перечисления (ну и еще переменную с проверкой на авторизацию игрока).
Закончено. Можно двигаться дальше. Ищем коллбэк OnPlayerConnect и нам нужно записать имя игрока и запустить таймер для выполнения запроса:
Создаем так же коллбэк, в «теле» которого будет выполняться код:
Коллбэк таймера мы создали, но теперь нужно еще и запроса. Делаем:
Создаем реакцию диалогов на действия игрока. Ищем OnDialogResponse и начинаем писать (ну не Ctrl + C же):
При авторизации мы отправляли БД запрос на поиск совпадений с name и pName и password с inputtext (хешированным). Для него тоже нужно создать коллбэк, который мы указывали при выполнении (@__mysqlUploadPlayerAccount)
Все, мы закончили. Осталось написать спавн игрока и создать базу данных. В OnPlayerSpawn:
Я буду использовать phpMyAdmin (который будет создавать для меня Denwer).
Переходим по локальному адресу localhost/Tools/phpMyAdmin
При входе в БД у нас еще нет созданных таблиц, поэтому и отображается уведомление с этой «проблемой».
Ниже видно «Создать таблицу». В поле Имя вписываем accounts (или ваш вариант), Количество столбцов оставляем пустым.
Мы все сделали, закончили, теперь можно отдыхать. Ниже можете писать свои вопросы или замечания (мне), я все прочитаю и отвечу. Следующий урок будет завтра ну или через 2-3 дня. До встречи.
Источник
Кратко о том что мы будем делать.
Данные уроки будут посвящены написанию игрового мода sa-mp с new.pwn. Мод будет жанра РПГ, написан на файловой системе с использованием инклуда mxINI.
Краткий план разработки на ближайшее время:
Основа Мода.
— Система Регистрации
— Загрузка сохранения аккаунта.
— Система Домов
— Система Бизнесов
— Система Транспорта
— Система Банка.
Это план на написание основы. После этого мод начнет заполнятся фракциями, работами и т.п.
Данный урок, будет посвящен началу разработки, и написанию системы регистрации, и загрузки сохранения аккаунта.
Пожалуй начнём.
Действие Первое. Нужные файлы, и настройка сервера:
Действие второе. Удаление лишнего из мода:
Открываем наш мод. Первое что бросается нам в глаза, это
Вот это нам не нужно. Удаляем.
Находим паблик
И после него, вставляем
В самом начале мода, мы можем видеть такую строку.
Если подумать головой, то можно понять что это подгрузка инклудов в мод. После него добавим наш инклуд:
Нажимаем F5, и компилируем мод, если всё прошло без ошибок, значит вы всё сделали правильно.
Эта строка, устанавливает название мода, которое будет видно в клиенте. Меняем его на своё.
Компилируем мод, и.. мы закончили с подготовкой мода. Теперь нас ждёт система регистрации.
Действие Третье. Сохранение аккаунта.
Переходим к созданию того, чем мы будет пользоваться постоянно. Это данные о аккаунте.
После строки с добавлением нашего инклуда, создаём масив, с информацией о игроке.
Теперь мы можем записать пароль, определённого игрока, чем мы сейчас и займёмся.
Опускаемся в самый конец мода, и создаём там, вот это:
Нажимаем F5, и мод компилируется. Если ошибок нет, то вы сделали всё правильно.
Теперь нам надо зайти в папку с сервером, открыть папку scriptfiles, и в ней добавить папку players.
Сохранение готово.
Действие Четвёртое. Создание регистрации и загрузки игрока.
Для создания регистрации, надо узнать, есть ли игрок с таким именем на сервере, для начала нужно после объявления нашего инклуда, вставить следующее:
Далее ищем паблик OnPlayerConnect. И в него добавляем:
Теперь ищем паблик, OnPlayerRequestClass, он покажет нам диалог с логином, или регистрацией, в него добавляем.
Диалоги мы показали, но теперь надо заставить его работать. Для этого нам надо сделать функцию загрузки и регистрации игрока.
Этим мы и займёмся. В конец мода, вставляем.
Функция которая зарегистрирует игрока, готова, теперь функция логина. В конец мода, добавляем.
Функция регистрации есть, логина есть, осталось заставить их работать, для этого находим паблик OnDialogResponse и вставляем в него:
Конец первой части.
Полезные ссылки:
— Include mxINI
— new.rar [1,84К]
Приношу свои извинения за ошибки в тексте.
Понравился урок? Пользуйся на здоровье.
Следующий урок, в ближайшие дни.
Автор урока: Vovan228
Источник
Как писать мод с нуля
Быстрый переход в группу «Пользователи», без надобности написания постов и ожидания.
Покупка дает возможность:
Маппинг для сервера
Моды для сервера
Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.
Модификации SA
Хотите разнообразить свою игру в San Andreas? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием
potemckin
Изучающий
Пишем мод с 0 самостоятельно.(Урок 1)
//——————————————————————————————————————\\
Здравствуйте, дорогие поситители и обитатели pawno-info.ru!
Это мой первый и я надеюсь не последний урок по созданию мода для samp.
Ну и ближе к теме.
Наш мод будет в так полюбившемся многим жанре Role Play.
Основной функционал будет на mxINI, потому что я в mySQL мало жу-жу.
//——————————————————————————————————————\\
Для начала нам надо скачать инклуд mxINI и официальный сервер samp.
Открываем папку с нашим сервером, открываем с помощью блакнота фаил server.сfg и правим в нем всё по примеру ниже
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#if defined FILTERSCRIPT
public OnFilterScriptExit()
<
return 1;
>
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;
>
public OnGameModeExit()
<
return 1;
>
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;
>
public OnPlayerConnect(playerid)
<
return 1;
>
public OnPlayerDisconnect(playerid, reason)
<
return 1;
>
public OnPlayerSpawn(playerid)
<
return 1;
>
public OnPlayerDeath(playerid, killerid, reason)
<
return 1;
>
public OnVehicleSpawn(vehicleid)
<
return 1;
>
public OnVehicleDeath(vehicleid, killerid)
<
return 1;
>
public OnPlayerText(playerid, text[])
<
return 1;
>
public OnPlayerCommandText(playerid, cmdtext[])
<
if (strcmp(«/mycommand», cmdtext, true, 10) == 0)
<
// Do something here
return 1;
>
return 0;
>
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
<
return 1;
>
public OnPlayerExitVehicle(playerid, vehicleid)
<
return 1;
>
public OnPlayerStateChange(playerid, newstate, oldstate)
<
return 1;
>
public OnPlayerEnterCheckpoint(playerid)
<
return 1;
>
public OnPlayerLeaveCheckpoint(playerid)
<
return 1;
>
public OnPlayerEnterRaceCheckpoint(playerid)
<
return 1;
>
public OnPlayerLeaveRaceCheckpoint(playerid)
<
return 1;
>
public OnRconCommand(cmd[])
<
return 1;
>
public OnPlayerRequestSpawn(playerid)
<
return 1;
>
public OnObjectMoved(objectid)
<
return 1;
>
public OnPlayerObjectMoved(playerid, objectid)
<
return 1;
>
public OnPlayerPickUpPickup(playerid, pickupid)
<
return 1;
>
public OnVehicleMod(playerid, vehicleid, componentid)
<
return 1;
>
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
<
return 1;
>
public OnVehicleRespray(playerid, vehicleid, color1, color2)
<
return 1;
>
public OnPlayerSelectedMenuRow(playerid, row)
<
return 1;
>
public OnPlayerExitedMenu(playerid)
<
return 1;
>
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
<
return 1;
>
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
<
return 1;
>
public OnRconLoginAttempt(ip[], password[], success)
<
return 1;
>
public OnPlayerUpdate(playerid)
<
return 1;
>
public OnPlayerStreamIn(playerid, forplayerid)
<
return 1;
>
public OnPlayerStreamOut(playerid, forplayerid)
<
return 1;
>
public OnVehicleStreamIn(vehicleid, forplayerid)
<
return 1;
>
public OnVehicleStreamOut(vehicleid, forplayerid)
<
return 1;
>
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
<
return 1;
>
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
<
return 1;
>
Ладно, приступим, для начала удалим кое-что, потисачим из нашего мода что-нибудь!
НЕ партесь! Нам это ненужно, это для создания FS.
Теперь сделаем наш мод более «НАШИМ» тобишь вставим наши названия!
Источник
Minecraft Modding#
Хотите создать мод для Minecraft? Добавить в игру что-то свое: блок, моба, целое измерение?
На этом сайте вы найдете интересный, понятный и подробный учебник по созданию собственных модов для Minecraft.
Вы думаете это сложно? На самом деле нет (с помощью этого учебника 🙂
С чего начать?#
Первый и абсолютно необходимый навык для создания модов — знание основ программирование и Java.
Переменная, объект, класс, метод — все эти слова должны быть вам достаточно хорошо знакомы. Если вы не знаете, что это, то вам необходимо пройти самые основы языка Java. Сделать это можно, например, по этим урокам.
Теперь поговорим об API.
API — набор инструментов для упрощения работы с программой (в нашем случае, с Minecraft).
К сожалению, никакого встроенного API для создания модов у Minecraft нет.
Minecraft не поддерживает моды!
Однако, исходный код игры можно получить, и многие разработчики стали разрабатывать свои неофициальные API: Forge, Sponge и так далее. О Forge вы наверняка не раз слышали. Это самое популярное на сегодня API для создания модов.
Поэтому у вас есть выбор.
Писать моды с помощью API#
Это будет проще. Но запускаться ваши моды смогут только на клиенте с заранее установленным API. Моды, написанные с помощью Forge пойдут только на Minecraft, где предварительно установлен Forge.
Большинство всех Minecraft модов написаны при помощи Forge API.
Плюсы
Минусы
Писать моды без помощи API#
Это несколько сложнее, так как потребует от вас глубокого понимания внутреннего устройства работы Minecraft. При написании модов без использования API вы напрямую редактируете исходный код игры. Получается, что вы словно пишете свой собственный Minecraft (или новую его версию), и никакие другие моды работать вместе с вашим скорее всего не будут.
Плюсы
Минусы
Что выбрать?#
В большинстве случаев рекомендуется писать моды при помощи Forge API. Он сейчас наиболее популярен и является практически стандартом.
Большинство модов и уроков по их созданию написанно с помощью этого API. Forge настолько распространен, что частенько под созданием модов для Minecraft понимается именно их создание с помощью Forge API.
У меня вопрос/проблема!#
Если что-то не работает, но должно, или (что еще хуже), что-то работает, но не должно, смело обращайтесь на форум за помощью.
Кстати, там можно не только просить о помощи, но еще и общаться с другими создателями модов, обмениваться опытом и рекламировать свои моды!
Как поделиться с другом?#
Вы можете просто скинуть ссылку на статью. Однако, статьи на данном сайте порой достигают внушительных размеров. В таком случае, можно поделиться ссылкой на конкретный раздел статьи.
Разделы статьи разделяются заголовками. Наведите на заголовок курсор мышки. Справа от него появится значок ссылки. Нажмите на него правой кнопкой и выберите пункт «Копировать адрес ссылки».
Вклад в учебник#
Вы можете вносить правки в существующие статьи, добавлять свои собственные, а также предлагать идеи для новых статей. Сделать это очень просто. Весь процесс полностью автоматизирован. Подробные инструкции вы можете найти на вики по работе с сайтом.
О сайте#
На просторах интернета достаточно много штучных учебников под какие-то конкретные Minecraft версии. Получается, что нет единого источника информации, который поддерживается сообществом, а не единственным автором.
Здесь мы реализуем другой подход.
Сайт является работает на статическом генераторе MkDocs с темой Material. Такой подход позволяет не возиться с исходниками сайта, а писать статьи в удобной markdown разметке, которая автоматически собирается в готовый и красивый сайт.
Источник
SamPawno
Пишем мод с нуля (MySQL R39-2 0.3z)
Описание: Уроки по скриптингу
Модератор: SJplayer
#1 Layk » 17 марта 2015, 20:38
Поменяли? Но это ещё не все, приписываем ко всему строку:
plugins streamer mysql
— Это плагины, объясню позже
У нас получиться что-то вроде этого:
И так, если вы хотите чтобы ваш мод работал правильно, то вам следующие плагины:
Для начала заходим в папку своего сервера, видим там другую папку » pawno «, заходим в неё. Далее заходим в саму программу pawno.exe Давайте начнем писать наш мод. Нажмем на самую первую иконку » New «. Мы создали новый мод, если мы сохраним его под названием » new » в папку » gamemodes » запустим сервер и зайдем на него ( для захода используйте IP: 127.0.0.1 ), то увидим всем знакомого негра CJ в районе Лас Вентураса, как мы видим это ещё не совсем Role Play мод, так давайте его уже наконец начнем делать! Идем в pawno и начинаем работу. Для начала давайте впишем наши инклуды таким образом:
После строки:
Для начала давайте удалим ненужные нам строки:
#if defined FILTERSCRIPT
public OnFilterScriptInit ()
<
print ( «\n—————————————» );
print ( » Blank Filterscript by your name here» );
print ( «—————————————\n» );
return 1 ;
>
public OnFilterScriptExit ()
<
return 1 ;
>
Кстати немного о main().
Как вы видите функция print при запуске мода покажет нам текст в консоле который мы с вами ввели. Вы можете добавить ещё полей и написать в них что угодно. Так-же функция print служит для поиска багов в моде. Например у вас не работает функция, постепенно вставляйте print в код
Пример: (при проверке рекомендую использовать print )
Немного истории.
При написании мода используются различные символы и переменные, разберем их.
Но вернемся к моду И так, удаляем строку:
Удалили? Отлично, перейдем к разборке самого мода.
#define mysql_host «localhost» // если запускаем сервер у себя на компьютере, то оставляем
#define mysql_db «samp» // имя базы данных mysql
#define mysql_user «root» // пользователь Mysql
#define mysql_pass «» // пароль от mysql
Далее давайте отступим ещё одну строчку и вставим следующую строку:
Также отступаем одну строку и вставляем:
enum pInfo
<
Key [ 128 ], //переменная пароля
Level //уровень игрока
>;
new PlayerInfo [ MAX_PLAYERS ][ pInfo ];
Далее идем чуть ниже,в public OnGameModeInit() и вставляем туда следующее:
В итоге у нас получится такой паблик (public) :
Далее таким же образом вставляем следующее в public OnGameModeExit():
В public OnPlayerConnect(playerid):
static const
str [] = «SELECT `Name` FROM `Accounts` WHERE `Name` = ‘%s'» ;
const
size = sizeof ( str )- 2 + MAX_PLAYER_NAME ;
В public OnPlayerText(playerid, text[]):
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
В самый конец кода:
Этим этапом мы с вами сделали регистрацию, и авторизацию на сервере. Спасибо Jeff_Hardy за данные коды по регистрации и авторизации.
Но это ещё не все, давайте запустим наш Denwer, далее в адресной строке наберем следующую ссылку: http://localhost/Tools/phpMyAdmin/
Создадим нашу Базу Данных samp и зайдем в неё, зайдя в неё мы с вами увидим сверху вкладочку «SQL» или «Структура», жмем на неё.
В появившемся поле мы вставим следующий код:
Все готово! Теперь мы можем скомпилировать мод (F5) и запустить его.
Автор: Pro-Pawn Team
Исходники: Мод
Источник