Вопросы

Добрый вечер, прошу подскажите пожалуйста, как мне подключить команду к mysql чтобы действия сохранялись, облазил все - ничего не нашел.

Поделиться сообщением


Ссылка на сообщение

6 ответов на этот вопрос

  • 0
Maks_Fabions
Свой человек

А какие именно действия? Не очень понятно, что вы хотели? На сколько я знаю MySQL работает с переменными сервера. То бишь, если надо сохранить информацию об аккаунте, то MySQL хороша штука для хранения этой информации. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Maks_Fabions
Свой человек

Смотря, какие цели ... 
 

static const fmt_query[] = "INSERT INTO `account` (`Name`, `Key`, `Sex`, `Skin`) VALUES ('%s', '%s', '%d', '%d')";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+21)+(-2+1)+(-2+3)];
format(query, sizeof(query), fmt_query, PlayerInfo[playerid][pName], PlayerInfo[playerid][pKey], PlayerInfo[playerid][pSex], PlayerInfo[playerid][pSkin]);
mysql_query(dbHandle, query);

Допустим данный запрос добавит(запишет) в базу данных, полученные значения этих переменных (Для регистрации аккаунта)

PlayerInfo[playerid][pName], 
PlayerInfo[playerid][pKey], 
PlayerInfo[playerid][pSex], 
PlayerInfo[playerid][pSkin]

 

 

Можно создать самописанную функцию сохранения аккаунта, при отключении игрока.

stock SaveAccount(playerid)
{
    new query_string[(20)+(16+11)+(20+MAX_PLAYER_NAME)+(11+30)] = "UPDATE `account` SET"// (20)

    format(query_string, sizeof(query_string), "%s `Name` = '%s',", query_string, PlayerInfo[playerid][pName]); // (20+MAX_PLAYER_NAME)
    format(query_string, sizeof(query_string), "%s `Key` = '%s'", query_string, PlayerInfo[playerid][pKey]); // (11+30)

    format(query_string, sizeof(query_string), "%s WHERE `id` = '%d'", query_string, PlayerInfo[playerid][pID]); // (16+11)
    mysql_function_query(dbHandle, query_string, false"""");
    return 1;
}

Не забудь добавить в public OnPlayerDisconnect(playerid, reason) // Событие, когда игрок отключается от сервера

SaveAccount(playerid);

 

Отредактировано пользователем Maks_Fabions

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Maks_Fabions, если возникнет какой-нибудь сбой и сервер завершит свою работу, функция OnPlayerDisconnect вызвана не будет, а следовательно и не будут сохранены аккаунты игроков. Куда более успешной практикой считается обновление данных по мере необходимости. Идея заключается в том, что вы обновляете не все поля при отключении игрока от сервера, а лишь те поля, что были изменены, и в момент их изменения. В частности, можно реализовать собственные функции изменения имени, уровня и прочие. И, вызывая их, вы будете, во-первых, изменять имя и уровень игроков соответственно, во-вторых, сохранять указанные поля в базе данных.

 

  открыть спойлер

 

Вызывая такие функции по мере необходимости, вы обеспечите гарантированную сохранность всех изменяемых данных и обеспечите для себя возможность подменять те или иные действия при использовании определенных функций (не придется во всем моде искать изменение тех или иных полей).

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Senwik
      От Senwik
      Всем привет! Я горю желанием сделать свой хороший Крмп проект, чтоб люди играли и радовались. Но только есть одна большая проблемка. я мало разбираюсь в создании Крмп. Вот хотел спросить, где можно почитать, чтоб научится делать Крмп, то-есть что такое scriptfiles и как настраивать файлики внутри него, как делать всякие дополнительные панельки. К примеру, человек вводит команду /frak и у него открывается панель фракции, кто в ней и так далее.
      PS:Спасибо всем кто поможет
      Также, если кто-то захочет как-то помочь в разработке или просто поговорить на тему разработки, то вот мой дс @triptolin.