08:47
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [FAQ] Учимся работать с PAWN+MYSQL
[FAQ] Учимся работать с PAWN+MYSQL
FiLEДата: Воскресенье, 18.11.2012, 23:36 | Сообщение # 1
Группа: Разработчики
Сообщений: 681
Награды: 70
Город: Одесса
Замечания: 0%
Статус:
Учимся работать с PAWN + MySQL

Введение:
Сегодня большие проекты и не очень создают готовые моды или редактируют старые с целью установки в свой мод базы данных MySQL. А все потому, что переход на БД открывает нам большие возможности и удобства, подкидывает Ваш сервер на несколько ступенек верх. Что нам дает такого база данных? Ну, во-первых в scriptfiles нашего сервера не будет валяться тысячи файлов-аккаунтов, которые засирают, хоть и немного, выделенного места под сервер и если Вы делаете бекап аккаунтов - это жутко долго. Во-вторых в базе данных аккаунты легче редактировать. В третьих базу данных можно держать на совсем постороннем ресурсе. Мы можем подключить к БД наш сайт => UCP, просмотр статистики на сайте, и много другое что только можно придумать, за исключением невозможного, ну Вы сами знаете crazy .

Создание Базы Данных:
Если Ваш хостер предоставляет Вам базу данных, то создавать её не нужно. она уже готова, нужно знать только данные для подключения.
Если Вы работаете на локальном хосте (на своем компе), то установите любую хорошую сборку для создания веб-сайта, например XAMPP.
Зайдите в PHPmyAdmin и создайте свою БД. Как пользоваться PHPmyAdmin и создавать базы, таблицы Вам расскажет google youtube. suicide2

Выбор плагина mysql для сервера:
Существует несколько видов плагинов от разных разработчиков. Есть небольшие отличия в названиях и количестве функций, может еще в чем-то, но везде один и тот-же метод подачи запросов в базу. Вы можете почитать описания каждого из плагинов и выбрать для себя свой идеал :)
Я же буду использовать плагин MySQL Plugin R6, как-то привык с ним работать.

Подключение плагина и инклуда:
1. Закидываете плагин в папку с плагинами.
2. Закидываете инклуд в папку инклудов программы pawno
3. Прописываете в начале мода строку к своему инклуду.
4. Прописываете плагин в конфиге сервера.

Работа с Базой Данных:
Теперь начинается самое интересное.
Я думаю Вы уже создали табличку в базе данных.
Работаем в самом моде.

В начале мода пишем:
Code

#define ENABLE_DEBUGGING true
new g_ConnectionHandle;

В паблике OnGameModeInit
Code

mysql_debug(ENABLE_DEBUGGING);
g_ConnectionHandle = mysql_connect("host", "user", "database", "password");

Тут все прозрачно:
mysql_debug - включаем журнал работы базы (если не нужно выключите)
mysql_connect - соединяемся с базой данных. Значения поменяйте на свои.

Выполнение запросов:

Выбираем один аккаунт игрока у которого номер = PlayerInfo[playerid][pSQLID]
Code

new query[128];
format(query, sizeof(query), "SELECT * FROM players WHERE id = %d LIMIT 1",PlayerInfo[playerid][pSQLID]);
mysql_query(query);
mysql_store_result();


Обновить таблицу houses Выставить owner=0 в строке где id=houses[allnumber[playerid]][hid]
Code

new query[512];
format(query, sizeof(query), "UPDATE houses SET owner=0 WHERE id='%d'", houses[allnumber[playerid]][hid]);
mysql_query(query);
mysql_store_result();

Точно таким-же способом обновляем данные, удаляем строки, добавляем и т.п.
Очень советую поковыряться в системах регистраций на MySQL, разобрать все по полочкам.

На этом наверное все! Что забыл позже дорисую.






Сообщение отредактировал FiLE - Воскресенье, 18.11.2012, 23:40
DrevenДата: Понедельник, 19.11.2012, 01:46 | Сообщение # 2
Гуру
Группа: Продвинутые
Сообщений: 1096
Награды: 205
Город: od.ua
Репутация: 1099
Замечания: 0%
Статус:
Quote (FiLE)
g_ConnectionHandle = mysql_connect("host", "user", "database", "password");

Мне интересно зачем переменная ConnectionHandle?
Поидее она же дальше нигде не будет использоваться



www.samp-rpg.com
AirKiteДата: Понедельник, 19.11.2012, 02:07 | Сообщение # 3
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус:
Во первых непонятно в чём заключается обучение?

Quote (FiLE)
Выбираем один аккаунт игрока у которого номер = PlayerInfo[playerid][pSQLID]
Code
new query[128];   
format(query, sizeof(query), "SELECT * FROM players WHERE id = %d LIMIT 1",PlayerInfo[playerid][pSQLID]);   
mysql_query(query);

Ну и? Query запрос отправили, а где мы Выбираем? Где обработка результата (ответа от mysql сервера)???

Quote (FiLE)
Я же буду использовать плагин MySQL Plugin R7, как-то привык с ним работать.

Quote (FiLE)
mysql_query(query);

Ничего что функции mysql_query(query); в MySQL Plugin R7 попросту нет?!

Quote (Dreven)
Мне интересно зачем переменная ConnectionHandle?
Поидее она же дальше нигде не будет использоваться

Если ты конкретно об этом примере, то возникает тот же вопрос. А так вообще для тех кто не в курсе, это идентификатор подключения. Для работы с несколькими MySQL серверами.
Code

g_MySQL1 = mysql_connect("host1", "user", "database", "password");
g_MySQL2 = mysql_connect("host2", "user", "database", "password");
...
mysql_query(query,-1,-1,g_MySQL1)
...
mysql_query(query,-1,-1,g_MySQL2)



[1337GAMES] Easy RP
(SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)


Jabber: airkite@qip.ru
[Addon] QuickBinder
[FS] Online Players Record
HarrisДата: Понедельник, 19.11.2012, 10:38 | Сообщение # 4
Советчик
Группа: Продвинутые
Сообщений: 1168
Награды: 79
Город: Киев
Замечания: 20%
Статус:
Quote (FiLE)
Я же буду использовать плагин MySQL Plugin R7, как-то привык с ним работать.


Я в этом человек серый и безграмотный, но даже я знаю, что Р7 это последняя версия плагина, где команды идут разными потоками что приводит к оптимизации. А этого не написано :(

Dima-kunДата: Понедельник, 19.11.2012, 15:00 | Сообщение # 5
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
Иди русский учи
Quote (AirKite)
Ну и? Query запрос отправили, а где мы Выбираем?

Quote (FiLE)
id = %d

Он не писал, что будет присваивать какие-то значения из базы переменным. ок да?

Quote (AirKite)
MySQL Plugin R7 попросту нет?!

ну мб описался. Скорее он использовал р6. Блин.

Добавлено (19.11.2012, 15:00)
---------------------------------------------
Тема закрыта.


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
FiLEДата: Понедельник, 19.11.2012, 15:07 | Сообщение # 6
Группа: Разработчики
Сообщений: 681
Награды: 70
Город: Одесса
Замечания: 0%
Статус:
Dima-kun, спасибо что исправил опечатки в мое отсутствие, т.к. тема создавалась в форсированном режиме.

Quote (AirKite)
Во первых непонятно в чём заключается обучение?

Тебя она ничему не учит, а те кто не знают - большая помощь в установке базы данных в мод.
Думали я напишу инструкцию по всем функциям? Или Руководство по MYSQL? Зачем создавать велосипед?




Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [FAQ] Учимся работать с PAWN+MYSQL
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua