[Pawno Перевод мода на "MySQL R8"
|
|
DexT3R |
Дата: Понедельник, 18.11.2013, 20:15 | Сообщение # 1
|
(•̪●)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿ ̿””
Сообщений: 1978
Статус: Offline
|
Всем привет с вами Kukushka, недавно я увидел что люди не знают как подключатся к БД MySql и решил показать как это сделать и как свой мод перевести на MySql
Итак, приступим: В моём случае используется Denwer (Скачать).
Итак, после установки Denwer перейдём к phpmyadmin и создадим базу с таблицей. Ссылка на phpmyadmin: localhost/Tools/phpmyadmin
Создаём базу данных, в которой будем работать: После успешного создания базы переходим к созданию таблицы игроков (в моём случае "users"): После этого создаём поля в таблице (в нашем случае у нас будет: ник игрока, пароль и уровень): Далее переходим к игровому моду.
Для дальнейшей работы необходимо скачать плагины и инклюд.
Инклюд: Скачать | скинуть в папку pawno/include Плагин: для Windows-Скачать | для Linux-Скачать | скинуть в папку plugins LibMySQL: Скачать | cкинуть в КОРЕНЬ сервера
Первым делом подключим инклюд. В шапку мода: Далее зададим дефайны (для нашего-же удобства): P.S наши данные для входа Код #define MYSQL_DEBUG 1 #define MYSQL_HOST "localhost" #define MYSQL_USER "root" #define MYSQL_DATABASE "server" #define MYSQL_PASS "" #define mysql_player playerid, query[] #define f(%1, format(%1,sizeof(%1), Итак, сначала необходимо установить связь с базой данных и проверить её.
Создадим переменную (под дефайнами): Переходим к паблику OnGameModeInit (отвечает за включение мода) и вставляем туда: Код base = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASS); //соединение MySQLTest(); // проверка подключения Создадим проверку на подключение к БД: Код stock MySQLTest() { mysql_set_charset("utf8_bin", base); mysql_function_query(base, "SET NAMES 'utf8'", false, "", ""); mysql_function_query(base, "SET CHARACTER SET 'cp1251'", false, "", ""); printf("\nПодключено к базе данных: %s", (mysql_ping(base)==1 ? ("Успешно")"Неуспешно"))); return true; } Далее, переходим к записи в таблицу (регистрация аккаунта). В диалог ввода пароля (при регистрации) добавляем: Код AccountCreate(playerid,inputtext); Создадим переменную для ника игрока (если нету): Код enum pInfo { pNick } new PlayerInfo[MAX_PLAYERS][pInfo]; Добавим в OnPlayerConnect: Код GetPlayerName(playerid, PlayerInfo[playerid][pNick], MAX_PLAYER_NAME); Создаём сам AccountCreate: Код AccountCreate(playerid,password[]) { static query_mysql[160]; f(query_mysql, "INSERT INTO `users` (`Nick`, `Pass`, `Level`) VALUES ('%s', '%s', '0')", PlayerInfo[playerid][pNick], password); mysql_function_query(base, query_mysql, true, "", "d", playerid); } Далее изучим авторизацию.
В диалог с авторизацией (со вводом пароля) добавим: Код static query_mysql[120]; f(query_mysql, "SELECT * FROM `users` WHERE `Nick` = '%s' AND `Pass` = '%s'", PlayerInfo[playerid][pNick], inputtext), mysql_function_query(base, query_mysql, true, "OnPlayerLogin", "d", playerid); Создадим сам OnPlayerLogin: Код forward OnPlayerLogin(mysql_player, extraid, connectionHandle); public OnPlayerLogin(mysql_player, extraid, connectionHandle) { static rows, fields; cache_get_data(rows, fields); if(rows) // при правильно введённом пароле { SetPVarInt(playerid, "Level", cache_get_field_int(0, "Level", base)); //берём из ячейки "Level" данные и устанавливаем их в пвар SendClientMessage(playerid, -1, "Вы успешно авторизировались"); } else //если игрок ввёл неверный пароль { //Здесь ставим диалог повторной авторизации } return true; } Авторизация готова. Переходим к сохранению аккаунтов.
За сохранение отвечает паблик OnPlayerDisconnect (отсоединение игрока от сервера).
Добавляем туда: Код static str[250]; f(str, "UPDATE `users` SET `Level` = '%d' WHERE `Nick` = '%s'",GetPVarInt(playerid,"Level"),PlayerInfo[playerid][pNick]); // устанавливаем Level игроку, у которого Nick равен полученному
Всем спасибо за внимание , удачи ;)
НИЧЕГО НЕ ПРОДАЮ В ТЕЛЕГРАММЕ И ВК!!
Сообщение отредактировал Kukushka - Четверг, 21.11.2013, 22:44 |
|
|
|
Saint[yl] |
Дата: Понедельник, 18.11.2013, 21:35 | Сообщение # 2
|
^^SвYтый YлЬка
Сообщений: 248
Статус: Offline
|
Обнови изображения. И еще сразу скажу, что если и писать мод, то сразу на MySQL. А если переводить, то нужно иметь кучу терпения и сил.
========================== [+] Skype: saint.yl [+] ВКонтакте: vk.com/saintyl ========================== Ничего Не покупаю / Не продаю
|
|
|
|
DexT3R |
Дата: Понедельник, 18.11.2013, 22:10 | Сообщение # 3
|
(•̪●)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿ ̿””
Сообщений: 1978
Статус: Offline
|
Saint[yl], Соглашусь, просто имею опыт в переводе мода на MySQL Ну может кто то скачает мод, он ему понравится, а MySQL там нет, вот и будет знать как добавить систему MySQL, можно еще и дома и бизнесы перевести на эту систему и добавить чтоб можно редачить данные уже через базу а не через scriptfiles Вот почему мне нравится MySQL
НИЧЕГО НЕ ПРОДАЮ В ТЕЛЕГРАММЕ И ВК!!
|
|
|
|
Saint[yl] |
Дата: Вторник, 19.11.2013, 09:27 | Сообщение # 4
|
^^SвYтый YлЬка
Сообщений: 248
Статус: Offline
|
Kukushka, Если кто-то скачает мод, то в 80% случаев проект не запуститься вообще, в 15% будет безуспешным. Добавлено (19.11.2013, 09:27) --------------------------------------------- Скриншоты обнови то
========================== [+] Skype: saint.yl [+] ВКонтакте: vk.com/saintyl ========================== Ничего Не покупаю / Не продаю
|
|
|
|
DexT3R |
Дата: Вторник, 19.11.2013, 10:01 | Сообщение # 5
|
(•̪●)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿ ̿””
Сообщений: 1978
Статус: Offline
|
Saint[yl], Обновил, спасибо что напомнил Текст тоже обновил, допустил ошибку в оформлении, теперь все нормально
НИЧЕГО НЕ ПРОДАЮ В ТЕЛЕГРАММЕ И ВК!!
|
|
|
|
[CM]Lucas |
Дата: Среда, 20.11.2013, 17:09 | Сообщение # 6
|
Боец
Сообщений: 79
Статус: Offline
|
respect
|
|
|
|
DexT3R |
Дата: Четверг, 21.11.2013, 22:44 | Сообщение # 7
|
(•̪●)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿ ̿””
Сообщений: 1978
Статус: Offline
|
Обновил, теперь ссылки на скачку файлов кликабельны
НИЧЕГО НЕ ПРОДАЮ В ТЕЛЕГРАММЕ И ВК!!
|
|
|
|
HDD |
Дата: Суббота, 23.11.2013, 18:02 | Сообщение # 8
|
Любитель
Сообщений: 36
Статус: Offline
|
Del, не заметил
Сообщение отредактировал HDD - Воскресенье, 24.11.2013, 12:24 |
|
|
|
DexT3R |
Дата: Суббота, 23.11.2013, 20:57 | Сообщение # 9
|
(•̪●)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿ ̿””
Сообщений: 1978
Статус: Offline
|
Цитата Kukushka ( ) За сохранение отвечает паблик OnPlayerDisconnect (отсоединение игрока от сервера).
НИЧЕГО НЕ ПРОДАЮ В ТЕЛЕГРАММЕ И ВК!!
|
|
|
|
[CM]Lucas |
Дата: Вторник, 26.11.2013, 19:00 | Сообщение # 10
|
Боец
Сообщений: 79
Статус: Offline
|
Спасибо за урок!
|
|
|
|
qqqq123 |
Дата: Вторник, 10.12.2013, 00:15 | Сообщение # 11
|
Боксёр
Сообщений: 526
Статус: Offline
|
Спасибо! полезно.
|
|
|
|
Saint[yl] |
Дата: Вторник, 10.12.2013, 08:51 | Сообщение # 12
|
^^SвYтый YлЬка
Сообщений: 248
Статус: Offline
|
Kukushka, Лучше через сток вызывать сохранение. Ибо при падении сервера будет откат
========================== [+] Skype: saint.yl [+] ВКонтакте: vk.com/saintyl ========================== Ничего Не покупаю / Не продаю
|
|
|
|
DexT3R |
Дата: Пятница, 13.12.2013, 19:08 | Сообщение # 13
|
(•̪●)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿ ̿””
Сообщений: 1978
Статус: Offline
|
Saint[yl], А я когда-то думал почему у меня откат сервера был
НИЧЕГО НЕ ПРОДАЮ В ТЕЛЕГРАММЕ И ВК!!
|
|
|
|
Saint[yl] |
Дата: Суббота, 14.12.2013, 10:54 | Сообщение # 14
|
^^SвYтый YлЬка
Сообщений: 248
Статус: Offline
|
Kukushka, У каждого способоа свои минусы, в моем способе сохраняется например раз в час, но все же сохраняется. А так у всех будет откат до того времени, когда они зашли
========================== [+] Skype: saint.yl [+] ВКонтакте: vk.com/saintyl ========================== Ничего Не покупаю / Не продаю
|
|
|
|
[CM]Фунтик |
Дата: Суббота, 14.12.2013, 19:03 | Сообщение # 15
|
• Funya nyawka je •
Сообщений: 127
Статус: Offline
|
Спасибо большое.
Фунтик Ничего не покупаю, не продаю! Помогаю новичкам пишите.
|
|
|
|