• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Запрос [help]
r0m1ntik
Центурион
Добрый день,

Возникла проблема в том что когда задаю запрос в данном виде: [часть кода]
Цитата

CharacterDatabase.PQuery("UPDATE characters SET totaltime = totaltime-1800 WHERE guid = %u", pPlayer->GetGUIDLow());
pPlayer->SaveToDB();


Он снимает 30 мин игры но через минуту возврашяет обратно.
Много варьянтов пробовал но не помогло.
Мб ктото знает или сталкивался с данной проблемой, отпишите

Спс) с меня +
Сообщение # 1 написано 04.10.2015 в 19:49
p620
Маршал
Цитата r0m1ntik ()
Он снимает 30 мин игры но через минуту возврашяет обратно.

Предполагаю, что не через минуту, а сразу же. Собственно, по вызову функции Player::SaveToDB().
Сообщение # 2 отредактировано p620 - Воскресенье, 04.10.2015, 19:59
Incorrect
Капрал
Перед сохранением в базу изменяй значение поля класса Player, которое содержит информацию о времени игры
Сообщение # 3 написано 04.10.2015 в 20:30
p620
Маршал
Цитата Incorrect ()
Перед сохранением в базу изменяй значение поля класса Player, которое содержит информацию о времени игры

И не забудьте выкинуть прямой запрос в базу из кода в этом случае.
Сообщение # 4 написано 04.10.2015 в 20:51
r0m1ntik
Центурион
Incorrect,
Цитата Incorrect ()
изменяй значение поля класса Player, которое содержит информацию о времени игры


Это как ? можно пример скриптом ?
Сообщение # 5 написано 05.10.2015 в 03:49
Mocosin
Капрал
Цитата r0m1ntik ()
Это как ? можно пример скриптом ?

Как самый оптимальный вариант, посмотри как именяются эти значения (по коду) как добовляются и тд
Сообщение # 6 написано 05.10.2015 в 05:23
GeassDev
Скаут
m_Last_tick = m_logintime;
m_Played_time[PLAYED_TIME_TOTAL] = 0;
m_Played_time[PLAYED_TIME_LEVEL] = 0;
Попробуй изменять эти переменные в классе Player

тобишь, как пример player->m_Played_time[PLAYED_TIME_TOTAL] = player->m_Played_time[PLAYED_TIME_TOTAL]-1800;

Возможно, это и есть решение
Сообщение # 7 написано 06.10.2015 в 21:05
p620
Маршал
Цитата GeassDev ()
player->m_Played_time[PLAYED_TIME_TOTAL] = player->m_Played_time[PLAYED_TIME_TOTAL]-1800;

На будущее, того же эффекта можно добиться гораздо более короткой инструкцией:
Код
player->m_Played_time[PLAYED_TIME_TOTAL] -= 1800;
Сообщение # 8 написано 06.10.2015 в 21:37
GeassDev
Скаут
Цитата p620 ()
На будущее, того же эффекта можно добиться гораздо более короткой инструкцией:

это я знаю) Но нам препод по Объектно Ориентированному Программированию говорит, что лучше пользоваться: переменная=переменная-значение; , чем переменная-=значение;
Говорит, что операции (*=, -=, +=, /=) не всегда правильно срабатывают
Но почему-то я уверен. что он ошибается)
Сообщение # 9 отредактировано GeassDev - Среда, 07.10.2015, 16:29
p620
Маршал
Цитата GeassDev ()
он ошибается

Жалко, что здесь запрещено только цитатой отвечать.
А что за институт?
Сообщение # 10 написано 07.10.2015 в 18:20
GeassDev
Скаут
Цитата p620 ()
Жалко, что здесь запрещено только цитатой отвечать.
А что за институт?

Колледж)
Сообщение # 11 отредактировано GeassDev - Среда, 07.10.2015, 20:11
p620
Маршал
Цитата GeassDev ()
Колледж)

Тогда ладно =)
Сообщение # 12 написано 07.10.2015 в 21:22
Incorrect
Капрал
Может ваш препод еще и вместо инкремента пишет i = i + 1 ? biggrin
Сообщение # 13 отредактировано Incorrect - Среда, 07.10.2015, 21:32
Pallam
Рыцарь
Цитата Incorrect ()
Может ваш препод еще и вместо инкремента пишет i = i + 1 ? biggrin

А вот инкримент икрименту рознь, кстати.
Сообщение # 14 написано 07.10.2015 в 23:34
p620
Маршал
Цитата Pallam ()
А вот инкримент икрименту рознь, кстати.

Префиксные и постфиксные формы немного различаются по реализации, это факт (на то две формы и существует), но ни одна из них "не всегда правильно срабатывать" не будет.
Хотя, в конечном счете будет зависеть от того, не являлся ли автором компилятора чей-нибудь "препод" =).
Сообщение # 15 отредактировано p620 - Среда, 07.10.2015, 23:40
  • Страница 1 из 1
  • 1
Поиск: