Bohdan
Компетентный
Вот вчера зделал все как тут http://pawno-info.ru/threads/83065-MySQL-Создание-системы-регистрации-(MySQL-R7-), но там нету сохранение в бд, нужно сделать сохранение в бд можете помочь мне? С меня +++
Код:
Код:
PHP:
/********************[ Инклуди ]********************/
#include <a_samp>
#include <a_mysql>
/***************************************************/
/********************[ Настройка MySQL ]********************/
#define mysql_host "localhost"
#define mysql_db "new"
#define mysql_user "root"
#define mysql_pass ""
/************************************************************/
/************************************************************/
/********************[ Все дефаны ]**************************/
#define send(%0,%1) SendClientMessage(%0, -1, %1)
/************************************************************/
/********************[ Все new ]********************/
new connectionHandle;
/***************************************************/
enum pInfo
{
Key[128],
Level,
};
new PlayerInfo[MAX_PLAYERS][pInfo];
main();
public OnGameModeInit()
{
/******************************************************************************/
connectionHandle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);
if(mysql_ping() != 1) print("MySQL соединение, false, подключи бд дибил.");
/******************************************************************************/
return 1;
}
public OnGameModeExit()
{
mysql_close(connectionHandle);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
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);
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
if(!GetPVarInt(playerid, "Logged")) return send(playerid, "Прежде чем заспавниться, нужно быть авторизированым.");
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
if(!GetPVarInt(playerid, "Logged")) return send(playerid, "Что бы писать в чат, нужно быть авторизированым.");
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
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;
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
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,"Авторизация","Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:","Вход","Отмена");
else
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Регистрация","Добро пожаловать на сервер!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:","Далее","Отмена");
}
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_function_query(connectionHandle,str,false,"","");
}
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;
}
