Как найти базу данных в моде

Здравствуйте дорогие друзья, думаю каждый из вас задавался вопросом — «А как же подключить базу данных чтобы я нормально запустил сервер«, так вот — в данном уроке вы научитесь без проблем подключать базу данных сервера и запускать сервер, приступим.

Нам понадобится программа Denwer ( CLICK )
Любой мод с базой данных
Ровные руки, и свободные 15 минут.

После того как мы приготовились у уроку, мы начинаем выполнять первый пункт:

1. Устанавливаем Denwer:
Думаю с этим у вас не будет никак проблем так как он устанавливается поэтапно, и объяснять как его установить я не буду, но если кому надо я готов помочь — если напишите в ЛС.

Переходим к второму пункту:

2. Заходим на сайт чтобы подключить саму базу данных:
После установки у нас на рабочем столе появится три иконки — а именно «Start Denwer», «Stop Denwer», «Restart Denwer» — мы кликаем два раза на «Start Denwer» и ждем когда пропадут все консоли которые появились. И так, после того как у нас закрылись все консоли — мы заходим в наш браузер и пишем: localhost, листаем ниже и видим строчку «localhost/tools/phpmyadmin»  ( Или же просто копируем мой текст в скобках и вставляем в браузер», после того как мы зашли в наш PhpMyAdmin через Denwer — мы видим кнопку «Базы данных», клацаем на данную надпись и ничего не трогаем, после переходим в наш 3 пункт.

3. Открываем нашу папку с сервером:
После того как мы открыли нашу папку с сервером — мы видим папку с названием «База данных», «БД», «Base»,  или же база данных может находиться вообще не в папке — у каждого сервера по другому, ну не суть — мы нашли нашу базу данных, и копируем ее название — после заходим в Denwer и пишем в поле «Создать базу данных» — наше название базы данных, ну а после создаем ее — теперь переходим к третьему пункту.

4. Импортируем нашу базу данных:

И так, после того как мы создали нашу базу данных —  в нашей левой панели появляется база данных с названием которым мы указали при создании, клацаем на название и нас перекидывает на страницу где хранятся наши таблицы и т.п, выше мы видем вкладку «Импорт» заходим в данную вкладку и после строки «Обзор вашего компьютера» мы видим что мы можем выбрать файл, клацаем на кнопку и выбираем путь к нашей базе данных которая стоит на сервере, когда мы выбрали базу данных — мы нажимаем «ОК» внизу, и наша база данных успешно установлена, теперь можно включать сервер и играть!

Если у вас по какой либо причине база данных успешно подключена но сервер не выдает диалог входа/регистрации мы делаем эти действия:

Заходим в PAWNO — выбираем наш .pwn сервера и находим строчку

#define mysql_host "" // Это IP нашего хостинга - если на локалке то пишем 127.0.0.1
#define mysql_db "" // Сюда в скобки пишем НАЗВАНИЕ нашей базы данных которую мы создали в Denwer
#define mysql_user "" // Логин базы данных - если на локалке то пишем root
#define mysql_pass "" // Пароль базы данных - если на локалке то оставляем пустым.
Компилируем и так же запускаем и проверяем, вуаяля вот вам ваш сервер с подключенной базой данных...

Автор темы: Я
Тема создана специально для вашего сайта (C) PAWNO-RUS
Урок написан на скорую руку, но вполне подойдет для новичков — за все ошибки в тексте пишите в ЛС, исправлю в течение 3-х часов.
Спасибо за внимание, с вами ваш #CopyRight

P.S Если вы не поняли что и как делать, то напишите в комментарии «#хочувидеоурок» — и я запишу для вас видео урок! До скорого!

#define SQL_HOST "localhost"
#define SQL_USER "root"
#define SQL_DB "weiland"
#define SQL_PASS ""

#define void%0(%1) forward %0(%1); public %0(%1)

#define MAX_FACTIONS 10

new MySQL:SQL_HANDLE;

enum uData
{
    uName[MAX_PLAYER_NAME],
    uDrvDateA[12],
    uDrvDateB[12],
    uDrvDateC[12],
    uDrvDateD[12],
    uDrvDateF[12]
};
new Info_User[MAX_PLAYERS][uData];

enum fData
{
    fName[32],
    fColor,
    fRank1[12],
    fRank2[12],
    fRank3[12],
    fRank4[12],
    fRank5[12],
    fRank6[12],
    fRank7[12],
    fRank8[12],
    fRank9[12],
    fRank10[12],
    fRank11[12],
    fRank12[12]
};
new Info_Faction[MAX_FACTIONS][fData];
new Names_Faction[MAX_FACTIONS][24] = {!"Фракция 1", !"Фракция 2", !"Автошкола", !"Армия", !"ЛСПД", !"Фракция 6", !"Фракция 7", !"Фракция 8", !"Фракция 9", !"Фракция 10"};
new Colors_Faction[MAX_FACTIONS] = {0xFFFFFFAA, 0xFFFFFFAA, 0x3366FFAA, 0x006600AA, 0xFFFFFFAA, 0xFFFFFFAA, 0xFFFFFFAA, 0xFFFFFFAA, 0xFFFFFFAA, 0xFFFFFFAA};
static query[2048];
public OnGameModeInit()
{
    SQL_HANDLE = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, "MySQL");
    mysql_tquery(SQL_HANDLE, "CREATE DATABASE IF NOT EXISTS"SQL_DB, "", "");
    mysql_close(SQL_HANDLE);

    SQL_HANDLE = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
    mysql_log();
    if(!mysql_errno()) print(!"Подключение к базе данных MySQL успешно создано!");
    else print(!"Невозможно подключиться к базе данных MySQL!");

    mysql_tquery(SQL_HANDLE, !"SHOW TABLES LIKE 'factions'", !"OnFactionsTableExist", "");
    mysql_tquery(SQL_HANDLE, !"SHOW TABLES LIKE 'players'", !"OnPlayersTableExist", "");

    strcat(Info_Faction[0][fName], !"Отсутствует", 32);
    return 1;
}
public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, Info_User[playerid][uName], MAX_PLAYER_NAME);
// # Account
    mysql_format(SQL_HANDLE, query, sizeof(query), "SELECT `Password`, `UnBanTime` FROM `players` WHERE `Username` = '%e' LIMIT 1", Info_User[playerid][uName]);
    mysql_tquery(SQL_HANDLE, query, !"OnPlayerEnter", "i", playerid);
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    if(!GetPVarInt(playerid, !"Spawned"))
    {
        mysql_format(SQL_HANDLE, query, sizeof(query), "SELECT `Country` FROM `players` WHERE `Username` = '%e' LIMIT 1", Info_User[playerid][uName]);
        mysql_tquery(SQL_HANDLE, query, !"OnPlayerNotComplete", "i", playerid);
        ResetPlayerParams(playerid);
        return 1;
    }
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    mysql_format(SQL_HANDLE, query, sizeof(query), "UPDATE `players` SET `Interior` = '%d', `VirtualWorld` = '%d', `PosX` = '%.4f', `PosY` = '%0.4f', `PosZ` = '%0.4f', `PosA` = '%0.3f' WHERE `Username` = '%e'", GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), x, y, z, a, Info_User[playerid][uName]);
    mysql_tquery(SQL_HANDLE, query, "", "");
    ResetPlayerParams(playerid);
    return 1;
}
stock ResetPlayerParams(playerid)
{
    Info_User[playerid][uName][0] = EOS;
    return 1;
}
// MySQL Func
void OnFactionsTableExist()
{
    new rows;
    if(!cache_get_row_count(rows))
    {
        mysql_tquery(SQL_HANDLE,
            "CREATE TABLE IF NOT EXISTS `factions`(
                `ID` int(10) NOT NULL AUTO_INCREMENT, 
                `FactionName` varchar(32) NOT NULL, 
                `FColor` int(11) NOT NULL, 
                `FRank1` varchar(12) NOT NULL, 
                `FRank2` varchar(12) NOT NULL, 
                `FRank3` varchar(12) NOT NULL, 
                `FRank4` varchar(12) NOT NULL, 
                `FRank5` varchar(12) NOT NULL, 
                `FRank6` varchar(12) NOT NULL, 
                `FRank7` varchar(12) NOT NULL, 
                `FRank8` varchar(12) NOT NULL, 
                `FRank9` varchar(12) NOT NULL, 
                `FRank10` varchar(12) NOT NULL, 
            PRIMARY KEY (`ID`))",
        "", "");
        mysql_tquery(SQL_HANDLE, "ALTER TABLE `factions`(
            `FRank11` varchar(12) NOT NULL, 
            `FRank12` varchar(12) NOT NULL",
        "", "");
        for(new i = 0; i < MAX_FACTIONS; i++)
        {
            Info_Faction[i][fName][0] = EOS;
            strcat(Info_Faction[i][fName], Names_Faction[i], 24);
            Info_Faction[i][fColor] = Colors_Faction[i];
            mysql_tquery(SQL_HANDLE, "INSERT IGNORE INTO `factions` 
            (`FactionName`, `FColor`, `FRank1`, `FRank2`, `FRank3`, `FRank4`, `FRank5`, `FRank6`, `FRank7`, `FRank8`, `FRank9`, `FRank10`, `FRank11`, `FRank12`) VALUES 
            ('%e', '%d', '%e', '%e', '%e', '%e', '%e', '%e', '%e', '%e', '%e', '%e', '%e', '%e')",
                Info_Faction[i][fName], Info_Faction[i][fColor],
                Info_Faction[i][fRank1], Info_Faction[i][fRank2], Info_Faction[i][fRank3], Info_Faction[i][fRank4], Info_Faction[i][fRank5], Info_Faction[i][fRank6],
                Info_Faction[i][fRank7], Info_Faction[i][fRank8], Info_Faction[i][fRank9], Info_Faction[i][fRank10], Info_Faction[i][fRank11], Info_Faction[i][fRank12]
            );
        }
        return 1;
    }
    return 1;
}
void OnPlayersTableExist()
{
    new rows;
    if(!cache_get_row_count(rows))
    {
        mysql_tquery(SQL_HANDLE,
            "CREATE TABLE IF NOT EXISTS `players`(
                `ID` int(10) NOT NULL AUTO_INCREMENT, 
                `Username` varchar(24) NOT NULL, 
                `Password` varchar(65) NOT NULL, 
                `Email` varchar(128) NOT NULL, 
                `Birth` varchar(12) NOT NULL, 
                `RegDate` varchar(12) NOT NULL, 
                `History` int(5) NOT NULL, 
                `Sex` int(5) NOT NULL, 
                `Country` int(5) NOT NULL, 
                `Skin` int(5) NOT NULL, 
                `Level` int(5) NOT NULL, 
                `Exp` int(5) NOT NULL, 
                `Admin` int(5) NOT NULL, 
                `Interior` int(3) NOT NULL, 
            PRIMARY KEY (`ID`))",
        !"OnDataBaseCreateEnd", "");
        return 1;
    }
    return 1;
}
void OnDataBaseCreateEnd()
{
    new rows;
    if(!cache_get_row_count(rows))
    {
        mysql_tquery(SQL_HANDLE, "ALTER TABLE `players` 
            ADD `VirtualWorld` int(6) NOT NULL, 
            ADD `PosX` float NOT NULL, 
            ADD `PosY` float NOT NULL, 
            ADD `PosZ` float NOT NULL, 
            ADD `PosA` float NOT NULL, 
            ADD `PddTest` float NOT NULL, 
            ADD `DrvNum` float NOT NULL, 
            ADD `DrvDateA` varchar(12) NOT NULL, 
            ADD `DrvDateB` varchar(12) NOT NULL, 
            ADD `DrvDateC` varchar(12) NOT NULL, 
            ADD `DrvDateD` varchar(12) NOT NULL, 
            ADD `DrvDateF` varchar(12) NOT NULL",
        !"OnDataBaseCreateEnd2", "");
    }
    return 1;
}
void OnDataBaseCreateEnd2()
{
    new rows;
    if(!cache_get_row_count(rows))
    {
        mysql_tquery(SQL_HANDLE, "ALTER TABLE `players` 
            ADD `LicA` int(2) NOT NULL, 
            ADD `LicB` int(2) NOT NULL, 
            ADD `LicC` int(2) NOT NULL, 
            ADD `LicD` int(2) NOT NULL, 
            ADD `LicF` int(2) NOT NULL, 
            ADD `Faction` int(2) NOT NULL, 
            ADD `InvDate` varchar(12) NOT NULL, 
            ADD `Rank` int(2) NOT NULL, 
            ADD `Pass` int(2) NOT NULL, 
            ADD `Work` int(2) NOT NULL, 
            ADD `Warn` int(2) NOT NULL, 
            ADD `UnMuteTime` int(2) NOT NULL, 
            ADD `UnBanTime` int(2) NOT NULL, 
            ADD `SDPistol` int(2) NOT NULL",
        !"OnDataBaseCreateEnd3", "");
    }
    return 1;
}
void OnDataBaseCreateEnd3()
{
    new rows;
    if(!cache_get_row_count(rows))
    {
        mysql_tquery(SQL_HANDLE, "ALTER TABLE `players` 
            ADD `Deagle` int(2) NOT NULL, 
            ADD `Shotgun` int(2) NOT NULL, 
            ADD `MP5` int(2) NOT NULL, 
            ADD `AK47` int(2) NOT NULL, 
            ADD `M4A1` int(2) NOT NULL, 
            ADD `Money` int(2) NOT NULL, 
            ADD `Law` int(2) NOT NULL, 
            ADD `Wanted` int(2) NOT NULL, 
            ADD `Spouse` varchar(24) NOT NULL, 
            ADD `Bank` int(2) NOT NULL, 
            ADD `House` int(2) NOT NULL, 
            ADD `Biz` int(2) NOT NULL, 
            ADD `Flat` int(2) NOT NULL, 
            ADD `Room` int(2) NOT NULL, 
            ADD `BankAccount` int(2) NOT NULL",
        !"OnDataBaseCreateEnd4", "");
    }
    return 1;
}
void OnDataBaseCreateEnd4()
{
    new rows;
    if(!cache_get_row_count(rows))
    {
        mysql_tquery(SQL_HANDLE, "ALTER TABLE `players` 
            ADD `Hunger` int(2) NOT NULL, 
            ADD `Piss` int(2) NOT NULL, 
            ADD `Hygiene` int(2) NOT NULL",
        "", "");
    }
    return 1;
}
void OnPlayerNotComplete(playerid)
{
    new rows;
    if(!cache_get_row_count(rows))
    {
        mysql_format(SQL_HANDLE, query, sizeof(query), "DELETE FROM `players` WHERE `Username` = '%e' LIMIT 1", Info_User[playerid][uName]);
        mysql_tquery(SQL_HANDLE, query, "", "");
        ResetPlayerParams(playerid);
        return 1;
    }
    return 1;
}
void OnPlayerEnter(playerid)
{
    new rows;
    if(!cache_get_row_count(rows))
    {
// регистрация
        return 1;
    }
    else
    {
        new btime;
        cache_get_value_name_int(0, !"UnBanTime", btime);
        if(btime > gettime()) return Kick(playerid);
// логин
    }
    return 1;
}
void OnPlayerDataLoaded(playerid)
{
    new skin; cache_get_value_name_int(0, !"Skin", skin); SetPVarInt(playerid, !"Skin", skin); SetPlayerSkin(playerid, GetPVarInt(playerid, !"Skin"));
    new sex; cache_get_value_name_int(0, !"Sex", sex); SetPVarInt(playerid, !"Sex", sex);
    new admin; cache_get_value_name_int(0, !"Admin", admin); SetPVarInt(playerid, !"Admin", admin);
    new faction; cache_get_value_name_int(0, !"Faction", faction); SetPVarInt(playerid, !"Faction", faction);
    new rank; cache_get_value_name_int(0, !"Rank", rank); SetPVarInt(playerid, !"Rank", rank);
    new pass; cache_get_value_name_int(0, !"Pass", pass); SetPVarInt(playerid, !"Pass", pass);
    new work; cache_get_value_name_int(0, !"Work", work); SetPVarInt(playerid, !"Work", work);
    new law; cache_get_value_name_int(0, !"Law", law); SetPVarInt(playerid, !"Law", law);
    new wanted; cache_get_value_name_int(0, !"Wanted", wanted); SetPVarInt(playerid, !"Wanted", wanted);
    new warn; cache_get_value_name_int(0, !"Warn", warn); SetPVarInt(playerid, !"Warn", warn);
    new unmutetime; cache_get_value_name_int(0, !"UnMuteTime", unmutetime); SetPVarInt(playerid, !"UnMuteTime", unmutetime);
    new unbantime; cache_get_value_name_int(0, !"UnBanTime", unbantime); SetPVarInt(playerid, !"UnBanTime", unbantime);
    new hunger; cache_get_value_name_int(0, !"Hunger", hunger); SetPVarInt(playerid, !"Hunger", hunger);
// и т.д.
// Text
    new spouse[MAX_PLAYER_NAME];
    cache_get_value_name(0, !"Spouse", spouse, sizeof(spouse));
    SetPVarString(playerid, !"Spouse", spouse);
    new regdate[12];
    cache_get_value_name(0, !"RegDate", regdate, sizeof(regdate));
    SetPVarString(playerid, !"RegDate", regdate);
    new birth[12];
    cache_get_value_name(0, !"Birth", birth, sizeof(birth));
    SetPVarString(playerid, !"Birth", birth);
    return 1;
}

Всем привет с вами «BreaD»
Я последнее время вижу очень много вопросов:«как подключить бд mysql?».. 
И я решил поделиться с вами своими знаниями
Итак,начнем. 
Для начала скачиваем программу «DENWER»,устанавливаем. 
Запускаем Start Denwer,ждем,пока denwer загрузится,и закроется окно. 
После того,как окно закрылось,заходим на сайт «localhost»
Листаем в самый низ,и жмем на строчку «phpMyAdmin — администратирование СУБД MySQL«. 
Далее у нас открывается панель управление базами данных MySQL. 
В верхних вкладках нажимаем «База данных»,далее под строчкой «Создать базу данных»есть 2 строчки,заполняем только первую,пишем свое название,например «TESTBD»,потом нажимаем создать. 
В левой колонке,где написано «Недавние таблицы»ищем свою базу данных «TESTBD»,нажимаем на нее. 
Далее в верхних вкладках нажимаем «Импорт»,там жмем «Выбрать файл»и выбираем нашу базу данных с расширением «.SQL»,и в листаем в самый низ,там есть кнопочка «OK»,нажимаем ее,и все,наша бд залита на хостинг,теперь остается самое легкое,подключаем базу данных в моде. 
Открываем «Pawno»,выбираем наш мод(расписывать не буду,как нужно открывать мод,думаю все знают,если кто-то не знает,пишите в комментарии). 
В поиске пишем «SQL»,ищете до тех пор,пока не найдете вот такие строки:

 

#define SQL_HOST «» — тут пишем название хостинга,если локальный хостинг,то пишем «localhost».
#define SQL_USER «» — тут пишем логин,если локальный хостинг,то пишем «root».
#define SQL_PASS «» — тут пароль,если локальный хостинг,то оставляем пустые кавычки «».
#define SQL_DB «» — тут название бд,тут пишем свое название бд,которое регистрировали на localhost.

Если же вы хотите подключить базу данных на свой хостинг,к примеру реклама,то процедура та же самая,только тут уже нам не понадобится Denwer и localhost!!! 
Заходите на свой хостинг,открываете панель управления MySQL,там все так же,как и на localhost!!! 
В моде прописываете свои данные от хостинга!!! 
P.S.Если что-то забыл — пишите в комментарииSmile 
Я постарался объяснить все предельно просто,и точно. 
Автор: BreaD

Материал из Википедия Maze-Host.Ru

1 Как установить мод

Есть несколько вариантов установки мода:

  1. Установить мод вручную через FTP;
  2. Купить услугу установки мода по ссылке;
    Услуга под названием «Установка игрового мода»
  3. Купить услугу автоматической установки мода.

2 Как зайти на сервер

Если у Вас ещё не установлена игра, то Вы можете скачать официальный лаунчер SA:MP — тут, а CR:MP — тут.

  1. Открываем лаунчер из папки с игрой;
  2. Нажимаем кнопку для добавления сервера в избранное (рис. 4);

  3. В открывшееся окно вводим «IP:Port» без кавычек; (если сервер расположен на нашем хостинге, их можно найти в панели управления сервером)
  4. Нажимаем OK;
  5. Дважды кликаем по добавленному серверу;
  6. Нажимаем кнопку «Connect».

