Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Разбираем MySQL плагин

q0b3rMAN

Изучающий
Пользователь
Регистрация
19 Фев 2011
Сообщения
111
Лучшие ответы
0
Репутация
139
В данном уроке мы познакомимся с вами исходниками плагина MySQL.
Для того что-бы мы могли компилировать исходники данного плагина потребуется библиотека libmysql.dll.Для того что-бы ее загрузить открываем Dev-C++, открываем вкладку Сервис => Проверить обновления/пакеты..., выбираем источник загрузки в поле: Select Devpak выбираем второй вариант ( devpaks.org ).Открывается список доступных библиотек для загрузки, щелкаем по вкладке Update ( что-бы выстроить все в ряд по алфавиту ), а далее ищем libmysql, ставим на него галочку, внимание выбираем под свою версию, я на пример поставил на версии 4.1.13a, и нажимаем Download selected - пошла загрузка пакета, ждем.Потом появится подтверждение, нажимаем Install.

Отлично, пакеты мы установили, теперь мы научили наш компилятор компилировать MySQL плагин.
Далее, приступим к просмотру исходников плагина, скачиваем их, по ссылке -

Распаковываем в удобное вам место.Открываем папку, и находим файл samp-mysql.dev, открываем.
Слева мы видем навигацию по файлам проекта, например amx.h - это поддержка AMX.
А допустим amxplugin.cpp - это код плагина для работы с AMX модом.

Теперь перейдем к файлу sampmysql.cpp - это и есть основной код плагина.
Незабываем что Dev-C++ это компилятор языка C++.
Например, обозначение // не интерпретируется как код, также как и /* - */.
Вверху мы видем автор оставил небольшую информацию ( перевод ):
/**************************************************************************/
SAMP-MySQL V0.15 плагин
Кодируется ADreNaLINe-DJ
Контакты: adrenalinedj@msn.com
Эта программа является свободным программным обеспечением, вы можете распространять или изменять её.
Это на условиях GNU General Public License, опубликованной
Free Software Foundation; либо версии 3 лицензии, либо
(По вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной,
Но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, даже без подразумеваемой гарантии
Или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Смотрите
GNU General Public License для более подробной информации.

Вы должны были получить копию лицензии GNU General Public
Вместе с этой программой. Если нет, см. <http://www.gnu.org/licenses/>.
Ниже мы видем такие строки:
PHP:
#include "SDK/plugin.h"
#if defined WIN32
  //include this before mysql.h because it depends on socket types
  #include <winsock.h>
#endif
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
Это и есть подключение инклудов.

Теперь полистаем код и найдем там строки например:
PHP:
	if(mysql_real_connect(&connexion, serveur, user, password, 0, port_i, 0, 0))
	{
		logprintf("\nConnection to MySQL database: Successfull !");
		free((void*)serveur);
		free((void*)port_s);
		free((void*)user);
		free((void*)password);
		return 1;
	}
	else
	{
		logprintf("\nConnection to MySQL database: Failed !");
		logprintf("%s\n",mysql_error(&connexion));
		free((void*)serveur);
		free((void*)port_s);
		free((void*)user);
		free((void*)password);
		return 0;
	}
Программист даже с начальными знаниями pawno поймет смысл этой функции.
Тут используется оператор if. на mysql_real_connect.
Если двинутся левее этих слов, видны такие слова:
PHP:
connexion, serveur, user, password
- это использование переменных.
Если говорить более доступным языком, если соединение с MySQL сервером прошло спешно то используем функцию logprintf, запишем в лог:
Connection to MySQL database: Successfull !
А если нет, то запишем в лог:
Connection to MySQL database: Failed !
Далее предлагаю вам найти строки:
PHP:
AMX_NATIVE_INFO SAMPMySQLNatives[ ] =
{
	{ "samp_mysql_connect",			n_samp_mysql_connect },
	{ "samp_mysql_select_db",			n_samp_mysql_select_db },
	{ "samp_mysql_query",			n_samp_mysql_query },
	{ "samp_mysql_store_result",			n_samp_mysql_store_result },
	{ "samp_mysql_fetch_row",			n_samp_mysql_fetch_row },
	{ "samp_mysql_get_field",			n_samp_mysql_get_field },
	{ "samp_mysql_num_rows",			n_samp_mysql_num_rows },
	{ "samp_mysql_num_fields",			n_samp_mysql_num_fields },
	{ "samp_mysql_ping",			n_samp_mysql_ping },
	{ "samp_mysql_real_escape_string",			n_samp_mysql_real_escape_string },
	{ "samp_mysql_free_result",			n_samp_mysql_free_result },
	{ "samp_mysql_strtok",			n_samp_mysql_strtok },
	{ "samp_mysql_close",			n_samp_mysql_close },
	{ 0,					0 }
};
Это и есть функции в коде pawn, тут мы можем их даже изменять, например:
Если мы напишем заместо samp_mysql_connect - samp_mysql_go, то следовательно в самом моде мы будем использовать функцию типа:
PHP:
samp_mysql_go("127.0.0.1", "root", "");
В общем, как то так, пишите, задавайте вопросы! :)
Копирайты pawno-info.ru
 
Сверху Снизу