diff options
author | megamage <none@none> | 2009-04-05 16:58:20 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-04-05 16:58:20 -0500 |
commit | 24e24d3c023f31f0363e55fda413181ca9f73439 (patch) | |
tree | bbfe929fe9a016848213eae11e60c9c99fb9247c | |
parent | cb3b6e7c773ec8a979f6f08a5d2d60b9602c2bc1 (diff) |
[7616] Implement .debug play cinematic and .debig play movie. Rename .debug playsound to .debug play sound. Author: VladimirMangos
*Note: some conflicts of string.
--HG--
branch : trunk
-rw-r--r-- | sql/mangos.sql | 10 | ||||
-rw-r--r-- | sql/updates/7616_01_mangos_mangos_string.sql | 6 | ||||
-rw-r--r-- | sql/updates/7616_02_mangos_command.sql | 8 | ||||
-rw-r--r-- | src/game/Chat.cpp | 10 | ||||
-rw-r--r-- | src/game/Chat.h | 5 | ||||
-rw-r--r-- | src/game/DBCStores.cpp | 8 | ||||
-rw-r--r-- | src/game/DBCStores.h | 2 | ||||
-rw-r--r-- | src/game/DBCStructure.h | 28 | ||||
-rw-r--r-- | src/game/DBCfmt.h | 2 | ||||
-rw-r--r-- | src/game/Debugcmds.cpp | 48 | ||||
-rw-r--r-- | src/game/Language.h | 7 |
11 files changed, 128 insertions, 6 deletions
diff --git a/sql/mangos.sql b/sql/mangos.sql index 641ae471ea2..b752d0d76ed 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -22,7 +22,7 @@ DROP TABLE IF EXISTS `db_version`; CREATE TABLE `db_version` ( `version` varchar(120) default NULL, - `required_7615_01_mangos_command` bit(1) default NULL + `required_7616_02_mangos_command` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -266,7 +266,9 @@ INSERT INTO `command` VALUES ('debug arena',3,'Syntax: .debug arena\r\n\r\nToggle debug mode for arenas. In debug mode GM can start arena with single player.'), ('debug bg',3,'Syntax: .debug bg\r\n\r\nToggle debug mode for battlegrounds. In debug mode GM can start battleground with single player.'), ('debug getvalue',3,'Syntax: .debug getvalue #field #isInt\r\n\r\nGet the field #field of the selected creature. If no creature is selected, get the content of your field.\r\n\r\nUse a #isInt of value 1 if the expected field content is an integer.'), -('debug playsound',1,'Syntax: .debug playsound #soundid\r\n\r\nPlay sound with #soundid.\r\nSound will be play only for you. Other players do not hear this.\r\nWarning: client may have more 5000 sounds...'), +('debug play cinematic',1,'Syntax: .debug play cinematic #cinematicid\r\n\r\nPlay cinematic #cinematicid for you. You stay at place while your mind fly.\r\n'), +('debug play movie',1,'Syntax: .debug play movie #movieid\r\n\r\nPlay movie #movieid for you.'), +('debug play sound',1,'Syntax: .debug play sound #soundid\r\n\r\nPlay sound with #soundid.\r\nSound will be play only for you. Other players do not hear this.\r\nWarning: client may have more 5000 sounds...'), ('debug setvalue',3,'Syntax: .debug setvalue #field #value #isInt\r\n\r\nSet the field #field of the selected creature with value #value. If no creature is selected, set the content of your field.\r\n\r\nUse a #isInt of value 1 if #value is an integer.'), ('debug update',3,'Syntax: .debug update #field #value\r\n\r\nUpdate the field #field of the selected character or creature with value #value.\r\n\r\nIf no #value is provided, display the content of field #field.'), ('debug Mod32Value',3,'Syntax: .debug Mod32Value #field #value\r\n\r\nAdd #value to field #field of your character.'), @@ -2923,7 +2925,9 @@ INSERT INTO `mangos_string` VALUES (1124,'Wrong pet type',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (1125,'Your pet learned all talents',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (1126,'Your pet talents have been reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), -(1127,'Talents of %s\'s pet reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +(1127,'Talents of %s\'s pet reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1200,'You try to view cinemitic %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1201,'You try to view movie %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `mangos_string` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/7616_01_mangos_mangos_string.sql b/sql/updates/7616_01_mangos_mangos_string.sql new file mode 100644 index 00000000000..cd6e315adf9 --- /dev/null +++ b/sql/updates/7616_01_mangos_mangos_string.sql @@ -0,0 +1,6 @@ +ALTER TABLE db_version CHANGE COLUMN required_7615_01_mangos_command required_7616_01_mangos_mangos_string bit; + +DELETE FROM mangos_string WHERE entry IN(1200,1201); +INSERT INTO mangos_string VALUES +(1200,'You try to view cinemitic %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1201,'You try to view movie %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); diff --git a/sql/updates/7616_02_mangos_command.sql b/sql/updates/7616_02_mangos_command.sql new file mode 100644 index 00000000000..42f55f03b6a --- /dev/null +++ b/sql/updates/7616_02_mangos_command.sql @@ -0,0 +1,8 @@ +ALTER TABLE db_version CHANGE COLUMN required_7616_01_mangos_mangos_string required_7616_02_mangos_command bit; + +DELETE FROM `command` WHERE `name` IN ('debug playsound','debug play sound','debug play cinematic','debug play movie'); + +INSERT INTO `command` VALUES +('debug play cinematic',1,'Syntax: .debug play cinematic #cinematicid\r\n\r\nPlay cinematic #cinematicid for you. You stay at place while your mind fly.\r\n'), +('debug play movie',1,'Syntax: .debug play movie #movieid\r\n\r\nPlay movie #movieid for you.'), +('debug play sound',1,'Syntax: .debug play sound #soundid\r\n\r\nPlay sound with #soundid.\r\nSound will be play only for you. Other players do not hear this.\r\nWarning: client may have more 5000 sounds...'); diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 4c057122cac..01f1ae1525c 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -108,6 +108,14 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; + static ChatCommand debugPlayCommandTable[] = + { + { "cinematic", SEC_MODERATOR, false, &ChatHandler::HandleDebugPlayCinematicCommand, "", NULL }, + { "movie", SEC_MODERATOR, false, &ChatHandler::HandleDebugPlayMovieCommand, "", NULL }, + { "sound", SEC_MODERATOR, false, &ChatHandler::HandleDebugPlaySoundCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } + }; + static ChatCommand debugSendCommandTable[] = { { "buyerror", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendBuyErrorCommand, "", NULL }, @@ -135,7 +143,7 @@ ChatCommand * ChatHandler::getCommandTable() { "lootrecipient", SEC_GAMEMASTER, false, &ChatHandler::HandleDebugGetLootRecipient, "", NULL }, { "getvalue", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugGetValue, "", NULL }, { "Mod32Value", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugMod32Value, "", NULL }, - { "playsound", SEC_MODERATOR, false, &ChatHandler::HandleDebugPlaySoundCommand, "", NULL }, + { "play", SEC_MODERATOR, false, NULL, "", debugPlayCommandTable }, { "send", SEC_ADMINISTRATOR, false, NULL, "", debugSendCommandTable }, { "setitemflag", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSetItemFlagCommand, "", NULL }, { "setvalue", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSetValue, "", NULL }, diff --git a/src/game/Chat.h b/src/game/Chat.h index 87d95ac82c4..d05c1cee986 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -129,7 +129,6 @@ class ChatHandler bool HandleDebugGetLootRecipient(const char * args); bool HandleDebugGetValue(const char* args); bool HandleDebugMod32Value(const char* args); - bool HandleDebugPlaySoundCommand(const char* args); bool HandleDebugSetValue(const char* args); bool HandleDebugSetItemFlagCommand(const char * args); bool HandleDebugSpawnVehicle(const char * args); @@ -144,6 +143,10 @@ class ChatHandler bool HandleBindSightCommand(const char* args); bool HandleUnbindSightCommand(const char* args); + bool HandleDebugPlayCinematicCommand(const char* args); + bool HandleDebugPlayMovieCommand(const char* args); + bool HandleDebugPlaySoundCommand(const char* args); + bool HandleDebugSendBuyErrorCommand(const char* args); bool HandleDebugSendChannelNotifyCommand(const char* args); bool HandleDebugSendChatMsgCommand(const char* args); diff --git a/src/game/DBCStores.cpp b/src/game/DBCStores.cpp index 5149bc2ddd7..4d1ba2a5cff 100644 --- a/src/game/DBCStores.cpp +++ b/src/game/DBCStores.cpp @@ -48,6 +48,7 @@ DBCStorage <CharTitlesEntry> sCharTitlesStore(CharTitlesEntryfmt); DBCStorage <ChatChannelsEntry> sChatChannelsStore(ChatChannelsEntryfmt); DBCStorage <ChrClassesEntry> sChrClassesStore(ChrClassesEntryfmt); DBCStorage <ChrRacesEntry> sChrRacesStore(ChrRacesEntryfmt); +DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore(CinematicSequencesEntryfmt); DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore(CreatureDisplayInfofmt); DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore(CreatureFamilyfmt); DBCStorage <CreatureSpellDataEntry> sCreatureSpellDataStore(CreatureSpellDatafmt); @@ -78,7 +79,9 @@ DBCStorage <GtOCTRegenHPEntry> sGtOCTRegenHPStore(GtOCTRegenHPfmt); //DBCStorage <GtOCTRegenMPEntry> sGtOCTRegenMPStore(GtOCTRegenMPfmt); -- not used currently DBCStorage <GtRegenHPPerSptEntry> sGtRegenHPPerSptStore(GtRegenHPPerSptfmt); DBCStorage <GtRegenMPPerSptEntry> sGtRegenMPPerSptStore(GtRegenMPPerSptfmt); + DBCStorage <HolidaysEntry> sHolidaysStore(Holidaysfmt); + DBCStorage <ItemEntry> sItemStore(Itemfmt); DBCStorage <ItemBagFamilyEntry> sItemBagFamilyStore(ItemBagFamilyfmt); //DBCStorage <ItemCondExtCostsEntry> sItemCondExtCostsStore(ItemCondExtCostsEntryfmt); @@ -93,6 +96,7 @@ DBCStorage <LockEntry> sLockStore(LockEntryfmt); DBCStorage <MailTemplateEntry> sMailTemplateStore(MailTemplateEntryfmt); DBCStorage <MapEntry> sMapStore(MapEntryfmt); +DBCStorage <MovieEntry> sMovieStore(MovieEntryfmt); DBCStorage <QuestSortEntry> sQuestSortStore(QuestSortEntryfmt); @@ -199,7 +203,7 @@ void LoadDBCStores(const std::string& dataPath) { std::string dbcPath = dataPath+"dbc/"; - const uint32 DBCFilesCount = 75; + const uint32 DBCFilesCount = 77; barGoLink bar( DBCFilesCount ); @@ -236,6 +240,7 @@ void LoadDBCStores(const std::string& dataPath) LoadDBC(availableDbcLocales,bar,bad_dbc_files,sChatChannelsStore, dbcPath,"ChatChannels.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sChrClassesStore, dbcPath,"ChrClasses.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sChrRacesStore, dbcPath,"ChrRaces.dbc"); + LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCinematicSequencesStore, dbcPath,"CinematicSequences.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCreatureDisplayInfoStore, dbcPath,"CreatureDisplayInfo.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCreatureFamilyStore, dbcPath,"CreatureFamily.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCreatureSpellDataStore, dbcPath,"CreatureSpellData.dbc"); @@ -286,6 +291,7 @@ void LoadDBCStores(const std::string& dataPath) LoadDBC(availableDbcLocales,bar,bad_dbc_files,sLockStore, dbcPath,"Lock.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sMailTemplateStore, dbcPath,"MailTemplate.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sMapStore, dbcPath,"Map.dbc"); + LoadDBC(availableDbcLocales,bar,bad_dbc_files,sMovieStore, dbcPath,"Movie.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sQuestSortStore, dbcPath,"QuestSort.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sRandomPropertiesPointsStore, dbcPath,"RandPropPoints.dbc"); LoadDBC(availableDbcLocales,bar,bad_dbc_files,sScalingStatDistributionStore, dbcPath,"ScalingStatDistribution.dbc"); diff --git a/src/game/DBCStores.h b/src/game/DBCStores.h index e79cb44a534..c7c7b54608e 100644 --- a/src/game/DBCStores.h +++ b/src/game/DBCStores.h @@ -72,6 +72,7 @@ extern DBCStorage <CharStartOutfitEntry> sCharStartOutfitStore; extern DBCStorage <CharTitlesEntry> sCharTitlesStore; extern DBCStorage <ChrClassesEntry> sChrClassesStore; extern DBCStorage <ChrRacesEntry> sChrRacesStore; +extern DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore; extern DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore; extern DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore; extern DBCStorage <CreatureSpellDataEntry> sCreatureSpellDataStore; @@ -108,6 +109,7 @@ extern DBCStorage <ItemSetEntry> sItemSetStore; extern DBCStorage <LockEntry> sLockStore; extern DBCStorage <MailTemplateEntry> sMailTemplateStore; extern DBCStorage <MapEntry> sMapStore; +extern DBCStorage <MovieEntry> sMovieStore; extern DBCStorage <QuestSortEntry> sQuestSortStore; extern DBCStorage <RandomPropertiesPointsEntry> sRandomPropertiesPointsStore; extern DBCStorage <ScalingStatDistributionEntry> sScalingStatDistributionStore; diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index 98fe0000ed4..fa5036c56d2 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -651,6 +651,27 @@ struct ChrRacesEntry uint32 addon; // 68 (0 - original race, 1 - tbc addon, ...) }; +/* not used +struct CinematicCameraEntry +{ + uint32 id; // 0 index + char* filename; // 1 + uint32 soundid; // 2 in SoundEntries.dbc or 0 + float start_x; // 3 + float start_y; // 4 + float start_z; // 5 + float unk6; // 6 speed? +}; +*/ + +struct CinematicSequencesEntry +{ + uint32 Id; // 0 index + //uint32 unk1; // 1 always 0 + //uint32 cinematicCamera; // 2 id in CinematicCamera.dbc + // 3-9 always 0 +}; + struct CreatureDisplayInfoEntry { uint32 Displayid; // 0 m_ID @@ -1084,6 +1105,13 @@ struct MapEntry } }; +struct MovieEntry +{ + uint32 Id; // 0 index + //char* filename; // 1 + //uint32 unk2; // 2 always 100 +}; + struct QuestSortEntry { uint32 id; // 0 m_ID diff --git a/src/game/DBCfmt.h b/src/game/DBCfmt.h index be412682685..23f9cc9c516 100644 --- a/src/game/DBCfmt.h +++ b/src/game/DBCfmt.h @@ -36,6 +36,7 @@ const char ChatChannelsEntryfmt[]="iixssssssssssssssssxxxxxxxxxxxxxxxxxx"; // ChatChannelsEntryfmt, index not used (more compact store) const char ChrClassesEntryfmt[]="nxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixii"; const char ChrRacesEntryfmt[]="nxixiixxixxxxissssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi"; +const char CinematicSequencesEntryfmt[]="nxxxxxxxxx"; const char CreatureDisplayInfofmt[]="nxxxfxxxxxxxxxxx"; const char CreatureFamilyfmt[]="nfifiiiiixssssssssssssssssxx"; const char CreatureSpellDatafmt[]="nxxxxxxxx"; @@ -72,6 +73,7 @@ const char ItemSetEntryfmt[]="dssssssssssssssssxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiii const char LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx"; const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char MapEntryfmt[]="nxixssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiffiixxix"; +const char MovieEntryfmt[]="nxx"; const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx"; const char RandomPropertiesPointsfmt[]="niiiiiiiiiiiiiii"; const char ScalingStatDistributionfmt[]="niiiiiiiiiiiiiiiiiiiii"; diff --git a/src/game/Debugcmds.cpp b/src/game/Debugcmds.cpp index 3bd630f799b..e50ca1677de 100644 --- a/src/game/Debugcmds.cpp +++ b/src/game/Debugcmds.cpp @@ -242,6 +242,54 @@ bool ChatHandler::HandleDebugUpdateWorldStateCommand(const char* args) return true; } +bool ChatHandler::HandleDebugPlayCinematicCommand(const char* args) +{ + // USAGE: .debug play cinematic #cinematicid + // #cinematicid - ID decimal number from CinemaicSequences.dbc (1st column) + if( !*args ) + { + SendSysMessage(LANG_BAD_VALUE); + SetSentErrorMessage(true); + return false; + } + + uint32 dwId = atoi((char*)args); + + if(!sCinematicSequencesStore.LookupEntry(dwId)) + { + PSendSysMessage(LANG_CINEMATIC_NOT_EXIST, dwId); + SetSentErrorMessage(true); + return false; + } + + m_session->GetPlayer()->SendCinematicStart(dwId); + return true; +} + +bool ChatHandler::HandleDebugPlayMovieCommand(const char* args) +{ + // USAGE: .debug play movie #movieid + // #movieid - ID decimal number from Movie.dbc (1st column) + if( !*args ) + { + SendSysMessage(LANG_BAD_VALUE); + SetSentErrorMessage(true); + return false; + } + + uint32 dwId = atoi((char*)args); + + if(!sMovieStore.LookupEntry(dwId)) + { + PSendSysMessage(LANG_MOVIE_NOT_EXIST, dwId); + SetSentErrorMessage(true); + return false; + } + + m_session->GetPlayer()->SendMovieStart(dwId); + return true; +} + //Play sound bool ChatHandler::HandleDebugPlaySoundCommand(const char* args) { diff --git a/src/game/Language.h b/src/game/Language.h index 7a344bd2b41..aebcd93a008 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -854,6 +854,13 @@ enum TrinityStrings LANG_WORLD_CLOSED = 7523, LANG_WORLD_OPENED = 7524, + // Debug commands + LANG_CINEMATIC_NOT_EXIST = 1200, + LANG_MOVIE_NOT_EXIST = 1201, + // Room for more debug 1202-1299 not used + + // FREE IDS 1300-9999 + // Use for not-in-offcial-sources patches // 10000-10999 // opvp hp |