Чтобы зайти на копию мода Radmir RP, ознакомьтесь с данным видео.

3 Как выдать админ. права

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

  1. Для начала требуется зайти в панель управления сервера;
  2. Переходим в раздел «MySQL»;
  3. Нажимаем кнопку «Войти»;
  4. Находим таблицу аккаунтов и нажимаем по её названию, чтобы перейти к данным таблицы; (обычно, они называются «accounts», в модах Arizona RP — «Qelksekm»)
  5. Находим свой аккаунт; (Ctrl + F → Ваш ник)
  6. Нажимаем кнопку «Изменить» слева от найденного аккаунта;
  7. Находим поле, отвечающее за админ. уровень; (обычно они называются «admin», «pAdmim», «pAdm» и т. д.)
  8. Устанавливаем нужный уровень, к примеру 10;
  9. Листаем в самый низ и нажимаем кнопку «Вперёд».

Теперь можем заходить на сервер и авторизовываться под администратора (обычно это команды «/apanel» или «/alogin»).

4 Как установить плагины на сервер

Так как игровые сервера расположены на ОС Linux Debian, то для работы плагинов требуются файлы с расширением «.so». Если данные файлы у Вас уже имеются, следуйте следующим шагам:

  1. Заходим в панель управления сервером;
  2. Переходим в раздел «FTP»;
    При использовании FileZilla подключитесь к серверу
  3. Перейдите в папку plugins;
  4. Перенесите нужные Вам плагины в FTP;
  5. Выйдите в корень FTP;
  6. Нажмите ПКМ по файлу «server.cfg»;
  7. Нажмите кнопку «редактировать»;
  8. Найдите строчку «plugins»;
    Если данной строки нет — напишите самостоятельно в самом низу
  9. Перечислите все плагины, которые Вы собираетесь подключать с расширением через пробел;
    Как пример — plugins mysql.so pawncmd.so nativechecker.so
  10. Сохраните файл;
  11. Перезагрузите сервер.

