Fernando_Capraso
Умник
Нужные нам файлы
Стример -
sscanf -
mysql plugin и инклуд -
libMYSQL - В папку с сервером -
И Denwer -
====================================================================================================
И так,после того как мы подключили все нужные нам файлы к моду давайте разберёмся с денвером.
Устанавливаем его.
И сейчас он нам не нужен!
И так,приступим.
Давайте удалим ненужные нам строки!
Удаляем также строку
Для подключения мода к Базе данных мы будем использовать #define.Конечно можно и не использовать,но так удобнее.
В любое место мода,(токо не в паблик) вставляем:
Теперь чтобы подключится к базе данных.
Ко всем new или добавляем в любое место мода.(токо не в паблик):
Дальше,приконектимся к нашей базе данных.
В public OnGameModeInit вставляем:
Сделаем проверку,успешно ли подключенны мы,чтобы вы не мучелись!
Сразу после коннекта к мускуле добавляем:
!= 1 - значение !(не) =(равно) 1.
== 1 - равно 1.
Давайте подключим инклуды к моду,которые вы напихали в мод.
Дальше для регистрации нам понадобится enum pInfo.В любое место мода(не паблик) вставляем:
Дальше,при отключении мода,отключаем коннект с мускулом,добавляем в public OnGameModeExit()
В public OnPlayerConnect
Отключаем возможность писать не авторизованому игроку в чат добавив в OnPlayerText:
В OnDialogResponse добавляем диалог:
В самый конец мода вставляем код:
Ну вот,с регистрацией мы закончили,давайте теперь к базе данных.
После того как вы установили денвер и запустили его(Start Denwer)
Зайдя в браузер в Адресной Строке введём
В вкладке Базы Данных заходим туда.
И добавляем новую Базу Данных с именем: test
Всё.Создали.Теперь во вкладке SQL или структура,заходим туда.
И в поле которое появилось вставляем вот этот код:
Нажимаем ок,и всё.Запускаем наш мод,регаемся,и аккаунт сохранился в таблице Accounts.
Автор:Fernando_Capraso.
Удачи.
Стример -
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
sscanf -
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
mysql plugin и инклуд -
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
libMYSQL - В папку с сервером -
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
И Denwer -
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
====================================================================================================
И так,после того как мы подключили все нужные нам файлы к моду давайте разберёмся с денвером.
Устанавливаем его.
И сейчас он нам не нужен!
И так,приступим.
Давайте удалим ненужные нам строки!
PHP:
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
PHP:
#endif
В любое место мода,(токо не в паблик) вставляем:
PHP:
#define sql_connect "localhost" // localhost - локальный,тоесть запуск мода у себя на компе.
#define sql_db "test" // Названия базы данных.
#define sql_user "root" // пользователь.
#define sql_pass "" // пароля нету.И ненадо.
#define send(%0,%1) SendClientMessage(%0, -1, %1)
Ко всем new или добавляем в любое место мода.(токо не в паблик):
PHP:
new mysqlconnection;
В public OnGameModeInit вставляем:
PHP:
mysqlconnection = mysql_connect(sql_connect,sql_user,sql_db,sql_pass);
Сразу после коннекта к мускуле добавляем:
PHP:
if(mysql_ping() != 1) print("Подключение к базе данных: false.");
if(mysql_ping() == 1) print("Подключение к базе данных: true.");
== 1 - равно 1.
Давайте подключим инклуды к моду,которые вы напихали в мод.
PHP:
#include <streamer>
#include <sscanf2>
#include <a_mysql>
PHP:
enum pInfo
{
Key[128],
Level,
rName[MAX_PLAYER_NAME],
};
new PlayerInfo[MAX_PLAYERS][pInfo];
PHP:
mysql_close(mysqlconnection);
PHP:
new str[128];
mysql_real_escape_string(Name(playerid), Name(playerid));
format(str, sizeof(str),"SELECT `Name` FROM `Accounts` WHERE `Name` = '%s'", Name(playerid));
mysql_function_query(connectionHandle, str, true, "OnPlayerRegCheck","d", playerid);
PHP:
if(!GetPVarInt(playerid, "Logged")) return send(playerid, "Что бы писать в чат, нужно быть авторизированым.");
PHP:
switch(dialogid)
{
case 1://Регистрация
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Регистрация","Добро пожаловать на сервер!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:","Далее","Отмена");
OnPlayerRegister(playerid,inputtext);
return 1;
}
case 2://Авторизация
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Авторизация","Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:","Вход","Отмена");
OnPlayerLogin(playerid,inputtext);
return 1;
}
}
PHP:
stock Name(i) { new pl[24]; GetPlayerName(i, pl, 24); return pl; }
forward OnPlayerRegCheck(playerid);
public OnPlayerRegCheck(playerid)
{
if(IsPlayerConnected(playerid))
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Авторизация","Добро пожаловать на {6495ED}gamemode-rp\n\n{ffffff}Этот аккаунт зарегистрирован\n\n{ffffff}Логин: %s\n{ffffff}Введите пароль:", "Далее", "Выход");","Вход","Отмена", rName);
else
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Регистрация","Добро пожаловать на {6495ED}gamemode-rp\n{ffffff}Ваш аккаунт не зарегистрирован!\n\n{ffffff}Логин: %s\n{ffffff}Введите пароль:","Далее","Отмена",rName);
}
return 1;
}
stock OnPlayerRegister(p, password[])
{
new str[128];
format(str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`) VALUES ('%s', '%s')", Name(p), password);
mysql_function_query(connectionHandle, str, false, "RegisterCallback","d", p);
return 1;
}
forward RegisterCallback(playerid);
public RegisterCallback(playerid)
{
send(playerid,"Регистрация прошла успешно!");
SetPVarInt(playerid,"Logged", 1), SpawnPlayer(playerid);
return 1;
}
stock SavePlayer(p)
{
if(GetPVarInt(p,"Logged") > 0)
{
new str[128];
format(str,sizeof(str),"UPDATE `Accounts` SET `Key`, `Level` = '%d'",
PlayerInfo[p][Key], PlayerInfo[p][Level]);
format(str, sizeof(str),"%s WHERE `Name` = '%s'", str, Name(p));
mysql_query(str, -1, 0, connectionHandle);
}
return 1;
}
stock OnPlayerLogin(i, password[])
{
new str[128];
format(str, sizeof(str),"SELECT * FROM `Accounts` WHERE `Name` = '%s' AND `Key` = '%s'", Name(i), password);
mysql_function_query(connectionHandle, str, true, "LoginCallback","ds", i, password);
return 1;
}
forward LoginCallback(i, password[]);
public LoginCallback(i, password[])
{
new rows, fields, string[144], maximum[128];
cache_get_data(rows, fields);
if(!rows)
{
if(GetPVarInt(i, "wrongPass") == 2) return send(i,"Вы ввели 3 раза неверный пароль, поэтому были кикнуты сервером."), Kick(i);
SetPVarInt(i, "wrongPass", GetPVarInt(i, "wrongPass")+1);
format(string, sizeof(string), "Неверный пароль(осталось %i/3)\nВведите пароль:", 3 - GetPVarInt(i, "wrongPass"));
ShowPlayerDialog(i, 2, DIALOG_STYLE_PASSWORD, "Авторизация", string, "Вход", "Отмена");
return 1;
}
cache_get_field_content(0, "Level", maximum), PlayerInfo[i][Level] = strval(maximum);
SetPVarInt(i, "Logged", 1);
send(i, "Вы успешно авторизовались!");
SpawnPlayer(i), SavePlayer(i);
return 1;
}
После того как вы установили денвер и запустили его(Start Denwer)
Зайдя в браузер в Адресной Строке введём
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
.В вкладке Базы Данных заходим туда.
И добавляем новую Базу Данных с именем: test
Всё.Создали.Теперь во вкладке SQL или структура,заходим туда.
И в поле которое появилось вставляем вот этот код:
PHP:
CREATE TABLE IF NOT EXISTS `Accounts` (
`Name` varchar(24) COLLATE cp1251_bin NOT NULL,
`Key` varchar(30) CHARACTER SET utf8 NOT NULL,
`Level` int(3) NOT NULL
) ENGINE=MyISA
Автор:Fernando_Capraso.
Удачи.
Последнее редактирование:
