[svn] * fixed help for subcommands - source mangos
* Renamed accounts column tbc to expansion and it only took a little over 4 hours o.O --HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE account
|
||||||
|
CHANGE COLUMN tbc expansion tinyint(3) unsigned NOT NULL default '0';
|
||||||
@@ -179,7 +179,6 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
|
|||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
uint8 race_,class_;
|
uint8 race_,class_;
|
||||||
bool pTbc = this->IsTBC() && sWorld.getConfig(CONFIG_EXPANSION) > 0;
|
|
||||||
recv_data >> name;
|
recv_data >> name;
|
||||||
|
|
||||||
// recheck with known string size
|
// recheck with known string size
|
||||||
@@ -212,8 +211,9 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sChrClassesStore.LookupEntry(class_)||
|
ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(class_);
|
||||||
!sChrRacesStore.LookupEntry(race_))
|
ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race_);
|
||||||
|
if( !classEntry || !raceEntry )
|
||||||
{
|
{
|
||||||
data << (uint8)CHAR_CREATE_FAILED;
|
data << (uint8)CHAR_CREATE_FAILED;
|
||||||
SendPacket( &data );
|
SendPacket( &data );
|
||||||
@@ -222,10 +222,20 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// prevent character creating Expansion race without Expansion account
|
// prevent character creating Expansion race without Expansion account
|
||||||
if (!pTbc&&(race_>RACE_TROLL))
|
if (raceEntry->addon > Expansion())
|
||||||
{
|
{
|
||||||
data << (uint8)CHAR_CREATE_EXPANSION;
|
data << (uint8)CHAR_CREATE_EXPANSION;
|
||||||
sLog.outError("No Expansion Account:[%d] but tried to Create TBC character",GetAccountId());
|
sLog.outError("Not Expansion 1 account:[%d] but tried to Create character with expansion 1 race (%u)",GetAccountId(),race_);
|
||||||
|
SendPacket( &data );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// prevent character creating Expansion class without Expansion account
|
||||||
|
// TODO: use possible addon field in ChrClassesEntry in next dbc version
|
||||||
|
if (Expansion() < 2 && class_ == CLASS_DEATH_KNIGHT)
|
||||||
|
{
|
||||||
|
data << (uint8)CHAR_CREATE_EXPANSION;
|
||||||
|
sLog.outError("Not Expansion 2 account:[%d] but tried to Create character with expansion 2 class (%u)",GetAccountId(),class_);
|
||||||
SendPacket( &data );
|
SendPacket( &data );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -626,7 +626,7 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand *table, const char* text, st
|
|||||||
|
|
||||||
for(uint32 i = 0; table[i].Name != NULL; i++)
|
for(uint32 i = 0; table[i].Name != NULL; i++)
|
||||||
{
|
{
|
||||||
if( !hasStringAbbr(table[i].Name, cmd.c_str()) )
|
if( *subcmd && !hasStringAbbr(table[i].Name, subcmd))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// select subcommand from child commands list
|
// select subcommand from child commands list
|
||||||
|
|||||||
+1
-1
@@ -18,6 +18,7 @@
|
|||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "MapManager.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "GridNotifiers.h"
|
#include "GridNotifiers.h"
|
||||||
#include "WorldSession.h"
|
#include "WorldSession.h"
|
||||||
@@ -35,7 +36,6 @@
|
|||||||
#include "ScriptCalls.h"
|
#include "ScriptCalls.h"
|
||||||
#include "Group.h"
|
#include "Group.h"
|
||||||
|
|
||||||
#include "MapManager.h"
|
|
||||||
#include "MapInstanced.h"
|
#include "MapInstanced.h"
|
||||||
#include "InstanceSaveMgr.h"
|
#include "InstanceSaveMgr.h"
|
||||||
#include "VMapFactory.h"
|
#include "VMapFactory.h"
|
||||||
|
|||||||
@@ -2371,6 +2371,10 @@ void ObjectMgr::LoadPlayerInfo()
|
|||||||
if (sWorld.getConfig(CONFIG_EXPANSION) < 1 && (race == RACE_BLOODELF || race == RACE_DRAENEI))
|
if (sWorld.getConfig(CONFIG_EXPANSION) < 1 && (race == RACE_BLOODELF || race == RACE_DRAENEI))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// skip expansion classes if not playing with expansion
|
||||||
|
if (sWorld.getConfig(CONFIG_EXPANSION) < 2 && class_ == CLASS_DEATH_KNIGHT)
|
||||||
|
continue;
|
||||||
|
|
||||||
// fatal error if no level 1 data
|
// fatal error if no level 1 data
|
||||||
if(!pInfo->levelInfo || pInfo->levelInfo[0].stats[0] == 0 )
|
if(!pInfo->levelInfo || pInfo->levelInfo[0].stats[0] == 0 )
|
||||||
{
|
{
|
||||||
|
|||||||
+4
-23
@@ -1515,12 +1515,10 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
|||||||
if(!InBattleGround() && mEntry->IsBattleGroundOrArena())
|
if(!InBattleGround() && mEntry->IsBattleGroundOrArena())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
bool tbc = GetSession()->IsTBC() && sWorld.getConfig(CONFIG_EXPANSION) > 0;
|
// client without expansion support
|
||||||
|
if(GetSession()->Expansion() < mEntry->Expansion())
|
||||||
// normal client and TBC map
|
|
||||||
if(!tbc && mEntry->IsExpansionMap())
|
|
||||||
{
|
{
|
||||||
sLog.outDebug("Player %s using Normal client and tried teleport to non existing map %u", GetName(), mapid);
|
sLog.outDebug("Player %s using client without required expansion tried teleport to non accessable map %u", GetName(), mapid);
|
||||||
|
|
||||||
if(GetTransport())
|
if(GetTransport())
|
||||||
RepopAtGraveyard(); // teleport to near graveyard if on transport, looks blizz like :)
|
RepopAtGraveyard(); // teleport to near graveyard if on transport, looks blizz like :)
|
||||||
@@ -1529,27 +1527,10 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
|||||||
|
|
||||||
return false; // normal client can't teleport to this map...
|
return false; // normal client can't teleport to this map...
|
||||||
}
|
}
|
||||||
else if(tbc) // can teleport to any existing map
|
|
||||||
{
|
|
||||||
sLog.outDebug("Player %s have TBC client and will teleported to map %u", GetName(), mapid);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sLog.outDebug("Player %s have normal client and will teleported to standard map %u", GetName(), mapid);
|
sLog.outDebug("Player %s will teleported to map %u", GetName(), mapid);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
only TBC (no 0x80000 and 0x10 flags...)
|
|
||||||
3604590=0x37006E=0x200000 + 0x100000 + 0x40000 + 0x20000 + 0x10000 + 0x40 + 0x20 + 0x8 + 0x4 + 0x2
|
|
||||||
|
|
||||||
Kharazan (normal/TBC??), but not have 0x10 flag (accessible by normal client?)
|
|
||||||
4128878=0x3F006E=0x200000 + 0x100000 + 0x80000 + 0x40000 + 0x20000 + 0x10000 + 0x40 + 0x20 + 0x8 + 0x4 + 0x2
|
|
||||||
|
|
||||||
normal+TBC maps
|
|
||||||
4128894=0x3F007E=0x200000 + 0x100000 + 0x80000 + 0x40000 + 0x20000 + 0x10000 + 0x40 + 0x20 + 0x10 + 0x8 + 0x4 + 0x2
|
|
||||||
|
|
||||||
normal+TBC maps
|
|
||||||
8323198=0x7F007E=0x400000 + 0x200000 + 0x100000 + 0x80000 + 0x40000 + 0x20000 + 0x10000 + 0x40 + 0x20 + 0x10 + 0x8 + 0x4 + 0x2
|
|
||||||
*/
|
|
||||||
|
|
||||||
// if we were on a transport, leave
|
// if we were on a transport, leave
|
||||||
if (!(options & TELE_TO_NOT_LEAVE_TRANSPORT) && m_transport)
|
if (!(options & TELE_TO_NOT_LEAVE_TRANSPORT) && m_transport)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ enum Classes
|
|||||||
CLASS_HUNTER = 3,
|
CLASS_HUNTER = 3,
|
||||||
CLASS_ROGUE = 4,
|
CLASS_ROGUE = 4,
|
||||||
CLASS_PRIEST = 5,
|
CLASS_PRIEST = 5,
|
||||||
// CLASS_UNK1 = 6, DK
|
CLASS_DEATH_KNIGHT = 6,
|
||||||
CLASS_SHAMAN = 7,
|
CLASS_SHAMAN = 7,
|
||||||
CLASS_MAGE = 8,
|
CLASS_MAGE = 8,
|
||||||
CLASS_WARLOCK = 9,
|
CLASS_WARLOCK = 9,
|
||||||
@@ -961,7 +961,7 @@ enum GameobjectTypes
|
|||||||
GAMEOBJECT_TYPE_CAPTURE_POINT = 29,
|
GAMEOBJECT_TYPE_CAPTURE_POINT = 29,
|
||||||
GAMEOBJECT_TYPE_AURA_GENERATOR = 30,
|
GAMEOBJECT_TYPE_AURA_GENERATOR = 30,
|
||||||
GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,
|
GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,
|
||||||
GAMEOBJECT_TYPE_DO_NOT_USE_YET = 32,
|
GAMEOBJECT_TYPE_BARBER_CHAIR = 32,
|
||||||
GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33,
|
GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33,
|
||||||
GAMEOBJECT_TYPE_GUILD_BANK = 34,
|
GAMEOBJECT_TYPE_GUILD_BANK = 34,
|
||||||
};
|
};
|
||||||
@@ -1549,7 +1549,7 @@ enum TrainerType // this is important
|
|||||||
enum CreatureType
|
enum CreatureType
|
||||||
{
|
{
|
||||||
CREATURE_TYPE_BEAST = 1,
|
CREATURE_TYPE_BEAST = 1,
|
||||||
CREATURE_TYPE_DRAGON = 2,
|
CREATURE_TYPE_DRAGONKIN = 2,
|
||||||
CREATURE_TYPE_DEMON = 3,
|
CREATURE_TYPE_DEMON = 3,
|
||||||
CREATURE_TYPE_ELEMENTAL = 4,
|
CREATURE_TYPE_ELEMENTAL = 4,
|
||||||
CREATURE_TYPE_GIANT = 5,
|
CREATURE_TYPE_GIANT = 5,
|
||||||
@@ -1557,7 +1557,7 @@ enum CreatureType
|
|||||||
CREATURE_TYPE_HUMANOID = 7,
|
CREATURE_TYPE_HUMANOID = 7,
|
||||||
CREATURE_TYPE_CRITTER = 8,
|
CREATURE_TYPE_CRITTER = 8,
|
||||||
CREATURE_TYPE_MECHANICAL = 9,
|
CREATURE_TYPE_MECHANICAL = 9,
|
||||||
CREATURE_TYPE_NOTSPECIFIED = 10,
|
CREATURE_TYPE_NOT_SPECIFIED = 10,
|
||||||
CREATURE_TYPE_TOTEM = 11,
|
CREATURE_TYPE_TOTEM = 11,
|
||||||
CREATURE_TYPE_NON_COMBAT_PET = 12,
|
CREATURE_TYPE_NON_COMBAT_PET = 12,
|
||||||
CREATURE_TYPE_GAS_CLOUD = 13
|
CREATURE_TYPE_GAS_CLOUD = 13
|
||||||
|
|||||||
@@ -44,9 +44,9 @@
|
|||||||
#include "SocialMgr.h"
|
#include "SocialMgr.h"
|
||||||
|
|
||||||
/// WorldSession constructor
|
/// WorldSession constructor
|
||||||
WorldSession::WorldSession(uint32 id, WorldSocket *sock, uint32 sec, bool tbc, time_t mute_time, LocaleConstant locale) :
|
WorldSession::WorldSession(uint32 id, WorldSocket *sock, uint32 sec, uint8 expansion, time_t mute_time, LocaleConstant locale) :
|
||||||
LookingForGroup_auto_join(false), LookingForGroup_auto_add(false), m_muteTime(mute_time),
|
LookingForGroup_auto_join(false), LookingForGroup_auto_add(false), m_muteTime(mute_time),
|
||||||
_player(NULL), m_Socket(sock),_security(sec), _accountId(id), m_isTBC(tbc),
|
_player(NULL), m_Socket(sock),_security(sec), _accountId(id), m_expansion(expansion),
|
||||||
m_sessionDbcLocale(sWorld.GetAvailableDbcLocale(locale)), m_sessionDbLocaleIndex(objmgr.GetIndexForLocale(locale)),
|
m_sessionDbcLocale(sWorld.GetAvailableDbcLocale(locale)), m_sessionDbLocaleIndex(objmgr.GetIndexForLocale(locale)),
|
||||||
_logoutTime(0), m_playerLoading(false), m_playerLogout(false), m_playerRecentlyLogout(false), m_latency(0)
|
_logoutTime(0), m_playerLoading(false), m_playerLogout(false), m_playerRecentlyLogout(false), m_latency(0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class TRINITY_DLL_SPEC WorldSession
|
|||||||
{
|
{
|
||||||
friend class CharacterHandler;
|
friend class CharacterHandler;
|
||||||
public:
|
public:
|
||||||
WorldSession(uint32 id, WorldSocket *sock, uint32 sec, bool tbc, time_t mute_time, LocaleConstant locale);
|
WorldSession(uint32 id, WorldSocket *sock, uint32 sec, uint8 expansion, time_t mute_time, LocaleConstant locale);
|
||||||
~WorldSession();
|
~WorldSession();
|
||||||
|
|
||||||
bool PlayerLoading() const { return m_playerLoading; }
|
bool PlayerLoading() const { return m_playerLoading; }
|
||||||
@@ -88,12 +88,13 @@ class TRINITY_DLL_SPEC WorldSession
|
|||||||
|
|
||||||
uint32 GetSecurity() const { return _security; }
|
uint32 GetSecurity() const { return _security; }
|
||||||
uint32 GetAccountId() const { return _accountId; }
|
uint32 GetAccountId() const { return _accountId; }
|
||||||
|
//std::string const& GetRemoteAddress() const { return m_remoteaddress; }
|
||||||
Player* GetPlayer() const { return _player; }
|
Player* GetPlayer() const { return _player; }
|
||||||
char const* GetPlayerName() const;
|
char const* GetPlayerName() const;
|
||||||
void SetSecurity(uint32 security) { _security = security; }
|
void SetSecurity(uint32 security) { _security = security; }
|
||||||
std::string& GetRemoteAddress() { return m_Address; }
|
std::string& GetRemoteAddress() { return m_Address; }
|
||||||
void SetPlayer(Player *plr) { _player = plr; }
|
void SetPlayer(Player *plr) { _player = plr; }
|
||||||
bool IsTBC() const { return m_isTBC; }
|
uint8 Expansion() const { return m_expansion; }
|
||||||
|
|
||||||
/// Is the user engaged in a log out process?
|
/// Is the user engaged in a log out process?
|
||||||
bool isLogingOut() const { return _logoutTime || m_playerLogout; }
|
bool isLogingOut() const { return _logoutTime || m_playerLogout; }
|
||||||
@@ -629,7 +630,7 @@ class TRINITY_DLL_SPEC WorldSession
|
|||||||
|
|
||||||
uint32 _security;
|
uint32 _security;
|
||||||
uint32 _accountId;
|
uint32 _accountId;
|
||||||
bool m_isTBC;
|
uint8 m_expansion;
|
||||||
|
|
||||||
time_t _logoutTime;
|
time_t _logoutTime;
|
||||||
bool m_playerLoading; // code processed in LoginPlayer
|
bool m_playerLoading; // code processed in LoginPlayer
|
||||||
|
|||||||
@@ -678,7 +678,7 @@ WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
|
|||||||
uint32 unk2;
|
uint32 unk2;
|
||||||
uint32 BuiltNumberClient;
|
uint32 BuiltNumberClient;
|
||||||
uint32 id, security;
|
uint32 id, security;
|
||||||
bool tbc = false;
|
uint8 expansion = 0;
|
||||||
LocaleConstant locale;
|
LocaleConstant locale;
|
||||||
std::string account;
|
std::string account;
|
||||||
Sha1Hash sha1;
|
Sha1Hash sha1;
|
||||||
@@ -728,7 +728,7 @@ WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
|
|||||||
"sha_pass_hash, " //5
|
"sha_pass_hash, " //5
|
||||||
"v, " //6
|
"v, " //6
|
||||||
"s, " //7
|
"s, " //7
|
||||||
"tbc, " //8
|
"expansion, " //8
|
||||||
"mutetime, " //9
|
"mutetime, " //9
|
||||||
"locale " //10
|
"locale " //10
|
||||||
"FROM account "
|
"FROM account "
|
||||||
@@ -749,7 +749,10 @@ WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
|
|||||||
|
|
||||||
Field* fields = result->Fetch ();
|
Field* fields = result->Fetch ();
|
||||||
|
|
||||||
tbc = fields[8].GetUInt8 () && sWorld.getConfig (CONFIG_EXPANSION) > 0;
|
uint8 expansion = fields[8].GetUInt8();
|
||||||
|
uint32 world_expansion = sWorld.getConfig(CONFIG_EXPANSION);
|
||||||
|
if(expansion > world_expansion)
|
||||||
|
expansion = world_expansion;
|
||||||
|
|
||||||
N.SetHexStr ("894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7");
|
N.SetHexStr ("894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7");
|
||||||
g.SetDword (7);
|
g.SetDword (7);
|
||||||
@@ -909,7 +912,7 @@ WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
|
|||||||
|
|
||||||
// TODO protect here probably ?
|
// TODO protect here probably ?
|
||||||
// Althought atm the socket is singlethreaded
|
// Althought atm the socket is singlethreaded
|
||||||
ACE_NEW_RETURN (m_Session, WorldSession (id, this, security, tbc, mutetime, locale), -1);
|
ACE_NEW_RETURN (m_Session, WorldSession (id, this, security, expansion, mutetime, locale), -1);
|
||||||
|
|
||||||
m_Crypt.SetKey (&K);
|
m_Crypt.SetKey (&K);
|
||||||
m_Crypt.Init ();
|
m_Crypt.Init ();
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ class ByteBuffer
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 operator[](size_t pos)
|
uint8 operator[](size_t pos) const
|
||||||
{
|
{
|
||||||
return read<uint8>(pos);
|
return read<uint8>(pos);
|
||||||
}
|
}
|
||||||
@@ -309,7 +309,7 @@ class ByteBuffer
|
|||||||
ASSERT(pos + cnt <= size() || PrintPosError(true,pos,cnt));
|
ASSERT(pos + cnt <= size() || PrintPosError(true,pos,cnt));
|
||||||
memcpy(&_storage[pos], src, cnt);
|
memcpy(&_storage[pos], src, cnt);
|
||||||
}
|
}
|
||||||
void print_storage()
|
void print_storage() const
|
||||||
{
|
{
|
||||||
if(!sLog.IsOutDebug()) // optimize disabled debug output
|
if(!sLog.IsOutDebug()) // optimize disabled debug output
|
||||||
return;
|
return;
|
||||||
@@ -320,7 +320,7 @@ class ByteBuffer
|
|||||||
sLog.outDebug(" ");
|
sLog.outDebug(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
void textlike()
|
void textlike() const
|
||||||
{
|
{
|
||||||
if(!sLog.IsOutDebug()) // optimize disabled debug output
|
if(!sLog.IsOutDebug()) // optimize disabled debug output
|
||||||
return;
|
return;
|
||||||
@@ -331,7 +331,7 @@ class ByteBuffer
|
|||||||
sLog.outDebug(" ");
|
sLog.outDebug(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
void hexlike()
|
void hexlike() const
|
||||||
{
|
{
|
||||||
if(!sLog.IsOutDebug()) // optimize disabled debug output
|
if(!sLog.IsOutDebug()) // optimize disabled debug output
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -554,7 +554,15 @@ ContentLevels GetContentLevelsForMapAndZone(uint32 mapid, uint32 zoneId)
|
|||||||
return CONTENT_1_60;
|
return CONTENT_1_60;
|
||||||
|
|
||||||
MapEntry const* mapEntry = sMapStore.LookupEntry(mapid);
|
MapEntry const* mapEntry = sMapStore.LookupEntry(mapid);
|
||||||
return (!mapEntry || !mapEntry->IsExpansionMap()) ? CONTENT_1_60 : CONTENT_61_70;
|
if(!mapEntry)
|
||||||
|
return CONTENT_1_60;
|
||||||
|
|
||||||
|
switch(mapEntry->Expansion())
|
||||||
|
{
|
||||||
|
default: return CONTENT_1_60;
|
||||||
|
case 1: return CONTENT_61_70;
|
||||||
|
case 2: return CONTENT_71_80;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatChannelsEntry const* GetChannelEntryFor(uint32 channel_id)
|
ChatChannelsEntry const* GetChannelEntryFor(uint32 channel_id)
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId);
|
|||||||
enum ContentLevels
|
enum ContentLevels
|
||||||
{
|
{
|
||||||
CONTENT_1_60 = 0,
|
CONTENT_1_60 = 0,
|
||||||
CONTENT_61_70
|
CONTENT_61_70,
|
||||||
|
CONTENT_71_80
|
||||||
};
|
};
|
||||||
ContentLevels GetContentLevelsForMapAndZone(uint32 mapid, uint32 zoneId);
|
ContentLevels GetContentLevelsForMapAndZone(uint32 mapid, uint32 zoneId);
|
||||||
|
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ struct ChrRacesEntry
|
|||||||
//char* string2[16]; // 48-63 used for DBC language detection/selection
|
//char* string2[16]; // 48-63 used for DBC language detection/selection
|
||||||
// 64 string flags, unused
|
// 64 string flags, unused
|
||||||
// 65-67 unused
|
// 65-67 unused
|
||||||
//uint32 addon // 68 (0 - original race, 1 - tbc addon, ...) unused
|
uint32 addon; // 68 (0 - original race, 1 - tbc addon, ...)
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CreatureDisplayInfoEntry
|
struct CreatureDisplayInfoEntry
|
||||||
@@ -473,7 +473,7 @@ struct MapEntry
|
|||||||
uint32 addon; // 124 (0-original maps,1-tbc addon)
|
uint32 addon; // 124 (0-original maps,1-tbc addon)
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
bool IsExpansionMap() const { return addon != 0; }
|
uint32 Expansion() const { return addon; }
|
||||||
|
|
||||||
|
|
||||||
bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID; }
|
bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID; }
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ const char ChatChannelsEntryfmt[]="iixssssssssssssssssxxxxxxxxxxxxxxxxxx";
|
|||||||
// ChatChannelsEntryfmt, index not used (more compact store)
|
// ChatChannelsEntryfmt, index not used (more compact store)
|
||||||
//const char ChrClassesEntryfmt[]="nxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix";
|
//const char ChrClassesEntryfmt[]="nxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix";
|
||||||
const char ChrClassesEntryfmt[]="nxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix";
|
const char ChrClassesEntryfmt[]="nxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix";
|
||||||
const char ChrRacesEntryfmt[]="nxixiixxixxxxissssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
const char ChrRacesEntryfmt[]="nxixiixxixxxxissssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
|
||||||
const char CreatureDisplayInfofmt[]="nxxxfxxxxxxxxx";
|
const char CreatureDisplayInfofmt[]="nxxxfxxxxxxxxx";
|
||||||
const char CreatureFamilyfmt[]="nfifiiiissssssssssssssssxx";
|
const char CreatureFamilyfmt[]="nfifiiiissssssssssssssssxx";
|
||||||
const char CreatureSpellDatafmt[]="nxxxxxxxx";
|
const char CreatureSpellDatafmt[]="nxxxxxxxx";
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ void CliMotd(char*,pPrintf);
|
|||||||
void CliCorpses(char*,pPrintf);
|
void CliCorpses(char*,pPrintf);
|
||||||
void CliSetLogLevel(char*,pPrintf);
|
void CliSetLogLevel(char*,pPrintf);
|
||||||
void CliUpTime(char*,pPrintf);
|
void CliUpTime(char*,pPrintf);
|
||||||
void CliSetTBC(char*,pPrintf);
|
void CliSetAddon(char*,pPrintf);
|
||||||
void CliWritePlayerDump(char*,pPrintf);
|
void CliWritePlayerDump(char*,pPrintf);
|
||||||
void CliLoadPlayerDump(char*,pPrintf);
|
void CliLoadPlayerDump(char*,pPrintf);
|
||||||
void CliSave(char*,pPrintf);
|
void CliSave(char*,pPrintf);
|
||||||
@@ -91,7 +91,7 @@ const CliCommand Commands[]=
|
|||||||
{"unban", & CliRemoveBan,"Remove ban from account|ip"},
|
{"unban", & CliRemoveBan,"Remove ban from account|ip"},
|
||||||
{"setgm", & CliSetGM,"Edit user privileges"},
|
{"setgm", & CliSetGM,"Edit user privileges"},
|
||||||
{"setpass", & CliSetPassword,"Set password for account"},
|
{"setpass", & CliSetPassword,"Set password for account"},
|
||||||
{"setbc", & CliSetTBC,"Set user expansion allowed"},
|
{"setaddon", & CliSetAddon,"Set user expansion addon level allowed"},
|
||||||
{"listgm", & CliListGM,"Display user privileges"},
|
{"listgm", & CliListGM,"Display user privileges"},
|
||||||
{"loadscripts", & CliLoadScripts,"Load script library"},
|
{"loadscripts", & CliLoadScripts,"Load script library"},
|
||||||
{"setloglevel", & CliSetLogLevel,"Set Log Level"},
|
{"setloglevel", & CliSetLogLevel,"Set Log Level"},
|
||||||
@@ -472,7 +472,7 @@ void CliInfo(char*,pPrintf zprintf)
|
|||||||
|
|
||||||
///- Display the list of account/characters online
|
///- Display the list of account/characters online
|
||||||
zprintf("=====================================================================\r\n");
|
zprintf("=====================================================================\r\n");
|
||||||
zprintf("| Account | Character | IP | GM | TBC |\r\n");
|
zprintf("| Account | Character | IP | GM | Exp |\r\n");
|
||||||
zprintf("=====================================================================\r\n");
|
zprintf("=====================================================================\r\n");
|
||||||
|
|
||||||
///- Circle through accounts
|
///- Circle through accounts
|
||||||
@@ -485,7 +485,7 @@ void CliInfo(char*,pPrintf zprintf)
|
|||||||
///- Get the username, last IP and GM level of each account
|
///- Get the username, last IP and GM level of each account
|
||||||
// No SQL injection. account is uint32.
|
// No SQL injection. account is uint32.
|
||||||
// 0 1 2 3
|
// 0 1 2 3
|
||||||
QueryResult *resultLogin = loginDatabase.PQuery("SELECT username, last_ip, gmlevel, tbc FROM account WHERE id = '%u'",account);
|
QueryResult *resultLogin = loginDatabase.PQuery("SELECT username, last_ip, gmlevel, expansion FROM account WHERE id = '%u'",account);
|
||||||
|
|
||||||
if(resultLogin)
|
if(resultLogin)
|
||||||
{
|
{
|
||||||
@@ -1037,23 +1037,23 @@ void CliUpTime(char*,pPrintf zprintf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Set/Unset the TBC flag for an account
|
/// Set/Unset the TBC flag for an account
|
||||||
void CliSetTBC(char *command,pPrintf zprintf)
|
void CliSetAddon(char *command,pPrintf zprintf)
|
||||||
{
|
{
|
||||||
///- Get the command line arguments
|
///- Get the command line arguments
|
||||||
char *szAcc = strtok(command," ");
|
char *szAcc = strtok(command," ");
|
||||||
char *szTBC = strtok(NULL," ");
|
char *szExp = strtok(NULL," ");
|
||||||
|
|
||||||
if(!szAcc||!szTBC)
|
if(!szAcc||!szExp)
|
||||||
{
|
{
|
||||||
zprintf("Syntax is: setbc $account $number (0 - normal, 1 - tbc)>\r\n");
|
zprintf("Syntax is: setbc $account $number (0 - normal, 1 - tbc, 2 - wotlk)>\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int lev=atoi(szTBC); //get int anyway (0 if error)
|
int lev=atoi(szExp); //get int anyway (0 if error)
|
||||||
|
|
||||||
if((lev > 1)|| (lev < 0))
|
if(lev < 0)
|
||||||
{
|
{
|
||||||
zprintf("Syntax is: setbc $account $number (0 - normal, 1 - tbc)>\r\n");
|
zprintf("Syntax is: setbc $account $number (0 - normal, 1 - tbc, 2 - wotlk)>\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1074,7 +1074,7 @@ void CliSetTBC(char *command,pPrintf zprintf)
|
|||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
// No SQL injection (account name is escaped)
|
// No SQL injection (account name is escaped)
|
||||||
loginDatabase.PExecute("UPDATE account SET tbc = '%d' WHERE username = '%s'",lev,safe_account_name.c_str());
|
loginDatabase.PExecute("UPDATE account SET expansion = '%d' WHERE username = '%s'",lev,safe_account_name.c_str());
|
||||||
zprintf("We set %s to expansion allowed %d\r\n",safe_account_name.c_str(),lev);
|
zprintf("We set %s to expansion allowed %d\r\n",safe_account_name.c_str(),lev);
|
||||||
|
|
||||||
delete result;
|
delete result;
|
||||||
|
|||||||
@@ -354,10 +354,12 @@ LogColors = ""
|
|||||||
# 29 CN9 - basic-Latin at create, any at login
|
# 29 CN9 - basic-Latin at create, any at login
|
||||||
#
|
#
|
||||||
# Expansion
|
# Expansion
|
||||||
# Allow server use expansion content
|
# Allow server use content from expansion
|
||||||
# Default: 1 - check expansion maps existence, and if client support expansion and account have
|
# 2 - check expansion 2 maps existence, and if client support expansion 2 and account have
|
||||||
# expansion setting then allow visit expansion maps, allow create new races character)
|
# expansion 2 setting then allow visit expansion 2 maps, allow create new class character)
|
||||||
# 0 - not check expansion maps existence, not allow wisit its, not allow create new race
|
# Default: 1 - check expansion 1 maps existence, and if client support expansion 1 and account have
|
||||||
|
# expansion 1 setting then allow visit expansion 1 maps, allow create new races character)
|
||||||
|
# 0 - not check expansion maps existence, not allow wisit its, not allow create new race or new class
|
||||||
# characters, ignore account expansion setting)
|
# characters, ignore account expansion setting)
|
||||||
#
|
#
|
||||||
# DBC.Locale
|
# DBC.Locale
|
||||||
|
|||||||
Reference in New Issue
Block a user