5 Как подключить базу данных

База данных всегда подключается из мода функцией «mysql_connect», передаваемые в неё аргументы могут храниться в двух местах, рассмотрим оба случая, но перед этим выполним следующие действия:

  1. Зайдите в панель управления игровым сервером;
  2. Нажмите на вкладку «MySQL»;
  3. Сохраните куда-нибудь данные для подключения базы данных;

    Требуемые данные для подключения

  4. Нажмите на вкладку «FTP».

Подготовка выполнена, приступаем к подключению:

  1. Если файлы хранятся на сервере:
    Если у Вас нет файлов, то смотрите статью дальше!:
    1. Откройте папку «scripfiles»;
    2. Найдите файл «mysql_settings»;
      Файл может называться по-другому, например cfg_server.ini
    3. Нажмите по нему ПКМ и выберите «редактировать»
      В открывшемся окне имеется 4 поля и обычно они называются так: host, username, database, password, для каждого из них через знак «=» стоит значение, которое мы сохранили ранее
    4. Поменяйте значения на собственные;
      Проверьте, чтобы не было лишних пробелов, иначе база не подключится
    5. Нажмите «Save»;
    6. Перезагрузите сервер;
  2. Если файлов нет на сервере:
    Если файлов на сервере нет, требуется поменять мод
    1. Скачиваем мод и все, что требуется для компиляции;
      Обычно требуется папка gamemodes, pawno (может быть архивом), иногда имеются доп. папки, например include, library
    2. Открываем программу pawno.exe;
      Данная программа хранится в папке pawno
    3. Открываем мод через меню «File» → «Open» → заходим в папку с модом (gamemodes) и выбираем файл с расширением .pwn;

    4. Нажимаем «Ctrl + F» и вводим название функции «mysql_connect», после чего жмём «OK»;
    5. Видим подключение к базе, но там стоят переменные, соответственно, проделываем шаг выше, только теперь с одним из этих слов;

      Функция «mysql_connect» и переменные

    6. Видим переменные и изменяем данные под свои;

    7. Сохраняем мод и компилируем его
      Чтобы скомпилировать мод, нужно нажать синюю стрелочку сверху, либо кнопку слева от неё

      Compilation.png

    8. Дожидаемся компиляции без ошибок
      Warning не является ошибкой
    9. Теперь у нас имеется .amx-файл мода, который требуется перенести в FTP;
    10. Перезагрузите сервер.

Если при подключении к серверу появляется окно авторизации / регистрации — все сделано верно.

6 Частые ошибки при установке сервера

Здесь описаны частые ошибки при установке сервера.

Данные ошибки можно посмотреть в логах сервера (server_log.txt в корне FTP, либо раздел «Консоль»).

6.1 Your password must be changed from the default password, please change it

Данная ошибка означает отсутствие RCON-пароля для сервера.

RCON (Remote CONsole) — протокол управления сервером удаленно. Простым языком — это консоль для отправки команд серверу.

Наличие пароля для доступа к RCON обязательно, поэтому оно всегда указывается в server.cfg.

Для его установки следует:

  1. Через онлайн FTP:
    1. Зайдите в панель управления сервером;
    2. Нажмите на вкладку «FTP»;
    3. Перейдите в корень файлов, если находитесь в какой-либо папке;
      (Для этого следует нажать на самую верхнюю папку слева в окне FTP)

      Стрелкой показана папка, на которую надо нажать

    4. Нажмите ПКМ по файлу server.cfg;
    5. В контекстном меню нажмите «Редактировать»;

      Стрелкой показан файл, на который надо нажать

    6. В открывшемся окне поменяйте значение для rcon_password;

      Стрелкой показана строчка, которую надо изменить

    7. Нажмите «Save»;
  2. Через FileZilla:
    1. Соединитесь с сервером;
    2. Зайдите в корневую папку сервера;
      («Удаленный сайт: /»)
    3. Нажмите ПКМ по файлу server.cfg;
    4. В контекстном меню нажмите «Просмотр/правка»;

      Стрелкой показана папка, на которую надо нажать

    5. В открывшемся окне поменяйте значение для rcon_password;

      Стрелкой показана строчка, которую надо изменить

    6. Сохраните файл и закройте его;
    7. Перейдите в FileZilla;
    8. В открывшемся окне поставьте галочку и нажмите «Да»;

      Стрелкой показана галочка, которую надо поставить

Теперь для сервера установлен RCON-пароль, можно перезапускать сервер

6.2 It needs a gamemode0 line at the very least

Данная ошибка может означать две проблемы:

  1. Название мода в server.cfg (gamemode0) не совпадает с названием amx-файла в папке «/gamemodes»;
  2. Отсутствие скомпилированного файла мода (.amx);

