• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Оповещение о муте
_dm666
<3 Death Metal
Данный патч может быть и не полезен, но бывает в игре такое, что игроку пишешь, а он не отвечает, потому что ему дали мут.
Этот патч выводит сообщение о том, что игрок не может в данный момент с вами говорить.
Код
# HG changeset patch
# User DeathMetal
# Date 1362997769 -7200
# Node ID ef9a09455e697b094dab955effca90b4585d56fc
# Parent  9aa5e28b33f9e6c6d5e452a5727cade27174d5c9
Fixed "Player can't speak with you now."

diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -20110,7 +20110,22 @@
       else if (rPlayer->isDND())
           ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_DND, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
    else if (!rPlayer->CanSpeak())
-  ChatHandler(GetSession()).PSendSysMessage(LANG_CANNOT_SPEAK, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
+    {
+  uint64 muteTime = 0;
+  uint32 accId = rPlayer->GetSession()->GetAccountId();
+  PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
+  stmt->setInt32(0, int32(realmID));
+  stmt->setUInt32(1, accId);
+  PreparedQueryResult result = LoginDatabase.Query(stmt);
+
+  if(result)
+  {
+   Field* fields = result->Fetch();
+   muteTime = fields[5].GetUInt64();
+   if(muteTime > 0)
+    ChatHandler(GetSession()).PSendSysMessage(LANG_CANNOT_SPEAK, secsToTimeString(muteTime - time(NULL), true).c_str());
+  }
+    }
   }
   void Player::PetSpellInitialize()
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -1164,6 +1164,7 @@
        // Use for custom patches             11000-11999
        LANG_AUTO_BROADCAST                 = 11000,
        LANG_INVALID_REALMID                = 11001,
+    LANG_CANNOT_SPEAK                   = 11002,
       
        // NOT RESERVED IDS                   12000-1999999999
        // `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)

И к нему залить sql в базу
Код
INSERT INTO `trinity_string` (`entry`, `content_default`) VALUES (11002, 'Player can\'t speak with you now. Mute time remaining: %s');
Сообщение # 1 отредактировано std_Suicide - Понедельник, 11.03.2013, 14:44
_dm666
<3 Death Metal
Обновил патч, теперь показывает количество времени до окончания мута.
Сообщение # 2 написано 11.03.2013 в 14:44
Ustus
Рыцарь
Отлично=)Я залил к себе ,понравилось.
Рисовщик,разрабатываю игровые миры wow.
База world(рисованный сервер)
Для крайзи серверов
Ищу место разработчика игрового мира(Рисовщика.
My skype - Ustus301.
Сообщение # 3 написано 11.03.2013 в 17:39
Vitalya7
Ну просто умничка=))
Вот это действительно классно)
Сообщение # 4 написано 13.03.2013 в 00:24
RanetkiForever
Скаут
Цитата (std_Suicide)
# HG changeset patch
# User DeathMetal
# Date 1362997769 -7200
# Node ID ef9a09455e697b094dab955effca90b4585d56fc
# Parent  9aa5e28b33f9e6c6d5e452a5727cade27174d5c9
Fixed "Player can't speak with you now."

diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -20110,7 +20110,22 @@
       else if (rPlayer->isDND())
           ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_DND, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
    else if (!rPlayer->CanSpeak())
-  ChatHandler(GetSession()).PSendSysMessage(LANG_CANNOT_SPEAK, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
+    {
+  uint64 muteTime = 0;
+  uint32 accId = rPlayer->GetSession()->GetAccountId();
+  PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
+  stmt->setInt32(0, int32(realmID));
+  stmt->setUInt32(1, accId);
+  PreparedQueryResult result = LoginDatabase.Query(stmt);
+
+  if(result)
+  {
+   Field* fields = result->Fetch();
+   muteTime = fields[5].GetUInt64();
+   if(muteTime > 0)
+    ChatHandler(GetSession()).PSendSysMessage(LANG_CANNOT_SPEAK, secsToTimeString(muteTime - time(NULL), true).c_str());
+  }
+    }
   }
   void Player::PetSpellInitialize()
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -1164,6 +1164,7 @@
        // Use for custom patches             11000-11999
        LANG_AUTO_BROADCAST                 = 11000,
        LANG_INVALID_REALMID                = 11001,
+    LANG_CANNOT_SPEAK                   = 11002,
       
        // NOT RESERVED IDS                   12000-1999999999
        // `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)


что это вообще за код, куда и как его заливать непойму

Добавлено (18.05.2013, 21:02)
---------------------------------------------
Правой кнопкой в навикате по базе World - консоль, и туда чтоли?

Сообщение # 5 написано 18.05.2013 в 21:02
Vitalya7
Ну просто умничка=))
RanetkiForever, это не sql запрос, дифф ставится на исходники.
Сообщение # 6 написано 18.05.2013 в 21:27
RanetkiForever
Скаут
Цитата (Vitalya7)
дифф ставится на исходники.

что такое диф и как он ставится на исходники, троли которые не хотят обьяснять, хотя бы ссылку киньте где прочитать
Сообщение # 7 написано 24.05.2013 в 12:33
distmister
Центурион
RanetkiForever, а заглянуть сюда слабо?
З.Ы. В готовую сборку это не засунуть.
Сообщение # 8 написано 25.05.2013 в 02:38
Прадмур
~
Зачем? Зачем грузить базу лишними запросами, когда есть переменная m_muteTime с нужным значением!?
Сообщение # 9 написано 26.05.2013 в 02:26
  • Страница 1 из 1
  • 1
Поиск: