PHP код:
#include <a_samp>
#include <a_mysql>
#define MYSQL_HOST "localhost" //127.0.0.1
#define MYSQL_USER "root"
#define MYSQL_DATABASE "R.com"
#define MYSQL_PASSWORD ""
#define TBDP "accounts" //Название БД
#define MYSQL_CONNECT_INFO MYSQL_HOST,MYSQL_USER,MYSQL_DATABASE,MYSQL_PASSWORD
//------
#define MAX_PASS_LEN 20
#define MAX_PASS_EMAIL 64
enum PlayerInfo
{
ORM:ORM_ID,
pID //id аккаунта в таблице БД
pInvite_Player_Name[MAX_PLAYER_NAME],
pName[MAX_PLAYER_NAME],
pPassword[MAX_PASS_LEN],
pEmail[MAX_PASS_EMAIL],
pSex, //Ну и тип int для примера 1/0
}
new pInfo[PlayerInfo];
new mysql_connect_ID;
forward OnPlayerDataLoad(playerid);
public OnGameModeInit()
{
mysql_connect_ID = mysql_connect(MYSQL_CONNECT_INFO);
printf("id подключения BD R.com = %i",mysql_connect_ID); // показывает 1
return 1;
}
public OnPlayerConnect(playerid)
{
Clear_The_Variables(playerid); // Тут мы почистили все переменные из енума.
GetPlayerName(playerid,pNick(playerid),MAX_PLAYER_NAME);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Прошу обратить внимание на 2ой параметр, во всех уроках его нет, так же как и связи БД с таблицей.
//Думаю что поставил правильно
pInfo[playerid][ORM_ID] = orm_create(TBDP,mysql_connect_ID);//создаем ORM
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
new ORM:p = pInfo[playerid][ORM_ID]; //для упрощения привязки[/COLOR]
orm_addvar_int(p,pInfo[playerid][pID],"ID"); // Привязываем переменную pInfo[playerid][pID] к значеню "ID" в таблице БД
orm_addvar_string(p,pInfo[playerid][pName],MAX_PLAYER_NAME,"pName");
orm_addvar_string(p,pInfo[playerid][pPassword],MAX_PASS_LEN,"pPassword");
orm_addvar_string(p,pInfo[playerid][pEmail],MAX_PASS_EMAIL,"pEmail");
orm_addvar_int(p,pInfo[playerid][pSex],"pSex");
orm_addvar_string(p,pInfo[playerid][pInvite_Player_Name],MAX_PLAYER_NAME,"pInvite_Player_Name"); //-------------------
orm_setkey(p,"pName"); //т.к. мы не знаем ID игрока в БД, ставим за ключ Ник игрока
orm_load(p,"OnPlayerDataLoad","d",playerid); //сценарий выгрузки информации из БД и записи их в прикрепленные переменные
return 1;
}
public OnPlayerDataLoad(playerid)
{
switch(orm_errno(pInfo[playerid][ORM_ID]))
{
case ERROR_OK: //Авторизация
case ERROR_NO_DATA: //Отправляем на диалог регистрации
}
return 1;
}
//=========================
//Далее игрок проходит все диалоги реги
//Спавним его и записываем все данные
//собранные во время реги в БД "account"
//==========================
stock CreateNewAccount(playerid)
{
//Спавним игрока;
//Выставляем значение переменным енума
pInfo[playerid][pMoneyBank] = 0;
pInfo[playerid][pHealth] = 100.0;
SetPlayerHealth(playerid, pInfo[playerid][pHealth]);
//==============
orm_insert(pInfo[playerid][ORM_ID],"OTVET","d",playerid); //И вот мы записываем в БД все, что накопил в себе наш ORM
return 1;
}
forward OTVET(playerid);
public OTVET(playerid)
{
switch(orm_errno(pInfo[playerid][ORM_ID]))
{
case ERROR_OK: print("Все ок");
case ERROR_NO_DATA: print("Не сохранили");
}
return 1;
}
//----------------
//Как вы видите выше, мы отправляем результат в паблик OTVET, в консоль сервера выдает, "все ок"
//----------------
stock Clear_The_Variables(playerid)
{
pInfo[playerid][pID] = 0;
pInfo[playerid][pSex] = 0;
return 1;
}