Если в папке gamemodes имеется скомпилированный файл мода (с расширением .amx):

  1. Через онлайн FTP:
    1. Зайдите в панель управления сервером;
    2. Нажмите на вкладку «FTP»;
    3. Перейдите в корень файлов, если находитесь в какой-либо папке;
      (Для этого следует нажать на самую верхнюю папку слева в окне FTP)

      Стрелкой показана папка, на которую надо нажать

    4. Перейдите в папку gamemodes;
    5. Посмотрите и запомните название мода;
      (amx-файл, название должно быть одним словом, если это не так, исправьте это, но не удаляйте расширение, например: ARZ RP.amx → ARZ_RP.amx)

      Стрелкой показан файл, название которого надо запомнить

    6. Зайдите в корневую папку сервера;
    7. Нажмите ПКМ по файлу server.cfg;
    8. В контекстном меню нажмите «Редактировать»;

      Стрелкой показан файл, на который надо нажать

    9. В открывшемся окне поменяйте значение для gamemode0;
      (Название надо ставить без расширения)

      Стрелкой показана строчка, которую надо изменить

    10. Нажмите «Save»;
  2. Через FileZilla:
    1. Соединитесь с сервером;
    2. Зайдите в корневую папку сервера;
      («Удаленный сайт: /»)
    3. Зайдите в папку gamemodes;
    4. Посмотрите и запомните название мода;
      (amx-файл, название должно быть одним словом, если это не так, исправьте это, но не удаляйте расширение, например: ARZ RP.amx → ARZ_RP.amx)

      Стрелкой показан файл, название которого надо запомнить

    5. Зайдите в корневую папку сервера;
      («Удаленный сайт: /»)
    6. Нажмите ПКМ по файлу server.cfg;
    7. В контекстном меню нажмите «Просмотр/правка»;

      Стрелкой показана папка, на которую надо нажать

    8. В открывшемся окне поменяйте значение для gamemode0;

      Стрелкой показана строчка, которую надо изменить

    9. Сохраните файл и закройте его;
    10. Перейдите в FileZilla;
    11. В открывшемся окне поставьте галочку и нажмите «Да»;

      Стрелкой показана галочка, которую надо поставить

Если скомпилированного файла мода (с расширением .amx) нет на FTP в папке gamemodes:

  1. Скачиваем с FTP все файлы на локальный компьютер;
  2. Открываем папку pawno, а в ней файл pawno.exe;
  3. Открываем мод через меню «File» → «Open» → заходим в папку с модом (gamemodes) и выбираем файл с расширением .pwn;
    Обычно папка с модом (gamemodes) открыта автоматически при выполнении «File» → «Open»

  4. Компилируем файл мода;
    Чтобы скомпилировать мод, нужно нажать синий треугольник сверху, либо кнопку слева от неё

    Compilation.png

  5. Ожидаем ответа компилятора;
    Warning не является ошибкой

  6. В папке gamemodes должен появиться файл с расширением .amx;
  7. Переносим файл на FTP в папку gamemodes;
  8. Запускаем сервер.

После выполнения шагов выше — ошибка будет исправлена

6.3 [Unknown]

Данная ошибка появляется при отсутствии подключения к базе и/или отсутствии таблиц в базе и/или нехватке плагинов при загрузке мода, последний пункт разбирается далее.

Как подключить базу расписано здесь.

Для того, чтобы загрузить таблицу в базу, следует:

  1. Зайдите в панель управления сервером;
  2. Нажмите на вкладку «MySQL»;
  3. Нажмите «Войти»;

    Стрелкой показана кнопка, которую надо нажать

  4. Найдите .sql-файл в Вашем моде;
  5. Перенесите .sql-файл на страницу базы;
  6. Дождитесь импорта базы;

После выполнения данных шагов — все таблицы будут загружены в базу данных.

6.4 Run time error 19: «File or function is not found»

Данная ошибка означает, что мод не смог найти функцию/файл, чтобы продолжить выполнение работы.

Чтобы узнать какой функции/файла не хватает моду следует поставить плагин nativechecker.so.

Как установить плагин на сервер показано тут

После установке и перезапуска сервера, откройте логи (файл server_log.txt в корне FTP / раздел «Консоль» в панели управления) и посмотрите недостающие функции.

Если Вы не знаете, что это за функции — можете обратиться за помощью в тех. поддержку Maze Help.

7 Как очистить базу данных

Для удаления определенных (или всех) таблиц в базе данных требуется следовать следующим шагам:

  1. На хостинге открываем меню «Сервера» → «Мои сервера» и переходим в панель управления сервером;

    Панель управления игровым сервером

  2. Открываем раздел «MySQL» и нажимаем кнопку «Войти»;

  3. На открывшейся странице листаем в самый низ и нажимаем галочку «Отметить все», а в поле «С отмеченными» выбираем «Удалить»;
    Если Вам требуется удалить конкретную таблицу, либо несколько таблиц, а не все, то выделите их галочкой слева от таблицы

  4. Теперь требуется подтвердить удаление таблиц, для этого нажимаем «Да»;

После выполнения данных действий, выделенные таблицы будут удалены.


#1

Пользователь офлайн
 

Отправлено 11 октября 2022 — 14:16

  • Новые возможности за MySQL

SQL — База Данных на самом деле интересная вещь, которая стоит отдельного внимания на этапе разработки и конечно же самого изучения.
Данная тема предназначена для новичков, которые только начинают свой путь и хотят разобраться с базами данных.
В данном уроке я попытаюсь научить, Вас — дорогих новичков самым простым азам работы с базой данных.
Да, безусловно есть другие темы по типу подключения и так далее — хочу собрать их в одну единую тему и немного сделать ремейк.

Выбор локальной машины.

Локальная машина — важнейшая часть для работы с базами, и вообще для хранения веб-приложений на личном ПК не используя хостинг. Но стоит учитывать, что локальная база данных не сможет быть использована допустим на хостинге не импортировав конечный результат базы на сам хостинг!
Одни из самых популярных машин — OpenServer и Denwer. В моём случае — буду использовать OpenServer, что и, Вам, советую.

