Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //==============================[includes]======================================
- #include <a_samp>
- #include <a_mysql>
- //===============================[MySQL данные]=================================
- #define MySQL_DEBUG 1//Включаем вывод всех запросов в лог(файл mysql_log).Значение 0-нет|1-да
- #define MySQL_HOST "localhost"//Хостинг нашей БД, чаще всего это именно "localhost"
- #define MySQL_USER "root"//Аккаунт от нашей БД, если ваш сервер на хостинге, то данные вам выдаёт ваш хостер
- #define MySQL_PASS ""//Пароль от нашей БД, если ваш сервер на хостинге, то данные вам выдаёт ваш хостер
- #define MySQL_DB "root"//Название базы данных, тут мы вписываем то, что вы вписали при создании базы данных в первом пункте(Denwer)
- //===============================[variable]=====================================
- new dbHandle;
- enum _player//объявление enuma
- {
- ID,//Сюда запишется ид аккаунта игрока
- AGE,//Сюда запишется возраст игрока
- SEX
- }
- new PLAYER [ MAX_PLAYERS ] [ _player ] ;//Создаём переменную, с помощью которой мы будем работать с данными из enum`а. С помощью этой переменной мы создаём макет, по которому будем работать с данными
- new PlayerName[MAX_PLAYERS];//Переменная с именем игрока
- //==============================================================================
- stock MySQLConnect ( )
- {
- dbHandle = mysql_connect ( MySQL_HOST, MySQL_USER, MySQL_DB, MySQL_PASS ) ;//Подключение к базе данных и объявление её переменной dbHandle
- switch ( mysql_ping ( ) )//Проверяем через пинг активность подключения
- {
- case 1: print ( "MySQL подключение: подключено." ) ;//Выводим в консоль активность
- case -1: print ( "MySQL подключение: не подключено." ) ;//Выводим в консоль отсутствие соединения
- }
- mysql_debug ( MySQL_DEBUG ) ;//Включаем вывод всех запросов в лог(файл mysql_log)
- mysql_function_query( dbHandle, "SET NAMES cp1251", false, "", "" ) ;//Придаём именам необходимый формат для записи в базу
- return 1;
- }
- stock ClearPlayerData ( playerid )
- {
- PLAYER [ playerid ] [ ID ] = 0;
- PLAYER [ playerid ] [ AGE ] = 0;
- PLAYER [ playerid ] [ SEX ] = 0;
- }
- main()
- {
- print(" RolePlay");
- }
- stock SaveAccount ( playerid )
- {
- new query [ 144 ] ;
- format ( query, sizeof query, "UPDATE `users` SET \
- `sex` = '%d' \
- `age` = '%d' \
- WHERE `id` = '%d' LIMIT 1",
- PLAYER [ playerid ] [ SEX ] ,
- PLAYER [ playerid ] [ AGE ] ,
- PLAYER [ playerid ] [ ID ] ) ;
- mysql_function_query ( dbHandle, query, false, "", "" ) ;
- return 1;
- }
- public OnGameModeInit()
- {
- //===================================[MySQL connection]=========================
- MySQLConnect ( ) ;
- return 1;
- }
- forward connection( playerid );
- public connection( playerid )
- {
- new query [ 60 + MAX_PLAYER_NAME ];
- format ( query, sizeof query, "SELECT `id` FROM `users` WHERE `login` = '%s' LIMIT 1", PlayerName [ playerid ] ) ;//Наш SQL запрос.SELECT-Выбираем ID из таблицы `users` где наш логин равен нашему имени
- mysql_function_query ( dbHandle, query, true, "CheckPlayerRegistered", "ii", playerid, 0 ) ;//вызываем коллбэк, проверку зарегистрирован игрок или нет
- SetPlayerPos(playerid, 1767.1313, -1897.1318, 15.3746);//Координаты для камеры(интро)
- SetCameraBehindPlayer(playerid);//камера за спиной
- SetPlayerCameraPos(playerid, 1767.1313, -1897.1318, 15.3746);//Координаты для камеры(интро)
- SetPlayerCameraLookAt(playerid, 1767.1313, -1897.1318, 15.3746);//Координаты для камеры(интро)
- return 1;
- }
- forward CheckPlayerRegistered ( playerid );
- public CheckPlayerRegistered ( playerid )
- {
- new rows, fields ;
- cache_get_data ( rows, fields ) ;
- if ( rows )//если нашли аккаунт,то авторизация
- {
- ShowPlayerDialog ( playerid, 1, DIALOG_STYLE_PASSWORD, "Авторизация", "{FFFFFF}Добро пожаловать на сервер.\nВведите ваш пароль:", "Вход", "" ) ;
- }
- else//если не нашли аккаунт,то регистрация
- {
- ShowPlayerDialog ( playerid, 0, DIALOG_STYLE_PASSWORD, "Регистрация", "{FFFFFF}Добро пожаловать на сервер.\nВведите пароль для аккаунта:", "Ввод", "" ) ;
- }
- return 1;
- }
- forward PlayerLogin ( playerid );
- public PlayerLogin ( playerid )
- {
- new rows, fields, temp [ 128 ] ;
- cache_get_data ( rows, fields ) ;
- if ( rows )
- {
- cache_get_field_content ( 0, "id", temp )/*записываем на temp,а с temp на переменную игрока*/ , PLAYER [ playerid ] [ ID ] = strval ( temp );//загружаем ID аккаунта игрока,где "id" это колонка таблицы,a strval ( temp )-целое число
- cache_get_field_content ( 0, "age", temp )/*записываем на temp,а с temp на переменную игрока*/ , PLAYER [ playerid ] [ AGE ] = strval ( temp );//загружаем возраст игрока,где "age" это колонка таблицы
- cache_get_field_content ( 0, "sex", temp )/*записываем на temp,а с temp на переменную игрока*/ , PLAYER [ playerid ] [ SEX ] = strval ( temp );//загружаем возраст игрока,где "age" это колонка таблицы
- SetSpawnInfo ( playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ;//дабы избежать краша игры
- SetPVarInt ( playerid, "Logged", 1 ) ;//ПВар,авторизован игрок или нет
- DeletePVar ( playerid, "WrongPassword" ) ;//кол-во неверных вводов пароля
- if(PLAYER[playerid][AGE] != 0)//еси возраст не равен нулю(таким образом мы проверяем до конца ли зарегестрировался игрок)
- {
- SpawnPlayer ( playerid ) ;
- }//если же равен,то регистрация продолжается
- else ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Возраст","{FFFFFF}Введите Ваш игровой возраст\n","Ввести","Назад");
- }
- else
- {
- if ( GetPVarInt ( playerid, "WrongPassword" ) == 4 ){ Kick ( playerid ) ; return 1; }
- SetPVarInt ( playerid, "WrongPassword", GetPVarInt ( playerid, "WrongPassword" ) + 1 ) ;
- ShowPlayerDialog ( playerid, 1, DIALOG_STYLE_PASSWORD, "Авторизация", "{FFFFFF}Добро пожаловать на сервер.\nВведите ваш пароль:", "Вход", "" ) ;
- }
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- GetPlayerName ( playerid, PlayerName [ playerid ] , MAX_PLAYER_NAME ) ;//Получаем имя
- connection( playerid );
- ClearPlayerData ( playerid );//очищаем данные игрока
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveAccount ( playerid );
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if ( GetPVarInt ( playerid, "Logged" ) == 0)return true;
- SetCameraBehindPlayer(playerid);//камера за спиной
- SetPlayerPos(playerid, 1767.1313, -1897.1318, 15.3746);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == 0)
- {
- if(response)
- {
- new query [ 144 ], temp [ 32 ] ;
- mysql_real_escape_string ( inputtext, temp ) ;
- format ( query, sizeof query, "INSERT INTO `users` ( `login`, `password` ) VALUES ( '%s', '%s' )", PlayerName [ playerid ], temp ) ;//Делаем запрос,создать аккаунт где логин и пароль равны имени игрока и введённому в диалог тексту
- mysql_function_query ( dbHandle, query, false, "", "" ) ;//Отправка запроса
- format ( query, sizeof query, "SELECT * FROM `users` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1", PlayerName [ playerid ], temp ) ;//Выводим в коллбэк аккаун где логин и пароль равны мени игрока и введённому паролю
- mysql_function_query ( dbHandle, query, true, "PlayerLogin", "i", playerid ) ;//наш коллбэк
- }
- return 1;}
- if(dialogid == 1)
- {
- if(response)
- {
- new query [ 144 ], temp [ 32 ] ;
- mysql_real_escape_string ( inputtext, temp ) ;
- format ( query, sizeof query, "SELECT * FROM `users` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1", PlayerName [ playerid ] , temp ) ;//Выводим в коллбэк аккаун где логин и пароль равны мени игрока и введённому паролю
- mysql_function_query ( dbHandle, query, true, "PlayerLogin", "i", playerid ) ;//наш коллбэк
- }
- return 1;}
- if(dialogid == 2)
- {
- if (!response)ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Возраст","{FFFFFF}Введите Ваш игровой возраст\n","Ввести","Назад");
- if(response)
- {
- if(strval(inputtext) < 18 || strval(inputtext) > 95)return SendClientMessage(playerid,-1,"[Регистрация]Возраст не может быть меньше 18 и не больше 95"),ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Возраст","{FFFFFF}Введите Ваш игровой возраст\n","Готово","Назад");//если значение меньше 12 и больше 120,то заного диалог
- PLAYER[playerid][AGE] = strval(inputtext);//Присвоили введённое значение
- ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Пол","Мужик\nБаба","Выбрать","Назад");
- }
- return 1;}
- if(dialogid == 3)
- {
- if(response)
- {
- if(listitem == 0){PLAYER[playerid][SEX] = 1; SendClientMessage(playerid,-1,"Вы Мужик");}
- if(listitem == 1){PLAYER[playerid][SEX] = 2; SendClientMessage(playerid,-1,"Вы Баба");}
- SpawnPlayer(playerid);//спавним игрока
- }
- return 1;}
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement