[РЕШЕНО] Проблема с БД и enum

Nico Yazawa

Бывший MrChester =(
Сообщения
326
Реакции
303
Продолжая свое творение столкнулся с проблемой:
Начало кода:
C-подобный:
enum player
{
   ID,
   SteamID[64],
}

new player_info[MAXPLAYERS][player];
Один из каллбеков и запрос к БД:
C-подобный:
public void LoginClient(int client)
{
   char szQuery[256];
    FormatEx(szQuery, sizeof(szQuery), "SELECT `ID` FROM `accounts` WHERE `SteamID` = '%s'", GetClientAuthIdEx(client));
    g_hDatabase.Query(bd_CheckLogin, szQuery, GetClientUserId(client));
}

public void bd_CheckLogin(Database hDB, DBResultSet results, const char[] sError, any UserID)
{
   int client = GetClientOfUserId(UserID)
   if(client)
   {
       player_info[client][ID] = results.FetchInt(FieldNameToNumEx("ID", results));
       results.FetchString(FieldNameToNumEx("SteamID", results), player_info[client][SteamID], 100); // <--- Здесь ошибка
   }
}
Сама ошибка:
C-подобный:
error 178: cannot coerce int[] to char[]; storage classes differ

Я много пробовал извращаться с кодом, но не помогало.
 

JDW

Мы открываем бизнес
Сообщения
376
Реакции
325
Продолжая свое творение столкнулся с проблемой:
Начало кода:
C-подобный:
enum player
{
   ID,
   SteamID[64],
}

new player_info[MAXPLAYERS][player];
Один из каллбеков и запрос к БД:
C-подобный:
public void LoginClient(int client)
{
   char szQuery[256];
    FormatEx(szQuery, sizeof(szQuery), "SELECT `ID` FROM `accounts` WHERE `SteamID` = '%s'", GetClientAuthIdEx(client));
    g_hDatabase.Query(bd_CheckLogin, szQuery, GetClientUserId(client));
}

public void bd_CheckLogin(Database hDB, DBResultSet results, const char[] sError, any UserID)
{
   int client = GetClientOfUserId(UserID)
   if(client)
   {
       player_info[client][ID] = results.FetchInt(FieldNameToNumEx("ID", results));
       results.FetchString(FieldNameToNumEx("SteamID", results), player_info[client][SteamID], 100); // <--- Здесь ошибка
   }
}
Сама ошибка:
C-подобный:
error 178: cannot coerce int[] to char[]; storage classes differ

Я много пробовал извращаться с кодом, но не помогало.

Добавь в дс Rampage#8290 помогу
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
enum player { ID, SteamID[64], } new player_info[MAXPLAYERS][player];
Ошибка в enum, т.к. player_info объявлена как int, то SteamID надо указать тип String и размер, а так же player_info создавать с типом any:
PHP:
enum player{
ID,
String:SteamID[32],
}
any player_info[MAXPLAYERS][player];

Ну и потом использовать как-то так:
PHP:
GetClientAuthId(CLIENT, AuthId_SteamID64, player_info[CLIENT][SteamID], 32);
 

Nico Yazawa

Бывший MrChester =(
Сообщения
326
Реакции
303
Ошибка в enum, т.к. player_info объявлена как int, то SteamID надо указать тип String и размер, а так же player_info создавать с типом any:
PHP:
enum player{
ID,
String:SteamID[32],
}
any player_info[MAXPLAYERS][player];

Ну и потом использовать как-то так:
PHP:
GetClientAuthId(CLIENT, AuthId_SteamID64, player_info[CLIENT][SteamID], 32);
Ты боженька :3
--- Добавлено позже ---
Добавь в дс Rampage#8290 помогу
Проблема решена, спасибо
 
Сверху Снизу