Создание первой базы данных.

Давайте сначала установим OpenServer, ссылка на скачивание всех ресурсов будет предоставлена в конце урока.
Запустить прямо-таки сразу базу на OpenServer’e не получится, её нужно настроить в настройках.
Чтобы это сделать — запустите OpenServer с ярлыка от имени администратора (По умолчанию он должен запускаться в автоматическом режиме администратором), в панели задач, Вы, сможете увидеть появившийся значок флажка. Он может быть красный, зелёный, жёлтый — в зависимости от статуса работы машины.
https://sun9-80.userapi.com/impg/hlFZLLwofWrLfrV71k9Uhf0oxsIA-Cbhc-rEcQ/gKwj4nx8doE.jpg?size=254×40&quality=96&sign=4334e43188a8a2e577de4aa6a4698618&
type=album
Нажав правой кнопкой по флажку OpenServer’a появится меню, в котором нужно выбрать пункт «Настройки».
https://sun9-49.userapi.com/impg/v6EOGVnlQ3lMiZjSKFMaQeuQKTXTVh3o9AL70A/W6XMhTCRLvw.jpg?size=168×289&quality=96&sign=d2328745cdf5513aad836fa39dcc39a0&
type=album
Откроется окно, так называемое настройкой. Сверху, Вы, увидете много разных пунктов меню, которое отвечает за свою часть на локальной машине.
Нам нужен пункт с названием «Модули». Откроем его, посмотрим что мы имеем.
По умолчанию, если ничего не менялось — MySQL /Maria DB будут пустыми, именно этот пункт нужно настроить для работы базы данных.
https://sun9-6.userapi.com/impg/1Yzdoy1K_E3_MB97SFWduzXdqoxHr17d_EEhcQ/hu-tjb7WANM.jpg?size=579×399&quality=96&sign=36f5abd43f2d3914a1549ca10a1de24c&
type=album
Можете выбрать основу phpMyAdmin сами, я лично использую — MySQL 5.7 for WIN10. Отличия не замечал, ничего сказать по поводу MariaDB — не могу.
В конечном итоге должно получиться, что пункты MySQL / Maria DB заполнены, а Prostage SQL — нет. Так и должно быть. (см. скрин выше)
Сохраняем и перезапускаем/запускаем OpenServer. Если всё правильно установлено — флажок из красного перекрасится в зелёный.

Создание первой базы данных.

Итак, если вышеперечисленный пункт был выполнен — должен заработать сайт

http://127.0.0.1/openserver/phpmyadmin/

Переходим по нему и нас встречает окно авторизации.
https://sun9-71.userapi.com/impg/a44jrhgGfBVnjSm2ZBRLFTCVqQRiFObLN4OGpA/yCrQoU0warI.jpg?size=455×460&quality=96&sign=e6742f869d324163458a278f9d777f31&
type=album
Для входа нужны данные. В зависимости от выбранной версии phpMyAdmin — выбирайте данные из нижеперечисленного списка:

MySQL любая версия:
Login: root
Password: root
--------
Maria DB любая версия:
Login: root
Password: отсутствует

Выбираете нужные данные исходя из версии PMY(phpMyAdmin) и входите, вход должен быть успешным, если что-то не подошло — напишите в тему, отвечу.

Итак, мы попадаем на главную страницу локальной базы данных, пугаться нечему — со временем разберётесь во всём.
https://sun9-85.userapi.com/impg/fzUxYS_zdrhPjIX6rAGZYT4dYZSYNkDTois1SQ/Ru0oo8NwBXI.jpg?size=1280×582&quality=96&sign=57f8b12391e215276cb8bb99823d46df&
type=album
Нажимаем на пункт сверху — «Базы Данных», попадаем на страницу со всеми доступными созданными базами данных.
https://sun9-36.userapi.com/impg/ClHrbqobqFL1IAUfm_cuEdATW17hZcojU4QN9w/qhI5OKglnDc.jpg?size=1280×577&quality=96&sign=3e06a72306ee39b138d33e1d2e07dd99&
type=album
Тут можно создать базу данных, сколько угодно — но самое главное правило учитывать кодировку, создадим же свою первую базу данных!
В поле ввода: «Имя базы данных» — можете ввести любое имя базы данных, не слишком длинное чтобы легче было запомнить и использовать в дальнейшем.
Теперь самое ответственное — кодировка. Кодировка бывает многих типов, начиная от юникода — заканчивая «эльфийским языком».
Для работы с русским языком, и комфортной работой с базой советую использовать кодировку: cp1251 / cp1251_bin (бинарная кодировка, разницы не видел)
По идеалу должно получиться следующим образом:
https://sun9-26.userapi.com/impg/Jf6_jA9ac63MImcnOFCnA3B74BMHGqjR-waKdw/BOji5apmk4k.jpg?size=1280×580&quality=96&sign=c112eb5a0929948ae10a1d5e79151b04&
type=album
Нажав кнопочку «Создать» — магическим образом у нас создаётся база данных, в которую уже можно соответственно создавать таблицы и вносить в них данные.

Подключение базы данных в мод.

Подключение базы в мод — самая простая задача. Для начала скачайте плагин и инклуд с сайта github. (Все ссылки в конце урока)
Актуальная и хорошая версия плагина для работы с базой данных — MYSQL R41-4.
Скачав его и распаковав, как нужно — нужно вписать пару строк в мод.
В самое начало, после #include <a_samp> нужно вписать #include <a_mysql> с учётом «a_», без этого — работать не будет.
Если всё прекрасно и скомпилировав мод ошибки не будет — продолжаем дальше.
После всех инклудов вставляем дефайны, которые облегчат работу, и так же новую переменную для подключения.
Вписываем следующий код в начало после инклудов:

#define MySQL_USER	"" // Имя юзера в базе данных
#define MySQL_PASS	"" // Пароль от юзера в БД
#define MySQL_BASE	"" // Созданная нами база данных
#define MySQL_HOST 	"" // IP-Адресс хостинга базы данных, в нашем случае 127.0.0.1 или же localhost.

// Создадим переменную для подключения базы данных.
new MySQL:dbHandle; /* можете назвать переменную как угодно, но не запутайтесь в будущем.  */

В самый конец мода:

stock ConnectMySQL()
{
	dbHandle = mysql_connect(MySQL_HOST, MySQL_USER, MySQL_PASS, MySQL_BASE);
	switch(mysql_errno(dbHandle))
	{
		case 0: printf("База данных (%s) подключена успешно!", MySQL_BASE);
		default: printf("База данных (%s) не смогла подключиться. Ошибка: %d", mysql_errno(dbHandle));
	}
	/* В переменную, которую мы создали выше делаем подключение, и её же будем использовать для подключения во всяких командах БД в самом коде */
	return 1;
}

В OnGameModeInit() — в самое начало вписываем:

ConnectMySQL();

Если всё сделано верно — ошибок не будет.

Вот подключение и готово, давайте объясню пару команд для кода:

mysql_query(MySQL:handle, const query[]); // Создание запроса на базу данных используя переменную подключения - dbHandle, запрос может быть любым, об этом уже читайте в документации SQL.
mysql_tquery(MySQL:handle, const query[], const callback[] = "", const format[] = "", {Float, _:...}) // Создание запроса на базу так же как и в обычном query, но уже данная строчка принимает много аргументов для передачи в функцию, которая будет срабатывать при выполнении.
mysql_format(MySQL:handle,  обычный формат); // Cлужит для форматирования запросов, лучше делать конечно через mysql_format, при обычном - есть возможность ошибиться и всё будет плохо. Для запросов в базу  - используйте этот формат
mysql_close(MySQL:handle); // Закрытие подключения.

В основном используются только эти функции, остальное можете прочесть на официальном портале GitHub плагина.

Ссылки на ресурсы:

MySQL R41-4 — GitHub
OpenServer — Official Site
Denwer — Official Site
Тема со всеми основными ошибками в MySQL — Pawn-Wiki

Автор: 0def1x

Сообщение отредактировал 0def1x: 11 октября 2022 — 14:46

4


#2

Отправлено 11 октября 2022 — 18:00

  • Эксперт

Хороший урок, хоть и сам уже давно разобрался с MySQL

1


#3

Отправлено 12 октября 2022 — 00:29

  • Местный

0def1x сказал:

SQL — База Данных на самом деле интересная вещь

SQL — язык структурированных запросов для управления данными в БД, а не База Данных.

1


#4

Отправлено 14 октября 2022 — 16:35

  • Evil Scripter

Да и MySQL — не база данных, а СИСТЕМА УПРАВЛЕНИЯ базами данных.

Советовать Денвер — моветон. Уж лучше какой-нибудь XAMPP упомянуть или просто посоветовать вбить в гугл «Аналоги Open Server».
Хотя вообще гораздо проще и разумнее поставить MySQL-сервер напрямую, а не качать и устанавливать целые среды для разработки, содержащие кучу всего другого, что для SAMP не понадобится (если, конечно, вам жалко собственное время и место на ПК). Тем более, что много ума для ручной установки MySQL не требуется. Достаточно просто вбить в поиск «Как установить MySQL на *название операционной системы*» и на выходе даже видеоуроки получить. Ну или просто знать базовый английский и внимательно читать то, о чём пишется в установочнике MySQL-сервера :wpml_unsure: На выходе получите то же самое, только, как минимум, на загрузку установочного файла из интернета потратите гораздо меньше времени. Да и, при должном упорстве, приобретёте навык конфигурации MySQL-сервера, что позволит решить ряд возможных проблем в будущем.

Сообщение отредактировал DeimoS: 14 октября 2022 — 16:37

0


#5

Отправлено 14 октября 2022 — 17:19

  • Новые возможности за MySQL

Просмотр сообщенияDeimoS (14 октября 2022 — 16:35) писал:

Нажмите сюда, чтобы прочитать это сообщение. [

Показать

]

Знаешь, многие люди, как показывает моя практика — не знают даже, что такое переменная — и такие вещи за гранью их возможностей. Я разложил тему на понятном всем языке, даже самый древний чайник с древней Руси сможет установить там локальную машину на свой пк, и начать работать за ней. В любом случае спасибо за критику.

0


#6

Отправлено 18 октября 2022 — 11:21

  • Evil Scripter

Просмотр сообщения0def1x (14 октября 2022 — 17:19) писал:

многие люди, как показывает моя практика — не знают даже, что такое переменная — и такие вещи за гранью их возможностей.

Так и в этом случае установить исключительно MySQL-сервер гораздо проще, ибо:

Изображение

:rolleyes:

При этом, даже тот же Open Server имеет много подводных камней, с которыми можно легко столкнуться при установке. Например:

Ну и ещё больше примеров можно найти тут.

Сообщение отредактировал DeimoS: 18 октября 2022 — 11:29

0

Понравилась статья? Поделить с друзьями:
  • Как найти асимптоту графика функции онлайн
  • Что такое резонансная частота как ее найти
  • Как найди бункер в survival
  • Как найти отмеченные фото в контакте
  • Как найти химическое количество через массовую долю